summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/easy_chat_2.s1559
-rw-r--r--data/easy_chat_2.s85
-rw-r--r--include/easy_chat.h23
-rw-r--r--include/graphics.h4
-rw-r--r--ld_script.txt2
-rw-r--r--src/easy_chat_2.c14
-rw-r--r--src/easy_chat_3.c983
-rw-r--r--src/graphics.c4
-rw-r--r--sym_ewram.txt11
9 files changed, 1026 insertions, 1659 deletions
diff --git a/asm/easy_chat_2.s b/asm/easy_chat_2.s
index 1f742ebd6..1c5bb0fdc 100644
--- a/asm/easy_chat_2.s
+++ b/asm/easy_chat_2.s
@@ -5,1547 +5,6 @@
.text
- thumb_func_start sub_80FFF98
-sub_80FFF98: @ 80FFF98
- push {r4,lr}
- sub sp, 0x8
- ldr r0, _080FFFB4 @ =gUnknown_203ACEC
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x5
- bls _080FFFA8
- b _08100100
-_080FFFA8:
- lsls r0, 2
- ldr r1, _080FFFB8 @ =_080FFFBC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FFFB4: .4byte gUnknown_203ACEC
-_080FFFB8: .4byte _080FFFBC
- .align 2, 0
-_080FFFBC:
- .4byte _080FFFD4
- .4byte _08100038
- .4byte _0810006C
- .4byte _0810009C
- .4byte _081000AE
- .4byte _081000B8
-_080FFFD4:
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _08100028 @ =gUnknown_843F8A0
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r4, _0810002C @ =gUnknown_203ACEC
- ldr r1, [r4]
- movs r0, 0xB0
- lsls r0, 4
- adds r1, r0
- movs r0, 0x3
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- movs r0, 0xC0
- lsls r0, 2
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r0, _08100030 @ =gUnknown_843F8B0
- bl InitWindows
- bl DeactivateAllTextPrinters
- bl sub_8100CBC
- bl sub_8100C5C
- movs r0, 0
- str r0, [sp, 0x4]
- movs r1, 0xE0
- lsls r1, 19
- ldr r2, _08100034 @ =0x01000100
- add r0, sp, 0x4
- bl CpuFastSet
- b _08100104
- .align 2, 0
-_08100028: .4byte gUnknown_843F8A0
-_0810002C: .4byte gUnknown_203ACEC
-_08100030: .4byte gUnknown_843F8B0
-_08100034: .4byte 0x01000100
-_08100038:
- ldr r1, _08100064 @ =gUnknown_8E99DAC
- movs r0, 0
- str r0, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- ldr r1, _08100068 @ =gUnknown_8E99E74
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- bl sub_8100F44
- bl sub_8102428
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- b _08100104
- .align 2, 0
-_08100064: .4byte gUnknown_8E99DAC
-_08100068: .4byte gUnknown_8E99E74
-_0810006C:
- ldr r0, _08100094 @ =gUnknown_203ACEC
- ldr r0, [r0]
- movs r1, 0xC0
- lsls r1, 2
- adds r0, r1
- bl sub_8101100
- ldr r1, _08100098 @ =gUnknown_843F7AC
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- b _08100104
- .align 2, 0
-_08100094: .4byte gUnknown_203ACEC
-_08100098: .4byte gUnknown_843F7AC
-_0810009C:
- bl sub_8100D24
- bl sub_8100E34
- bl sub_8100FDC
- bl sub_81012CC
- b _08100104
-_081000AE:
- bl sub_8101A90
- bl sub_8101AC4
- b _08100104
-_081000B8:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0810010E
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8101A5C
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x3B
- bl SetGpuReg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0
- bl ShowBg
- bl sub_81021D4
- bl sub_8102320
- b _08100104
-_08100100:
- movs r0, 0
- b _08100110
-_08100104:
- ldr r0, _08100118 @ =gUnknown_203ACEC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0810010E:
- movs r0, 0x1
-_08100110:
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08100118: .4byte gUnknown_203ACEC
- thumb_func_end sub_80FFF98
-
- thumb_func_start sub_810011C
-sub_810011C: @ 810011C
- push {lr}
- ldr r0, _08100130 @ =gUnknown_203ACEC
- ldr r0, [r0]
- cmp r0, 0
- beq _0810012A
- bl Free
-_0810012A:
- pop {r0}
- bx r0
- .align 2, 0
-_08100130: .4byte gUnknown_203ACEC
- thumb_func_end sub_810011C
-
- thumb_func_start sub_8100134
-sub_8100134: @ 8100134
- push {lr}
- ldr r1, _08100148 @ =gUnknown_203ACEC
- ldr r1, [r1]
- movs r2, 0
- strh r0, [r1, 0x4]
- strh r2, [r1]
- bl sub_810014C
- pop {r0}
- bx r0
- .align 2, 0
-_08100148: .4byte gUnknown_203ACEC
- thumb_func_end sub_8100134
-
- thumb_func_start sub_810014C
-sub_810014C: @ 810014C
- push {lr}
- ldr r0, _08100164 @ =gUnknown_203ACEC
- ldr r0, [r0]
- ldrh r0, [r0, 0x4]
- cmp r0, 0x16
- bhi _08100250
- lsls r0, 2
- ldr r1, _08100168 @ =_0810016C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08100164: .4byte gUnknown_203ACEC
-_08100168: .4byte _0810016C
- .align 2, 0
-_0810016C:
- .4byte _08100250
- .4byte _081001C8
- .4byte _081001CE
- .4byte _081001D4
- .4byte _081001DA
- .4byte _081001E0
- .4byte _081001E6
- .4byte _081001EC
- .4byte _081001F2
- .4byte _081001F8
- .4byte _081001FE
- .4byte _08100204
- .4byte _0810020A
- .4byte _08100210
- .4byte _08100216
- .4byte _0810021C
- .4byte _08100222
- .4byte _08100228
- .4byte _0810022E
- .4byte _08100234
- .4byte _0810023A
- .4byte _08100240
- .4byte _08100246
-_081001C8:
- bl sub_8100258
- b _0810024A
-_081001CE:
- bl sub_8100290
- b _0810024A
-_081001D4:
- bl sub_8100374
- b _0810024A
-_081001DA:
- bl sub_8100430
- b _0810024A
-_081001E0:
- bl sub_81003A8
- b _0810024A
-_081001E6:
- bl sub_81003EC
- b _0810024A
-_081001EC:
- bl sub_8100474
- b _0810024A
-_081001F2:
- bl sub_81004B8
- b _0810024A
-_081001F8:
- bl sub_81004F4
- b _0810024A
-_081001FE:
- bl sub_81005C0
- b _0810024A
-_08100204:
- bl sub_81007D0
- b _0810024A
-_0810020A:
- bl sub_8100890
- b _0810024A
-_08100210:
- bl sub_810093C
- b _0810024A
-_08100216:
- bl sub_8100720
- b _0810024A
-_0810021C:
- bl sub_810072C
- b _0810024A
-_08100222:
- bl sub_8100774
- b _0810024A
-_08100228:
- bl sub_81009F8
- b _0810024A
-_0810022E:
- bl sub_8100A78
- b _0810024A
-_08100234:
- bl sub_8100A04
- b _0810024A
-_0810023A:
- bl sub_8100B70
- b _0810024A
-_08100240:
- bl sub_8100AE8
- b _0810024A
-_08100246:
- bl sub_8100660
-_0810024A:
- lsls r0, 24
- lsrs r0, 24
- b _08100252
-_08100250:
- movs r0, 0
-_08100252:
- pop {r1}
- bx r1
- thumb_func_end sub_810014C
-
- thumb_func_start sub_8100258
-sub_8100258: @ 8100258
- push {r4,lr}
- ldr r4, _0810026C @ =gUnknown_203ACEC
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _08100270
- cmp r0, 0x1
- beq _0810027E
- b _08100288
- .align 2, 0
-_0810026C: .4byte gUnknown_203ACEC
-_08100270:
- bl sub_8100FDC
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08100288
-_0810027E:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0810028A
-_08100288:
- movs r0, 0x1
-_0810028A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8100258
-
- thumb_func_start sub_8100290
-sub_8100290: @ 8100290
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x40
- bl GetEasyChatWordBuffer
- adds r4, r0, 0
- bl GetEasyChatScreenFrameId
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- bl GetMainCursorColumn
- lsls r0, 24
- lsrs r7, r0, 24
- bl GetMainCursorRow
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- bl GetNumColumns
- lsls r0, 24
- lsrs r0, 24
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- lsls r0, 1
- adds r4, r0
- ldr r1, _08100304 @ =gUnknown_843F888
- mov r2, r9
- lsls r0, r2, 2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 19
- movs r1, 0xD0
- lsls r1, 12
- adds r0, r1
- lsrs r6, r0, 16
- movs r5, 0
- cmp r5, r7
- bcs _0810033A
- ldr r2, _08100308 @ =0x0000ffff
- mov r10, r2
-_081002EE:
- ldrh r0, [r4]
- cmp r0, r10
- bne _08100310
- movs r0, 0x1
- ldr r1, _0810030C @ =gUnknown_843F8D8
- movs r2, 0
- bl GetStringWidth
- lsls r1, r0, 3
- subs r0, r1, r0
- b _08100322
- .align 2, 0
-_08100304: .4byte gUnknown_843F888
-_08100308: .4byte 0x0000ffff
-_0810030C: .4byte gUnknown_843F8D8
-_08100310:
- ldrh r1, [r4]
- mov r0, sp
- bl CopyEasyChatWord
- movs r0, 0x1
- mov r1, sp
- movs r2, 0
- bl GetStringWidth
-_08100322:
- adds r0, 0x11
- lsls r1, r6, 16
- asrs r1, 16
- adds r1, r0
- lsls r1, 16
- lsrs r6, r1, 16
- adds r4, 0x2
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r7
- bcc _081002EE
-_0810033A:
- ldr r1, _08100370 @ =gUnknown_843F888
- mov r2, r9
- lsls r0, r2, 2
- adds r0, r1
- mov r2, r8
- lsls r1, r2, 1
- ldrb r0, [r0, 0x1]
- adds r1, r0
- adds r1, 0x1
- lsls r1, 3
- adds r1, 0x1
- lsls r0, r6, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- bl sub_8101B58
- movs r0, 0
- add sp, 0x40
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08100370: .4byte gUnknown_843F888
- thumb_func_end sub_8100290
-
- thumb_func_start sub_8100374
-sub_8100374: @ 8100374
- push {lr}
- bl GetMainCursorColumn
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08100396
- cmp r0, 0x1
- bgt _0810038C
- cmp r0, 0
- beq _08100392
- b _081003A2
-_0810038C:
- cmp r0, 0x2
- beq _0810039A
- b _081003A2
-_08100392:
- movs r0, 0x1C
- b _0810039C
-_08100396:
- movs r0, 0x73
- b _0810039C
-_0810039A:
- movs r0, 0xBF
-_0810039C:
- movs r1, 0x61
- bl sub_8101B58
-_081003A2:
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8100374
-
- thumb_func_start sub_81003A8
-sub_81003A8: @ 81003A8
- push {r4,lr}
- ldr r4, _081003BC @ =gUnknown_203ACEC
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _081003C0
- cmp r0, 0x1
- beq _081003DA
- b _081003E4
- .align 2, 0
-_081003BC: .4byte gUnknown_203ACEC
-_081003C0:
- bl sub_8101B88
- movs r0, 0x2
- bl sub_8100E7C
- movs r0, 0x1
- bl sub_8100F18
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _081003E4
-_081003DA:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _081003E6
-_081003E4:
- movs r0, 0x1
-_081003E6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81003A8
-
- thumb_func_start sub_81003EC
-sub_81003EC: @ 81003EC
- push {r4,lr}
- ldr r4, _08100400 @ =gUnknown_203ACEC
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _08100404
- cmp r0, 0x1
- beq _0810041E
- b _08100428
- .align 2, 0
-_08100400: .4byte gUnknown_203ACEC
-_08100404:
- bl sub_8101B88
- movs r0, 0x3
- bl sub_8100E7C
- movs r0, 0
- bl sub_8100F18
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08100428
-_0810041E:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0810042A
-_08100428:
- movs r0, 0x1
-_0810042A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81003EC
-
- thumb_func_start sub_8100430
-sub_8100430: @ 8100430
- push {r4,lr}
- ldr r4, _08100444 @ =gUnknown_203ACEC
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _08100448
- cmp r0, 0x1
- beq _08100462
- b _0810046C
- .align 2, 0
-_08100444: .4byte gUnknown_203ACEC
-_08100448:
- bl sub_8101B88
- movs r0, 0x1
- bl sub_8100E7C
- movs r0, 0x1
- bl sub_8100F18
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0810046C
-_08100462:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0810046E
-_0810046C:
- movs r0, 0x1
-_0810046E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8100430
-
- thumb_func_start sub_8100474
-sub_8100474: @ 8100474
- push {r4,lr}
- ldr r4, _08100488 @ =gUnknown_203ACEC
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0810048C
- cmp r0, 0x1
- beq _081004A6
- b _081004B0
- .align 2, 0
-_08100488: .4byte gUnknown_203ACEC
-_0810048C:
- bl sub_8101BA8
- movs r0, 0
- bl sub_8100E7C
- movs r0, 0
- bl ShowBg
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _081004B0
-_081004A6:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _081004B2
-_081004B0:
- movs r0, 0x1
-_081004B2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8100474
-
- thumb_func_start sub_81004B8
-sub_81004B8: @ 81004B8
- push {r4,lr}
- ldr r4, _081004CC @ =gUnknown_203ACEC
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _081004D0
- cmp r0, 0x1
- beq _081004E6
- movs r0, 0x1
- b _081004EE
- .align 2, 0
-_081004CC: .4byte gUnknown_203ACEC
-_081004D0:
- bl sub_8101BA8
- movs r0, 0
- bl sub_8100E7C
- bl sub_8100FDC
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_081004E6:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
-_081004EE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81004B8
-
- thumb_func_start sub_81004F4
-sub_81004F4: @ 81004F4
- push {lr}
- ldr r0, _0810050C @ =gUnknown_203ACEC
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _081005AE
- lsls r0, 2
- ldr r1, _08100510 @ =_08100514
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810050C: .4byte gUnknown_203ACEC
-_08100510: .4byte _08100514
- .align 2, 0
-_08100514:
- .4byte _08100528
- .4byte _08100544
- .4byte _08100556
- .4byte _0810056C
- .4byte _0810058C
-_08100528:
- bl sub_8101B88
- movs r0, 0
- bl HideBg
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8101A5C
- bl sub_810131C
- b _0810057A
-_08100544:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081005B8
- movs r0, 0
- bl sub_81015D4
- b _0810057A
-_08100556:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081005B8
- bl sub_81016AC
- lsls r0, 24
- cmp r0, 0
- bne _081005B8
- b _0810057A
-_0810056C:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081005B8
- bl sub_8101FAC
-_0810057A:
- ldr r0, _08100588 @ =gUnknown_203ACEC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _081005B8
- .align 2, 0
-_08100588: .4byte gUnknown_203ACEC
-_0810058C:
- bl sub_8102018
- lsls r0, 24
- cmp r0, 0
- bne _081005B8
- bl sub_8101BC0
- movs r0, 0
- bl sub_81022E0
- bl sub_810224C
- ldr r0, _081005B4 @ =gUnknown_203ACEC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_081005AE:
- movs r0, 0
- b _081005BA
- .align 2, 0
-_081005B4: .4byte gUnknown_203ACEC
-_081005B8:
- movs r0, 0x1
-_081005BA:
- pop {r1}
- bx r1
- thumb_func_end sub_81004F4
-
- thumb_func_start sub_81005C0
-sub_81005C0: @ 81005C0
- push {lr}
- ldr r0, _081005D8 @ =gUnknown_203ACEC
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _08100658
- lsls r0, 2
- ldr r1, _081005DC @ =_081005E0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081005D8: .4byte gUnknown_203ACEC
-_081005DC: .4byte _081005E0
- .align 2, 0
-_081005E0:
- .4byte _081005F4
- .4byte _08100602
- .4byte _0810061E
- .4byte _08100630
- .4byte _08100654
-_081005F4:
- bl sub_8101C48
- bl sub_81020AC
- bl sub_81022B0
- b _08100644
-_08100602:
- bl sub_81020D0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08100658
- movs r0, 0x1
- bl sub_81015D4
- ldr r0, _0810062C @ =gUnknown_203ACEC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0810061E:
- bl sub_81016AC
- lsls r0, 24
- cmp r0, 0
- bne _08100658
- b _08100644
- .align 2, 0
-_0810062C: .4byte gUnknown_203ACEC
-_08100630:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08100658
- bl sub_8101BA8
- movs r0, 0
- bl ShowBg
-_08100644:
- ldr r0, _08100650 @ =gUnknown_203ACEC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08100658
- .align 2, 0
-_08100650: .4byte gUnknown_203ACEC
-_08100654:
- movs r0, 0
- b _0810065A
-_08100658:
- movs r0, 0x1
-_0810065A:
- pop {r1}
- bx r1
- thumb_func_end sub_81005C0
-
- thumb_func_start sub_8100660
-sub_8100660: @ 8100660
- push {lr}
- ldr r0, _08100678 @ =gUnknown_203ACEC
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _08100718
- lsls r0, 2
- ldr r1, _0810067C @ =_08100680
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08100678: .4byte gUnknown_203ACEC
-_0810067C: .4byte _08100680
- .align 2, 0
-_08100680:
- .4byte _08100694
- .4byte _081006A8
- .4byte _081006C2
- .4byte _081006E8
- .4byte _0810070E
-_08100694:
- bl sub_8101C48
- bl sub_81022B0
- bl sub_810215C
- movs r0, 0x5
- bl sub_81015D4
- b _081006D6
-_081006A8:
- bl sub_81016AC
- lsls r0, 24
- cmp r0, 0
- bne _08100718
- bl sub_81021B8
- lsls r0, 24
- cmp r0, 0
- bne _08100718
- bl sub_810131C
- b _081006D6
-_081006C2:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08100718
- movs r0, 0x6
- bl sub_81015D4
- bl sub_8102178
-_081006D6:
- ldr r0, _081006E4 @ =gUnknown_203ACEC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08100718
- .align 2, 0
-_081006E4: .4byte gUnknown_203ACEC
-_081006E8:
- bl sub_81016AC
- lsls r0, 24
- cmp r0, 0
- bne _08100718
- bl sub_81021B8
- lsls r0, 24
- cmp r0, 0
- bne _08100718
- bl sub_810224C
- bl sub_8101BC0
- ldr r0, _08100714 @ =gUnknown_203ACEC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0810070E:
- movs r0, 0
- b _0810071A
- .align 2, 0
-_08100714: .4byte gUnknown_203ACEC
-_08100718:
- movs r0, 0x1
-_0810071A:
- pop {r1}
- bx r1
- thumb_func_end sub_8100660
-
- thumb_func_start sub_8100720
-sub_8100720: @ 8100720
- push {lr}
- bl sub_8101C80
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8100720
-
- thumb_func_start sub_810072C
-sub_810072C: @ 810072C
- push {r4,lr}
- ldr r4, _08100740 @ =gUnknown_203ACEC
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _08100744
- cmp r0, 0x1
- beq _08100754
- b _0810076A
- .align 2, 0
-_08100740: .4byte gUnknown_203ACEC
-_08100744:
- movs r0, 0x1
- movs r1, 0x2
- bl sub_81019B0
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_08100754:
- bl sub_8101A10
- lsls r0, 24
- cmp r0, 0
- bne _0810076A
- bl sub_8101C80
- bl sub_810224C
- movs r0, 0
- b _0810076C
-_0810076A:
- movs r0, 0x1
-_0810076C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_810072C
-
- thumb_func_start sub_8100774
-sub_8100774: @ 8100774
- push {r4,lr}
- ldr r4, _0810078C @ =gUnknown_203ACEC
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _081007A8
- cmp r0, 0x1
- bgt _08100790
- cmp r0, 0
- beq _08100796
- b _081007C8
- .align 2, 0
-_0810078C: .4byte gUnknown_203ACEC
-_08100790:
- cmp r0, 0x2
- beq _081007C0
- b _081007C8
-_08100796:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x2
- bl sub_81019B0
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_081007A8:
- bl sub_8101A10
- lsls r0, 24
- cmp r0, 0
- bne _081007C8
- bl sub_810224C
- ldr r0, _081007C4 @ =gUnknown_203ACEC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_081007C0:
- movs r0, 0
- b _081007CA
- .align 2, 0
-_081007C4: .4byte gUnknown_203ACEC
-_081007C8:
- movs r0, 0x1
-_081007CA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8100774
-
- thumb_func_start sub_81007D0
-sub_81007D0: @ 81007D0
- push {lr}
- ldr r0, _081007E8 @ =gUnknown_203ACEC
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x5
- bhi _08100888
- lsls r0, 2
- ldr r1, _081007EC @ =_081007F0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081007E8: .4byte gUnknown_203ACEC
-_081007EC: .4byte _081007F0
- .align 2, 0
-_081007F0:
- .4byte _08100808
- .4byte _08100816
- .4byte _08100826
- .4byte _08100838
- .4byte _08100858
- .4byte _0810087E
-_08100808:
- bl sub_8101C48
- bl sub_81020AC
- bl sub_81022B0
- b _08100848
-_08100816:
- bl sub_81020D0
- lsls r0, 24
- cmp r0, 0
- bne _08100888
- bl sub_81015BC
- b _08100848
-_08100826:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08100888
- movs r0, 0x2
- bl sub_81015D4
- b _08100848
-_08100838:
- bl sub_81016AC
- lsls r0, 24
- cmp r0, 0
- bne _08100888
- movs r0, 0x2
- bl sub_81012E0
-_08100848:
- ldr r0, _08100854 @ =gUnknown_203ACEC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08100888
- .align 2, 0
-_08100854: .4byte gUnknown_203ACEC
-_08100858:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08100888
- bl sub_8101E80
- movs r0, 0x1
- bl sub_81022E0
- bl sub_810224C
- bl sub_8102394
- ldr r0, _08100884 @ =gUnknown_203ACEC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0810087E:
- movs r0, 0
- b _0810088A
- .align 2, 0
-_08100884: .4byte gUnknown_203ACEC
-_08100888:
- movs r0, 0x1
-_0810088A:
- pop {r1}
- bx r1
- thumb_func_end sub_81007D0
-
- thumb_func_start sub_8100890
-sub_8100890: @ 8100890
- push {lr}
- ldr r0, _081008A8 @ =gUnknown_203ACEC
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x5
- bhi _08100934
- lsls r0, 2
- ldr r1, _081008AC @ =_081008B0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081008A8: .4byte gUnknown_203ACEC
-_081008AC: .4byte _081008B0
- .align 2, 0
-_081008B0:
- .4byte _081008C8
- .4byte _081008CE
- .4byte _081008E0
- .4byte _081008F2
- .4byte _08100914
- .4byte _0810092C
-_081008C8:
- bl sub_8100FDC
- b _08100902
-_081008CE:
- bl sub_8101F80
- bl sub_81022B0
- bl sub_81023F8
- bl sub_81015BC
- b _08100902
-_081008E0:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08100934
- movs r0, 0x3
- bl sub_81015D4
- b _08100902
-_081008F2:
- bl sub_81016AC
- lsls r0, 24
- cmp r0, 0
- bne _08100934
- movs r0, 0
- bl ShowBg
-_08100902:
- ldr r0, _08100910 @ =gUnknown_203ACEC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08100934
- .align 2, 0
-_08100910: .4byte gUnknown_203ACEC
-_08100914:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08100934
- bl sub_8101BA8
- ldr r0, _08100930 @ =gUnknown_203ACEC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0810092C:
- movs r0, 0
- b _08100936
- .align 2, 0
-_08100930: .4byte gUnknown_203ACEC
-_08100934:
- movs r0, 0x1
-_08100936:
- pop {r1}
- bx r1
- thumb_func_end sub_8100890
-
- thumb_func_start sub_810093C
-sub_810093C: @ 810093C
- push {lr}
- ldr r0, _08100954 @ =gUnknown_203ACEC
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _081009F0
- lsls r0, 2
- ldr r1, _08100958 @ =_0810095C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08100954: .4byte gUnknown_203ACEC
-_08100958: .4byte _0810095C
- .align 2, 0
-_0810095C:
- .4byte _08100970
- .4byte _08100982
- .4byte _08100994
- .4byte _081009A4
- .4byte _081009C4
-_08100970:
- bl sub_8101F80
- bl sub_81022B0
- bl sub_81023F8
- bl sub_81015BC
- b _081009B2
-_08100982:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081009F0
- movs r0, 0x4
- bl sub_81015D4
- b _081009B2
-_08100994:
- bl sub_81016AC
- lsls r0, 24
- cmp r0, 0
- bne _081009F0
- bl sub_810131C
- b _081009B2
-_081009A4:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081009F0
- bl sub_8101FAC
-_081009B2:
- ldr r0, _081009C0 @ =gUnknown_203ACEC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _081009F0
- .align 2, 0
-_081009C0: .4byte gUnknown_203ACEC
-_081009C4:
- bl sub_8102018
- lsls r0, 24
- cmp r0, 0
- bne _081009F0
- bl sub_8101BC0
- movs r0, 0
- bl sub_81022E0
- bl sub_810224C
- ldr r0, _081009EC @ =gUnknown_203ACEC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0
- b _081009F2
- .align 2, 0
-_081009EC: .4byte gUnknown_203ACEC
-_081009F0:
- movs r0, 0x1
-_081009F2:
- pop {r1}
- bx r1
- thumb_func_end sub_810093C
-
- thumb_func_start sub_81009F8
-sub_81009F8: @ 81009F8
- push {lr}
- bl sub_8101F04
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_81009F8
-
- thumb_func_start sub_8100A04
-sub_8100A04: @ 8100A04
- push {r4,lr}
- ldr r4, _08100A1C @ =gUnknown_203ACEC
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _08100A30
- cmp r0, 0x1
- bgt _08100A20
- cmp r0, 0
- beq _08100A2A
- b _08100A6E
- .align 2, 0
-_08100A1C: .4byte gUnknown_203ACEC
-_08100A20:
- cmp r0, 0x2
- beq _08100A4C
- cmp r0, 0x3
- beq _08100A6A
- b _08100A6E
-_08100A2A:
- bl sub_81013EC
- b _08100A42
-_08100A30:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08100A6E
- movs r0, 0x1
- movs r1, 0x2
- bl sub_81019B0
-_08100A42:
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08100A6E
-_08100A4C:
- bl sub_8101A10
- lsls r0, 24
- cmp r0, 0
- bne _08100A6E
- bl sub_8101F04
- bl sub_810224C
- bl sub_8102394
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_08100A6A:
- movs r0, 0
- b _08100A70
-_08100A6E:
- movs r0, 0x1
-_08100A70:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8100A04
-
- thumb_func_start sub_8100A78
-sub_8100A78: @ 8100A78
- push {r4,lr}
- ldr r4, _08100A90 @ =gUnknown_203ACEC
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _08100AA4
- cmp r0, 0x1
- bgt _08100A94
- cmp r0, 0
- beq _08100A9E
- b _08100AE0
- .align 2, 0
-_08100A90: .4byte gUnknown_203ACEC
-_08100A94:
- cmp r0, 0x2
- beq _08100AC2
- cmp r0, 0x3
- beq _08100ADC
- b _08100AE0
-_08100A9E:
- bl sub_8101410
- b _08100AB8
-_08100AA4:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08100AE0
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x2
- bl sub_81019B0
-_08100AB8:
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08100AE0
-_08100AC2:
- bl sub_8101A10
- lsls r0, 24
- cmp r0, 0
- bne _08100AE0
- bl sub_810224C
- bl sub_8102394
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_08100ADC:
- movs r0, 0
- b _08100AE2
-_08100AE0:
- movs r0, 0x1
-_08100AE2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8100A78
-
- thumb_func_start sub_8100AE8
-sub_8100AE8: @ 8100AE8
- push {r4,r5,lr}
- ldr r5, _08100B00 @ =gUnknown_203ACEC
- ldr r0, [r5]
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _08100B14
- cmp r0, 0x1
- bgt _08100B04
- cmp r0, 0
- beq _08100B0E
- b _08100B66
- .align 2, 0
-_08100B00: .4byte gUnknown_203ACEC
-_08100B04:
- cmp r0, 0x2
- beq _08100B44
- cmp r0, 0x3
- beq _08100B62
- b _08100B66
-_08100B0E:
- bl sub_8101434
- b _08100B3A
-_08100B14:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08100B66
- bl sub_80FFE48
- adds r4, r0, 0
- bl sub_8101A48
- lsls r4, 24
- lsrs r4, 24
- subs r4, r0
- lsls r4, 16
- asrs r4, 16
- adds r0, r4, 0
- movs r1, 0x4
- bl sub_81019B0
-_08100B3A:
- ldr r1, [r5]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08100B66
-_08100B44:
- bl sub_8101A10
- lsls r0, 24
- cmp r0, 0
- bne _08100B66
- bl sub_8101F04
- bl sub_810224C
- bl sub_8102394
- ldr r1, [r5]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_08100B62:
- movs r0, 0
- b _08100B68
-_08100B66:
- movs r0, 0x1
-_08100B68:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8100AE8
-
- thumb_func_start sub_8100B70
-sub_8100B70: @ 8100B70
- push {r4,r5,lr}
- ldr r5, _08100B88 @ =gUnknown_203ACEC
- ldr r0, [r5]
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _08100B9C
- cmp r0, 0x1
- bgt _08100B8C
- cmp r0, 0
- beq _08100B96
- b _08100BEA
- .align 2, 0
-_08100B88: .4byte gUnknown_203ACEC
-_08100B8C:
- cmp r0, 0x2
- beq _08100BCC
- cmp r0, 0x3
- beq _08100BE6
- b _08100BEA
-_08100B96:
- bl sub_8101478
- b _08100BC2
-_08100B9C:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08100BEA
- bl sub_80FFE48
- adds r4, r0, 0
- bl sub_8101A48
- lsls r4, 24
- lsrs r4, 24
- subs r4, r0
- lsls r4, 16
- asrs r4, 16
- adds r0, r4, 0
- movs r1, 0x4
- bl sub_81019B0
-_08100BC2:
- ldr r1, [r5]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08100BEA
-_08100BCC:
- bl sub_8101A10
- lsls r0, 24
- cmp r0, 0
- bne _08100BEA
- bl sub_810224C
- bl sub_8102394
- ldr r1, [r5]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_08100BE6:
- movs r0, 0
- b _08100BEC
-_08100BEA:
- movs r0, 0x1
-_08100BEC:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8100B70
-
thumb_func_start sub_8100BF4
sub_8100BF4: @ 8100BF4
push {r4,lr}
@@ -1982,7 +441,7 @@ sub_8100F44: @ 8100F44
movs r1, 0x3
orrs r3, r1
str r3, [sp]
- ldr r1, _08100FC4 @ =gUnknown_843F888
+ ldr r1, _08100FC4 @ =sPhraseFrameDimensions
lsrs r0, 22
adds r0, r1
ldrb r2, [r0]
@@ -2032,7 +491,7 @@ sub_8100F44: @ 8100F44
bx r0
.align 2, 0
_08100FC0: .4byte 0xffffff00
-_08100FC4: .4byte gUnknown_843F888
+_08100FC4: .4byte sPhraseFrameDimensions
_08100FC8: .4byte 0xffff00ff
_08100FCC: .4byte 0xff00ffff
_08100FD0: .4byte 0x00ffffff
@@ -2202,7 +661,7 @@ sub_8101100: @ 8101100
bl CpuFastSet
cmp r5, 0x2
bne _081011A4
- ldr r0, _08101198 @ =gUnknown_843F888
+ ldr r0, _08101198 @ =sPhraseFrameDimensions
adds r1, r0, 0
adds r1, 0x8
ldrb r5, [r0, 0x8]
@@ -2261,11 +720,11 @@ _0810117E:
b _08101296
.align 2, 0
_08101194: .4byte 0x01000200
-_08101198: .4byte gUnknown_843F888
+_08101198: .4byte sPhraseFrameDimensions
_0810119C: .4byte 0x00001005
_081011A0: .4byte 0x00001007
_081011A4:
- ldr r6, _081012A8 @ =gUnknown_843F888
+ ldr r6, _081012A8 @ =sPhraseFrameDimensions
mov r9, r6
lsls r5, 2
adds r1, r5, r6
@@ -2315,7 +774,7 @@ _081011F0:
adds r7, 0x1
cmp r7, r12
bge _08101252
- ldr r0, _081012A8 @ =gUnknown_843F888
+ ldr r0, _081012A8 @ =sPhraseFrameDimensions
add r0, r9
ldrb r3, [r0]
lsls r5, r3, 1
@@ -2404,7 +863,7 @@ _08101296:
pop {r0}
bx r0
.align 2, 0
-_081012A8: .4byte gUnknown_843F888
+_081012A8: .4byte sPhraseFrameDimensions
_081012AC: .4byte 0x00001001
_081012B0: .4byte 0x00001002
_081012B4: .4byte 0x00001003
@@ -3482,7 +1941,7 @@ sub_8101AC4: @ 8101AC4
push {lr}
bl GetEasyChatScreenFrameId
lsls r0, 24
- ldr r1, _08101B10 @ =gUnknown_843F888
+ ldr r1, _08101B10 @ =sPhraseFrameDimensions
lsrs r0, 22
adds r0, r1
ldrb r1, [r0]
@@ -3516,7 +1975,7 @@ sub_8101AC4: @ 8101AC4
pop {r0}
bx r0
.align 2, 0
-_08101B10: .4byte gUnknown_843F888
+_08101B10: .4byte sPhraseFrameDimensions
_08101B14: .4byte gUnknown_843F968
_08101B18: .4byte gUnknown_203ACEC
_08101B1C: .4byte gSprites
diff --git a/data/easy_chat_2.s b/data/easy_chat_2.s
index 4cf0bcfb3..04270adac 100644
--- a/data/easy_chat_2.s
+++ b/data/easy_chat_2.s
@@ -7,91 +7,6 @@
.section .rodata
.align 2
-gUnknown_843F3B8:: @ 843F3B8 gbapal
- .incbin "graphics/link_rfu/unk_843F3F8.gbapal"
-
-gUnknown_843F3D8:: @ 843F3D8 gbapal
- .incbin "graphics/link_rfu/unk_8E9BD28.gbapal"
-
-gUnknown_843F3F8:: @ 843F3F8 4bpp
- .incbin "graphics/link_rfu/unk_843F3F8.4bpp"
-
-gUnknown_843F418:: @ 843F418 4bpp
- .incbin "graphics/link_rfu/unk_843F418.4bpp"
-
-gUnknown_843F518:: @ 843F518 4bpp
- .incbin "graphics/link_rfu/unk_843F518.4bpp"
-
-gUnknown_843F618:: @ 843F618 gbapal
- .incbin "graphics/link_rfu/unk_843F638.gbapal"
-
-gUnknown_843F638:: @ 843F638 4bpp.lz
- .incbin "graphics/link_rfu/unk_843F638.4bpp.lz"
-
-gUnknown_843F76C:: @ 843F76C gbapal
- .incbin "graphics/link_rfu/unk_843F76C.gbapal"
-
-gUnknown_843F78C:: @ 843F78C gbapal
- .incbin "graphics/link_rfu/unk_843F78C.gbapal"
-
-gUnknown_843F7AC:: @ 843F7AC 4bpp.lz
- .incbin "graphics/link_rfu/unk_843F7AC.4bpp.lz"
-
-gUnknown_843F874:: @ 843F874 gbapal
- .2byte RGB(0, 0, 0)
- .2byte RGB(0, 0, 0)
- .2byte RGB(7, 25, 31)
- .2byte RGB(21, 21, 29)
-
-gUnknown_843F87C:: @ 843F87C gbapal
- .2byte RGB(0, 0, 0)
- .2byte RGB(31, 31, 31)
- .2byte RGB(12, 12, 12)
- .2byte RGB(27, 26, 27)
- .2byte RGB(8, 17, 9)
-
- .align 2
-gUnknown_843F888:: @ 843F888 data8 6x4
- .byte 0x03, 0x04, 0x18, 0x04
- .byte 0x01, 0x04, 0x1b, 0x04
- .byte 0x03, 0x00, 0x18, 0x0a
- .byte 0x06, 0x06, 0x12, 0x04
- .byte 0x10, 0x04, 0x09, 0x02
- .byte 0x0e, 0x04, 0x12, 0x04
-
-gUnknown_843F8A0:: @ 843F8A0 bg_template
- .4byte 0x000001c0, 0x000011dd, 0x002021e2, 0x000031fb
-
-gUnknown_843F8B0:: @ 843F8B0 window_template
- .align 2
- .byte 0x01, 0x07, 0x00, 0x10, 0x02, 0x0a
- .2byte 0x0010
- @ {0x01, 0x07, 0x00, 0x10, 0x02, 0x0a, 0x0010}
- .align 2
- .byte 0x00, 0x04, 0x0f, 0x16, 0x04, 0x0f
- .2byte 0x000a
- @ {0x00, 0x04, 0x0f, 0x16, 0x04, 0x0f, 0x000a}
- .align 2
- .byte 0x02, 0x01, 0x00, 0x1c, 0x20, 0x03
- .2byte 0x0000
- @ {0x02, 0x01, 0x00, 0x1c, 0x20, 0x03, 0x0000}
- .align 2
- .byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
- .2byte 0x0000
- @ {0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000}
-
-gUnknown_843F8D0:: @ 843F8D0 window_template
- .align 2
- .byte 0x00, 0x16, 0x09, 0x05, 0x04, 0x0f
- .2byte 0x0062
- @ {0x00, 0x16, 0x09, 0x05, 0x04, 0x0f, 0x0062}
-
-gUnknown_843F8D8:: @ 843F8D8 text
- .string "{UNDERSCORE}$"
-
-gUnknown_843F8DB:: @ 843F8DB text
- .string "{CLEAR 17}$"
-
.align 2
gUnknown_843F8E0:: @ 843F8E0
.4byte gUnknown_847A8D8
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 67d14290c..12c096136 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -47,5 +47,28 @@ const u8 *GetEasyChatWordGroupName(u8);
u8 *CopyEasyChatWordPadded(u8 *, u16, u16);
void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback);
u8 GetNumDisplayableGroups(void);
+bool8 sub_80FFF80(void);
+bool8 sub_80FFF98(void);
+void sub_810011C(void);
+void sub_8100134(u16 v0);
+bool8 sub_810014C(void);
+u8 GetEasyChatScreenFrameId(void);
+const u8 *GetTitleText(void);
+u16 *GetEasyChatWordBuffer(void);
+u8 GetNumRows(void);
+u8 GetNumColumns(void);
+u8 GetMainCursorColumn(void);
+u8 GetMainCursorRow(void);
+void GetEasyChatInstructionsText(const u8 **str1, const u8 **str2);
+void GetEasyChatConfirmText(const u8 **str1, const u8 **str2);
+void sub_80FFDC8(const u8 **str1, const u8 **str2);
+void GetEasyChatConfirmDeletionText(const u8 **str1, const u8 **str2);
+void sub_80FFE08(u8 *arg0, u8 *arg1);
+u8 sub_80FFE1C(void);
+u8 sub_80FFE28(void);
+void sub_80FFE34(u8 *arg0, u8 *arg1);
+u8 sub_80FFE48(void);
+u8 sub_80FFE54(void);
+u8 unref_sub_80FFE60(void);
#endif // GUARD_EASY_CHAT_H
diff --git a/include/graphics.h b/include/graphics.h
index 2c3aa7c4b..5bac692a4 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4886,4 +4886,8 @@ extern const u16 gUnknown_8EAFEA0[];
extern const u32 gUnknown_8EAFFC0[];
extern const u32 gUnknown_8EB0ADC[];
+// easy_chat_3
+extern const u32 gEasyChatWindow_Gfx[];
+extern const u32 gEasyChatWindow_Tilemap[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/ld_script.txt b/ld_script.txt
index 0de8b654e..9bd1be612 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -227,6 +227,7 @@ SECTIONS {
src/link_rfu_3.o(.text);
src/AgbRfu_LinkManager.o(.text);
src/easy_chat_2.o(.text);
+ src/easy_chat_3.o(.text);
asm/easy_chat_2.o(.text);
src/pokedex_screen.o(.text);
asm/pokedex_screen.o(.text);
@@ -519,6 +520,7 @@ SECTIONS {
src/link_rfu_2.o(.rodata);
src/link_rfu_3.o(.rodata);
src/easy_chat_2.o(.rodata);
+ src/easy_chat_3.o(.rodata);
data/easy_chat_2.o(.rodata);
src/pokedex_screen.o(.rodata);
data/pokedex_screen.o(.rodata);
diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c
index 9e018feaf..28c091dc6 100644
--- a/src/easy_chat_2.c
+++ b/src/easy_chat_2.c
@@ -107,12 +107,6 @@ 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)
{
@@ -1370,11 +1364,3 @@ bool32 IsEcWordBufferUninitialized(void)
return TRUE;
}
-
-bool8 sub_80FFF80(void)
-{
- if (!sub_8100BF4())
- return FALSE;
- else
- return TRUE;
-}
diff --git a/src/easy_chat_3.c b/src/easy_chat_3.c
new file mode 100644
index 000000000..d01203dcc
--- /dev/null
+++ b/src/easy_chat_3.c
@@ -0,0 +1,983 @@
+#include "global.h"
+#include "gflib.h"
+#include "easy_chat.h"
+#include "graphics.h"
+#include "new_menu_helpers.h"
+
+struct Unk203A11C
+{
+ u16 unk0;
+ u16 windowId;
+ u16 unk4;
+ u8 unk6;
+ u8 unk7;
+ s8 unk8;
+ u8 unk9;
+ u8 unkA;
+ u8 unkB[0xC1];
+ u8 unkCC[0x202];
+ u16 unk2CE;
+ int unk2D0;
+ int unk2D4;
+ struct Sprite *unk2D8;
+ struct Sprite *unk2DC;
+ struct Sprite *unk2E0;
+ struct Sprite *unk2E4;
+ struct Sprite *unk2E8;
+ struct Sprite *unk2EC;
+ struct Sprite *unk2F0;
+ struct Sprite *unk2F4;
+ struct Sprite *unk2F8;
+ struct Sprite *unk2FC;
+ u16 unk300[BG_SCREEN_SIZE / 2];
+ u16 unkB00[BG_SCREEN_SIZE / 2];
+};
+
+struct EasyChatPhraseFrameDimensions
+{
+ u8 left;
+ u8 top;
+ u8 width;
+ u8 height;
+};
+
+EWRAM_DATA struct Unk203A11C *gUnknown_203ACEC = NULL;
+
+bool8 sub_8100258(void);
+bool8 sub_8100290(void);
+bool8 sub_8100374(void);
+bool8 sub_81003A8(void);
+bool8 sub_81003EC(void);
+bool8 sub_8100430(void);
+bool8 sub_8100474(void);
+bool8 sub_81004B8(void);
+bool8 sub_81004F4(void);
+bool8 sub_81005C0(void);
+bool8 sub_8100660(void);
+bool8 sub_8100720(void);
+bool8 sub_810072C(void);
+bool8 sub_8100774(void);
+bool8 sub_81007D0(void);
+bool8 sub_8100890(void);
+bool8 sub_810093C(void);
+bool8 sub_81009F8(void);
+bool8 sub_8100A04(void);
+bool8 sub_8100A78(void);
+bool8 sub_8100AE8(void);
+bool8 sub_8100B70(void);
+bool8 sub_8100BF4(void);
+void sub_8100C5C(void);
+void sub_8100CBC(void);
+void sub_8100D24(void);
+void sub_8100E34(void);
+void sub_8100E7C(u8 a0);
+void sub_8100F18(u8 initialCursorPos);
+void sub_8100F44(void);
+void sub_8100FDC(void);
+void sub_8101100(u16 *buffer);
+void sub_81012CC(void);
+void sub_81012E0(u8 a0);
+void sub_810131C(void);
+void sub_81013EC(void);
+void sub_8101410(void);
+void sub_8101434(void);
+void sub_8101478(void);
+void sub_81015BC(void);
+void sub_81015D4(u8 a0);
+bool8 sub_81016AC(void);
+void sub_81019B0(s16 a0, u8 a1);
+bool8 sub_8101A10(void);
+s32 sub_8101A48(void);
+void sub_8101A5C(u8 left, u8 top, u8 right, u8 bottom);
+void sub_8101A90(void);
+void sub_8101AC4(void);
+void sub_8101B58(u8 a0, u8 a1);
+void sub_8101B88(void);
+void sub_8101BA8(void);
+void sub_8101BC0(void);
+void sub_8101C48(void);
+void sub_8101C80(void);
+void sub_8101E80(void);
+void sub_8101F04(void);
+void sub_8101F80(void);
+void sub_8101FAC(void);
+bool8 sub_8102018(void);
+void sub_81020AC(void);
+bool8 sub_81020D0(void);
+void sub_810215C(void);
+void sub_8102178(void);
+bool8 sub_81021B8(void);
+void sub_81021D4(void);
+void sub_810224C(void);
+void sub_81022B0(void);
+void sub_81022E0(u8 a0);
+void sub_8102320(void);
+void sub_8102394(void);
+void sub_81023F8(void);
+void sub_8102428(void);
+
+const u16 gUnknown_843F3B8[] = INCBIN_U16("graphics/link_rfu/unk_843F3F8.gbapal");
+const u16 gUnknown_843F3D8[] = INCBIN_U16("graphics/link_rfu/unk_8E9BD28.gbapal");
+const u16 gUnknown_843F3F8[] = INCBIN_U16("graphics/link_rfu/unk_843F3F8.4bpp");
+const u16 gUnknown_843F418[] = INCBIN_U16("graphics/link_rfu/unk_843F418.4bpp");
+const u16 gUnknown_843F518[] = INCBIN_U16("graphics/link_rfu/unk_843F518.4bpp");
+const u16 gUnknown_843F618[] = INCBIN_U16("graphics/link_rfu/unk_843F638.gbapal");
+const u32 gUnknown_843F638[] = INCBIN_U32("graphics/link_rfu/unk_843F638.4bpp.lz");
+const u16 gUnknown_843F76C[] = INCBIN_U16("graphics/link_rfu/unk_843F76C.gbapal");
+const u16 gUnknown_843F78C[] = INCBIN_U16("graphics/link_rfu/unk_843F78C.gbapal");
+const u32 gUnknown_843F7AC[] = INCBIN_U32("graphics/link_rfu/unk_843F7AC.4bpp.lz");
+
+const u16 gUnknown_843F874[] = {
+ RGB( 0, 0, 0),
+ RGB( 0, 0, 0),
+ RGB( 7, 25, 31),
+ RGB(21, 21, 29)
+};
+
+const u16 gUnknown_843F87C[] = {
+ RGB( 0, 0, 0),
+ RGB(31, 31, 31),
+ RGB(12, 12, 12),
+ RGB(27, 26, 27),
+ RGB( 8, 17, 9)
+};
+
+const struct EasyChatPhraseFrameDimensions sPhraseFrameDimensions[] = {
+ {
+ .left = 0x03,
+ .top = 0x04,
+ .width = 0x18,
+ .height = 0x04
+ }, {
+ .left = 0x01,
+ .top = 0x04,
+ .width = 0x1b,
+ .height = 0x04
+ }, {
+ .left = 0x03,
+ .top = 0x00,
+ .width = 0x18,
+ .height = 0x0a
+ }, {
+ .left = 0x06,
+ .top = 0x06,
+ .width = 0x12,
+ .height = 0x04
+ }, {
+ .left = 0x10,
+ .top = 0x04,
+ .width = 0x09,
+ .height = 0x02
+ }, {
+ .left = 0x0e,
+ .top = 0x04,
+ .width = 0x12,
+ .height = 0x04
+ }
+};
+
+const struct BgTemplate sEasyChatBgTemplates[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 28,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0,
+ }, {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0,
+ }, {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x80,
+ }, {
+ .bg = 3,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0,
+ }
+};
+
+const struct WindowTemplate sEasyChatWindowTemplates[] = {
+ {
+ .bg = 1,
+ .tilemapLeft = 7,
+ .tilemapTop = 0,
+ .width = 16,
+ .height = 2,
+ .paletteNum = 10,
+ .baseBlock = 0x10,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 4,
+ .tilemapTop = 15,
+ .width = 22,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0xA,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 0,
+ .width = 28,
+ .height = 32,
+ .paletteNum = 3,
+ .baseBlock = 0,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+const struct WindowTemplate gUnknown_843F8D0 = {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 9,
+ .width = 5,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x062
+};
+
+const u8 gUnknown_843F8D8[] = _("{UNDERSCORE}");
+const u8 gUnknown_843F8DB[] = _("{CLEAR 17}");
+
+bool8 sub_80FFF80(void)
+{
+ if (!sub_8100BF4())
+ return FALSE;
+ else
+ return TRUE;
+}
+
+bool8 sub_80FFF98(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sEasyChatBgTemplates, NELEMS(sEasyChatBgTemplates));
+ SetBgTilemapBuffer(3, gUnknown_203ACEC->unkB00);
+ SetBgTilemapBuffer(1, gUnknown_203ACEC->unk300);
+ InitWindows(sEasyChatWindowTemplates);
+ DeactivateAllTextPrinters();
+ sub_8100CBC();
+ sub_8100C5C();
+ CpuFastFill(0, (void *)VRAM + 0x1000000, 0x400);
+ break;
+ case 1:
+ DecompressAndLoadBgGfxUsingHeap(3, gEasyChatWindow_Gfx, 0, 0, 0);
+ CopyToBgTilemapBuffer(3, gEasyChatWindow_Tilemap, 0, 0);
+ sub_8100F44();
+ sub_8102428();
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 2:
+ sub_8101100(gUnknown_203ACEC->unk300);
+ DecompressAndLoadBgGfxUsingHeap(1, gUnknown_843F7AC, 0, 0, 0);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 3:
+ sub_8100D24();
+ sub_8100E34();
+ sub_8100FDC();
+ sub_81012CC();
+ break;
+ case 4:
+ sub_8101A90();
+ sub_8101AC4();
+ break;
+ case 5:
+ if (IsDma3ManagerBusyWithBgCopy())
+ {
+ return TRUE;
+ }
+ else
+ {
+ sub_8101A5C(0, 0, 0, 0);
+ SetGpuReg(REG_OFFSET_WININ, WIN_RANGE(0, 63));
+ SetGpuReg(REG_OFFSET_WINOUT, WIN_RANGE(0, 59));
+ ShowBg(3);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(0);
+ sub_81021D4();
+ sub_8102320();
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_203ACEC->unk0++;
+ return TRUE;
+}
+
+void sub_810011C(void)
+{
+ if (gUnknown_203ACEC)
+ Free(gUnknown_203ACEC);
+}
+
+void sub_8100134(u16 arg0)
+{
+ gUnknown_203ACEC->unk4 = arg0;
+ gUnknown_203ACEC->unk0 = 0;
+ sub_810014C();
+}
+
+bool8 sub_810014C(void)
+{
+ switch (gUnknown_203ACEC->unk4)
+ {
+ case 0: return FALSE;
+ case 1: return sub_8100258();
+ case 2: return sub_8100290();
+ case 3: return sub_8100374();
+ case 4: return sub_8100430();
+ case 5: return sub_81003A8();
+ case 6: return sub_81003EC();
+ case 7: return sub_8100474();
+ case 8: return sub_81004B8();
+ case 9: return sub_81004F4();
+ case 10: return sub_81005C0();
+ case 11: return sub_81007D0();
+ case 12: return sub_8100890();
+ case 13: return sub_810093C();
+ case 14: return sub_8100720();
+ case 15: return sub_810072C();
+ case 16: return sub_8100774();
+ case 17: return sub_81009F8();
+ case 18: return sub_8100A78();
+ case 19: return sub_8100A04();
+ case 20: return sub_8100B70();
+ case 21: return sub_8100AE8();
+ case 22: return sub_8100660();
+ default: return FALSE;
+ }
+}
+
+bool8 sub_8100258(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8100FDC();
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool8 sub_8100290(void)
+{
+ u8 i;
+ u16 *ecWordBuffer;
+ u16 *ecWord;
+ u8 frameId;
+ u8 cursorColumn, cursorRow, numColumns;
+ s16 var1;
+ int stringWidth;
+ int trueStringWidth;
+ int var2;
+ u8 str[64];
+
+ ecWordBuffer = GetEasyChatWordBuffer();
+ frameId = GetEasyChatScreenFrameId();
+ cursorColumn = GetMainCursorColumn();
+ cursorRow = GetMainCursorRow();
+ numColumns = GetNumColumns();
+ ecWord = &ecWordBuffer[cursorRow * numColumns];
+ var1 = 8 * sPhraseFrameDimensions[frameId].left + 13;
+ for (i = 0; i < cursorColumn; i++)
+ {
+ if (*ecWord == 0xFFFF)
+ {
+ stringWidth = GetStringWidth(1, gUnknown_843F8D8, 0) * 7;
+ }
+ else
+ {
+ CopyEasyChatWord(str, *ecWord);
+ stringWidth = GetStringWidth(1, str, 0);
+ }
+
+ trueStringWidth = stringWidth + 17;
+ var1 += trueStringWidth;
+ ecWord++;
+ }
+
+ var2 = 8 * (sPhraseFrameDimensions[frameId].top + cursorRow * 2 + 1) + 1;
+ sub_8101B58(var1, var2);
+ return FALSE;
+}
+
+bool8 sub_8100374(void)
+{
+ u8 xOffset;
+ switch (GetMainCursorColumn())
+ {
+ case 0:
+ xOffset = 28;
+ break;
+ case 1:
+ xOffset = 115;
+ break;
+ case 2:
+ xOffset = 191;
+ break;
+ default:
+ return FALSE;
+ }
+ sub_8101B58(xOffset, 97);
+ return FALSE;
+}
+
+bool8 sub_81003A8(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8101B88();
+ sub_8100E7C(2);
+ sub_8100F18(1);
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool8 sub_81003EC(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8101B88();
+ sub_8100E7C(3);
+ sub_8100F18(0);
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool8 sub_8100430(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8101B88();
+ sub_8100E7C(1);
+ sub_8100F18(1);
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool8 sub_8100474(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8101BA8();
+ sub_8100E7C(0);
+ ShowBg(0);
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool8 sub_81004B8(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8101BA8();
+ sub_8100E7C(0);
+ sub_8100FDC();
+ gUnknown_203ACEC->unk0++;
+ // Fall through
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool8 sub_81004F4(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8101B88();
+ HideBg(0);
+ sub_8101A5C(0, 0, 0, 0);
+ sub_810131C();
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_81015D4(0);
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy() && !sub_81016AC())
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_8101FAC();
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 4:
+ if (!sub_8102018())
+ {
+ sub_8101BC0();
+ sub_81022E0(0);
+ sub_810224C();
+ gUnknown_203ACEC->unk0++;
+ return FALSE;
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool8 sub_81005C0(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8101C48();
+ sub_81020AC();
+ sub_81022B0();
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ if (sub_81020D0() == TRUE)
+ break;
+
+ sub_81015D4(1);
+ gUnknown_203ACEC->unk0++;
+ // Fall through
+ case 2:
+ if (!sub_81016AC())
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_8101BA8();
+ ShowBg(0);
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 4:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool8 sub_8100660(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8101C48();
+ sub_81022B0();
+ sub_810215C();
+ sub_81015D4(5);
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ if (!sub_81016AC() && !sub_81021B8())
+ {
+ sub_810131C();
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_81015D4(6);
+ sub_8102178();
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_81016AC() && !sub_81021B8())
+ {
+ sub_810224C();
+ sub_8101BC0();
+ gUnknown_203ACEC->unk0++;
+ return FALSE;
+ }
+ break;
+ case 4:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool8 sub_8100720(void)
+{
+ sub_8101C80();
+ return FALSE;
+}
+
+bool8 sub_810072C(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_81019B0(1, 2);
+ gUnknown_203ACEC->unk0++;
+ // Fall through
+ case 1:
+ if (!sub_8101A10())
+ {
+ sub_8101C80();
+ sub_810224C();
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+bool8 sub_8100774(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_81019B0(-1, 2);
+ gUnknown_203ACEC->unk0++;
+ // Fall through
+ case 1:
+ if (!sub_8101A10())
+ {
+ sub_810224C();
+ gUnknown_203ACEC->unk0++;
+ return FALSE;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool8 sub_81007D0(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8101C48();
+ sub_81020AC();
+ sub_81022B0();
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ if (!sub_81020D0())
+ {
+ sub_81015BC();
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_81015D4(2);
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_81016AC())
+ {
+ sub_81012E0(2);
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 4:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_8101E80();
+ sub_81022E0(1);
+ sub_810224C();
+ sub_8102394();
+ gUnknown_203ACEC->unk0++;
+ return FALSE;
+ }
+ break;
+ case 5:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool8 sub_8100890(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8100FDC();
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ sub_8101F80();
+ sub_81022B0();
+ sub_81023F8();
+ sub_81015BC();
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_81015D4(3);
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_81016AC())
+ {
+ ShowBg(0);
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 4:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_8101BA8();
+ gUnknown_203ACEC->unk0++;
+ return FALSE;
+ }
+ break;
+ case 5:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool8 sub_810093C(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8101F80();
+ sub_81022B0();
+ sub_81023F8();
+ sub_81015BC();
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_81015D4(4);
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_81016AC())
+ {
+ sub_810131C();
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_8101FAC();
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 4:
+ if (!sub_8102018())
+ {
+ sub_8101BC0();
+ sub_81022E0(0);
+ sub_810224C();
+ gUnknown_203ACEC->unk0++;
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+bool8 sub_81009F8(void)
+{
+ sub_8101F04();
+ return FALSE;
+}
+
+bool8 sub_8100A04(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_81013EC();
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_81019B0(1, 2);
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_8101A10())
+ {
+ sub_8101F04();
+ sub_810224C();
+ sub_8102394();
+ gUnknown_203ACEC->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool8 sub_8100A78(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8101410();
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_81019B0(-1, 2);
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_8101A10())
+ {
+ sub_810224C();
+ sub_8102394();
+ gUnknown_203ACEC->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool8 sub_8100AE8(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8101434();
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ s16 var0 = sub_80FFE48() - sub_8101A48();
+ sub_81019B0(var0, 4);
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_8101A10())
+ {
+ sub_8101F04();
+ sub_810224C();
+ sub_8102394();
+ gUnknown_203ACEC->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool8 sub_8100B70(void)
+{
+ switch (gUnknown_203ACEC->unk0)
+ {
+ case 0:
+ sub_8101478();
+ gUnknown_203ACEC->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ s16 var0 = sub_80FFE48() - sub_8101A48();
+ sub_81019B0(var0, 4);
+ gUnknown_203ACEC->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_8101A10())
+ {
+ sub_810224C();
+ sub_8102394();
+ gUnknown_203ACEC->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
diff --git a/src/graphics.c b/src/graphics.c
index eaa49247c..b0712ca8a 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -1216,8 +1216,8 @@ const u16 gHoennTrainerCard_Pal[] = INCBIN_U16("graphics/trainer_card/0star_em.g
const u32 gHoennTrainerCard_Gfx[] = INCBIN_U32("graphics/trainer_card/card_em.4bpp.lz");
const u16 gUnknown_8E99D8C[] = INCBIN_U16("graphics/link_rfu/unk_8E99DAC.gbapal");
-const u32 gUnknown_8E99DAC[] = INCBIN_U32("graphics/link_rfu/unk_8E99DAC.4bpp.lz");
-const u32 gUnknown_8E99E74[] = INCBIN_U32("graphics/link_rfu/unk_8E99E74.bin.lz");
+const u32 gEasyChatWindow_Gfx[] = INCBIN_U32("graphics/link_rfu/unk_8E99DAC.4bpp.lz");
+const u32 gEasyChatWindow_Tilemap[] = INCBIN_U32("graphics/link_rfu/unk_8E99E74.bin.lz");
const u16 gUnknown_8E99F24[] = INCBIN_U16("graphics/link_rfu/unk_8E9A168.gbapal");
const u32 gUnknown_8E99F44[] = INCBIN_U32("graphics/link_rfu/unk_8E99F44.4bpp.lz");
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 6464b9b75..ea2b7b749 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -314,14 +314,9 @@ gUnknown_203998C: @ 203998C
.align 2
.include "src/link_rfu_3.o"
.align 2
-
- @ .include "src/easy_chat_2.o"
-sEasyChatScreen: @ 203ACE8
- .space 0x4
-
-gUnknown_203ACEC: @ 203ACEC
- .space 0x4
-
+ .include "src/easy_chat_2.o"
+ .align 2
+ .include "src/easy_chat_3.o"
.align 2
.include "src/pokedex_screen.o"
.align 2