summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-03-06 17:07:36 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-03-06 17:07:36 -0500
commitecf7cf9835ca2f50b4c483c9ee4156d2057e5406 (patch)
tree40dff951b984dd3c32a541be198d431b016e85ba
parent85ca62e823e563ebec97e9e340fdde0af42d9221 (diff)
through sub_80FFF80
-rw-r--r--asm/easy_chat_2.s2869
-rw-r--r--data/easy_chat_2.s74
-rw-r--r--include/constants/easy_chat.h4
-rw-r--r--include/easy_chat.h1
-rw-r--r--include/overworld.h1
-rw-r--r--include/strings.h36
-rw-r--r--ld_script.txt2
-rw-r--r--src/clear_save_data_screen.c4
-rw-r--r--src/easy_chat_2.c1380
-rw-r--r--sym_ewram.txt2
10 files changed, 1444 insertions, 2929 deletions
diff --git a/asm/easy_chat_2.s b/asm/easy_chat_2.s
index 40b0eeb1f..1f742ebd6 100644
--- a/asm/easy_chat_2.s
+++ b/asm/easy_chat_2.s
@@ -5,2841 +5,6 @@
.text
- thumb_func_start DoEasyChatScreen
-DoEasyChatScreen: @ 80FEBAC
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- adds r6, r1, 0
- mov r8, r2
- lsls r5, 24
- lsrs r5, 24
- bl ResetTasks
- ldr r0, _080FEC00 @ =sub_80FEC54
- movs r1, 0
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080FEC04 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0xA]
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r6, 0
- bl SetWordTaskArg
- adds r0, r4, 0
- movs r1, 0x4
- mov r2, r8
- bl SetWordTaskArg
- ldr r0, _080FEC08 @ =sub_80FEC0C
- bl SetMainCallback2
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FEC00: .4byte sub_80FEC54
-_080FEC04: .4byte gTasks
-_080FEC08: .4byte sub_80FEC0C
- thumb_func_end DoEasyChatScreen
-
- thumb_func_start sub_80FEC0C
-sub_80FEC0C: @ 80FEC0C
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_80FEC0C
-
- thumb_func_start sub_80FEC24
-sub_80FEC24: @ 80FEC24
- push {lr}
- bl TransferPlttBuffer
- bl LoadOam
- bl ProcessSpriteCopyRequests
- pop {r0}
- bx r0
- thumb_func_end sub_80FEC24
-
- thumb_func_start sub_80FEC38
-sub_80FEC38: @ 80FEC38
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080FEC50 @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r3
- str r1, [r2]
- movs r0, 0
- strh r0, [r2, 0x8]
- bx lr
- .align 2, 0
-_080FEC50: .4byte gTasks
- thumb_func_end sub_80FEC38
-
- thumb_func_start sub_80FEC54
-sub_80FEC54: @ 80FEC54
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsUpdateLinkStateCBActive
- cmp r0, 0
- bne _080FEC70
-_080FEC62:
- adds r0, r4, 0
- bl sub_80FED80
- lsls r0, 24
- cmp r0, 0
- bne _080FEC62
- b _080FEC7E
-_080FEC70:
- adds r0, r4, 0
- bl sub_80FED80
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080FEC86
-_080FEC7E:
- ldr r1, _080FEC8C @ =sub_80FEC90
- adds r0, r4, 0
- bl sub_80FEC38
-_080FEC86:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FEC8C: .4byte sub_80FEC90
- thumb_func_end sub_80FEC54
-
- thumb_func_start sub_80FEC90
-sub_80FEC90: @ 80FEC90
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080FECB4 @ =gTasks+0x8
- adds r6, r0, r1
- movs r0, 0
- ldrsh r5, [r6, r0]
- cmp r5, 0x1
- beq _080FECEC
- cmp r5, 0x1
- bgt _080FECB8
- cmp r5, 0
- beq _080FECC2
- b _080FED6E
- .align 2, 0
-_080FECB4: .4byte gTasks+0x8
-_080FECB8:
- cmp r5, 0x2
- beq _080FED28
- cmp r5, 0x3
- beq _080FED38
- b _080FED6E
-_080FECC2:
- ldr r0, _080FECE8 @ =sub_80FEC24
- bl SetVBlankCallback
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- str r5, [sp]
- adds r0, r4, 0
- adds r1, r4, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _080FED20
- .align 2, 0
-_080FECE8: .4byte sub_80FEC24
-_080FECEC:
- bl sub_80FF028
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x17
- bne _080FED10
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x3
- strh r0, [r6]
- b _080FED6E
-_080FED10:
- cmp r4, 0
- beq _080FED6E
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_8100134
-_080FED20:
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
- b _080FED6E
-_080FED28:
- bl sub_810014C
- lsls r0, 24
- cmp r0, 0
- bne _080FED6E
- movs r0, 0x1
- strh r0, [r6]
- b _080FED6E
-_080FED38:
- ldr r0, _080FED78 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080FED6E
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- cmp r0, 0xE
- bne _080FED50
- bl sub_80FEF4C
-_080FED50:
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080FED62
- ldr r0, _080FED7C @ =0x0000082d
- bl FlagSet
- bl sub_80FEF2C
-_080FED62:
- adds r0, r4, 0
- movs r1, 0x4
- bl GetWordTaskArg
- bl sub_80FEE24
-_080FED6E:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FED78: .4byte gPaletteFade
-_080FED7C: .4byte 0x0000082d
- thumb_func_end sub_80FEC90
-
- thumb_func_start sub_80FED80
-sub_80FED80: @ 80FED80
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080FEDA4 @ =gTasks+0x8
- adds r6, r0, r1
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0x4
- bhi _080FEE12
- lsls r0, 2
- ldr r1, _080FEDA8 @ =_080FEDAC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FEDA4: .4byte gTasks+0x8
-_080FEDA8: .4byte _080FEDAC
- .align 2, 0
-_080FEDAC:
- .4byte _080FEDC0
- .4byte _080FEDD4
- .4byte _080FEDDA
- .4byte _080FEDEE
- .4byte _080FEE06
-_080FEDC0:
- movs r0, 0
- bl SetVBlankCallback
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetPaletteFade
- b _080FEE16
-_080FEDD4:
- bl InitEasyChatSelection
- b _080FEDF2
-_080FEDDA:
- ldrb r4, [r6, 0x2]
- adds r0, r5, 0
- movs r1, 0x2
- bl GetWordTaskArg
- adds r1, r0, 0
- adds r0, r4, 0
- bl sub_80FEF6C
- b _080FEDF2
-_080FEDEE:
- bl sub_80FFF80
-_080FEDF2:
- lsls r0, 24
- cmp r0, 0
- bne _080FEE16
- adds r0, r5, 0
- movs r1, 0x4
- bl GetWordTaskArg
- bl sub_80FEE24
- b _080FEE16
-_080FEE06:
- bl sub_80FFF98
- lsls r0, 24
- cmp r0, 0
- beq _080FEE16
- b _080FEE1C
-_080FEE12:
- movs r0, 0
- b _080FEE1E
-_080FEE16:
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
-_080FEE1C:
- movs r0, 0x1
-_080FEE1E:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80FED80
-
- thumb_func_start sub_80FEE24
-sub_80FEE24: @ 80FEE24
- push {r4,lr}
- adds r4, r0, 0
- bl DestroyEasyChatSelectionData
- bl sub_80FF010
- bl sub_810011C
- bl FreeAllWindowBuffers
- adds r0, r4, 0
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FEE24
-
- thumb_func_start ShowEasyChatScreen
-ShowEasyChatScreen: @ 80FEE44
- push {lr}
- ldr r0, _080FEE58 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0xE
- bhi _080FEF12
- lsls r0, 2
- ldr r1, _080FEE5C @ =_080FEE60
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FEE58: .4byte gSpecialVar_0x8004
-_080FEE5C: .4byte _080FEE60
- .align 2, 0
-_080FEE60:
- .4byte _080FEE9C
- .4byte _080FEEB0
- .4byte _080FEEC4
- .4byte _080FEED8
- .4byte _080FEEF4
- .4byte _080FEF12
- .4byte _080FEF12
- .4byte _080FEF12
- .4byte _080FEF12
- .4byte _080FEF12
- .4byte _080FEF12
- .4byte _080FEF12
- .4byte _080FEF12
- .4byte _080FEF12
- .4byte _080FEEEC
-_080FEE9C:
- ldr r0, _080FEEA8 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, _080FEEAC @ =0x00002ca0
- adds r1, r0, r2
- b _080FEF08
- .align 2, 0
-_080FEEA8: .4byte gSaveBlock1Ptr
-_080FEEAC: .4byte 0x00002ca0
-_080FEEB0:
- ldr r0, _080FEEBC @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, _080FEEC0 @ =0x00002cac
- adds r1, r0, r2
- b _080FEF08
- .align 2, 0
-_080FEEBC: .4byte gSaveBlock1Ptr
-_080FEEC0: .4byte 0x00002cac
-_080FEEC4:
- ldr r0, _080FEED0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, _080FEED4 @ =0x00002cb8
- adds r1, r0, r2
- b _080FEF08
- .align 2, 0
-_080FEED0: .4byte gSaveBlock1Ptr
-_080FEED4: .4byte 0x00002cb8
-_080FEED8:
- ldr r0, _080FEEE4 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, _080FEEE8 @ =0x00002cc4
- adds r1, r0, r2
- b _080FEF08
- .align 2, 0
-_080FEEE4: .4byte gSaveBlock1Ptr
-_080FEEE8: .4byte 0x00002cc4
-_080FEEEC:
- bl GetMEventProfileECWordsMaybe
- adds r1, r0, 0
- b _080FEF08
-_080FEEF4:
- ldr r2, _080FEF18 @ =gSaveBlock1Ptr
- ldr r0, _080FEF1C @ =gSpecialVar_0x8005
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080FEF20 @ =0x00002cd0
- adds r0, r1
- ldr r1, [r2]
- adds r1, r0
-_080FEF08:
- ldr r0, _080FEF24 @ =gSpecialVar_0x8004
- ldrb r0, [r0]
- ldr r2, _080FEF28 @ =sub_80568C4
- bl DoEasyChatScreen
-_080FEF12:
- pop {r0}
- bx r0
- .align 2, 0
-_080FEF18: .4byte gSaveBlock1Ptr
-_080FEF1C: .4byte gSpecialVar_0x8005
-_080FEF20: .4byte 0x00002cd0
-_080FEF24: .4byte gSpecialVar_0x8004
-_080FEF28: .4byte sub_80568C4
- thumb_func_end ShowEasyChatScreen
-
- thumb_func_start sub_80FEF2C
-sub_80FEF2C: @ 80FEF2C
- push {r4,lr}
- ldr r4, _080FEF44 @ =gSpecialVar_0x8004
- ldr r0, _080FEF48 @ =gUnknown_843F29C
- movs r1, 0x4
- bl sub_80FFEDC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FEF44: .4byte gSpecialVar_0x8004
-_080FEF48: .4byte gUnknown_843F29C
- thumb_func_end sub_80FEF2C
-
- thumb_func_start sub_80FEF4C
-sub_80FEF4C: @ 80FEF4C
- push {r4,lr}
- ldr r4, _080FEF64 @ =gSpecialVar_0x8004
- ldr r0, _080FEF68 @ =gUnknown_843F2A4
- movs r1, 0x4
- bl sub_80FFEDC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FEF64: .4byte gSpecialVar_0x8004
-_080FEF68: .4byte gUnknown_843F2A4
- thumb_func_end sub_80FEF4C
-
- thumb_func_start sub_80FEF6C
-sub_80FEF6C: @ 80FEF6C
- push {r4-r6,lr}
- adds r6, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080FEF88 @ =gUnknown_203ACE8
- movs r0, 0x2C
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- bne _080FEF8C
- movs r0, 0
- b _080FF006
- .align 2, 0
-_080FEF88: .4byte gUnknown_203ACE8
-_080FEF8C:
- movs r1, 0
- strb r5, [r0]
- ldr r0, [r4]
- str r6, [r0, 0x14]
- strb r1, [r0, 0x4]
- ldr r0, [r4]
- strb r1, [r0, 0x5]
- ldr r0, [r4]
- strb r1, [r0, 0x6]
- ldr r0, [r4]
- strb r1, [r0, 0x9]
- adds r0, r5, 0
- bl sub_80FFF1C
- lsls r0, 24
- lsrs r0, 24
- ldr r3, [r4]
- ldr r2, _080FF00C @ =gUnknown_843F2AC
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r2, [r1, 0x1]
- strb r2, [r3, 0x2]
- ldr r2, [r4]
- ldrb r1, [r1, 0x2]
- strb r1, [r2, 0x3]
- ldr r1, [r4]
- ldrb r3, [r1, 0x2]
- ldrb r2, [r1, 0x3]
- adds r5, r3, 0
- muls r5, r2
- adds r2, r5, 0
- strb r2, [r1, 0x7]
- ldr r1, [r4]
- strb r0, [r1, 0x1]
- ldr r1, [r4]
- ldrb r0, [r1, 0x7]
- cmp r0, 0x9
- bls _080FEFE0
- movs r0, 0x9
- strb r0, [r1, 0x7]
-_080FEFE0:
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x18
- ldrb r2, [r0, 0x7]
- adds r0, r6, 0
- bl CpuSet
- bl GetNumDisplayableGroups
- ldr r2, [r4]
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0x1
- strb r0, [r2, 0xD]
- movs r0, 0x1
-_080FF006:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080FF00C: .4byte gUnknown_843F2AC
- thumb_func_end sub_80FEF6C
-
- thumb_func_start sub_80FF010
-sub_80FF010: @ 80FF010
- push {lr}
- ldr r0, _080FF024 @ =gUnknown_203ACE8
- ldr r0, [r0]
- cmp r0, 0
- beq _080FF01E
- bl Free
-_080FF01E:
- pop {r0}
- bx r0
- .align 2, 0
-_080FF024: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FF010
-
- thumb_func_start sub_80FF028
-sub_80FF028: @ 80FF028
- push {lr}
- ldr r0, _080FF040 @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r0, 0x6
- bhi _080FF092
- lsls r0, 2
- ldr r1, _080FF044 @ =_080FF048
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FF040: .4byte gUnknown_203ACE8
-_080FF044: .4byte _080FF048
- .align 2, 0
-_080FF048:
- .4byte _080FF064
- .4byte _080FF06A
- .4byte _080FF070
- .4byte _080FF076
- .4byte _080FF07C
- .4byte _080FF082
- .4byte _080FF088
-_080FF064:
- bl sub_80FF098
- b _080FF08C
-_080FF06A:
- bl sub_80FF20C
- b _080FF08C
-_080FF070:
- bl sub_80FF360
- b _080FF08C
-_080FF076:
- bl sub_80FF41C
- b _080FF08C
-_080FF07C:
- bl sub_80FF4A8
- b _080FF08C
-_080FF082:
- bl sub_80FF544
- b _080FF08C
-_080FF088:
- bl sub_80FF4F0
-_080FF08C:
- lsls r0, 16
- lsrs r0, 16
- b _080FF094
-_080FF092:
- movs r0, 0
-_080FF094:
- pop {r1}
- bx r1
- thumb_func_end sub_80FF028
-
- thumb_func_start sub_80FF098
-sub_80FF098: @ 80FF098
- push {r4-r7,lr}
- ldr r0, _080FF0C0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080FF0E4
- ldr r1, _080FF0C4 @ =gUnknown_203ACE8
- ldr r3, [r1]
- movs r2, 0
- movs r0, 0x2
- strb r0, [r3, 0x4]
- ldr r0, [r1]
- strb r2, [r0, 0xA]
- ldr r0, [r1]
- strb r2, [r0, 0xB]
- ldr r0, [r1]
- strb r2, [r0, 0xC]
- movs r0, 0x9
- b _080FF1FC
- .align 2, 0
-_080FF0C0: .4byte gMain
-_080FF0C4: .4byte gUnknown_203ACE8
-_080FF0C8:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _080FF194
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080FF184
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _080FF174
- movs r0, 0
- b _080FF1FC
-_080FF0E4:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080FF1A4
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _080FF1AA
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080FF0C8
- ldr r2, _080FF16C @ =gUnknown_203ACE8
- ldr r1, [r2]
- ldrb r0, [r1, 0x6]
- subs r0, 0x1
-_080FF104:
- strb r0, [r1, 0x6]
-_080FF106:
- adds r7, r2, 0
- adds r4, r7, 0
- ldr r2, [r4]
- movs r0, 0x6
- ldrsb r0, [r2, r0]
- ldr r6, _080FF170 @ =gUnknown_843F2AC
- cmp r0, 0
- bge _080FF124
- ldrb r0, [r2, 0x1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x2]
- strb r0, [r2, 0x6]
-_080FF124:
- ldr r3, [r4]
- movs r2, 0x6
- ldrsb r2, [r3, r2]
- adds r5, r6, 0
- ldrb r1, [r3, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- ldrb r0, [r0, 0x2]
- cmp r2, r0
- ble _080FF140
- movs r0, 0
- strb r0, [r3, 0x6]
-_080FF140:
- ldr r3, [r4]
- movs r2, 0x6
- ldrsb r2, [r3, r2]
- ldrb r1, [r3, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r5
- ldrb r0, [r1, 0x2]
- cmp r2, r0
- bne _080FF1B4
- movs r0, 0x5
- ldrsb r0, [r3, r0]
- cmp r0, 0x2
- ble _080FF162
- movs r0, 0x2
- strb r0, [r3, 0x5]
-_080FF162:
- ldr r1, [r4]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- movs r0, 0x3
- b _080FF1FC
- .align 2, 0
-_080FF16C: .4byte gUnknown_203ACE8
-_080FF170: .4byte gUnknown_843F2AC
-_080FF174:
- ldr r2, _080FF180 @ =gUnknown_203ACE8
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- adds r0, 0x1
- strb r0, [r1, 0x5]
- b _080FF106
- .align 2, 0
-_080FF180: .4byte gUnknown_203ACE8
-_080FF184:
- ldr r2, _080FF190 @ =gUnknown_203ACE8
- ldr r1, [r2]
- ldrb r0, [r1, 0x6]
- adds r0, 0x1
- b _080FF104
- .align 2, 0
-_080FF190: .4byte gUnknown_203ACE8
-_080FF194:
- ldr r2, _080FF1A0 @ =gUnknown_203ACE8
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- subs r0, 0x1
- strb r0, [r1, 0x5]
- b _080FF106
- .align 2, 0
-_080FF1A0: .4byte gUnknown_203ACE8
-_080FF1A4:
- bl sub_80FF590
- b _080FF1AE
-_080FF1AA:
- bl sub_80FF5C0
-_080FF1AE:
- lsls r0, 16
- lsrs r0, 16
- b _080FF1FC
-_080FF1B4:
- movs r0, 0x5
- ldrsb r0, [r3, r0]
- cmp r0, 0
- bge _080FF1C2
- ldrb r0, [r1, 0x1]
- subs r0, 0x1
- strb r0, [r3, 0x5]
-_080FF1C2:
- ldr r3, [r4]
- movs r2, 0x5
- ldrsb r2, [r3, r2]
- ldrb r1, [r3, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrb r0, [r0, 0x1]
- cmp r2, r0
- blt _080FF1DC
- movs r0, 0
- strb r0, [r3, 0x5]
-_080FF1DC:
- bl sub_80FFCE0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080FF1FA
- ldr r2, [r7]
- ldr r0, [r2, 0x4]
- ldr r1, _080FF204 @ =0x00ffff00
- ands r0, r1
- ldr r1, _080FF208 @ =0x00040100
- cmp r0, r1
- bne _080FF1FA
- movs r0, 0
- strb r0, [r2, 0x5]
-_080FF1FA:
- movs r0, 0x2
-_080FF1FC:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080FF204: .4byte 0x00ffff00
-_080FF208: .4byte 0x00040100
- thumb_func_end sub_80FF098
-
- thumb_func_start sub_80FF20C
-sub_80FF20C: @ 80FF20C
- push {r4-r6,lr}
- ldr r2, _080FF22C @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080FF270
- ldr r0, _080FF230 @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- beq _080FF26A
- b _080FF254
- .align 2, 0
-_080FF22C: .4byte gMain
-_080FF230: .4byte gUnknown_203ACE8
-_080FF234:
- movs r0, 0x20
- ands r0, r2
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- bne _080FF2F8
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- bne _080FF2E8
- movs r0, 0x10
- ands r0, r2
- cmp r0, 0
- bne _080FF2D8
- movs r0, 0
- b _080FF34E
-_080FF254:
- cmp r0, 0x1
- bgt _080FF25E
- cmp r0, 0
- beq _080FF264
- b _080FF270
-_080FF25E:
- cmp r0, 0x2
- beq _080FF30E
- b _080FF270
-_080FF264:
- bl sub_80FF5A8
- b _080FF312
-_080FF26A:
- bl sub_80FF590
- b _080FF312
-_080FF270:
- ldrh r2, [r2, 0x2E]
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- bne _080FF308
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- bne _080FF30E
- movs r0, 0x40
- ands r0, r2
- cmp r0, 0
- beq _080FF234
- ldr r2, _080FF2D0 @ =gUnknown_203ACE8
- ldr r1, [r2]
- ldrb r0, [r1, 0x6]
- subs r0, 0x1
- strb r0, [r1, 0x6]
-_080FF294:
- adds r6, r2, 0
-_080FF296:
- adds r5, r6, 0
- ldr r4, [r5]
- movs r3, 0x6
- ldrsb r3, [r4, r3]
- ldr r2, _080FF2D4 @ =gUnknown_843F2AC
- ldrb r1, [r4, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r2
- ldrb r0, [r1, 0x2]
- cmp r3, r0
- bne _080FF318
- movs r0, 0x5
- ldrsb r0, [r4, r0]
- cmp r0, 0
- bge _080FF2BC
- movs r0, 0x2
- strb r0, [r4, 0x5]
-_080FF2BC:
- ldr r1, [r5]
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0x2
- ble _080FF2CA
- movs r0, 0
- strb r0, [r1, 0x5]
-_080FF2CA:
- movs r0, 0x3
- b _080FF34E
- .align 2, 0
-_080FF2D0: .4byte gUnknown_203ACE8
-_080FF2D4: .4byte gUnknown_843F2AC
-_080FF2D8:
- ldr r2, _080FF2E4 @ =gUnknown_203ACE8
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- adds r0, 0x1
- strb r0, [r1, 0x5]
- b _080FF294
- .align 2, 0
-_080FF2E4: .4byte gUnknown_203ACE8
-_080FF2E8:
- ldr r1, _080FF2F4 @ =gUnknown_203ACE8
- ldr r0, [r1]
- strb r3, [r0, 0x6]
- adds r6, r1, 0
- b _080FF296
- .align 2, 0
-_080FF2F4: .4byte gUnknown_203ACE8
-_080FF2F8:
- ldr r2, _080FF304 @ =gUnknown_203ACE8
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- subs r0, 0x1
- strb r0, [r1, 0x5]
- b _080FF294
- .align 2, 0
-_080FF304: .4byte gUnknown_203ACE8
-_080FF308:
- bl sub_80FF590
- b _080FF312
-_080FF30E:
- bl sub_80FF5C0
-_080FF312:
- lsls r0, 16
- lsrs r0, 16
- b _080FF34E
-_080FF318:
- movs r0, 0x5
- ldrsb r0, [r4, r0]
- ldrb r1, [r1, 0x1]
- cmp r0, r1
- blt _080FF326
- subs r0, r1, 0x1
- strb r0, [r4, 0x5]
-_080FF326:
- bl sub_80FFCE0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080FF344
- ldr r2, [r6]
- ldr r0, [r2, 0x4]
- ldr r1, _080FF354 @ =0x00ffff00
- ands r0, r1
- ldr r1, _080FF358 @ =0x00040100
- cmp r0, r1
- bne _080FF344
- movs r0, 0
- strb r0, [r2, 0x5]
-_080FF344:
- ldr r0, _080FF35C @ =gUnknown_203ACE8
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x4]
- movs r0, 0x2
-_080FF34E:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080FF354: .4byte 0x00ffff00
-_080FF358: .4byte 0x00040100
-_080FF35C: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FF20C
-
- thumb_func_start sub_80FF360
-sub_80FF360: @ 80FF360
- push {lr}
- ldr r1, _080FF378 @ =gMain
- ldrh r2, [r1, 0x2E]
- movs r0, 0x2
- ands r0, r2
- adds r3, r1, 0
- cmp r0, 0
- beq _080FF37C
- bl sub_80FF678
- b _080FF412
- .align 2, 0
-_080FF378: .4byte gMain
-_080FF37C:
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _080FF3CA
- ldr r0, _080FF39C @ =gUnknown_203ACE8
- ldr r2, [r0]
- movs r1, 0xA
- ldrsb r1, [r2, r1]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080FF3A0
- bl sub_80FF5FC
- b _080FF412
- .align 2, 0
-_080FF39C: .4byte gUnknown_203ACE8
-_080FF3A0:
- movs r0, 0xB
- ldrsb r0, [r2, r0]
- cmp r0, 0x1
- beq _080FF3BE
- cmp r0, 0x1
- bgt _080FF3B2
- cmp r0, 0
- beq _080FF3B8
- b _080FF3CA
-_080FF3B2:
- cmp r0, 0x2
- beq _080FF3C4
- b _080FF3CA
-_080FF3B8:
- bl sub_80FF688
- b _080FF412
-_080FF3BE:
- bl sub_80FF6B4
- b _080FF412
-_080FF3C4:
- bl sub_80FF678
- b _080FF412
-_080FF3CA:
- ldrh r1, [r3, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080FF3DA
- bl sub_80FF688
- b _080FF412
-_080FF3DA:
- ldrh r1, [r3, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080FF3E8
- movs r0, 0x2
- b _080FF40E
-_080FF3E8:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080FF3F4
- movs r0, 0x3
- b _080FF40E
-_080FF3F4:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080FF400
- movs r0, 0x1
- b _080FF40E
-_080FF400:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _080FF40C
- movs r0, 0
- b _080FF416
-_080FF40C:
- movs r0, 0
-_080FF40E:
- bl sub_80FF7CC
-_080FF412:
- lsls r0, 16
- lsrs r0, 16
-_080FF416:
- pop {r1}
- bx r1
- thumb_func_end sub_80FF360
-
- thumb_func_start sub_80FF41C
-sub_80FF41C: @ 80FF41C
- push {lr}
- ldr r2, _080FF438 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080FF440
- ldr r0, _080FF43C @ =gUnknown_203ACE8
- ldr r1, [r0]
- movs r0, 0x2
- strb r0, [r1, 0x4]
- movs r0, 0xD
- b _080FF4A2
- .align 2, 0
-_080FF438: .4byte gMain
-_080FF43C: .4byte gUnknown_203ACE8
-_080FF440:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080FF44E
- bl sub_80FF6C8
- b _080FF49E
-_080FF44E:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080FF45A
- movs r0, 0x4
- b _080FF49A
-_080FF45A:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080FF466
- movs r0, 0x5
- b _080FF49A
-_080FF466:
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080FF474
- movs r0, 0x2
- b _080FF49A
-_080FF474:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080FF480
- movs r0, 0x3
- b _080FF49A
-_080FF480:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080FF48C
- movs r0, 0x1
- b _080FF49A
-_080FF48C:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _080FF498
- movs r0, 0
- b _080FF4A2
-_080FF498:
- movs r0, 0
-_080FF49A:
- bl sub_80FFA38
-_080FF49E:
- lsls r0, 16
- lsrs r0, 16
-_080FF4A2:
- pop {r1}
- bx r1
- thumb_func_end sub_80FF41C
-
- thumb_func_start sub_80FF4A8
-sub_80FF4A8: @ 80FF4A8
- push {lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _080FF4DC
- cmp r1, 0
- bgt _080FF4C4
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080FF4C8
- b _080FF4E8
-_080FF4C4:
- cmp r1, 0x1
- bne _080FF4E8
-_080FF4C8:
- bl sub_80FF5F0
- ldr r1, _080FF4D8 @ =gUnknown_203ACE8
- ldr r1, [r1]
- strb r0, [r1, 0x4]
- movs r0, 0x7
- b _080FF4EA
- .align 2, 0
-_080FF4D8: .4byte gUnknown_203ACE8
-_080FF4DC:
- ldr r0, _080FF4E4 @ =gSpecialVar_Result
- strh r1, [r0]
- movs r0, 0x17
- b _080FF4EA
- .align 2, 0
-_080FF4E4: .4byte gSpecialVar_Result
-_080FF4E8:
- movs r0, 0
-_080FF4EA:
- pop {r1}
- bx r1
- thumb_func_end sub_80FF4A8
-
- thumb_func_start sub_80FF4F0
-sub_80FF4F0: @ 80FF4F0
- push {r4,lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _080FF524
- cmp r1, 0
- bgt _080FF50C
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080FF510
- b _080FF53C
-_080FF50C:
- cmp r1, 0x1
- bne _080FF53C
-_080FF510:
- bl sub_80FF5F0
- ldr r1, _080FF520 @ =gUnknown_203ACE8
- ldr r1, [r1]
- strb r0, [r1, 0x4]
- movs r0, 0x7
- b _080FF53E
- .align 2, 0
-_080FF520: .4byte gUnknown_203ACE8
-_080FF524:
- ldr r4, _080FF538 @ =gSpecialVar_Result
- bl sub_80FF78C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- bl sub_80FF6F0
- movs r0, 0x17
- b _080FF53E
- .align 2, 0
-_080FF538: .4byte gSpecialVar_Result
-_080FF53C:
- movs r0, 0
-_080FF53E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80FF4F0
-
- thumb_func_start sub_80FF544
-sub_80FF544: @ 80FF544
- push {lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _080FF574
- cmp r1, 0
- bgt _080FF560
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080FF564
- b _080FF588
-_080FF560:
- cmp r1, 0x1
- bne _080FF588
-_080FF564:
- ldr r0, _080FF570 @ =gUnknown_203ACE8
- ldr r1, [r0]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- movs r0, 0x7
- b _080FF58A
- .align 2, 0
-_080FF570: .4byte gUnknown_203ACE8
-_080FF574:
- bl sub_80FF728
- ldr r0, _080FF584 @ =gUnknown_203ACE8
- ldr r1, [r0]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- movs r0, 0x8
- b _080FF58A
- .align 2, 0
-_080FF584: .4byte gUnknown_203ACE8
-_080FF588:
- movs r0, 0
-_080FF58A:
- pop {r1}
- bx r1
- thumb_func_end sub_80FF544
-
- thumb_func_start sub_80FF590
-sub_80FF590: @ 80FF590
- ldr r2, _080FF5A4 @ =gUnknown_203ACE8
- ldr r1, [r2]
- ldrb r0, [r1, 0x4]
- strb r0, [r1, 0x8]
- ldr r1, [r2]
- movs r0, 0x4
- strb r0, [r1, 0x4]
- movs r0, 0x5
- bx lr
- .align 2, 0
-_080FF5A4: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FF590
-
- thumb_func_start sub_80FF5A8
-sub_80FF5A8: @ 80FF5A8
- ldr r2, _080FF5BC @ =gUnknown_203ACE8
- ldr r1, [r2]
- ldrb r0, [r1, 0x4]
- strb r0, [r1, 0x8]
- ldr r1, [r2]
- movs r0, 0x5
- strb r0, [r1, 0x4]
- movs r0, 0x4
- bx lr
- .align 2, 0
-_080FF5BC: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FF5A8
-
- thumb_func_start sub_80FF5C0
-sub_80FF5C0: @ 80FF5C0
- push {r4,lr}
- ldr r4, _080FF5DC @ =gUnknown_203ACE8
- ldr r0, [r4]
- ldrb r1, [r0, 0x4]
- strb r1, [r0, 0x8]
- bl sub_80FFF48
- cmp r0, 0
- bne _080FF5E0
- ldr r1, [r4]
- movs r0, 0x6
- strb r0, [r1, 0x4]
- b _080FF5E8
- .align 2, 0
-_080FF5DC: .4byte gUnknown_203ACE8
-_080FF5E0:
- ldr r1, [r4]
- movs r0, 0x4
- strb r0, [r1, 0x4]
- movs r0, 0x5
-_080FF5E8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80FF5C0
-
- thumb_func_start sub_80FF5F0
-sub_80FF5F0: @ 80FF5F0
- ldr r0, _080FF5F8 @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- bx lr
- .align 2, 0
-_080FF5F8: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FF5F0
-
- thumb_func_start sub_80FF5FC
-sub_80FF5FC: @ 80FF5FC
- push {lr}
- ldr r0, _080FF624 @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- bne _080FF628
- bl sub_80FFB8C
- lsls r0, 24
- lsrs r0, 24
- bl GetSelectedGroupByIndex
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- bl GetUnlockedECWords
- b _080FF638
- .align 2, 0
-_080FF624: .4byte gUnknown_203ACE8
-_080FF628:
- bl sub_80FFBAC
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x1
- bl GetUnlockedECWords
-_080FF638:
- bl GetNumDisplayedWords
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _080FF670
- ldr r2, _080FF66C @ =gUnknown_203ACE8
- ldr r3, [r2]
- subs r0, 0x1
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- movs r1, 0
- strb r0, [r3, 0xF]
- ldr r0, [r2]
- strb r1, [r0, 0xE]
- ldr r0, [r2]
- strb r1, [r0, 0x10]
- ldr r0, [r2]
- strb r1, [r0, 0x11]
- ldr r1, [r2]
- movs r0, 0x3
- strb r0, [r1, 0x4]
- movs r0, 0xB
- b _080FF672
- .align 2, 0
-_080FF66C: .4byte gUnknown_203ACE8
-_080FF670:
- movs r0, 0
-_080FF672:
- pop {r1}
- bx r1
- thumb_func_end sub_80FF5FC
-
- thumb_func_start sub_80FF678
-sub_80FF678: @ 80FF678
- ldr r0, _080FF684 @ =gUnknown_203ACE8
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x4]
- movs r0, 0xA
- bx lr
- .align 2, 0
-_080FF684: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FF678
-
- thumb_func_start sub_80FF688
-sub_80FF688: @ 80FF688
- push {lr}
- ldr r1, _080FF6A8 @ =gUnknown_203ACE8
- ldr r0, [r1]
- movs r2, 0
- strb r2, [r0, 0xA]
- ldr r0, [r1]
- strb r2, [r0, 0xB]
- ldr r0, [r1]
- strb r2, [r0, 0xC]
- ldr r1, [r1]
- ldrb r0, [r1, 0x9]
- cmp r0, 0
- bne _080FF6AC
- movs r0, 0x1
- strb r0, [r1, 0x9]
- b _080FF6AE
- .align 2, 0
-_080FF6A8: .4byte gUnknown_203ACE8
-_080FF6AC:
- strb r2, [r1, 0x9]
-_080FF6AE:
- movs r0, 0x16
- pop {r1}
- bx r1
- thumb_func_end sub_80FF688
-
- thumb_func_start sub_80FF6B4
-sub_80FF6B4: @ 80FF6B4
- push {lr}
- ldr r0, _080FF6C4 @ =0x0000ffff
- bl sub_80FF768
- movs r0, 0x1
- pop {r1}
- bx r1
- .align 2, 0
-_080FF6C4: .4byte 0x0000ffff
- thumb_func_end sub_80FF6B4
-
- thumb_func_start sub_80FF6C8
-sub_80FF6C8: @ 80FF6C8
- push {lr}
- bl sub_80FFBE4
- lsls r0, 16
- lsrs r0, 16
- bl GetDisplayedWordByIndex
- lsls r0, 16
- lsrs r0, 16
- bl sub_80FF768
- ldr r0, _080FF6EC @ =gUnknown_203ACE8
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x4]
- movs r0, 0xC
- pop {r1}
- bx r1
- .align 2, 0
-_080FF6EC: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FF6C8
-
- thumb_func_start sub_80FF6F0
-sub_80FF6F0: @ 80FF6F0
- push {r4,r5,lr}
- movs r4, 0
- ldr r3, _080FF724 @ =gUnknown_203ACE8
- ldr r0, [r3]
- ldrb r0, [r0, 0x7]
- cmp r4, r0
- bcs _080FF71E
- adds r5, r3, 0
-_080FF700:
- ldr r3, [r5]
- ldr r1, [r3, 0x14]
- lsls r2, r4, 1
- adds r1, r2, r1
- adds r0, r3, 0
- adds r0, 0x18
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- ldrb r3, [r3, 0x7]
- cmp r4, r3
- bcc _080FF700
-_080FF71E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FF724: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FF6F0
-
- thumb_func_start sub_80FF728
-sub_80FF728: @ 80FF728
- push {r4,r5,lr}
- movs r3, 0
- ldr r2, _080FF760 @ =gUnknown_203ACE8
- ldr r0, [r2]
- ldrb r0, [r0, 0x7]
- cmp r3, r0
- bcs _080FF758
- adds r5, r2, 0
- ldr r0, _080FF764 @ =0x0000ffff
- adds r4, r0, 0
-_080FF73C:
- ldr r2, [r5]
- lsls r0, r3, 1
- adds r1, r2, 0
- adds r1, 0x18
- adds r1, r0
- ldrh r0, [r1]
- orrs r0, r4
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldrb r2, [r2, 0x7]
- cmp r3, r2
- bcc _080FF73C
-_080FF758:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FF760: .4byte gUnknown_203ACE8
-_080FF764: .4byte 0x0000ffff
- thumb_func_end sub_80FF728
-
- thumb_func_start sub_80FF768
-sub_80FF768: @ 80FF768
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl sub_80FFB6C
- lsls r0, 16
- ldr r1, _080FF788 @ =gUnknown_203ACE8
- ldr r1, [r1]
- lsrs r0, 15
- adds r1, 0x18
- adds r1, r0
- strh r4, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FF788: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FF768
-
- thumb_func_start sub_80FF78C
-sub_80FF78C: @ 80FF78C
- push {r4,r5,lr}
- movs r2, 0
- ldr r0, _080FF7B4 @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r1, [r0, 0x7]
- cmp r2, r1
- bcs _080FF7C2
- adds r5, r1, 0
- adds r4, r0, 0
- adds r4, 0x18
- ldr r3, [r0, 0x14]
-_080FF7A2:
- lsls r0, r2, 1
- adds r1, r4, r0
- adds r0, r3
- ldrh r1, [r1]
- ldrh r0, [r0]
- cmp r1, r0
- beq _080FF7B8
- movs r0, 0x1
- b _080FF7C4
- .align 2, 0
-_080FF7B4: .4byte gUnknown_203ACE8
-_080FF7B8:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r5
- bcc _080FF7A2
-_080FF7C2:
- movs r0, 0
-_080FF7C4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80FF78C
-
- thumb_func_start sub_80FF7CC
-sub_80FF7CC: @ 80FF7CC
- push {lr}
- adds r2, r0, 0
- ldr r0, _080FF7F0 @ =gUnknown_203ACE8
- ldr r3, [r0]
- movs r1, 0xA
- ldrsb r1, [r3, r1]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080FF7FC
- ldrb r0, [r3, 0x9]
- cmp r0, 0
- bne _080FF7F4
- adds r0, r2, 0
- bl sub_80FF80C
- b _080FF802
- .align 2, 0
-_080FF7F0: .4byte gUnknown_203ACE8
-_080FF7F4:
- adds r0, r2, 0
- bl sub_80FF8D8
- b _080FF802
-_080FF7FC:
- adds r0, r2, 0
- bl sub_80FF968
-_080FF802:
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_80FF7CC
-
- thumb_func_start sub_80FF80C
-sub_80FF80C: @ 80FF80C
- push {r4,lr}
- cmp r0, 0x1
- beq _080FF882
- cmp r0, 0x1
- bcc _080FF8A2
- cmp r0, 0x2
- beq _080FF820
- cmp r0, 0x3
- beq _080FF848
- b _080FF8CE
-_080FF820:
- ldr r0, _080FF83C @ =gUnknown_203ACE8
- ldr r1, [r0]
- movs r0, 0xB
- ldrsb r0, [r1, r0]
- ldrb r3, [r1, 0xC]
- cmn r0, r3
- beq _080FF8CE
- ldrb r2, [r1, 0xB]
- cmp r0, 0
- beq _080FF840
- subs r0, r2, 0x1
- strb r0, [r1, 0xB]
-_080FF838:
- movs r0, 0xE
- b _080FF8D0
- .align 2, 0
-_080FF83C: .4byte gUnknown_203ACE8
-_080FF840:
- subs r0, r3, 0x1
- strb r0, [r1, 0xC]
- movs r0, 0x10
- b _080FF8D0
-_080FF848:
- ldr r0, _080FF870 @ =gUnknown_203ACE8
- ldr r2, [r0]
- movs r1, 0xB
- ldrsb r1, [r2, r1]
- ldrb r3, [r2, 0xC]
- adds r1, r3
- ldrb r0, [r2, 0xD]
- subs r0, 0x1
- cmp r1, r0
- bge _080FF8CE
- ldrb r1, [r2, 0xB]
- movs r0, 0xB
- ldrsb r0, [r2, r0]
- cmp r0, 0x2
- bgt _080FF874
- adds r0, r1, 0x1
- strb r0, [r2, 0xB]
- movs r4, 0xE
- b _080FF87A
- .align 2, 0
-_080FF870: .4byte gUnknown_203ACE8
-_080FF874:
- adds r0, r3, 0x1
- strb r0, [r2, 0xC]
- movs r4, 0xF
-_080FF87A:
- bl sub_80FFC1C
- adds r0, r4, 0
- b _080FF8D0
-_080FF882:
- ldr r0, _080FF898 @ =gUnknown_203ACE8
- ldr r1, [r0]
- ldrb r2, [r1, 0xA]
- movs r0, 0xA
- ldrsb r0, [r1, r0]
- cmp r0, 0
- beq _080FF89C
- subs r0, r2, 0x1
- strb r0, [r1, 0xA]
- b _080FF838
- .align 2, 0
-_080FF898: .4byte gUnknown_203ACE8
-_080FF89C:
- bl sub_80FF9E8
- b _080FF838
-_080FF8A2:
- ldr r0, _080FF8C4 @ =gUnknown_203ACE8
- ldr r1, [r0]
- ldrb r2, [r1, 0xA]
- movs r0, 0xA
- ldrsb r0, [r1, r0]
- cmp r0, 0
- bgt _080FF8C8
- adds r0, r2, 0x1
- strb r0, [r1, 0xA]
- bl sub_80FFC6C
- lsls r0, 24
- cmp r0, 0
- beq _080FF838
- bl sub_80FF9E8
- b _080FF838
- .align 2, 0
-_080FF8C4: .4byte gUnknown_203ACE8
-_080FF8C8:
- bl sub_80FF9E8
- b _080FF838
-_080FF8CE:
- movs r0, 0
-_080FF8D0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80FF80C
-
- thumb_func_start sub_80FF8D8
-sub_80FF8D8: @ 80FF8D8
- push {lr}
- cmp r0, 0x1
- beq _080FF944
- cmp r0, 0x1
- bcc _080FF928
- cmp r0, 0x2
- beq _080FF8EE
- cmp r0, 0x3
- beq _080FF90E
- movs r0, 0
- b _080FF960
-_080FF8EE:
- ldr r0, _080FF900 @ =gUnknown_203ACE8
- ldr r1, [r0]
- ldrb r2, [r1, 0xB]
- movs r0, 0xB
- ldrsb r0, [r1, r0]
- cmp r0, 0
- ble _080FF904
- subs r0, r2, 0x1
- b _080FF906
- .align 2, 0
-_080FF900: .4byte gUnknown_203ACE8
-_080FF904:
- movs r0, 0x3
-_080FF906:
- strb r0, [r1, 0xB]
- bl sub_80FFC1C
- b _080FF95E
-_080FF90E:
- ldr r0, _080FF920 @ =gUnknown_203ACE8
- ldr r1, [r0]
- ldrb r2, [r1, 0xB]
- movs r0, 0xB
- ldrsb r0, [r1, r0]
- cmp r0, 0x2
- bgt _080FF924
- adds r0, r2, 0x1
- b _080FF906
- .align 2, 0
-_080FF920: .4byte gUnknown_203ACE8
-_080FF924:
- movs r0, 0
- b _080FF906
-_080FF928:
- ldr r0, _080FF940 @ =gUnknown_203ACE8
- ldr r1, [r0]
- ldrb r0, [r1, 0xA]
- adds r0, 0x1
- strb r0, [r1, 0xA]
- bl sub_80FFC6C
- lsls r0, 24
- cmp r0, 0
- beq _080FF95E
- b _080FF95A
- .align 2, 0
-_080FF940: .4byte gUnknown_203ACE8
-_080FF944:
- ldr r2, _080FF964 @ =gUnknown_203ACE8
- ldr r1, [r2]
- ldrb r0, [r1, 0xA]
- subs r0, 0x1
- strb r0, [r1, 0xA]
- ldr r0, [r2]
- ldrb r0, [r0, 0xA]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _080FF95E
-_080FF95A:
- bl sub_80FF9E8
-_080FF95E:
- movs r0, 0xE
-_080FF960:
- pop {r1}
- bx r1
- .align 2, 0
-_080FF964: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FF8D8
-
- thumb_func_start sub_80FF968
-sub_80FF968: @ 80FF968
- push {lr}
- adds r2, r0, 0
- cmp r2, 0x1
- beq _080FF9B8
- cmp r2, 0x1
- bcc _080FF9CC
- cmp r2, 0x2
- beq _080FF980
- cmp r2, 0x3
- beq _080FF99C
- movs r0, 0
- b _080FF9DE
-_080FF980:
- ldr r0, _080FF994 @ =gUnknown_203ACE8
- ldr r1, [r0]
- ldrb r3, [r1, 0xB]
- movs r0, 0xB
- ldrsb r0, [r1, r0]
- cmp r0, 0
- beq _080FF998
- subs r0, r3, 0x1
- b _080FF9DA
- .align 2, 0
-_080FF994: .4byte gUnknown_203ACE8
-_080FF998:
- strb r2, [r1, 0xB]
- b _080FF9DC
-_080FF99C:
- ldr r0, _080FF9B0 @ =gUnknown_203ACE8
- ldr r1, [r0]
- ldrb r2, [r1, 0xB]
- movs r0, 0xB
- ldrsb r0, [r1, r0]
- cmp r0, 0x1
- bgt _080FF9B4
- adds r0, r2, 0x1
- b _080FF9DA
- .align 2, 0
-_080FF9B0: .4byte gUnknown_203ACE8
-_080FF9B4:
- movs r0, 0
- b _080FF9DA
-_080FF9B8:
- ldr r0, _080FF9C8 @ =gUnknown_203ACE8
- ldr r1, [r0]
- ldrb r0, [r1, 0xB]
- adds r0, 0x1
- strb r0, [r1, 0xB]
- bl sub_80FFA0C
- b _080FF9DC
- .align 2, 0
-_080FF9C8: .4byte gUnknown_203ACE8
-_080FF9CC:
- ldr r2, _080FF9E4 @ =gUnknown_203ACE8
- ldr r1, [r2]
- movs r0, 0
- strb r0, [r1, 0xA]
- ldr r1, [r2]
- ldrb r0, [r1, 0xB]
- adds r0, 0x1
-_080FF9DA:
- strb r0, [r1, 0xB]
-_080FF9DC:
- movs r0, 0xE
-_080FF9DE:
- pop {r1}
- bx r1
- .align 2, 0
-_080FF9E4: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FF968
-
- thumb_func_start sub_80FF9E8
-sub_80FF9E8: @ 80FF9E8
- push {lr}
- ldr r2, _080FFA08 @ =gUnknown_203ACE8
- ldr r1, [r2]
- movs r0, 0xFF
- strb r0, [r1, 0xA]
- ldr r2, [r2]
- ldrb r1, [r2, 0xB]
- movs r0, 0xB
- ldrsb r0, [r2, r0]
- cmp r0, 0
- beq _080FFA02
- subs r0, r1, 0x1
- strb r0, [r2, 0xB]
-_080FFA02:
- pop {r0}
- bx r0
- .align 2, 0
-_080FFA08: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FF9E8
-
- thumb_func_start sub_80FFA0C
-sub_80FFA0C: @ 80FFA0C
- push {r4,lr}
- ldr r4, _080FFA24 @ =gUnknown_203ACE8
- ldr r1, [r4]
- ldrb r0, [r1, 0x9]
- cmp r0, 0
- bne _080FFA28
- movs r0, 0x1
- strb r0, [r1, 0xA]
- bl sub_80FFC1C
- b _080FFA32
- .align 2, 0
-_080FFA24: .4byte gUnknown_203ACE8
-_080FFA28:
- ldrb r0, [r1, 0xB]
- bl sub_80FFC04
- ldr r1, [r4]
- strb r0, [r1, 0xA]
-_080FFA32:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FFA0C
-
- thumb_func_start sub_80FFA38
-sub_80FFA38: @ 80FFA38
- push {r4,lr}
- cmp r0, 0x5
- bls _080FFA40
- b _080FFB64
-_080FFA40:
- lsls r0, 2
- ldr r1, _080FFA4C @ =_080FFA50
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FFA4C: .4byte _080FFA50
- .align 2, 0
-_080FFA50:
- .4byte _080FFAEC
- .4byte _080FFACA
- .4byte _080FFA68
- .4byte _080FFA94
- .4byte _080FFB14
- .4byte _080FFB34
-_080FFA68:
- ldr r0, _080FFA88 @ =gUnknown_203ACE8
- ldr r1, [r0]
- movs r0, 0x11
- ldrsb r0, [r1, r0]
- ldrb r3, [r1, 0xE]
- adds r0, r3
- cmp r0, 0
- bgt _080FFA7A
- b _080FFB64
-_080FFA7A:
- ldrb r2, [r1, 0x11]
- movs r0, 0x11
- ldrsb r0, [r1, r0]
- cmp r0, 0
- ble _080FFA8C
- subs r0, r2, 0x1
- b _080FFAB2
- .align 2, 0
-_080FFA88: .4byte gUnknown_203ACE8
-_080FFA8C:
- subs r0, r3, 0x1
- strb r0, [r1, 0xE]
- movs r4, 0x12
- b _080FFAC2
-_080FFA94:
- ldr r0, _080FFAB8 @ =gUnknown_203ACE8
- ldr r1, [r0]
- movs r0, 0x11
- ldrsb r0, [r1, r0]
- ldrb r3, [r1, 0xE]
- adds r0, r3
- ldrb r2, [r1, 0xF]
- cmp r0, r2
- bge _080FFB64
- ldrb r2, [r1, 0x11]
- movs r0, 0x11
- ldrsb r0, [r1, r0]
- cmp r0, 0x2
- bgt _080FFABC
- adds r0, r2, 0x1
-_080FFAB2:
- strb r0, [r1, 0x11]
- movs r4, 0x11
- b _080FFAC2
- .align 2, 0
-_080FFAB8: .4byte gUnknown_203ACE8
-_080FFABC:
- adds r0, r3, 0x1
- strb r0, [r1, 0xE]
- movs r4, 0x13
-_080FFAC2:
- bl sub_80FFC44
- adds r0, r4, 0
- b _080FFB66
-_080FFACA:
- ldr r0, _080FFADC @ =gUnknown_203ACE8
- ldr r1, [r0]
- ldrb r2, [r1, 0x10]
- movs r0, 0x10
- ldrsb r0, [r1, r0]
- cmp r0, 0
- ble _080FFAE0
- subs r0, r2, 0x1
- b _080FFAE2
- .align 2, 0
-_080FFADC: .4byte gUnknown_203ACE8
-_080FFAE0:
- movs r0, 0x1
-_080FFAE2:
- strb r0, [r1, 0x10]
- bl sub_80FFC44
-_080FFAE8:
- movs r0, 0x11
- b _080FFB66
-_080FFAEC:
- ldr r4, _080FFB10 @ =gUnknown_203ACE8
- ldr r1, [r4]
- ldrb r2, [r1, 0x10]
- movs r0, 0x10
- ldrsb r0, [r1, r0]
- cmp r0, 0
- bgt _080FFB0A
- adds r0, r2, 0x1
- strb r0, [r1, 0x10]
- bl sub_80FFCC0
- lsls r0, 24
- cmp r0, 0
- beq _080FFAE8
- ldr r1, [r4]
-_080FFB0A:
- movs r0, 0
- strb r0, [r1, 0x10]
- b _080FFAE8
- .align 2, 0
-_080FFB10: .4byte gUnknown_203ACE8
-_080FFB14:
- ldr r0, _080FFB28 @ =gUnknown_203ACE8
- ldr r2, [r0]
- ldrb r0, [r2, 0xE]
- adds r1, r0, 0
- cmp r1, 0
- beq _080FFB64
- cmp r1, 0x3
- bls _080FFB2C
- subs r0, 0x4
- b _080FFB2E
- .align 2, 0
-_080FFB28: .4byte gUnknown_203ACE8
-_080FFB2C:
- movs r0, 0
-_080FFB2E:
- strb r0, [r2, 0xE]
- movs r0, 0x14
- b _080FFB66
-_080FFB34:
- ldr r3, _080FFB60 @ =gUnknown_203ACE8
- ldr r1, [r3]
- ldrb r2, [r1, 0xE]
- ldrb r0, [r1, 0xF]
- subs r0, 0x4
- cmp r2, r0
- bgt _080FFB64
- adds r0, r2, 0x4
- strb r0, [r1, 0xE]
- ldr r2, [r3]
- ldrb r1, [r2, 0xE]
- ldrb r3, [r2, 0xF]
- subs r0, r3, 0x3
- cmp r1, r0
- ble _080FFB58
- adds r0, r3, 0
- adds r0, 0xFD
- strb r0, [r2, 0xE]
-_080FFB58:
- bl sub_80FFC44
- movs r0, 0x15
- b _080FFB66
- .align 2, 0
-_080FFB60: .4byte gUnknown_203ACE8
-_080FFB64:
- movs r0, 0
-_080FFB66:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80FFA38
-
- thumb_func_start sub_80FFB6C
-sub_80FFB6C: @ 80FFB6C
- ldr r0, _080FFB88 @ =gUnknown_203ACE8
- ldr r0, [r0]
- movs r2, 0x6
- ldrsb r2, [r0, r2]
- ldrb r1, [r0, 0x2]
- muls r1, r2
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bx lr
- .align 2, 0
-_080FFB88: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFB6C
-
- thumb_func_start sub_80FFB8C
-sub_80FFB8C: @ 80FFB8C
- ldr r0, _080FFBA8 @ =gUnknown_203ACE8
- ldr r0, [r0]
- movs r1, 0xB
- ldrsb r1, [r0, r1]
- ldrb r2, [r0, 0xC]
- adds r1, r2
- lsls r1, 1
- ldrb r0, [r0, 0xA]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bx lr
- .align 2, 0
-_080FFBA8: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFB8C
-
- thumb_func_start sub_80FFBAC
-sub_80FFBAC: @ 80FFBAC
- push {lr}
- ldr r0, _080FFBDC @ =gUnknown_203ACE8
- ldr r1, [r0]
- ldrb r0, [r1, 0xA]
- movs r3, 0
- cmp r0, 0x6
- bhi _080FFBBE
- movs r3, 0xA
- ldrsb r3, [r1, r3]
-_080FFBBE:
- ldrb r0, [r1, 0xB]
- movs r2, 0
- cmp r0, 0x3
- bhi _080FFBCA
- movs r2, 0xB
- ldrsb r2, [r1, r2]
-_080FFBCA:
- ldr r0, _080FFBE0 @ =gUnknown_843F39C
- lsls r1, r2, 3
- subs r1, r2
- adds r1, r3, r1
- adds r1, r0
- ldrb r0, [r1]
- pop {r1}
- bx r1
- .align 2, 0
-_080FFBDC: .4byte gUnknown_203ACE8
-_080FFBE0: .4byte gUnknown_843F39C
- thumb_func_end sub_80FFBAC
-
- thumb_func_start sub_80FFBE4
-sub_80FFBE4: @ 80FFBE4
- ldr r0, _080FFC00 @ =gUnknown_203ACE8
- ldr r0, [r0]
- movs r1, 0x11
- ldrsb r1, [r0, r1]
- ldrb r2, [r0, 0xE]
- adds r1, r2
- lsls r1, 1
- ldrb r0, [r0, 0x10]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bx lr
- .align 2, 0
-_080FFC00: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFBE4
-
- thumb_func_start sub_80FFC04
-sub_80FFC04: @ 80FFC04
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080FFC12
- cmp r0, 0x1
- beq _080FFC16
-_080FFC12:
- movs r0, 0x6
- b _080FFC18
-_080FFC16:
- movs r0, 0x5
-_080FFC18:
- pop {r1}
- bx r1
- thumb_func_end sub_80FFC04
-
- thumb_func_start sub_80FFC1C
-sub_80FFC1C: @ 80FFC1C
- push {lr}
- b _080FFC32
-_080FFC20:
- ldr r0, _080FFC40 @ =gUnknown_203ACE8
- ldr r1, [r0]
- ldrb r2, [r1, 0xA]
- movs r0, 0xA
- ldrsb r0, [r1, r0]
- cmp r0, 0
- beq _080FFC3C
- subs r0, r2, 0x1
- strb r0, [r1, 0xA]
-_080FFC32:
- bl sub_80FFC6C
- lsls r0, 24
- cmp r0, 0
- bne _080FFC20
-_080FFC3C:
- pop {r0}
- bx r0
- .align 2, 0
-_080FFC40: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFC1C
-
- thumb_func_start sub_80FFC44
-sub_80FFC44: @ 80FFC44
- push {lr}
- b _080FFC5A
-_080FFC48:
- ldr r0, _080FFC68 @ =gUnknown_203ACE8
- ldr r1, [r0]
- ldrb r2, [r1, 0x10]
- movs r0, 0x10
- ldrsb r0, [r1, r0]
- cmp r0, 0
- beq _080FFC64
- subs r0, r2, 0x1
- strb r0, [r1, 0x10]
-_080FFC5A:
- bl sub_80FFCC0
- lsls r0, 24
- cmp r0, 0
- bne _080FFC48
-_080FFC64:
- pop {r0}
- bx r0
- .align 2, 0
-_080FFC68: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFC44
-
- thumb_func_start sub_80FFC6C
-sub_80FFC6C: @ 80FFC6C
- push {r4,lr}
- ldr r4, _080FFC98 @ =gUnknown_203ACE8
- ldr r1, [r4]
- ldrb r0, [r1, 0x9]
- cmp r0, 0
- bne _080FFC9C
- bl sub_80FFB8C
- adds r4, r0, 0
- bl GetNumDisplayableGroups
- movs r1, 0
- lsls r0, 24
- lsls r4, 16
- lsrs r4, 16
- lsrs r0, 24
- cmp r4, r0
- bcc _080FFC92
- movs r1, 0x1
-_080FFC92:
- adds r0, r1, 0
- b _080FFCB8
- .align 2, 0
-_080FFC98: .4byte gUnknown_203ACE8
-_080FFC9C:
- ldrb r0, [r1, 0xB]
- bl sub_80FFC04
- movs r2, 0
- ldr r1, [r4]
- ldrb r1, [r1, 0xA]
- lsls r1, 24
- asrs r1, 24
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- ble _080FFCB6
- movs r2, 0x1
-_080FFCB6:
- adds r0, r2, 0
-_080FFCB8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80FFC6C
-
- thumb_func_start sub_80FFCC0
-sub_80FFCC0: @ 80FFCC0
- push {r4,lr}
- bl sub_80FFBE4
- adds r4, r0, 0
- bl GetNumDisplayedWords
- movs r1, 0
- lsls r4, 16
- lsls r0, 16
- cmp r4, r0
- bcc _080FFCD8
- movs r1, 0x1
-_080FFCD8:
- adds r0, r1, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80FFCC0
-
- thumb_func_start sub_80FFCE0
-sub_80FFCE0: @ 80FFCE0
- ldr r2, _080FFCF4 @ =gUnknown_843F2AC
- ldr r0, _080FFCF8 @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x3]
- bx lr
- .align 2, 0
-_080FFCF4: .4byte gUnknown_843F2AC
-_080FFCF8: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFCE0
-
- thumb_func_start sub_80FFCFC
-sub_80FFCFC: @ 80FFCFC
- ldr r2, _080FFD14 @ =gUnknown_843F2AC
- ldr r0, _080FFD18 @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r2, 0x4
- adds r0, r2
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_080FFD14: .4byte gUnknown_843F2AC
-_080FFD18: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFCFC
-
- thumb_func_start sub_80FFD1C
-sub_80FFD1C: @ 80FFD1C
- ldr r0, _080FFD24 @ =gUnknown_203ACE8
- ldr r0, [r0]
- adds r0, 0x18
- bx lr
- .align 2, 0
-_080FFD24: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFD1C
-
- thumb_func_start sub_80FFD28
-sub_80FFD28: @ 80FFD28
- ldr r0, _080FFD30 @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r0, [r0, 0x3]
- bx lr
- .align 2, 0
-_080FFD30: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFD28
-
- thumb_func_start sub_80FFD34
-sub_80FFD34: @ 80FFD34
- ldr r0, _080FFD3C @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r0, [r0, 0x2]
- bx lr
- .align 2, 0
-_080FFD3C: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFD34
-
- thumb_func_start sub_80FFD40
-sub_80FFD40: @ 80FFD40
- ldr r0, _080FFD48 @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- bx lr
- .align 2, 0
-_080FFD48: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFD40
-
- thumb_func_start sub_80FFD4C
-sub_80FFD4C: @ 80FFD4C
- ldr r0, _080FFD54 @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r0, [r0, 0x6]
- bx lr
- .align 2, 0
-_080FFD54: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFD4C
-
- thumb_func_start sub_80FFD58
-sub_80FFD58: @ 80FFD58
- push {r4,r5,lr}
- ldr r4, _080FFD88 @ =gUnknown_843F2AC
- ldr r2, _080FFD8C @ =gUnknown_203ACE8
- ldr r5, [r2]
- ldrb r3, [r5, 0x1]
- lsls r2, r3, 1
- adds r2, r3
- lsls r2, 3
- adds r3, r4, 0
- adds r3, 0x8
- adds r2, r3
- ldr r2, [r2]
- str r2, [r0]
- ldrb r2, [r5, 0x1]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 3
- adds r4, 0xC
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FFD88: .4byte gUnknown_843F2AC
-_080FFD8C: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFD58
-
- thumb_func_start sub_80FFD90
-sub_80FFD90: @ 80FFD90
- push {r4,r5,lr}
- ldr r4, _080FFDC0 @ =gUnknown_843F2AC
- ldr r2, _080FFDC4 @ =gUnknown_203ACE8
- ldr r5, [r2]
- ldrb r3, [r5, 0x1]
- lsls r2, r3, 1
- adds r2, r3
- lsls r2, 3
- adds r3, r4, 0
- adds r3, 0x10
- adds r2, r3
- ldr r2, [r2]
- str r2, [r0]
- ldrb r2, [r5, 0x1]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 3
- adds r4, 0x14
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FFDC0: .4byte gUnknown_843F2AC
-_080FFDC4: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFD90
-
- thumb_func_start sub_80FFDC8
-sub_80FFDC8: @ 80FFDC8
- push {lr}
- adds r2, r0, 0
- ldr r0, _080FFDDC @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _080FFDE4
- ldr r0, _080FFDE0 @ =gUnknown_84189EE
- b _080FFDE6
- .align 2, 0
-_080FFDDC: .4byte gUnknown_203ACE8
-_080FFDE0: .4byte gUnknown_84189EE
-_080FFDE4:
- ldr r0, _080FFDF0 @ =gUnknown_84189E0
-_080FFDE6:
- str r0, [r2]
- movs r0, 0
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080FFDF0: .4byte gUnknown_84189E0
- thumb_func_end sub_80FFDC8
-
- thumb_func_start sub_80FFDF4
-sub_80FFDF4: @ 80FFDF4
- ldr r2, _080FFE00 @ =gUnknown_8418937
- str r2, [r0]
- ldr r0, _080FFE04 @ =gUnknown_8418956
- str r0, [r1]
- bx lr
- .align 2, 0
-_080FFE00: .4byte gUnknown_8418937
-_080FFE04: .4byte gUnknown_8418956
- thumb_func_end sub_80FFDF4
-
- thumb_func_start sub_80FFE08
-sub_80FFE08: @ 80FFE08
- ldr r2, _080FFE18 @ =gUnknown_203ACE8
- ldr r3, [r2]
- ldrb r2, [r3, 0xA]
- strb r2, [r0]
- ldrb r0, [r3, 0xB]
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080FFE18: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFE08
-
- thumb_func_start sub_80FFE1C
-sub_80FFE1C: @ 80FFE1C
- ldr r0, _080FFE24 @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r0, [r0, 0x9]
- bx lr
- .align 2, 0
-_080FFE24: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFE1C
-
- thumb_func_start sub_80FFE28
-sub_80FFE28: @ 80FFE28
- ldr r0, _080FFE30 @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r0, [r0, 0xC]
- bx lr
- .align 2, 0
-_080FFE30: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFE28
-
- thumb_func_start sub_80FFE34
-sub_80FFE34: @ 80FFE34
- ldr r2, _080FFE44 @ =gUnknown_203ACE8
- ldr r3, [r2]
- ldrb r2, [r3, 0x10]
- strb r2, [r0]
- ldrb r0, [r3, 0x11]
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080FFE44: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFE34
-
- thumb_func_start sub_80FFE48
-sub_80FFE48: @ 80FFE48
- ldr r0, _080FFE50 @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r0, [r0, 0xE]
- bx lr
- .align 2, 0
-_080FFE50: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFE48
-
- thumb_func_start sub_80FFE54
-sub_80FFE54: @ 80FFE54
- ldr r0, _080FFE5C @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r0, [r0, 0xF]
- bx lr
- .align 2, 0
-_080FFE5C: .4byte gUnknown_203ACE8
- thumb_func_end sub_80FFE54
-
- thumb_func_start sub_80FFE60
-sub_80FFE60: @ 80FFE60
- movs r0, 0
- bx lr
- thumb_func_end sub_80FFE60
-
- thumb_func_start sub_80FFE64
-sub_80FFE64: @ 80FFE64
- push {lr}
- ldr r0, _080FFE78 @ =gUnknown_203ACE8
- ldr r1, [r0]
- ldrb r0, [r1, 0x4]
- cmp r0, 0x2
- beq _080FFE7C
- cmp r0, 0x3
- beq _080FFE86
- b _080FFE90
- .align 2, 0
-_080FFE78: .4byte gUnknown_203ACE8
-_080FFE7C:
- ldrb r0, [r1, 0x9]
- cmp r0, 0
- bne _080FFE90
- ldrb r0, [r1, 0xC]
- b _080FFE88
-_080FFE86:
- ldrb r0, [r1, 0xE]
-_080FFE88:
- cmp r0, 0
- beq _080FFE90
- movs r0, 0x1
- b _080FFE92
-_080FFE90:
- movs r0, 0
-_080FFE92:
- pop {r1}
- bx r1
- thumb_func_end sub_80FFE64
-
- thumb_func_start sub_80FFE98
-sub_80FFE98: @ 80FFE98
- push {lr}
- ldr r0, _080FFEAC @ =gUnknown_203ACE8
- ldr r2, [r0]
- ldrb r0, [r2, 0x4]
- cmp r0, 0x2
- beq _080FFEB0
- cmp r0, 0x3
- beq _080FFEC6
- b _080FFED4
- .align 2, 0
-_080FFEAC: .4byte gUnknown_203ACE8
-_080FFEB0:
- ldrb r0, [r2, 0x9]
- cmp r0, 0
- bne _080FFED4
- ldrb r1, [r2, 0xC]
- adds r1, 0x4
- ldrb r0, [r2, 0xD]
- subs r0, 0x1
- cmp r1, r0
- bgt _080FFED4
- movs r0, 0x1
- b _080FFED6
-_080FFEC6:
- ldrb r0, [r2, 0xE]
- adds r0, 0x4
- ldrb r2, [r2, 0xF]
- cmp r0, r2
- bgt _080FFED4
- movs r0, 0x1
- b _080FFED6
-_080FFED4:
- movs r0, 0
-_080FFED6:
- pop {r1}
- bx r1
- thumb_func_end sub_80FFE98
-
- thumb_func_start sub_80FFEDC
-sub_80FFEDC: @ 80FFEDC
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r3, r1, 24
- movs r2, 0
- cmp r2, r3
- bcs _080FFF12
- ldr r0, _080FFF04 @ =gUnknown_203ACE8
- ldr r0, [r0]
- adds r4, r0, 0
- adds r4, 0x18
-_080FFEF2:
- lsls r0, r2, 1
- adds r1, r0, r5
- adds r0, r4, r0
- ldrh r1, [r1]
- ldrh r0, [r0]
- cmp r1, r0
- beq _080FFF08
- movs r0, 0x1
- b _080FFF14
- .align 2, 0
-_080FFF04: .4byte gUnknown_203ACE8
-_080FFF08:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r3
- bcc _080FFEF2
-_080FFF12:
- movs r0, 0
-_080FFF14:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80FFEDC
-
- thumb_func_start sub_80FFF1C
-sub_80FFF1C: @ 80FFF1C
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- movs r1, 0
- ldr r2, _080FFF34 @ =gUnknown_843F2AC
-_080FFF26:
- ldrb r0, [r2]
- cmp r0, r3
- bne _080FFF38
- lsls r0, r1, 24
- lsrs r0, 24
- b _080FFF42
- .align 2, 0
-_080FFF34: .4byte gUnknown_843F2AC
-_080FFF38:
- adds r2, 0x18
- adds r1, 0x1
- cmp r1, 0x9
- bls _080FFF26
- movs r0, 0
-_080FFF42:
- pop {r1}
- bx r1
- thumb_func_end sub_80FFF1C
-
- thumb_func_start sub_80FFF48
-sub_80FFF48: @ 80FFF48
- push {r4,lr}
- movs r2, 0
- ldr r0, _080FFF68 @ =gUnknown_203ACE8
- ldr r0, [r0]
- ldrb r1, [r0, 0x7]
- cmp r2, r1
- bge _080FFF78
- ldr r4, _080FFF6C @ =0x0000ffff
- adds r3, r1, 0
- adds r1, r0, 0
- adds r1, 0x18
-_080FFF5E:
- ldrh r0, [r1]
- cmp r0, r4
- beq _080FFF70
- movs r0, 0
- b _080FFF7A
- .align 2, 0
-_080FFF68: .4byte gUnknown_203ACE8
-_080FFF6C: .4byte 0x0000ffff
-_080FFF70:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, r3
- blt _080FFF5E
-_080FFF78:
- movs r0, 0x1
-_080FFF7A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80FFF48
-
- thumb_func_start sub_80FFF80
-sub_80FFF80: @ 80FFF80
- push {lr}
- bl sub_8100BF4
- lsls r0, 24
- cmp r0, 0
- beq _080FFF90
- movs r0, 0x1
- b _080FFF92
-_080FFF90:
- movs r0, 0
-_080FFF92:
- pop {r1}
- bx r1
- thumb_func_end sub_80FFF80
-
thumb_func_start sub_80FFF98
sub_80FFF98: @ 80FFF98
push {r4,lr}
@@ -3191,20 +356,20 @@ sub_8100290: @ 8100290
mov r5, r8
push {r5-r7}
sub sp, 0x40
- bl sub_80FFD1C
+ bl GetEasyChatWordBuffer
adds r4, r0, 0
- bl sub_80FFCE0
+ bl GetEasyChatScreenFrameId
lsls r0, 24
lsrs r0, 24
mov r9, r0
- bl sub_80FFD40
+ bl GetMainCursorColumn
lsls r0, 24
lsrs r7, r0, 24
- bl sub_80FFD4C
+ bl GetMainCursorRow
lsls r0, 24
lsrs r0, 24
mov r8, r0
- bl sub_80FFD34
+ bl GetNumColumns
lsls r0, 24
lsrs r0, 24
mov r1, r8
@@ -3296,7 +461,7 @@ _08100370: .4byte gUnknown_843F888
thumb_func_start sub_8100374
sub_8100374: @ 8100374
push {lr}
- bl sub_80FFD40
+ bl GetMainCursorColumn
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4528,7 +1693,7 @@ _08100D20: .4byte gUnknown_843F87C
sub_8100D24: @ 8100D24
push {r4,r5,lr}
sub sp, 0x14
- bl sub_80FFCFC
+ bl GetTitleText
adds r5, r0, 0
cmp r5, 0
beq _08100D7A
@@ -4726,7 +1891,7 @@ _08100E9A:
_08100EA4:
add r1, sp, 0x10
add r0, sp, 0xC
- bl sub_80FFD58
+ bl GetEasyChatInstructionsText
b _08100ECA
_08100EAE:
add r1, sp, 0x10
@@ -4736,12 +1901,12 @@ _08100EAE:
_08100EB8:
add r1, sp, 0x10
add r0, sp, 0xC
- bl sub_80FFD90
+ bl GetEasyChatConfirmText
b _08100ECA
_08100EC2:
add r1, sp, 0x10
add r0, sp, 0xC
- bl sub_80FFDF4
+ bl GetEasyChatConfirmDeletionText
_08100ECA:
movs r0, 0x1
movs r1, 0x11
@@ -4809,7 +1974,7 @@ _08100F40: .4byte gUnknown_843F8D0
sub_8100F44: @ 8100F44
push {r4,r5,lr}
sub sp, 0x8
- bl sub_80FFCE0
+ bl GetEasyChatScreenFrameId
lsls r0, 24
ldr r5, _08100FC0 @ =0xffffff00
ldr r3, [sp]
@@ -4883,17 +2048,17 @@ sub_8100FDC: @ 8100FDC
mov r5, r8
push {r5-r7}
sub sp, 0x14
- bl sub_80FFD1C
+ bl GetEasyChatWordBuffer
adds r4, r0, 0
- bl sub_80FFD34
+ bl GetNumColumns
lsls r0, 24
lsrs r0, 24
mov r8, r0
- bl sub_80FFD28
+ bl GetNumRows
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0xC]
- bl sub_80FFCE0
+ bl GetEasyChatScreenFrameId
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x10]
@@ -5026,7 +2191,7 @@ sub_8101100: @ 8101100
push {r5-r7}
sub sp, 0x4
mov r8, r0
- bl sub_80FFCE0
+ bl GetEasyChatScreenFrameId
lsls r0, 24
lsrs r5, r0, 24
movs r0, 0
@@ -6315,7 +3480,7 @@ _08101AC0: .4byte gUnknown_843F938
thumb_func_start sub_8101AC4
sub_8101AC4: @ 8101AC4
push {lr}
- bl sub_80FFCE0
+ bl GetEasyChatScreenFrameId
lsls r0, 24
ldr r1, _08101B10 @ =gUnknown_843F888
lsrs r0, 22
diff --git a/data/easy_chat_2.s b/data/easy_chat_2.s
index 79be01714..4cf0bcfb3 100644
--- a/data/easy_chat_2.s
+++ b/data/easy_chat_2.s
@@ -7,80 +7,6 @@
.section .rodata
.align 2
-gUnknown_843F29C:: @ 843F29C
- .2byte 0x143a, 0x1817, 0x100b, 0x200f
-
-gUnknown_843F2A4:: @ 843F2A4
- .2byte 0x0209, 0x140b, 0x1030, 0x102a
-
-gUnknown_843F2AC:: @ 843F2AC
- .byte 0, 2, 2, 0
- .4byte gUnknown_8418A2B
- .4byte gUnknown_84186D1
- .4byte gUnknown_84186EF
- .4byte gUnknown_841880E
- .4byte gUnknown_8418902
- .byte 1, 2, 3, 1
- .4byte gUnknown_8418A33
- .4byte gUnknown_8418706
- .4byte gUnknown_8418725
- .4byte gUnknown_841881B
- .4byte gUnknown_8418902
- .byte 2, 2, 3, 1
- .4byte gUnknown_8418A4A
- .4byte gUnknown_8418706
- .4byte gUnknown_8418725
- .4byte gUnknown_841883E
- .4byte gUnknown_8418902
- .byte 3, 2, 3, 1
- .4byte gUnknown_8418A61
- .4byte gUnknown_8418706
- .4byte gUnknown_8418725
- .4byte gUnknown_841885F
- .4byte gUnknown_8418902
- .byte 4, 2, 5, 2
- .4byte NULL
- .4byte gUnknown_8418780
- .4byte gUnknown_841879E
- .4byte gUnknown_841888C
- .4byte gUnknown_8418902
- .byte 5, 2, 2, 0
- .4byte NULL
- .4byte gUnknown_8418780
- .4byte gUnknown_841879E
- .4byte NULL
- .4byte NULL
- .byte 6, 2, 3, 1
- .4byte gUnknown_8418A77
- .4byte gUnknown_84187B2
- .4byte gUnknown_84187D1
- .4byte gUnknown_84188AC
- .4byte gUnknown_8418902
- .byte 7, 2, 3, 1
- .4byte gUnknown_8418AA1
- .4byte gUnknown_8418745
- .4byte gUnknown_8418763
- .4byte gUnknown_8418881
- .4byte gUnknown_8418902
- .byte 9, 2, 1, 3
- .4byte gUnknown_8418A87
- .4byte gUnknown_84188B9
- .4byte gUnknown_84188D6
- .4byte gUnknown_84188F0
- .4byte gUnknown_8418902
- .byte 14, 2, 2, 0
- .4byte gUnknown_8418AB2
- .4byte gUnknown_84186D1
- .4byte gUnknown_84187EE
- .4byte gUnknown_8418881
- .4byte gUnknown_8418902
-
-gUnknown_843F39C:: @ 843F39C data8 4x7
- .byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00
- .byte 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x00
- .byte 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13
- .byte 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a
-
gUnknown_843F3B8:: @ 843F3B8 gbapal
.incbin "graphics/link_rfu/unk_843F3F8.gbapal"
diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h
index 7261365c2..b43e93da2 100644
--- a/include/constants/easy_chat.h
+++ b/include/constants/easy_chat.h
@@ -6,6 +6,10 @@
#define EASY_CHAT_TYPE_BATTLE_WON 2
#define EASY_CHAT_TYPE_BATTLE_LOST 3
#define EASY_CHAT_TYPE_MAIL 4
+#define EASY_CHAT_TYPE_MAIL_NO_CONFIRM 5
+#define EASY_CHAT_TYPE_BARD_SONG 6
+#define EASY_CHAT_TYPE_INTERVIEW 7
+#define EASY_CHAT_TYPE_TRENDY_PHRASE 9
#define EASY_CHAT_TYPE_QUESTIONNAIRE 14
#define EC_GROUP_POKEMON_2 0x0
diff --git a/include/easy_chat.h b/include/easy_chat.h
index e7ec52fd1..67d14290c 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -46,5 +46,6 @@ u16 GetNumDisplayedWords(void);
const u8 *GetEasyChatWordGroupName(u8);
u8 *CopyEasyChatWordPadded(u8 *, u16, u16);
void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback);
+u8 GetNumDisplayableGroups(void);
#endif // GUARD_EASY_CHAT_H
diff --git a/include/overworld.h b/include/overworld.h
index a67c7cd88..daaa5e6e8 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -191,6 +191,7 @@ void sub_8057F70(void);
void sub_8057F48(void);
void SetMainCallback1(MainCallback cb);
void CB1_Overworld(void);
+void sub_80568C4(void);
extern u16 gHeldKeyCodeToSend;
diff --git a/include/strings.h b/include/strings.h
index d5c6f4b58..2c1ed13b0 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1313,4 +1313,40 @@ extern const u8 gText_QuestLog_CeruleanCave[];
extern const u8 gUnknown_841B69E[];
extern const u8 gUnknown_841B6B9[];
+// easy_chat_2
+extern const u8 gUnknown_84186D1[];
+extern const u8 gUnknown_84186EF[];
+extern const u8 gUnknown_8418706[];
+extern const u8 gUnknown_8418725[];
+extern const u8 gUnknown_8418745[];
+extern const u8 gUnknown_8418763[];
+extern const u8 gUnknown_8418780[];
+extern const u8 gUnknown_841879E[];
+extern const u8 gUnknown_84187B2[];
+extern const u8 gUnknown_84187D1[];
+extern const u8 gUnknown_84187EE[];
+extern const u8 gUnknown_841880E[];
+extern const u8 gUnknown_841881B[];
+extern const u8 gUnknown_841883E[];
+extern const u8 gUnknown_841885F[];
+extern const u8 gUnknown_8418881[];
+extern const u8 gUnknown_841888C[];
+extern const u8 gUnknown_84188AC[];
+extern const u8 gUnknown_84188B9[];
+extern const u8 gUnknown_84188D6[];
+extern const u8 gUnknown_84188F0[];
+extern const u8 gUnknown_8418902[];
+extern const u8 gUnknown_8418937[];
+extern const u8 gUnknown_8418956[];
+extern const u8 gUnknown_84189E0[];
+extern const u8 gUnknown_84189EE[];
+extern const u8 gUnknown_8418A2B[];
+extern const u8 gUnknown_8418A33[];
+extern const u8 gUnknown_8418A4A[];
+extern const u8 gUnknown_8418A61[];
+extern const u8 gUnknown_8418A77[];
+extern const u8 gUnknown_8418A87[];
+extern const u8 gUnknown_8418AA1[];
+extern const u8 gUnknown_8418AB2[];
+
#endif //GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index 1de01ca5f..0de8b654e 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -226,6 +226,7 @@ SECTIONS {
src/link_rfu_2.o(.text);
src/link_rfu_3.o(.text);
src/AgbRfu_LinkManager.o(.text);
+ src/easy_chat_2.o(.text);
asm/easy_chat_2.o(.text);
src/pokedex_screen.o(.text);
asm/pokedex_screen.o(.text);
@@ -517,6 +518,7 @@ SECTIONS {
src/map_preview_screen.o(.rodata);
src/link_rfu_2.o(.rodata);
src/link_rfu_3.o(.rodata);
+ src/easy_chat_2.o(.rodata);
data/easy_chat_2.o(.rodata);
src/pokedex_screen.o(.rodata);
data/pokedex_screen.o(.rodata);
diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c
index 5485e8da9..b6f8b83e9 100644
--- a/src/clear_save_data_screen.c
+++ b/src/clear_save_data_screen.c
@@ -131,7 +131,7 @@ static void Task_HandleYesNoMenu(u8 taskId)
{
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case -1:
+ case MENU_B_PRESSED:
case 1:
PlaySE(SE_SELECT);
break;
@@ -142,7 +142,7 @@ static void Task_HandleYesNoMenu(u8 taskId)
CopyWindowToVram(1, 3);
ClearSaveData();
break;
- case -2:
+ case MENU_NOTHING_CHOSEN:
default:
return;
}
diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c
new file mode 100644
index 000000000..9e018feaf
--- /dev/null
+++ b/src/easy_chat_2.c
@@ -0,0 +1,1380 @@
+#include "global.h"
+#include "gflib.h"
+#include "easy_chat.h"
+#include "event_data.h"
+#include "menu.h"
+#include "mevent.h"
+#include "overworld.h"
+#include "strings.h"
+#include "task.h"
+#include "constants/songs.h"
+#include "constants/flags.h"
+
+#define EZCHAT_TASK_STATE 0
+#define EZCHAT_TASK_TYPE 1
+#define EZCHAT_TASK_WORDS 2
+#define EZCHAT_TASK_MAINCALLBACK 4
+#define EZCHAT_TASK_UNK06 6
+#define EZCHAT_TASK_SIZE 7
+
+struct EasyChatScreenTemplate
+{
+ u8 type;
+ u8 numColumns;
+ u8 numRows;
+ u8 frameId;
+ const u8 *titleText;
+ const u8 *instructionsText1;
+ const u8 *instructionsText2;
+ const u8 *confirmText1;
+ const u8 *confirmText2;
+};
+
+struct EasyChatScreen
+{
+ /*0x00*/ u8 type;
+ /*0x01*/ u8 templateId;
+ /*0x02*/ u8 numColumns;
+ /*0x03*/ u8 numRows;
+ /*0x04*/ u8 state;
+ /*0x05*/ s8 mainCursorColumn;
+ /*0x06*/ s8 mainCursorRow;
+ /*0x07*/ u8 unk_07;
+ /*0x08*/ u8 stateBackup;
+ /*0x09*/ u8 unk_09;
+ /*0x0A*/ s8 unk_0a;
+ /*0x0B*/ s8 unk_0b;
+ /*0x0C*/ u8 unk_0c;
+ /*0x0D*/ u8 unk_0d;
+ /*0x0E*/ u8 unk_0e;
+ /*0x0F*/ u8 unk_0f;
+ /*0x10*/ s8 unk_10;
+ /*0x11*/ s8 unk_11;
+ /*0x12*/ u8 unk_12;
+ /*0x14*/ u16 *words;
+ /*0x18*/ u16 ecWordBuffer[9];
+};
+
+EWRAM_DATA struct EasyChatScreen *sEasyChatScreen = NULL;
+
+void sub_80FEC0C(void);
+void sub_80FEC54(u8 taskId);
+void sub_80FEC90(u8 taskId);
+bool8 sub_80FED80(u8 taskId);
+void sub_80FEE24(MainCallback cb);
+void sub_80FEF2C(void);
+void sub_80FEF4C(void);
+bool8 EasyChat_AllocateResources(u8 type, u16 *words);
+void EasyChat_FreeResources(void);
+u16 sub_80FF028(void);
+u16 sub_80FF098(void);
+u16 sub_80FF20C(void);
+u16 sub_80FF360(void);
+u16 sub_80FF41C(void);
+u16 sub_80FF4A8(void);
+u16 sub_80FF4F0(void);
+u16 sub_80FF544(void);
+u16 sub_80FF590(void);
+u16 sub_80FF5A8(void);
+u16 sub_80FF5C0(void);
+u8 sub_80FF5F0(void);
+int sub_80FF5FC(void);
+int sub_80FF678(void);
+int sub_80FF688(void);
+int sub_80FF6B4(void);
+int sub_80FF6C8(void);
+void sub_80FF6F0(void);
+void sub_80FF728(void);
+void sub_80FF768(u16 word);
+bool8 sub_80FF78C(void);
+u16 sub_80FF7CC(u32 action);
+int sub_80FF80C(u32 action);
+int sub_80FF8D8(u32 action);
+int sub_80FF968(u32 action);
+void sub_80FF9E8(void);
+void sub_80FFA0C(void);
+u16 sub_80FFA38(u32 action);
+u16 sub_80FFB6C(void);
+u16 sub_80FFB8C(void);
+int sub_80FFBAC(void);
+u16 sub_80FFBE4(void);
+u8 sub_80FFC04(u8 unkB);
+void sub_80FFC1C(void);
+void sub_80FFC44(void);
+bool8 sub_80FFC6C(void);
+bool8 sub_80FFCC0(void);
+bool8 GetEasyChatScreenFrameId(void);
+bool8 IsPhraseDifferentThanPlayerInput(const u16 *wordsToCompare, u8 numWords);
+u8 GetEasyChatScreenTemplateId(u8 type);
+bool32 IsEcWordBufferUninitialized(void);
+bool8 sub_80FFF80(void);
+bool8 sub_80FFF98(void);
+void sub_810011C(void);
+void sub_8100134(u16 v0);
+bool8 sub_810014C(void);
+bool8 sub_8100BF4(void);
+
+void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback)
+{
+ u8 taskId;
+ ResetTasks();
+ taskId = CreateTask(sub_80FEC54, 0);
+ gTasks[taskId].data[EZCHAT_TASK_TYPE] = type;
+ SetWordTaskArg(taskId, EZCHAT_TASK_WORDS, (uintptr_t)words);
+ SetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK, (uintptr_t)callback);
+ SetMainCallback2(sub_80FEC0C);
+}
+
+void sub_80FEC0C(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void VBlankCallback_EasyChatScreen(void)
+{
+ TransferPlttBuffer();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+}
+
+void sub_80FEC38(u8 taskId, TaskFunc func)
+{
+ gTasks[taskId].func = func;
+ gTasks[taskId].data[EZCHAT_TASK_STATE] = 0;
+}
+
+void sub_80FEC54(u8 taskId)
+{
+ if (!IsUpdateLinkStateCBActive())
+ {
+ while (sub_80FED80(taskId))
+ ;
+ }
+ else
+ {
+ if (sub_80FED80(taskId) == TRUE)
+ return;
+ }
+ sub_80FEC38(taskId, sub_80FEC90);
+}
+
+void sub_80FEC90(u8 taskId)
+{
+ u16 v0;
+ s16 *data;
+
+ data = gTasks[taskId].data;
+ switch (data[EZCHAT_TASK_STATE])
+ {
+ case 0:
+ SetVBlankCallback(VBlankCallback_EasyChatScreen);
+ BlendPalettes(0xFFFFFFFF, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
+ data[EZCHAT_TASK_STATE]++;
+ break;
+ case 1:
+ v0 = sub_80FF028();
+ if (v0 == 23)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
+ data[EZCHAT_TASK_STATE] = 3;
+ }
+ else if (v0 != 0)
+ {
+ PlaySE(SE_SELECT);
+ sub_8100134(v0);
+ data[EZCHAT_TASK_STATE]++;
+ }
+ break;
+ case 2:
+ if (!sub_810014C())
+ data[EZCHAT_TASK_STATE] = 1;
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ {
+ if (data[EZCHAT_TASK_TYPE] == 14)
+ sub_80FEF4C();
+ if (data[EZCHAT_TASK_TYPE] == 0)
+ {
+ FlagSet(FLAG_SYS_SET_TRAINER_CARD_PROFILE);
+ sub_80FEF2C();
+ }
+ sub_80FEE24((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
+ }
+ break;
+ }
+}
+
+bool8 sub_80FED80(u8 taskId)
+{
+ s16 *data;
+
+ data = gTasks[taskId].data;
+ switch (data[EZCHAT_TASK_STATE])
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetPaletteFade();
+ break;
+ case 1:
+ if (!InitEasyChatSelection())
+ {
+ sub_80FEE24((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
+ }
+ break;
+ case 2:
+ if (!EasyChat_AllocateResources(data[EZCHAT_TASK_TYPE], (u16 *)GetWordTaskArg(taskId, EZCHAT_TASK_WORDS)))
+ {
+ sub_80FEE24((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
+ }
+ break;
+ case 3:
+ if (!sub_80FFF80())
+ {
+ sub_80FEE24((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
+ }
+ break;
+ case 4:
+ if (sub_80FFF98())
+ {
+ return TRUE;
+ }
+ break;
+ default:
+ return FALSE;
+ }
+ data[EZCHAT_TASK_STATE]++;
+ return TRUE;
+}
+
+void sub_80FEE24(MainCallback callback)
+{
+ DestroyEasyChatSelectionData();
+ EasyChat_FreeResources();
+ sub_810011C();
+ FreeAllWindowBuffers();
+ SetMainCallback2(callback);
+}
+
+void ShowEasyChatScreen(void)
+{
+ u16 *words;
+ switch (gSpecialVar_0x8004)
+ {
+ case EASY_CHAT_TYPE_PROFILE:
+ words = gSaveBlock1Ptr->easyChatProfile;
+ break;
+ case EASY_CHAT_TYPE_BATTLE_START:
+ words = gSaveBlock1Ptr->easyChatBattleStart;
+ break;
+ case EASY_CHAT_TYPE_BATTLE_WON:
+ words = gSaveBlock1Ptr->easyChatBattleWon;
+ break;
+ case EASY_CHAT_TYPE_BATTLE_LOST:
+ words = gSaveBlock1Ptr->easyChatBattleLost;
+ break;
+ case EASY_CHAT_TYPE_QUESTIONNAIRE:
+ words = GetMEventProfileECWordsMaybe();
+ break;
+ case EASY_CHAT_TYPE_MAIL:
+ words = gSaveBlock1Ptr->mail[gSpecialVar_0x8005].words;
+ break;
+ default:
+ return;
+ }
+ DoEasyChatScreen(gSpecialVar_0x8004, words, sub_80568C4);
+}
+
+static const u16 gUnknown_843F29C[] = {
+ EC_WORD_MYSTERY,
+ EC_WORD_EVENT,
+ EC_WORD_IS,
+ EC_WORD_EXCITING
+};
+
+void sub_80FEF2C(void)
+{
+ gSpecialVar_0x8004 = IsPhraseDifferentThanPlayerInput(gUnknown_843F29C, NELEMS(gUnknown_843F29C));
+}
+
+static const u16 gUnknown_843F2A4[] = {
+ EC_WORD_LINK,
+ EC_WORD_TOGETHER,
+ EC_WORD_WITH,
+ EC_WORD_ALL
+};
+
+void sub_80FEF4C(void)
+{
+ gSpecialVar_0x8004 = IsPhraseDifferentThanPlayerInput(gUnknown_843F2A4, NELEMS(gUnknown_843F2A4));
+}
+
+const struct EasyChatScreenTemplate sEasyChatScreenTemplates[] = {
+ {
+ .type = EASY_CHAT_TYPE_PROFILE,
+ .numColumns = 2,
+ .numRows = 2,
+ .frameId = 0,
+ .titleText = gUnknown_8418A2B,
+ .instructionsText1 = gUnknown_84186D1,
+ .instructionsText2 = gUnknown_84186EF,
+ .confirmText1 = gUnknown_841880E,
+ .confirmText2 = gUnknown_8418902
+ }, {
+ .type = EASY_CHAT_TYPE_BATTLE_START,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .titleText = gUnknown_8418A33,
+ .instructionsText1 = gUnknown_8418706,
+ .instructionsText2 = gUnknown_8418725,
+ .confirmText1 = gUnknown_841881B,
+ .confirmText2 = gUnknown_8418902
+ }, {
+ .type = EASY_CHAT_TYPE_BATTLE_WON,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .titleText = gUnknown_8418A4A,
+ .instructionsText1 = gUnknown_8418706,
+ .instructionsText2 = gUnknown_8418725,
+ .confirmText1 = gUnknown_841883E,
+ .confirmText2 = gUnknown_8418902
+ }, {
+ .type = EASY_CHAT_TYPE_BATTLE_LOST,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .titleText = gUnknown_8418A61,
+ .instructionsText1 = gUnknown_8418706,
+ .instructionsText2 = gUnknown_8418725,
+ .confirmText1 = gUnknown_841885F,
+ .confirmText2 = gUnknown_8418902
+ }, {
+ .type = EASY_CHAT_TYPE_MAIL,
+ .numColumns = 2,
+ .numRows = 5,
+ .frameId = 2,
+ .titleText = NULL,
+ .instructionsText1 = gUnknown_8418780,
+ .instructionsText2 = gUnknown_841879E,
+ .confirmText1 = gUnknown_841888C,
+ .confirmText2 = gUnknown_8418902
+ }, {
+ .type = EASY_CHAT_TYPE_MAIL_NO_CONFIRM,
+ .numColumns = 2,
+ .numRows = 2,
+ .frameId = 0,
+ .instructionsText1 = gUnknown_8418780,
+ .instructionsText2 = gUnknown_841879E,
+ }, {
+ .type = EASY_CHAT_TYPE_BARD_SONG,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .titleText = gUnknown_8418A77,
+ .instructionsText1 = gUnknown_84187B2,
+ .instructionsText2 = gUnknown_84187D1,
+ .confirmText1 = gUnknown_84188AC,
+ .confirmText2 = gUnknown_8418902
+ }, {
+ .type = EASY_CHAT_TYPE_INTERVIEW,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .titleText = gUnknown_8418AA1,
+ .instructionsText1 = gUnknown_8418745,
+ .instructionsText2 = gUnknown_8418763,
+ .confirmText1 = gUnknown_8418881,
+ .confirmText2 = gUnknown_8418902
+ }, {
+ .type = EASY_CHAT_TYPE_TRENDY_PHRASE,
+ .numColumns = 2,
+ .numRows = 1,
+ .frameId = 3,
+ .titleText = gUnknown_8418A87,
+ .instructionsText1 = gUnknown_84188B9,
+ .instructionsText2 = gUnknown_84188D6,
+ .confirmText1 = gUnknown_84188F0,
+ .confirmText2 = gUnknown_8418902
+ }, {
+ .type = EASY_CHAT_TYPE_QUESTIONNAIRE,
+ .numColumns = 2,
+ .numRows = 2,
+ .frameId = 0,
+ .titleText = gUnknown_8418AB2,
+ .instructionsText1 = gUnknown_84186D1,
+ .instructionsText2 = gUnknown_84187EE,
+ .confirmText1 = gUnknown_8418881,
+ .confirmText2 = gUnknown_8418902
+ }
+};
+
+bool8 EasyChat_AllocateResources(u8 type, u16 *words)
+{
+ u8 templateId;
+ int i;
+
+ sEasyChatScreen = malloc(sizeof(*sEasyChatScreen));
+ if (sEasyChatScreen == NULL)
+ return FALSE;
+
+ sEasyChatScreen->type = type;
+ sEasyChatScreen->words = words;
+ sEasyChatScreen->state = 0;
+ sEasyChatScreen->mainCursorColumn = 0;
+ sEasyChatScreen->mainCursorRow = 0;
+ sEasyChatScreen->unk_09 = 0;
+ templateId = GetEasyChatScreenTemplateId(type);
+
+ sEasyChatScreen->numColumns = sEasyChatScreenTemplates[templateId].numColumns;
+ sEasyChatScreen->numRows = sEasyChatScreenTemplates[templateId].numRows;
+ sEasyChatScreen->unk_07 = sEasyChatScreen->numColumns * sEasyChatScreen->numRows;
+ sEasyChatScreen->templateId = templateId;
+ if (sEasyChatScreen->unk_07 > 9)
+ sEasyChatScreen->unk_07 = 9;
+
+ CpuCopy16(words, sEasyChatScreen->ecWordBuffer, sEasyChatScreen->unk_07 * sizeof(u16));
+ sEasyChatScreen->unk_0d = (GetNumDisplayableGroups() - 1) / 2 + 1;
+ return TRUE;
+}
+
+void EasyChat_FreeResources(void)
+{
+ if (sEasyChatScreen != NULL)
+ Free(sEasyChatScreen);
+}
+
+u16 sub_80FF028(void)
+{
+ switch (sEasyChatScreen->state)
+ {
+ case 0:
+ return sub_80FF098();
+ case 1:
+ return sub_80FF20C();
+ case 2:
+ return sub_80FF360();
+ case 3:
+ return sub_80FF41C();
+ case 4:
+ return sub_80FF4A8();
+ case 5:
+ return sub_80FF544();
+ case 6:
+ return sub_80FF4F0();
+ }
+ return 0;
+}
+
+u16 sub_80FF098(void)
+{
+ do
+ {
+ if (JOY_NEW(A_BUTTON))
+ {
+ sEasyChatScreen->state = 2;
+ sEasyChatScreen->unk_0a = 0;
+ sEasyChatScreen->unk_0b = 0;
+ sEasyChatScreen->unk_0c = 0;
+ return 9;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return sub_80FF590();
+ }
+ else if (JOY_NEW(START_BUTTON))
+ {
+ return sub_80FF5C0();
+ }
+ else if (JOY_NEW(DPAD_UP))
+ {
+ sEasyChatScreen->mainCursorRow--;
+ break;
+ }
+ else if (JOY_NEW(DPAD_LEFT))
+ {
+ sEasyChatScreen->mainCursorColumn--;
+ break;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ sEasyChatScreen->mainCursorRow++;
+ break;
+ }
+ else if (JOY_NEW(DPAD_RIGHT))
+ {
+ sEasyChatScreen->mainCursorColumn++;
+ break;
+ }
+
+ return 0;
+ } while (0);
+
+ if (sEasyChatScreen->mainCursorRow < 0)
+ sEasyChatScreen->mainCursorRow = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows;
+
+ if (sEasyChatScreen->mainCursorRow > sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
+ sEasyChatScreen->mainCursorRow = 0;
+
+ if (sEasyChatScreen->mainCursorRow == sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
+ {
+ if (sEasyChatScreen->mainCursorColumn > 2)
+ sEasyChatScreen->mainCursorColumn = 2;
+
+ sEasyChatScreen->state = 1;
+ return 3;
+ }
+
+ if (sEasyChatScreen->mainCursorColumn < 0)
+ sEasyChatScreen->mainCursorColumn = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns - 1;
+
+ if (sEasyChatScreen->mainCursorColumn >= sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns)
+ sEasyChatScreen->mainCursorColumn = 0;
+
+ if (GetEasyChatScreenFrameId() == 2 && sEasyChatScreen->mainCursorColumn == 1 && sEasyChatScreen->mainCursorRow == 4)
+ sEasyChatScreen->mainCursorColumn = 0;
+
+ return 2;
+}
+
+u16 sub_80FF20C(void)
+{
+ do
+ {
+ if (JOY_NEW(A_BUTTON))
+ {
+ switch (sEasyChatScreen->mainCursorColumn)
+ {
+ case 0:
+ return sub_80FF5A8();
+ case 1:
+ return sub_80FF590();
+ case 2:
+ return sub_80FF5C0();
+ }
+ }
+
+ if (JOY_NEW(B_BUTTON))
+ {
+ return sub_80FF590();
+ }
+ else if (JOY_NEW(START_BUTTON))
+ {
+ return sub_80FF5C0();
+ }
+ else if (JOY_NEW(DPAD_UP))
+ {
+ sEasyChatScreen->mainCursorRow--;
+ break;
+ }
+ else if (JOY_NEW(DPAD_LEFT))
+ {
+ sEasyChatScreen->mainCursorColumn--;
+ break;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ sEasyChatScreen->mainCursorRow = 0;
+ break;
+ }
+ else if (JOY_NEW(DPAD_RIGHT))
+ {
+ sEasyChatScreen->mainCursorColumn++;
+ break;
+ }
+
+ return 0;
+ } while (0);
+
+ if (sEasyChatScreen->mainCursorRow == sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
+ {
+ if (sEasyChatScreen->mainCursorColumn < 0)
+ sEasyChatScreen->mainCursorColumn = 2;
+
+ if (sEasyChatScreen->mainCursorColumn >= 3)
+ sEasyChatScreen->mainCursorColumn = 0;
+
+ return 3;
+ }
+
+ if (sEasyChatScreen->mainCursorColumn >= sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns)
+ sEasyChatScreen->mainCursorColumn = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns - 1;
+
+ if (GetEasyChatScreenFrameId() == 2 && sEasyChatScreen->mainCursorColumn == 1 && sEasyChatScreen->mainCursorRow == 4)
+ sEasyChatScreen->mainCursorColumn = 0;
+
+ sEasyChatScreen->state = 0;
+ return 2;
+}
+
+u16 sub_80FF360(void)
+{
+ if (JOY_NEW(B_BUTTON))
+ return sub_80FF678();
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (sEasyChatScreen->unk_0a != -1)
+ return sub_80FF5FC();
+
+ switch (sEasyChatScreen->unk_0b)
+ {
+ case 0:
+ return sub_80FF688();
+ case 1:
+ return sub_80FF6B4();
+ case 2:
+ return sub_80FF678();
+ }
+ }
+
+ if (JOY_NEW(SELECT_BUTTON))
+ return sub_80FF688();
+
+ if (JOY_REPT(DPAD_UP))
+ return sub_80FF7CC(2);
+
+ if (JOY_REPT(DPAD_DOWN))
+ return sub_80FF7CC(3);
+
+ if (JOY_REPT(DPAD_LEFT))
+ return sub_80FF7CC(1);
+
+ if (JOY_REPT(DPAD_RIGHT))
+ return sub_80FF7CC(0);
+
+ return 0;
+}
+
+u16 sub_80FF41C(void)
+{
+ if (JOY_NEW(B_BUTTON))
+ {
+ sEasyChatScreen->state = 2;
+ return 13;
+ }
+
+ if (JOY_NEW(A_BUTTON))
+ return sub_80FF6C8();
+
+ if (JOY_NEW(START_BUTTON))
+ return sub_80FFA38(4);
+
+ if (JOY_NEW(SELECT_BUTTON))
+ return sub_80FFA38(5);
+
+ if (JOY_REPT(DPAD_UP))
+ return sub_80FFA38(2);
+
+ if (JOY_REPT(DPAD_DOWN))
+ return sub_80FFA38(3);
+
+ if (JOY_REPT(DPAD_LEFT))
+ return sub_80FFA38(1);
+
+ if (JOY_REPT(DPAD_RIGHT))
+ return sub_80FFA38(0);
+
+ return 0;
+}
+
+u16 sub_80FF4A8(void)
+{
+ u8 var0;
+
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case MENU_B_PRESSED: // B Button
+ case 1: // No
+ sEasyChatScreen->state = sub_80FF5F0();
+ return 7;
+ case 0: // Yes
+ gSpecialVar_Result = 0;
+
+ return 23;
+ default:
+ return 0;
+ }
+}
+
+u16 sub_80FF4F0(void)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case MENU_B_PRESSED: // B Button
+ case 1: // No
+ sEasyChatScreen->state = sub_80FF5F0();
+ return 7;
+ case 0: // Yes
+ gSpecialVar_Result = sub_80FF78C();
+ sub_80FF6F0();
+ return 23;
+ default:
+ return 0;
+ }
+}
+
+u16 sub_80FF544(void)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case MENU_B_PRESSED: // B Button
+ case 1: // No
+ sEasyChatScreen->state = 1;
+ return 7;
+ case 0: // Yes
+ sub_80FF728();
+ sEasyChatScreen->state = 1;
+ return 8;
+ default:
+ return 0;
+ }
+}
+
+u16 sub_80FF590(void)
+{
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ sEasyChatScreen->state = 4;
+ return 5;
+}
+
+u16 sub_80FF5A8(void)
+{
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ sEasyChatScreen->state = 5;
+ return 4;
+}
+
+u16 sub_80FF5C0(void)
+{
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ if (IsEcWordBufferUninitialized())
+ {
+ sEasyChatScreen->state = 4;
+ return 5;
+ }
+ else
+ {
+ sEasyChatScreen->state = 6;
+ return 6;
+ }
+}
+
+u8 sub_80FF5F0(void)
+{
+ return sEasyChatScreen->stateBackup;
+}
+
+int sub_80FF5FC(void)
+{
+ u16 var1;
+
+ if (sEasyChatScreen->unk_09 == 0)
+ {
+ u8 groupId = GetSelectedGroupByIndex(sub_80FFB8C());
+ GetUnlockedECWords(FALSE, groupId);
+ }
+ else
+ {
+ GetUnlockedECWords(TRUE, sub_80FFBAC());
+ }
+
+ var1 = GetNumDisplayedWords();
+ if (var1 == 0)
+ return 0;
+
+ sEasyChatScreen->unk_0f = (var1 - 1) / 2;
+ sEasyChatScreen->unk_0e = 0;
+ sEasyChatScreen->unk_10 = 0;
+ sEasyChatScreen->unk_11 = 0;
+ sEasyChatScreen->state = 3;
+ return 11;
+}
+
+int sub_80FF678(void)
+{
+ sEasyChatScreen->state = 0;
+ return 10;
+}
+
+int sub_80FF688(void)
+{
+ sEasyChatScreen->unk_0a = 0;
+ sEasyChatScreen->unk_0b = 0;
+ sEasyChatScreen->unk_0c = 0;
+ if (!sEasyChatScreen->unk_09)
+ sEasyChatScreen->unk_09 = 1;
+ else
+ sEasyChatScreen->unk_09 = 0;
+
+ return 22;
+}
+
+int sub_80FF6B4(void)
+{
+ sub_80FF768(0xFFFF);
+ return 1;
+}
+
+int sub_80FF6C8(void)
+{
+ u16 easyChatWord = GetDisplayedWordByIndex(sub_80FFBE4());
+ sub_80FF768(easyChatWord);
+ sEasyChatScreen->state = 0;
+ return 12;
+}
+
+void sub_80FF6F0(void)
+{
+ u16 i;
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ sEasyChatScreen->words[i] = sEasyChatScreen->ecWordBuffer[i];
+}
+
+void sub_80FF728(void)
+{
+ u16 i;
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ sEasyChatScreen->ecWordBuffer[i] = 0xFFFF;
+}
+
+void sub_80FF768(u16 easyChatWord)
+{
+ u16 index = sub_80FFB6C();
+ sEasyChatScreen->ecWordBuffer[index] = easyChatWord;
+}
+
+bool8 sub_80FF78C(void)
+{
+ u16 i;
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ {
+ if (sEasyChatScreen->ecWordBuffer[i] != sEasyChatScreen->words[i])
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+u16 sub_80FF7CC(u32 action)
+{
+ if (sEasyChatScreen->unk_0a != -1)
+ {
+ if (sEasyChatScreen->unk_09 == 0)
+ return sub_80FF80C(action);
+ else
+ return sub_80FF8D8(action);
+ }
+ else
+ {
+ return sub_80FF968(action);
+ }
+}
+
+int sub_80FF80C(u32 arg0)
+{
+ switch (arg0)
+ {
+ case 2:
+ if (sEasyChatScreen->unk_0b != -sEasyChatScreen->unk_0c)
+ {
+ if (sEasyChatScreen->unk_0b)
+ {
+ sEasyChatScreen->unk_0b--;
+ return 14;
+ }
+ else
+ {
+ sEasyChatScreen->unk_0c--;
+ return 16;
+ }
+ }
+ break;
+ case 3:
+ if (sEasyChatScreen->unk_0b + sEasyChatScreen->unk_0c < sEasyChatScreen->unk_0d - 1)
+ {
+ int var0;
+ if (sEasyChatScreen->unk_0b < 3)
+ {
+ sEasyChatScreen->unk_0b++;
+ var0 = 14;
+ }
+ else
+ {
+ sEasyChatScreen->unk_0c++;
+ var0 = 15;
+ }
+
+ sub_80FFC1C();
+ return var0;
+ }
+ break;
+ case 1:
+ if (sEasyChatScreen->unk_0a)
+ sEasyChatScreen->unk_0a--;
+ else
+ sub_80FF9E8();
+
+ return 14;
+ case 0:
+ if (sEasyChatScreen->unk_0a < 1)
+ {
+ sEasyChatScreen->unk_0a++;
+ if (sub_80FFC6C())
+ sub_80FF9E8();
+ }
+ else
+ {
+ sub_80FF9E8();
+ }
+ return 14;
+ }
+
+ return 0;
+}
+
+int sub_80FF8D8(u32 arg0)
+{
+ switch (arg0)
+ {
+ case 2:
+ if (sEasyChatScreen->unk_0b > 0)
+ sEasyChatScreen->unk_0b--;
+ else
+ sEasyChatScreen->unk_0b = 3;
+
+ sub_80FFC1C();
+ return 14;
+ case 3:
+ if (sEasyChatScreen->unk_0b < 3)
+ sEasyChatScreen->unk_0b++;
+ else
+ sEasyChatScreen->unk_0b = 0;
+
+ sub_80FFC1C();
+ return 14;
+ case 0:
+ sEasyChatScreen->unk_0a++;
+ if (sub_80FFC6C())
+ sub_80FF9E8();
+
+ return 14;
+ case 1:
+ sEasyChatScreen->unk_0a--;
+ if (sEasyChatScreen->unk_0a < 0)
+ sub_80FF9E8();
+
+ return 14;
+ }
+
+ return 0;
+}
+
+int sub_80FF968(u32 arg0)
+{
+ switch (arg0)
+ {
+ case 2:
+ if (sEasyChatScreen->unk_0b)
+ sEasyChatScreen->unk_0b--;
+ else
+ sEasyChatScreen->unk_0b = 2;
+
+ return 14;
+ case 3:
+ if (sEasyChatScreen->unk_0b < 2)
+ sEasyChatScreen->unk_0b++;
+ else
+ sEasyChatScreen->unk_0b = 0;
+
+ return 14;
+ case 1:
+ sEasyChatScreen->unk_0b++;
+ sub_80FFA0C();
+ return 14;
+ case 0:
+ sEasyChatScreen->unk_0a = 0;
+ sEasyChatScreen->unk_0b++;
+ return 14;
+ }
+
+ return 0;
+}
+
+void sub_80FF9E8(void)
+{
+ sEasyChatScreen->unk_0a = 0xFF;
+ if (sEasyChatScreen->unk_0b)
+ sEasyChatScreen->unk_0b--;
+}
+
+void sub_80FFA0C(void)
+{
+ if (sEasyChatScreen->unk_09 == 0)
+ {
+ sEasyChatScreen->unk_0a = 1;
+ sub_80FFC1C();
+ }
+ else
+ {
+ sEasyChatScreen->unk_0a = sub_80FFC04(sEasyChatScreen->unk_0b);
+ }
+}
+
+u16 sub_80FFA38(u32 arg0)
+{
+ u16 result;
+ switch (arg0)
+ {
+ case 2:
+ if (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e > 0)
+ {
+ if (sEasyChatScreen->unk_11 > 0)
+ {
+ sEasyChatScreen->unk_11--;
+ result = 17;
+ }
+ else
+ {
+ sEasyChatScreen->unk_0e--;
+ result = 18;
+ }
+
+ sub_80FFC44();
+ return result;
+ }
+ break;
+ case 3:
+ if (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e < sEasyChatScreen->unk_0f)
+ {
+ if (sEasyChatScreen->unk_11 < 3)
+ {
+ sEasyChatScreen->unk_11++;
+ result = 17;
+ }
+ else
+ {
+ sEasyChatScreen->unk_0e++;
+ result = 19;
+ }
+
+ sub_80FFC44();
+ return result;
+ }
+ break;
+ case 1:
+ if (sEasyChatScreen->unk_10 > 0)
+ sEasyChatScreen->unk_10--;
+ else
+ sEasyChatScreen->unk_10 = 1;
+
+ sub_80FFC44();
+ return 17;
+ case 0:
+ if (sEasyChatScreen->unk_10 < 1)
+ {
+ sEasyChatScreen->unk_10++;
+ if (sub_80FFCC0())
+ sEasyChatScreen->unk_10 = 0;
+ }
+ else
+ {
+ sEasyChatScreen->unk_10 = 0;
+ }
+ return 17;
+ case 4:
+ if (sEasyChatScreen->unk_0e)
+ {
+ if (sEasyChatScreen->unk_0e > 3)
+ sEasyChatScreen->unk_0e -= 4;
+ else
+ sEasyChatScreen->unk_0e = 0;
+
+ return 20;
+ }
+ break;
+ case 5:
+ if (sEasyChatScreen->unk_0e <= sEasyChatScreen->unk_0f - 4)
+ {
+ sEasyChatScreen->unk_0e += 4;
+ if (sEasyChatScreen->unk_0e > sEasyChatScreen->unk_0f - 3)
+ sEasyChatScreen->unk_0e = sEasyChatScreen->unk_0f + -3u;
+
+ sub_80FFC44();
+ return 21;
+ }
+ break;
+ }
+
+ return 0;
+}
+
+u16 sub_80FFB6C(void)
+{
+ return (sEasyChatScreen->mainCursorRow * sEasyChatScreen->numColumns) + sEasyChatScreen->mainCursorColumn;
+}
+
+u16 sub_80FFB8C(void)
+{
+ return 2 * (sEasyChatScreen->unk_0b + sEasyChatScreen->unk_0c) + sEasyChatScreen->unk_0a;
+}
+
+const u8 gUnknown_843F39C[][7] = {
+ {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}
+};
+
+int sub_80FFBAC(void)
+{
+ int var0 = sEasyChatScreen->unk_0a < NELEMS(*gUnknown_843F39C) ? sEasyChatScreen->unk_0a : 0;
+ int var1 = sEasyChatScreen->unk_0b < NELEMS(gUnknown_843F39C) ? sEasyChatScreen->unk_0b : 0;
+ return gUnknown_843F39C[var1][var0];
+}
+
+u16 sub_80FFBE4(void)
+{
+ return 2 * (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e) + sEasyChatScreen->unk_10;
+}
+
+u8 sub_80FFC04(u8 arg0)
+{
+ switch (arg0)
+ {
+ case 0:
+ default:
+ return 6;
+ case 1:
+ return 5;
+ }
+}
+
+void sub_80FFC1C(void)
+{
+ while (sub_80FFC6C())
+ {
+ if (sEasyChatScreen->unk_0a)
+ sEasyChatScreen->unk_0a--;
+ else
+ break;
+ }
+}
+
+void sub_80FFC44(void)
+{
+ while (sub_80FFCC0())
+ {
+ if (sEasyChatScreen->unk_10)
+ sEasyChatScreen->unk_10--;
+ else
+ break;
+ }
+}
+
+bool8 sub_80FFC6C(void)
+{
+ if (sEasyChatScreen->unk_09 == 0)
+ return sub_80FFB8C() >= GetNumDisplayableGroups() ? TRUE : FALSE;
+ else
+ return sEasyChatScreen->unk_0a > sub_80FFC04(sEasyChatScreen->unk_0b) ? TRUE : FALSE;
+}
+
+bool8 sub_80FFCC0(void)
+{
+ return sub_80FFBE4() >= GetNumDisplayedWords() ? TRUE : FALSE;
+}
+
+u8 GetEasyChatScreenFrameId(void)
+{
+ return sEasyChatScreenTemplates[sEasyChatScreen->templateId].frameId;
+}
+
+const u8 *GetTitleText(void)
+{
+ return sEasyChatScreenTemplates[sEasyChatScreen->templateId].titleText;
+}
+
+u16 *GetEasyChatWordBuffer(void)
+{
+ return sEasyChatScreen->ecWordBuffer;
+}
+
+u8 GetNumRows(void)
+{
+ return sEasyChatScreen->numRows;
+}
+
+u8 GetNumColumns(void)
+{
+ return sEasyChatScreen->numColumns;
+}
+
+u8 GetMainCursorColumn(void)
+{
+ return sEasyChatScreen->mainCursorColumn;
+}
+
+u8 GetMainCursorRow(void)
+{
+ return sEasyChatScreen->mainCursorRow;
+}
+
+void GetEasyChatInstructionsText(const u8 **str1, const u8 **str2)
+{
+ *str1 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].instructionsText1;
+ *str2 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].instructionsText2;
+}
+
+void GetEasyChatConfirmText(const u8 **str1, const u8 **str2)
+{
+ *str1 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].confirmText1;
+ *str2 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].confirmText2;
+}
+
+void sub_80FFDC8(const u8 **str1, const u8 **str2)
+{
+ switch (sEasyChatScreen->type)
+ {
+ case EASY_CHAT_TYPE_MAIL:
+ *str1 = gUnknown_84189EE;
+ *str2 = NULL;
+ break;
+ default:
+ *str1 = gUnknown_84189E0;
+ *str2 = NULL;
+ break;
+ }
+
+}
+
+void GetEasyChatConfirmDeletionText(const u8 **str1, const u8 **str2)
+{
+ *str1 = gUnknown_8418937;
+ *str2 = gUnknown_8418956;
+}
+
+void sub_80FFE08(u8 *arg0, u8 *arg1)
+{
+ *arg0 = sEasyChatScreen->unk_0a;
+ *arg1 = sEasyChatScreen->unk_0b;
+}
+
+u8 sub_80FFE1C(void)
+{
+ return sEasyChatScreen->unk_09;
+}
+
+u8 sub_80FFE28(void)
+{
+ return sEasyChatScreen->unk_0c;
+}
+
+void sub_80FFE34(u8 *arg0, u8 *arg1)
+{
+ *arg0 = sEasyChatScreen->unk_10;
+ *arg1 = sEasyChatScreen->unk_11;
+}
+
+u8 sub_80FFE48(void)
+{
+ return sEasyChatScreen->unk_0e;
+}
+
+u8 sub_80FFE54(void)
+{
+ return sEasyChatScreen->unk_0f;
+}
+
+u8 unref_sub_80FFE60(void)
+{
+ return 0;
+}
+
+bool32 sub_80FFE64(void)
+{
+ switch (sEasyChatScreen->state)
+ {
+ case 2:
+ if (sEasyChatScreen->unk_09 == 0 && sEasyChatScreen->unk_0c)
+ return TRUE;
+ break;
+ case 3:
+ if (sEasyChatScreen->unk_0e)
+ return TRUE;
+ break;
+ }
+
+ return FALSE;
+}
+
+bool32 sub_80FFE98(void)
+{
+ switch (sEasyChatScreen->state)
+ {
+ case 2:
+ if (sEasyChatScreen->unk_09 == 0 && sEasyChatScreen->unk_0c + 4 <= sEasyChatScreen->unk_0d - 1)
+ return TRUE;
+ break;
+ case 3:
+ if (sEasyChatScreen->unk_0e + 4 <= sEasyChatScreen->unk_0f)
+ return TRUE;
+ break;
+ }
+
+ return FALSE;
+}
+
+bool8 IsPhraseDifferentThanPlayerInput(const u16 *phrase, u8 phraseLength)
+{
+ u8 i;
+
+ for (i = 0; i < phraseLength; i++)
+ {
+ if (phrase[i] != sEasyChatScreen->ecWordBuffer[i])
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+u8 GetEasyChatScreenTemplateId(u8 type)
+{
+ u32 i;
+
+ for (i = 0; i < NELEMS(sEasyChatScreenTemplates); i++)
+ {
+ if (sEasyChatScreenTemplates[i].type == type)
+ return i;
+ }
+
+ return 0;
+}
+
+bool32 IsEcWordBufferUninitialized(void)
+{
+ int i;
+
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ {
+ if (sEasyChatScreen->ecWordBuffer[i] != 0xFFFF)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool8 sub_80FFF80(void)
+{
+ if (!sub_8100BF4())
+ return FALSE;
+ else
+ return TRUE;
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index c6d2d73dd..6464b9b75 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -316,7 +316,7 @@ gUnknown_203998C: @ 203998C
.align 2
@ .include "src/easy_chat_2.o"
-gUnknown_203ACE8: @ 203ACE8
+sEasyChatScreen: @ 203ACE8
.space 0x4
gUnknown_203ACEC: @ 203ACEC