summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-01-25 10:47:17 -0500
committerPikalaxALT <PikalaxALT@gmail.com>2020-01-25 10:47:17 -0500
commitf249df41e3620c210841b57b7520f53b692fd411 (patch)
tree2bf4283fe0a709e2814f1c250dd0acb82c0408da
parentc99246fccfc6f04f015d0b5b2850fa7d01914961 (diff)
union_room_chat_display through sub_812A1B8
-rw-r--r--asm/union_room_chat.s929
-rw-r--r--data/union_room_chat.s128
-rw-r--r--include/union_room_chat.h7
-rw-r--r--include/union_room_chat_display.h12
-rw-r--r--include/union_room_chat_objects.h16
-rw-r--r--ld_script.txt2
-rw-r--r--src/union_room_chat.c8
-rw-r--r--src/union_room_chat_display.c656
8 files changed, 693 insertions, 1065 deletions
diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s
index 422a8786b..7a9d41ef3 100644
--- a/asm/union_room_chat.s
+++ b/asm/union_room_chat.s
@@ -5,935 +5,6 @@
.text
- thumb_func_start sub_8129B14
-sub_8129B14: @ 8129B14
- push {r4,lr}
- ldr r4, _08129B60 @ =gUnknown_203B0E4
- ldr r0, _08129B64 @ =0x00002168
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- beq _08129B70
- bl sub_812AE70
- cmp r0, 0
- beq _08129B70
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _08129B68 @ =gUnknown_845AA84
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r0, _08129B6C @ =gUnknown_845AA94
- bl InitWindows
- bl ResetTempTileDataBuffers
- bl sub_812AD50
- ldr r0, [r4]
- bl sub_8129BB8
- bl sub_8129BC4
- movs r0, 0
- movs r1, 0
- bl sub_8129C34
- movs r0, 0x1
- b _08129B72
- .align 2, 0
-_08129B60: .4byte gUnknown_203B0E4
-_08129B64: .4byte 0x00002168
-_08129B68: .4byte gUnknown_845AA84
-_08129B6C: .4byte gUnknown_845AA94
-_08129B70:
- movs r0, 0
-_08129B72:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8129B14
-
- thumb_func_start sub_8129B78
-sub_8129B78: @ 8129B78
- push {lr}
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_8129B78
-
- thumb_func_start sub_8129B88
-sub_8129B88: @ 8129B88
- push {r4,lr}
- bl sub_812AEB0
- ldr r4, _08129BB0 @ =gUnknown_203B0E4
- ldr r0, [r4]
- cmp r0, 0
- beq _08129B9E
- bl Free
- movs r0, 0
- str r0, [r4]
-_08129B9E:
- bl FreeAllWindowBuffers
- ldr r1, _08129BB4 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08129BB0: .4byte gUnknown_203B0E4
-_08129BB4: .4byte gScanlineEffect
- thumb_func_end sub_8129B88
-
- thumb_func_start sub_8129BB8
-sub_8129BB8: @ 8129BB8
- movs r2, 0
- movs r1, 0xFF
- strh r1, [r0, 0x18]
- strh r1, [r0, 0x1E]
- strh r2, [r0, 0x1A]
- bx lr
- thumb_func_end sub_8129BB8
-
- thumb_func_start sub_8129BC4
-sub_8129BC4: @ 8129BC4
- push {r4,r5,lr}
- ldr r1, _08129BF4 @ =gUnknown_203B0E4
- ldr r0, [r1]
- cmp r0, 0
- beq _08129BEC
- movs r2, 0
- adds r4, r1, 0
- ldr r5, _08129BF8 @ =sub_812A420
- movs r3, 0
-_08129BD6:
- ldr r0, [r4]
- lsls r1, r2, 3
- adds r0, r1
- str r5, [r0]
- strb r3, [r0, 0x4]
- ldr r0, [r4]
- adds r0, r1
- strb r3, [r0, 0x5]
- adds r2, 0x1
- cmp r2, 0x2
- ble _08129BD6
-_08129BEC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08129BF4: .4byte gUnknown_203B0E4
-_08129BF8: .4byte sub_812A420
- thumb_func_end sub_8129BC4
-
- thumb_func_start sub_8129BFC
-sub_8129BFC: @ 8129BFC
- push {r4-r6,lr}
- ldr r1, _08129C30 @ =gUnknown_203B0E4
- ldr r0, [r1]
- cmp r0, 0
- beq _08129C2A
- movs r5, 0
- adds r6, r1, 0
-_08129C0A:
- ldr r0, [r6]
- lsls r4, r5, 3
- adds r1, r0, r4
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _08129C24
- adds r0, r1, 0x5
- ldr r1, [r1]
- bl _call_via_r1
- ldr r1, [r6]
- adds r1, r4
- strb r0, [r1, 0x4]
-_08129C24:
- adds r5, 0x1
- cmp r5, 0x2
- ble _08129C0A
-_08129C2A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08129C30: .4byte gUnknown_203B0E4
- thumb_func_end sub_8129BFC
-
- thumb_func_start sub_8129C34
-sub_8129C34: @ 8129C34
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- ldr r3, _08129C70 @ =gUnknown_203B0E4
- ldr r0, [r3]
- lsrs r1, 21
- adds r0, r1
- ldr r2, _08129C74 @ =sub_812A420
- str r2, [r0]
- movs r4, 0
- adds r5, r3, 0
- adds r3, r1, 0
- mov r12, r4
- ldr r1, _08129C78 @ =gUnknown_845AABC
- movs r7, 0x1
- adds r2, r1, 0x4
-_08129C56:
- ldrh r0, [r1]
- cmp r0, r6
- bne _08129C7C
- ldr r1, [r5]
- adds r1, r3
- ldr r0, [r2]
- str r0, [r1]
- strb r7, [r1, 0x4]
- ldr r0, [r5]
- adds r0, r3
- mov r1, r12
- strb r1, [r0, 0x5]
- b _08129C86
- .align 2, 0
-_08129C70: .4byte gUnknown_203B0E4
-_08129C74: .4byte sub_812A420
-_08129C78: .4byte gUnknown_845AABC
-_08129C7C:
- adds r1, 0x8
- adds r2, 0x8
- adds r4, 0x1
- cmp r4, 0x14
- bls _08129C56
-_08129C86:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8129C34
-
- thumb_func_start sub_8129C8C
-sub_8129C8C: @ 8129C8C
- lsls r0, 24
- ldr r1, _08129C9C @ =gUnknown_203B0E4
- ldr r1, [r1]
- lsrs r0, 21
- adds r1, r0
- ldrb r0, [r1, 0x4]
- bx lr
- .align 2, 0
-_08129C9C: .4byte gUnknown_203B0E4
- thumb_func_end sub_8129C8C
-
- thumb_func_start sub_8129CA0
-sub_8129CA0: @ 8129CA0
- push {r4,lr}
- adds r4, r0, 0
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08129D36
- ldrb r0, [r4]
- cmp r0, 0x6
- bhi _08129D2C
- lsls r0, 2
- ldr r1, _08129CC0 @ =_08129CC4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08129CC0: .4byte _08129CC4
- .align 2, 0
-_08129CC4:
- .4byte _08129CE0
- .4byte _08129CEA
- .4byte _08129CF0
- .4byte _08129CF6
- .4byte _08129CFC
- .4byte _08129D02
- .4byte _08129D14
-_08129CE0:
- bl sub_812AAD4
- bl sub_812AB8C
- b _08129D30
-_08129CEA:
- bl sub_812ABD8
- b _08129D30
-_08129CF0:
- bl sub_812AC08
- b _08129D30
-_08129CF6:
- bl sub_812AC58
- b _08129D30
-_08129CFC:
- bl sub_812AC9C
- b _08129D30
-_08129D02:
- bl sub_812ACC0
- bl sub_812ACEC
- bl sub_812AD20
- bl sub_812AD04
- b _08129D30
-_08129D14:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08129D30
- bl sub_812AEC8
- bl sub_812B048
- bl sub_812B100
- b _08129D30
-_08129D2C:
- movs r0, 0
- b _08129D38
-_08129D30:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
-_08129D36:
- movs r0, 0x1
-_08129D38:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8129CA0
-
- thumb_func_start sub_8129D40
-sub_8129D40: @ 8129D40
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _08129D50
- cmp r0, 0x1
- beq _08129D5E
- b _08129D68
-_08129D50:
- bl sub_812AA10
- movs r0, 0x3
- movs r1, 0x3
- bl CopyWindowToVram
- b _08129D68
-_08129D5E:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _08129D70
-_08129D68:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r0, 0x1
-_08129D70:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8129D40
-
- thumb_func_start sub_8129D78
-sub_8129D78: @ 8129D78
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _08129D88
- cmp r0, 0x1
- beq _08129D96
- b _08129DA0
-_08129D88:
- bl sub_812AA64
- movs r0, 0x3
- movs r1, 0x3
- bl CopyWindowToVram
- b _08129DA0
-_08129D96:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _08129DA8
-_08129DA0:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r0, 0x1
-_08129DA8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8129D78
-
- thumb_func_start sub_8129DB0
-sub_8129DB0: @ 8129DB0
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _08129DE6
- cmp r0, 0x1
- bgt _08129DC4
- cmp r0, 0
- beq _08129DCA
- b _08129E0C
-_08129DC4:
- cmp r0, 0x2
- beq _08129DF2
- b _08129E0C
-_08129DCA:
- movs r0, 0x1
- bl sub_812AEFC
- bl sub_812A980
- cmp r0, 0
- bne _08129E12
- bl sub_812A804
- movs r0, 0x2
- movs r1, 0x2
- bl CopyWindowToVram
- b _08129E0C
-_08129DE6:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _08129E0C
- b _08129E12
-_08129DF2:
- bl sub_812A9C8
- cmp r0, 0
- bne _08129E12
- bl sub_812AF1C
- movs r0, 0
- bl sub_812AEFC
- bl sub_812B160
- movs r0, 0
- b _08129E14
-_08129E0C:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
-_08129E12:
- movs r0, 0x1
-_08129E14:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8129DB0
-
- thumb_func_start sub_8129E1C
-sub_8129E1C: @ 8129E1C
- push {lr}
- bl sub_812AF1C
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8129E1C
-
- thumb_func_start sub_8129E28
-sub_8129E28: @ 8129E28
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _08129E38
- cmp r0, 0x1
- beq _08129E5C
- b _08129E66
-_08129E38:
- movs r0, 0
- movs r1, 0
- bl sub_812A578
- movs r0, 0x17
- movs r1, 0xB
- movs r2, 0x1
- bl sub_812A424
- ldr r0, _08129E58 @ =gUnknown_203B0E4
- ldr r0, [r0]
- ldrb r0, [r0, 0x1E]
- movs r1, 0x3
- bl CopyWindowToVram
- b _08129E66
- .align 2, 0
-_08129E58: .4byte gUnknown_203B0E4
-_08129E5C:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _08129E6E
-_08129E66:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r0, 0x1
-_08129E6E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8129E28
-
- thumb_func_start sub_8129E74
-sub_8129E74: @ 8129E74
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _08129E84
- cmp r0, 0x1
- beq _08129E94
- b _08129EAA
-_08129E84:
- bl sub_812A6F4
- bl sub_812A51C
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- b _08129EAA
-_08129E94:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08129EB0
- bl sub_812A728
- bl sub_812A544
- movs r0, 0
- b _08129EB2
-_08129EAA:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
-_08129EB0:
- movs r0, 0x1
-_08129EB2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8129E74
-
- thumb_func_start sub_8129EB8
-sub_8129EB8: @ 8129EB8
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _08129ECA
- cmp r0, 0x1
- beq _08129F02
- b _08129F14
-_08129ECA:
- add r1, sp, 0x8
- add r0, sp, 0x4
- bl sub_8129730
- ldr r0, [sp, 0x4]
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [sp, 0x8]
- lsls r1, 16
- lsrs r1, 16
- movs r2, 0
- bl sub_812A74C
- bl sub_8129714
- adds r1, r0, 0
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- movs r2, 0x3
- movs r3, 0x1
- bl sub_812A778
- movs r0, 0x1
- movs r1, 0x2
- bl CopyWindowToVram
- b _08129F14
-_08129F02:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08129F1A
- bl sub_812B160
- movs r0, 0
- b _08129F1C
-_08129F14:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
-_08129F1A:
- movs r0, 0x1
-_08129F1C:
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8129EB8
-
- thumb_func_start sub_8129F24
-sub_8129F24: @ 8129F24
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldrb r0, [r6]
- cmp r0, 0x1
- beq _08129F80
- cmp r0, 0x1
- bgt _08129F3A
- cmp r0, 0
- beq _08129F44
- b _08129FBA
-_08129F3A:
- cmp r0, 0x2
- beq _08129FA4
- cmp r0, 0x3
- beq _08129FB6
- b _08129FBA
-_08129F44:
- bl sub_8129788
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl sub_8129758
- adds r5, r0, 0
- bl StringLength_Multibyte
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- movs r2, 0x66
- bl sub_812A74C
- movs r0, 0x5
- str r0, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0x4
- bl sub_812A778
- movs r0, 0x1
- movs r1, 0x2
- bl CopyWindowToVram
- b _08129FBA
-_08129F80:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08129FC0
- movs r0, 0x1
- movs r1, 0x10
- bl sub_812A578
- ldr r0, _08129FA0 @ =gUnknown_203B0E4
- ldr r0, [r0]
- ldrb r0, [r0, 0x1E]
- movs r1, 0x3
- bl CopyWindowToVram
- b _08129FBA
- .align 2, 0
-_08129FA0: .4byte gUnknown_203B0E4
-_08129FA4:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08129FC0
- movs r0, 0x1
- bl sub_812AF8C
- b _08129FBA
-_08129FB6:
- movs r0, 0
- b _08129FC2
-_08129FBA:
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
-_08129FC0:
- movs r0, 0x1
-_08129FC2:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8129F24
-
- thumb_func_start sub_8129FCC
-sub_8129FCC: @ 8129FCC
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldrb r0, [r6]
- cmp r0, 0x1
- beq _0812A028
- cmp r0, 0x1
- bgt _08129FE2
- cmp r0, 0
- beq _08129FEC
- b _0812A062
-_08129FE2:
- cmp r0, 0x2
- beq _0812A048
- cmp r0, 0x3
- beq _0812A05E
- b _0812A062
-_08129FEC:
- bl sub_8129788
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl sub_8129758
- adds r5, r0, 0
- bl StringLength_Multibyte
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- movs r2, 0
- bl sub_812A74C
- movs r0, 0x2
- str r0, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x3
- movs r3, 0x1
- bl sub_812A778
- movs r0, 0x1
- movs r1, 0x2
- bl CopyWindowToVram
- b _0812A062
-_0812A028:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0812A068
- bl sub_812A6F4
- ldr r0, _0812A044 @ =gUnknown_203B0E4
- ldr r0, [r0]
- ldrb r0, [r0, 0x1E]
- movs r1, 0x3
- bl CopyWindowToVram
- b _0812A062
- .align 2, 0
-_0812A044: .4byte gUnknown_203B0E4
-_0812A048:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0812A068
- movs r0, 0
- bl sub_812AF8C
- bl sub_812A728
- b _0812A062
-_0812A05E:
- movs r0, 0
- b _0812A06A
-_0812A062:
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
-_0812A068:
- movs r0, 0x1
-_0812A06A:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8129FCC
-
- thumb_func_start sub_812A074
-sub_812A074: @ 812A074
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _0812A084
- cmp r0, 0x1
- beq _0812A098
- b _0812A0A6
-_0812A084:
- bl sub_812A804
- movs r0, 0x2
- movs r1, 0x2
- bl CopyWindowToVram
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _0812A0A6
-_0812A098:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0812A0A6
- movs r0, 0
- b _0812A0A8
-_0812A0A6:
- movs r0, 0x1
-_0812A0A8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812A074
-
- thumb_func_start sub_812A0B0
-sub_812A0B0: @ 812A0B0
- push {r4-r6,lr}
- adds r6, r0, 0
- ldrb r0, [r6]
- cmp r0, 0x4
- bhi _0812A182
- lsls r0, 2
- ldr r1, _0812A0C4 @ =_0812A0C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812A0C4: .4byte _0812A0C8
- .align 2, 0
-_0812A0C8:
- .4byte _0812A0DC
- .4byte _0812A108
- .4byte _0812A138
- .4byte _0812A15C
- .4byte _0812A126
-_0812A0DC:
- ldr r0, _0812A104 @ =gUnknown_203B0E4
- ldr r0, [r0]
- ldrh r5, [r0, 0x1A]
- bl sub_81297C4
- adds r4, r0, 0
- bl sub_81297D0
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_812AA78
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- b _0812A17C
- .align 2, 0
-_0812A104: .4byte gUnknown_203B0E4
-_0812A108:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _0812A182
- ldr r0, _0812A12C @ =gUnknown_203B0E4
- ldr r1, [r0]
- ldrh r0, [r1, 0x1A]
- cmp r0, 0x8
- bhi _0812A130
- adds r0, 0x1
- strh r0, [r1, 0x1A]
- movs r0, 0x4
- strb r0, [r6]
-_0812A126:
- movs r0, 0
- b _0812A184
- .align 2, 0
-_0812A12C: .4byte gUnknown_203B0E4
-_0812A130:
- strh r2, [r1, 0x1C]
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
-_0812A138:
- movs r0, 0
- movs r1, 0
- movs r2, 0x5
- movs r3, 0x11
- bl ScrollWindow
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, _0812A178 @ =gUnknown_203B0E4
- ldr r1, [r0]
- ldrh r0, [r1, 0x1C]
- adds r0, 0x1
- strh r0, [r1, 0x1C]
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
-_0812A15C:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0812A182
- ldr r0, _0812A178 @ =gUnknown_203B0E4
- ldr r0, [r0]
- ldrh r0, [r0, 0x1C]
- cmp r0, 0x2
- bhi _0812A17C
- ldrb r0, [r6]
- subs r0, 0x1
- b _0812A180
- .align 2, 0
-_0812A178: .4byte gUnknown_203B0E4
-_0812A17C:
- ldrb r0, [r6]
- adds r0, 0x1
-_0812A180:
- strb r0, [r6]
-_0812A182:
- movs r0, 0x1
-_0812A184:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_812A0B0
-
- thumb_func_start sub_812A18C
-sub_812A18C: @ 812A18C
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _0812A19C
- cmp r0, 0x1
- beq _0812A1A8
- b _0812A1AE
-_0812A19C:
- bl sub_812AFC0
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _0812A1AE
-_0812A1A8:
- bl sub_812AFFC
- b _0812A1B0
-_0812A1AE:
- movs r0, 0x1
-_0812A1B0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812A18C
-
- thumb_func_start sub_812A1B8
-sub_812A1B8: @ 812A1B8
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _0812A1C8
- cmp r0, 0x1
- beq _0812A1E8
- b _0812A1F2
-_0812A1C8:
- movs r0, 0x3
- movs r1, 0x10
- bl sub_812A578
- ldr r0, _0812A1E4 @ =gUnknown_203B0E4
- ldr r0, [r0]
- ldrb r0, [r0, 0x1E]
- movs r1, 0x3
- bl CopyWindowToVram
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _0812A1F2
- .align 2, 0
-_0812A1E4: .4byte gUnknown_203B0E4
-_0812A1E8:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0812A1F4
-_0812A1F2:
- movs r0, 0x1
-_0812A1F4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812A1B8
-
thumb_func_start sub_812A1FC
sub_812A1FC: @ 812A1FC
push {r4,lr}
diff --git a/data/union_room_chat.s b/data/union_room_chat.s
index 0a51e90a4..d79974946 100644
--- a/data/union_room_chat.s
+++ b/data/union_room_chat.s
@@ -6,134 +6,6 @@
.section .rodata
.align 2
-gUnknown_845AA24:: @ 845AA24
- .incbin "graphics/union_room_chat/unk_845AA24.gbapal"
-
-gUnknown_845AA44:: @ 845AA44
- .incbin "graphics/union_room_chat/unk_845AA44.gbapal"
-
-gUnknown_845AA64:: @ 845AA64
- .incbin "graphics/union_room_chat/unk_845AA64.gbapal"
-
-gUnknown_845AA84:: @ 845AA84
- .4byte 0x00000070
- @ {
- @ .bg = 0,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 7,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 0,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000011fd
- @ {
- @ .bg = 1,
- @ .charBaseIndex = 3,
- @ .mapBaseIndex = 31,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 1,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x0000217a
- @ {
- @ .bg = 2,
- @ .charBaseIndex = 2,
- @ .mapBaseIndex = 23,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 2,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000070f7
- @ {
- @ .bg = 3,
- @ .charBaseIndex = 1,
- @ .mapBaseIndex = 15,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 3,
- @ .baseTile = 0x0001
- @ }
-
-gUnknown_845AA94:: @ 845AA94
- .byte 3, 8, 1, 21, 19, 15
- .2byte 0x0001
- .byte 1, 9, 18, 15, 2, 12
- .2byte 0x007a
- .byte 1, 0, 2, 6, 15, 7
- .2byte 0x0020
- .byte 0, 1, 2, 7, 9, 14
- .2byte 0x0013
- .byte 255, 0, 0, 0, 0, 0
- .2byte 0x0000
-
-gUnknown_845AABC:: @ 845AABC
- .2byte 0x00
- .align 2
- .4byte sub_8129CA0
- .2byte 0x03
- .align 2
- .4byte sub_8129D40
- .2byte 0x04
- .align 2
- .4byte sub_8129D78
- .2byte 0x05
- .align 2
- .4byte sub_8129DB0
- .2byte 0x01
- .align 2
- .4byte sub_8129E1C
- .2byte 0x06
- .align 2
- .4byte sub_8129E28
- .2byte 0x07
- .align 2
- .4byte sub_8129E74
- .2byte 0x08
- .align 2
- .4byte sub_8129EB8
- .2byte 0x09
- .align 2
- .4byte sub_8129F24
- .2byte 0x0a
- .align 2
- .4byte sub_8129FCC
- .2byte 0x0b
- .align 2
- .4byte sub_812A074
- .2byte 0x0c
- .align 2
- .4byte sub_812A0B0
- .2byte 0x02
- .align 2
- .4byte sub_812A18C
- .2byte 0x0d
- .align 2
- .4byte sub_812A1B8
- .2byte 0x12
- .align 2
- .4byte sub_812A1FC
- .2byte 0x13
- .align 2
- .4byte sub_812A240
- .2byte 0x0e
- .align 2
- .4byte sub_812A294
- .2byte 0x0f
- .align 2
- .4byte sub_812A2E4
- .2byte 0x10
- .align 2
- .4byte sub_812A334
- .2byte 0x11
- .align 2
- .4byte sub_812A378
- .2byte 0x14
- .align 2
- .4byte sub_812A3D0
-
gUnknown_845AB64:: @ 845AB64
.4byte gUnknown_841B366
.byte 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00
diff --git a/include/union_room_chat.h b/include/union_room_chat.h
index 66daac376..3488e71bc 100644
--- a/include/union_room_chat.h
+++ b/include/union_room_chat.h
@@ -1,8 +1,13 @@
#ifndef GUARD_UNION_ROOM_CHAT_H
#define GUARD_UNION_ROOM_CHAT_H
-void sub_801DD98(void);
void sub_8128420(void);
+u8 *sub_8129714(void);
+void sub_8129730(u32 *a0, u32 *a1);
+u8 *sub_8129758(void);
+u16 sub_8129788(void);
+u8 *sub_81297C4(void);
+u16 sub_81297D0(void);
void copy_strings_to_sav1(void);
#endif // GUARD_UNION_ROOM_CHAT_H
diff --git a/include/union_room_chat_display.h b/include/union_room_chat_display.h
new file mode 100644
index 000000000..597296869
--- /dev/null
+++ b/include/union_room_chat_display.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_UNION_ROOM_CHAT_DISPLAY_H
+#define GUARD_UNION_ROOM_CHAT_DISPLAY_H
+
+bool8 sub_8129B14(void);
+bool32 sub_8129B78(void);
+void sub_8129B88(void);
+void sub_8129BFC(void);
+void sub_8129C34(u16 a0, u8 a1);
+u8 sub_8129C8C(u8 a0);
+s8 sub_812A568(void);
+
+#endif //GUARD_UNION_ROOM_CHAT_DISPLAY_H
diff --git a/include/union_room_chat_objects.h b/include/union_room_chat_objects.h
new file mode 100644
index 000000000..41db4d3a4
--- /dev/null
+++ b/include/union_room_chat_objects.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_UNION_ROOM_CHAT_OBJECTS_H
+#define GUARD_UNION_ROOM_CHAT_OBJECTS_H
+
+bool32 sub_812AE70(void);
+void sub_812AEB0(void);
+void sub_812AEC8(void);
+void sub_812AEFC(bool8 invisible);
+void sub_812AF1C(void);
+void sub_812AF8C(u32 idx);
+void sub_812AFC0(void);
+bool32 sub_812AFFC(void);
+void sub_812B048(void);
+void sub_812B100(void);
+void sub_812B160(void);
+
+#endif //GUARD_UNION_ROOM_CHAT_OBJECTS_H
diff --git a/ld_script.txt b/ld_script.txt
index c21f61f53..c02fc0f08 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -247,6 +247,7 @@ SECTIONS {
asm/pokemon_special_anim.o(.text);
src/party_menu.o(.text);
src/union_room_chat.o(.text);
+ src/union_room_chat_display.o(.text);
asm/union_room_chat.o(.text);
src/help_system_812B1E0.o(.text);
src/quest_log_battle.o(.text);
@@ -536,6 +537,7 @@ SECTIONS {
data/pokemon_special_anim.o(.rodata);
src/party_menu.o(.rodata);
src/union_room_chat.o(.rodata);
+ src/union_room_chat_display.o(.rodata);
data/union_room_chat.o(.rodata);
src/help_system_812B1E0.o(.rodata);
src/fame_checker.o(.rodata);
diff --git a/src/union_room_chat.c b/src/union_room_chat.c
index abd763367..936803f80 100644
--- a/src/union_room_chat.c
+++ b/src/union_room_chat.c
@@ -13,6 +13,7 @@
#include "scanline_effect.h"
#include "strings.h"
#include "task.h"
+#include "union_room_chat_display.h"
#include "data_8479668.h"
#include "constants/songs.h"
@@ -89,13 +90,6 @@ void sub_81295EC(u8 *ptr);
void sub_8129614(u8 *ptr);
u8 *sub_8129758(void);
void sub_81298F8(u8 taskId);
-void sub_8129B14(void);
-bool32 sub_8129B78(void);
-void sub_8129B88(void);
-void sub_8129BFC(void);
-void sub_8129C34(u16 a0, u8 a1);
-u8 sub_8129C8C(u8 a0);
-s8 sub_812A568(void);
static void (*const gUnknown_845A880[])(void) = {
sub_8128640,
diff --git a/src/union_room_chat_display.c b/src/union_room_chat_display.c
new file mode 100644
index 000000000..993481d3d
--- /dev/null
+++ b/src/union_room_chat_display.c
@@ -0,0 +1,656 @@
+#include "global.h"
+#include "gflib.h"
+#include "new_menu_helpers.h"
+#include "scanline_effect.h"
+#include "union_room_chat.h"
+#include "union_room_chat_display.h"
+#include "union_room_chat_objects.h"
+
+struct UnionRoomChat2_Unk0
+{
+ bool32 (*unk0)(u8 *);
+ u8 unk4;
+ u8 unk5;
+};
+
+struct UnionRoomChat2
+{
+ struct UnionRoomChat2_Unk0 unk0[3];
+ u16 unk18;
+ u16 unk1A;
+ u16 unk1C;
+ u16 unk1E;
+ s16 unk20;
+ u8 unk22[0x106];
+ u8 unk128[BG_SCREEN_SIZE];
+ u8 unk928[BG_SCREEN_SIZE];
+ u8 unk1128[BG_SCREEN_SIZE];
+ u8 unk1928[BG_SCREEN_SIZE];
+ u8 unk2128[0x20];
+ u8 unk2148[0x20];
+};
+
+struct Unk845AABC
+{
+ u16 unk0;
+ bool32 (*unk4)(u8 *);
+};
+
+EWRAM_DATA struct UnionRoomChat2 * gUnknown_203B0E4 = NULL;
+
+void sub_8129BB8(struct UnionRoomChat2 * ptr);
+void sub_8129BC4(void);
+bool32 sub_8129CA0(u8 *state);
+bool32 sub_8129D40(u8 *state);
+bool32 sub_8129D78(u8 *state);
+bool32 sub_8129DB0(u8 *state);
+bool32 sub_8129E1C(u8 *state);
+bool32 sub_8129E28(u8 *state);
+bool32 sub_8129E74(u8 *state);
+bool32 sub_8129EB8(u8 *state);
+bool32 sub_8129F24(u8 *state);
+bool32 sub_8129FCC(u8 *state);
+bool32 sub_812A074(u8 *state);
+bool32 sub_812A0B0(u8 *state);
+bool32 sub_812A18C(u8 *state);
+bool32 sub_812A1B8(u8 *state);
+bool32 sub_812A1FC(u8 *state);
+bool32 sub_812A240(u8 *state);
+bool32 sub_812A294(u8 *state);
+bool32 sub_812A2E4(u8 *state);
+bool32 sub_812A334(u8 *state);
+bool32 sub_812A378(u8 *state);
+bool32 sub_812A3D0(u8 *state);
+bool32 sub_812A420(u8 *state);
+void sub_812A424(u8 a0, u8 a1, u8 a2);
+void sub_812A51C(void);
+void sub_812A544(void);
+void sub_812A578(int a0, u16 a1);
+void sub_812A6F4(void);
+void sub_812A728(void);
+void sub_812A74C(u16 a0, u16 a1, u8 a2);
+void sub_812A778(u16 a0, u8 *a1, u8 a2, u8 a3, u8 a4);
+void sub_812A804(void);
+bool32 sub_812A980(void);
+bool32 sub_812A9C8(void);
+void sub_812AA10(void);
+void sub_812AA64(void);
+void sub_812AA78(u16 a0, u8 *a1, u8 a2);
+void sub_812AAD4(void);
+void sub_812AB8C(void);
+void sub_812ABD8(void);
+void sub_812AC08(void);
+void sub_812AC58(void);
+void sub_812AC9C(void);
+void sub_812ACC0(void);
+void sub_812ACEC(void);
+void sub_812AD04(void);
+void sub_812AD20(void);
+void sub_812AD50(void);
+
+const u16 gUnknown_845AA24[] = INCBIN_U16("graphics/union_room_chat/unk_845AA24.gbapal");
+const u16 gUnknown_845AA44[] = INCBIN_U16("graphics/union_room_chat/unk_845AA44.gbapal");
+const u16 gUnknown_845AA64[] = INCBIN_U16("graphics/union_room_chat/unk_845AA64.gbapal");
+
+const struct BgTemplate gUnknown_845AA84[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 7,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x0000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0x0000
+ }, {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 23,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x0000
+ }, {
+ .bg = 3,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 15,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0x0001
+ }
+};
+
+const struct WindowTemplate gUnknown_845AA94[] = {
+ {
+ .bg = 3,
+ .tilemapLeft = 8,
+ .tilemapTop = 1,
+ .width = 21,
+ .height = 19,
+ .paletteNum = 15,
+ .baseBlock = 0x001
+ }, {
+ .bg = 1,
+ .tilemapLeft = 9,
+ .tilemapTop = 18,
+ .width = 15,
+ .height = 2,
+ .paletteNum = 12,
+ .baseBlock = 0x07a
+ }, {
+ .bg = 1,
+ .tilemapLeft = 0,
+ .tilemapTop = 2,
+ .width = 6,
+ .height = 15,
+ .paletteNum = 7,
+ .baseBlock = 0x020
+ }, {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 2,
+ .width = 7,
+ .height = 9,
+ .paletteNum = 14,
+ .baseBlock = 0x013
+ }, DUMMY_WIN_TEMPLATE
+};
+
+const struct Unk845AABC gUnknown_845AABC[] = {
+ { 0, sub_8129CA0},
+ { 3, sub_8129D40},
+ { 4, sub_8129D78},
+ { 5, sub_8129DB0},
+ { 1, sub_8129E1C},
+ { 6, sub_8129E28},
+ { 7, sub_8129E74},
+ { 8, sub_8129EB8},
+ { 9, sub_8129F24},
+ {10, sub_8129FCC},
+ {11, sub_812A074},
+ {12, sub_812A0B0},
+ { 2, sub_812A18C},
+ {13, sub_812A1B8},
+ {18, sub_812A1FC},
+ {19, sub_812A240},
+ {14, sub_812A294},
+ {15, sub_812A2E4},
+ {16, sub_812A334},
+ {17, sub_812A378},
+ {20, sub_812A3D0}
+};
+
+bool8 sub_8129B14(void)
+{
+ gUnknown_203B0E4 = Alloc(sizeof(*gUnknown_203B0E4));
+ if (gUnknown_203B0E4 && sub_812AE70())
+ {
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_845AA84, NELEMS(gUnknown_845AA84));
+ InitWindows(gUnknown_845AA94);
+ ResetTempTileDataBuffers();
+ sub_812AD50();
+ sub_8129BB8(gUnknown_203B0E4);
+ sub_8129BC4();
+ sub_8129C34(0, 0);
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+bool32 sub_8129B78(void)
+{
+ return sub_8129C8C(0);
+}
+
+void sub_8129B88(void)
+{
+ sub_812AEB0();
+ if (gUnknown_203B0E4)
+ FREE_AND_SET_NULL(gUnknown_203B0E4);
+
+ FreeAllWindowBuffers();
+ gScanlineEffect.state = 3;
+}
+
+void sub_8129BB8(struct UnionRoomChat2 *arg0)
+{
+ arg0->unk18 = 0xFF;
+ arg0->unk1E = 0xFF;
+ arg0->unk1A = 0;
+}
+
+void sub_8129BC4(void)
+{
+ int i;
+
+ if (!gUnknown_203B0E4)
+ return;
+
+ for (i = 0; i < 3; i++)
+ {
+ gUnknown_203B0E4->unk0[i].unk0 = sub_812A420;
+ gUnknown_203B0E4->unk0[i].unk4 = 0;
+ gUnknown_203B0E4->unk0[i].unk5 = 0;
+ }
+}
+
+void sub_8129BFC(void)
+{
+ int i;
+
+ if (gUnknown_203B0E4 == NULL)
+ return;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (gUnknown_203B0E4->unk0[i].unk4)
+ gUnknown_203B0E4->unk0[i].unk4 = gUnknown_203B0E4->unk0[i].unk0(&gUnknown_203B0E4->unk0[i].unk5);
+ }
+}
+
+void sub_8129C34(u16 arg0, u8 arg1)
+{
+ int i;
+
+ gUnknown_203B0E4->unk0[arg1].unk0 = sub_812A420;
+ for (i = 0; i < NELEMS(gUnknown_845AABC); i++)
+ {
+ if (gUnknown_845AABC[i].unk0 == arg0)
+ {
+ gUnknown_203B0E4->unk0[arg1].unk0 = gUnknown_845AABC[i].unk4;
+ gUnknown_203B0E4->unk0[arg1].unk4 = 1;
+ gUnknown_203B0E4->unk0[arg1].unk5 = 0;
+ break;
+ }
+ }
+}
+
+bool8 sub_8129C8C(u8 arg0)
+{
+ return gUnknown_203B0E4->unk0[arg0].unk4;
+}
+
+bool32 sub_8129CA0(u8 *state)
+{
+ if (FreeTempTileDataBuffersIfPossible() == TRUE)
+ return TRUE;
+
+ switch (*state)
+ {
+ case 0:
+ sub_812AAD4();
+ sub_812AB8C();
+ break;
+ case 1:
+ sub_812ABD8();
+ break;
+ case 2:
+ sub_812AC08();
+ break;
+ case 3:
+ sub_812AC58();
+ break;
+ case 4:
+ sub_812AC9C();
+ break;
+ case 5:
+ sub_812ACC0();
+ sub_812ACEC();
+ sub_812AD20();
+ sub_812AD04();
+ break;
+ case 6:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_812AEC8();
+ sub_812B048();
+ sub_812B100();
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_8129D40(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_812AA10();
+ CopyWindowToVram(3, 3);
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_8129D78(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_812AA64();
+ CopyWindowToVram(3, 3);
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_8129DB0(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_812AEFC(TRUE);
+ if (sub_812A980())
+ return TRUE;
+
+ sub_812A804();
+ CopyWindowToVram(2, 2);
+ break;
+ case 1:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return TRUE;
+ break;
+ case 2:
+ if (sub_812A9C8())
+ return TRUE;
+
+ sub_812AF1C();
+ sub_812AEFC(FALSE);
+ sub_812B160();
+ return FALSE;
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_8129E1C(u8 *state)
+{
+ sub_812AF1C();
+ return FALSE;
+}
+
+bool32 sub_8129E28(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_812A578(0, 0);
+ sub_812A424(23, 11, 1);
+ CopyWindowToVram(gUnknown_203B0E4->unk1E, 3);
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_8129E74(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_812A6F4();
+ sub_812A51C();
+ CopyBgTilemapBufferToVram(0);
+ break;
+ case 1:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return TRUE;
+
+ sub_812A728();
+ sub_812A544();
+ return FALSE;
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_8129EB8(u8 *state)
+{
+ u32 var0, var1;
+ u8 *str;
+
+ switch (*state)
+ {
+ case 0:
+ sub_8129730(&var0, &var1);
+ sub_812A74C(var0, var1, 0);
+ str = sub_8129714();
+ sub_812A778(0, str, 3, 1, 2);
+ CopyWindowToVram(1, 2);
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_812B160();
+ return FALSE;
+ }
+ return TRUE;
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_8129F24(u8 *state)
+{
+ u16 var0;
+ u8 *str;
+ u16 length;
+
+ switch (*state)
+ {
+ case 0:
+ var0 = sub_8129788();
+ str = sub_8129758();
+ length = StringLength_Multibyte(str);
+ sub_812A74C(var0, length, PIXEL_FILL(6));
+ sub_812A778(var0, str, 0, 4, 5);
+ CopyWindowToVram(1, 2);
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_812A578(1, 16);
+ CopyWindowToVram(gUnknown_203B0E4->unk1E, 3);
+ }
+ else
+ {
+ return TRUE;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ sub_812AF8C(1);
+ else
+ return TRUE;
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_8129FCC(u8 *state)
+{
+ u16 var0;
+ u8 *str;
+ u16 length;
+
+ switch (*state)
+ {
+ case 0:
+ var0 = sub_8129788();
+ str = sub_8129758();
+ length = StringLength_Multibyte(str);
+ sub_812A74C(var0, length, PIXEL_FILL(0));
+ sub_812A778(var0, str, 3, 1, 2);
+ CopyWindowToVram(1, 2);
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_812A6F4();
+ CopyWindowToVram(gUnknown_203B0E4->unk1E, 3);
+ }
+ else
+ {
+ return TRUE;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_812AF8C(0);
+ sub_812A728();
+ }
+ else
+ {
+ return TRUE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_812A074(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_812A804();
+ CopyWindowToVram(2, 2);
+ (*state)++;
+ break;
+ case 1:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return TRUE;
+ else
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool32 sub_812A0B0(u8 *state)
+{
+ u16 var0;
+ u8 *str;
+ u8 var1;
+
+ switch (*state)
+ {
+ case 0:
+ var0 = gUnknown_203B0E4->unk1A;
+ str = sub_81297C4();
+ var1 = sub_81297D0();
+ sub_812AA78(var0, str, var1);
+ CopyWindowToVram(0, 2);
+ break;
+ case 1:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return TRUE;
+
+ if (gUnknown_203B0E4->unk1A < 9)
+ {
+ gUnknown_203B0E4->unk1A++;
+ *state = 4;
+ return FALSE;
+ }
+ else
+ {
+ gUnknown_203B0E4->unk1C = 0;
+ (*state)++;
+ }
+ // fall through
+ case 2:
+ ScrollWindow(0, 0, 5, PIXEL_FILL(1));
+ CopyWindowToVram(0, 2);
+ gUnknown_203B0E4->unk1C++;
+ (*state)++;
+ // fall through
+ case 3:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return TRUE;
+
+ if (gUnknown_203B0E4->unk1C < 3)
+ {
+ (*state)--;
+ return TRUE;
+ }
+ break;
+ case 4:
+ return FALSE;
+ default:
+ return TRUE;
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_812A18C(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_812AFC0();
+ (*state)++;
+ break;
+ case 1:
+ return sub_812AFFC();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_812A1B8(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_812A578(3, 16);
+ CopyWindowToVram(gUnknown_203B0E4->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}