summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-01-24 13:07:41 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-01-24 13:07:41 -0500
commit14b7ed7a5f21e2a0c81373f6861ebd0d4c6eb78c (patch)
tree138fd81d99292ac192f5d83da913a411efc9f25e
parent4ff5769f4286212d6ca50f82647cdd3849e1a361 (diff)
through sub_8128FB8
-rw-r--r--asm/union_room_chat.s1140
-rw-r--r--data/data_8479668.s60
-rw-r--r--data/union_room_chat.s60
-rw-r--r--include/data_8479668.h35
-rw-r--r--include/link_rfu.h1
-rw-r--r--src/union_room_chat.c457
6 files changed, 550 insertions, 1203 deletions
diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s
index 6f68a333f..47512f4c2 100644
--- a/asm/union_room_chat.s
+++ b/asm/union_room_chat.s
@@ -5,1146 +5,6 @@
.text
- thumb_func_start sub_81288D4
-sub_81288D4: @ 81288D4
- push {r4,lr}
- ldr r0, _081288EC @ =gUnknown_203B0E0
- ldr r0, [r0]
- ldrh r0, [r0, 0x6]
- cmp r0, 0xA
- bls _081288E2
- b _08128A94
-_081288E2:
- lsls r0, 2
- ldr r1, _081288F0 @ =_081288F4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081288EC: .4byte gUnknown_203B0E0
-_081288F0: .4byte _081288F4
- .align 2, 0
-_081288F4:
- .4byte _08128920
- .4byte _08128938
- .4byte _08128954
- .4byte _0812899C
- .4byte _08128A44
- .4byte _08128A86
- .4byte _08128A94
- .4byte _08128A94
- .4byte _081289F0
- .4byte _081289B0
- .4byte _081289D4
-_08128920:
- movs r0, 0x6
- movs r1, 0
- bl sub_8129C34
- ldr r0, _08128934 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x1
- strh r0, [r1, 0x6]
- b _08128A94
- .align 2, 0
-_08128934: .4byte gUnknown_203B0E0
-_08128938:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- beq _08128946
- b _08128A94
-_08128946:
- ldr r0, _08128950 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x2
- strh r0, [r1, 0x6]
- b _08128A94
- .align 2, 0
-_08128950: .4byte gUnknown_203B0E0
-_08128954:
- bl sub_812A568
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _08128966
- cmp r1, 0
- ble _08128A00
- b _08128A0A
-_08128966:
- ldr r4, _0812898C @ =gUnknown_203B0E0
- ldr r1, [r4]
- ldrb r0, [r1, 0x13]
- cmp r0, 0
- bne _08128990
- movs r2, 0xC8
- lsls r2, 1
- adds r0, r1, r2
- bl sub_8129614
- movs r0, 0x7
- movs r1, 0
- bl sub_8129C34
- ldr r1, [r4]
- movs r0, 0x9
- strh r0, [r1, 0x6]
- b _08128A94
- .align 2, 0
-_0812898C: .4byte gUnknown_203B0E0
-_08128990:
- movs r2, 0xC8
- lsls r2, 1
- adds r0, r1, r2
- bl sub_81295C0
- b _08128A36
-_0812899C:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08128A94
- movs r0, 0x1
- bl sub_8129218
- b _08128A94
-_081289B0:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08128A94
- movs r0, 0x14
- movs r1, 0
- bl sub_8129C34
- ldr r0, _081289D0 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0xA
- strh r0, [r1, 0x6]
- b _08128A94
- .align 2, 0
-_081289D0: .4byte gUnknown_203B0E0
-_081289D4:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08128A94
- ldr r0, _081289EC @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x8
- strh r0, [r1, 0x6]
- b _08128A94
- .align 2, 0
-_081289EC: .4byte gUnknown_203B0E0
-_081289F0:
- bl sub_812A568
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _08128A24
- cmp r1, 0
- bgt _08128A0A
-_08128A00:
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08128A0E
- b _08128A94
-_08128A0A:
- cmp r1, 0x1
- bne _08128A94
-_08128A0E:
- movs r0, 0x7
- movs r1, 0
- bl sub_8129C34
- ldr r0, _08128A20 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x3
- strh r0, [r1, 0x6]
- b _08128A94
- .align 2, 0
-_08128A20: .4byte gUnknown_203B0E0
-_08128A24:
- bl sub_80FA4A8
- ldr r4, _08128A40 @ =gUnknown_203B0E0
- ldr r0, [r4]
- movs r1, 0xC8
- lsls r1, 1
- adds r0, r1
- bl sub_8129614
-_08128A36:
- ldr r1, [r4]
- movs r0, 0x4
- strh r0, [r1, 0x6]
- b _08128A94
- .align 2, 0
-_08128A40: .4byte gUnknown_203B0E0
-_08128A44:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08128A94
- bl sub_80FBA1C
- cmp r0, 0
- bne _08128A94
- ldr r4, _08128A7C @ =gUnknown_203B0E0
- ldr r1, [r4]
- movs r2, 0xC8
- lsls r2, 1
- adds r1, r2
- movs r0, 0
- movs r2, 0x28
- bl SendBlock
- lsls r0, 24
- cmp r0, 0
- beq _08128A94
- ldr r1, [r4]
- ldrb r0, [r1, 0x13]
- cmp r0, 0
- bne _08128A80
- movs r0, 0x6
- strh r0, [r1, 0x6]
- b _08128A94
- .align 2, 0
-_08128A7C: .4byte gUnknown_203B0E0
-_08128A80:
- movs r0, 0x5
- strh r0, [r1, 0x6]
- b _08128A94
-_08128A86:
- ldr r0, _08128A9C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08128A94
- movs r0, 0x9
- bl sub_8129218
-_08128A94:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08128A9C: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_81288D4
-
- thumb_func_start sub_8128AA0
-sub_8128AA0: @ 8128AA0
- push {r4,lr}
- ldr r1, _08128ABC @ =gUnknown_203B0E0
- ldr r0, [r1]
- ldrh r0, [r0, 0x6]
- adds r2, r1, 0
- cmp r0, 0x7
- bls _08128AB0
- b _08128BFC
-_08128AB0:
- lsls r0, 2
- ldr r1, _08128AC0 @ =_08128AC4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08128ABC: .4byte gUnknown_203B0E0
-_08128AC0: .4byte _08128AC4
- .align 2, 0
-_08128AC4:
- .4byte _08128AE4
- .4byte _08128B08
- .4byte _08128B28
- .4byte _08128B4C
- .4byte _08128B80
- .4byte _08128BA0
- .4byte _08128BC4
- .4byte _08128BE8
-_08128AE4:
- ldr r0, _08128B00 @ =sub_81298F8
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _08128AF2
- b _08128BFC
-_08128AF2:
- movs r0, 0x7
- movs r1, 0
- bl sub_8129C34
- ldr r0, _08128B04 @ =gUnknown_203B0E0
- ldr r1, [r0]
- b _08128BDA
- .align 2, 0
-_08128B00: .4byte sub_81298F8
-_08128B04: .4byte gUnknown_203B0E0
-_08128B08:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08128BFC
- movs r0, 0x12
- movs r1, 0
- bl sub_8129C34
- ldr r0, _08128B24 @ =gUnknown_203B0E0
- ldr r1, [r0]
- b _08128BDA
- .align 2, 0
-_08128B24: .4byte gUnknown_203B0E0
-_08128B28:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08128BFC
- ldr r4, _08128B48 @ =gUnknown_203B0E0
- ldr r0, [r4]
- movs r1, 0xC8
- lsls r1, 1
- adds r0, r1
- bl sub_81295EC
- ldr r1, [r4]
- b _08128BDA
- .align 2, 0
-_08128B48: .4byte gUnknown_203B0E0
-_08128B4C:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08128BFC
- bl sub_80FBA1C
- cmp r0, 0
- bne _08128BFC
- ldr r4, _08128B7C @ =gUnknown_203B0E0
- ldr r1, [r4]
- movs r0, 0xC8
- lsls r0, 1
- adds r1, r0
- movs r0, 0
- movs r2, 0x28
- bl SendBlock
- lsls r0, 24
- cmp r0, 0
- beq _08128BFC
- ldr r1, [r4]
- b _08128BDA
- .align 2, 0
-_08128B7C: .4byte gUnknown_203B0E0
-_08128B80:
- bl GetBlockReceivedStatus
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08128BFC
- bl sub_80FBA1C
- cmp r0, 0
- bne _08128BFC
- ldr r0, _08128B9C @ =gUnknown_203B0E0
- ldr r1, [r0]
- b _08128BDA
- .align 2, 0
-_08128B9C: .4byte gUnknown_203B0E0
-_08128BA0:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08128BFC
- bl sub_80FBA1C
- adds r4, r0, 0
- cmp r4, 0
- bne _08128BFC
- bl sub_800AAC0
- ldr r0, _08128BC0 @ =gUnknown_203B0E0
- ldr r1, [r0]
- strh r4, [r1, 0xA]
- b _08128BDA
- .align 2, 0
-_08128BC0: .4byte gUnknown_203B0E0
-_08128BC4:
- ldr r1, [r2]
- ldrh r0, [r1, 0xA]
- cmp r0, 0x95
- bhi _08128BD0
- adds r0, 0x1
- strh r0, [r1, 0xA]
-_08128BD0:
- ldr r0, _08128BE4 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08128BFC
- ldr r1, [r2]
-_08128BDA:
- ldrh r0, [r1, 0x6]
- adds r0, 0x1
- strh r0, [r1, 0x6]
- b _08128BFC
- .align 2, 0
-_08128BE4: .4byte gReceivedRemoteLinkPlayers
-_08128BE8:
- ldr r1, [r2]
- ldrh r0, [r1, 0xA]
- cmp r0, 0x95
- bls _08128BF8
- movs r0, 0x9
- bl sub_8129218
- b _08128BFC
-_08128BF8:
- adds r0, 0x1
- strh r0, [r1, 0xA]
-_08128BFC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8128AA0
-
- thumb_func_start sub_8128C04
-sub_8128C04: @ 8128C04
- push {r4,r5,lr}
- ldr r5, _08128C1C @ =gUnknown_203B0E0
- ldr r1, [r5]
- ldrh r0, [r1, 0x6]
- cmp r0, 0x1
- beq _08128C44
- cmp r0, 0x1
- bgt _08128C20
- cmp r0, 0
- beq _08128C2A
- b _08128CA2
- .align 2, 0
-_08128C1C: .4byte gUnknown_203B0E0
-_08128C20:
- cmp r0, 0x2
- beq _08128C6E
- cmp r0, 0x3
- beq _08128C90
- b _08128CA2
-_08128C2A:
- ldr r0, _08128C40 @ =sub_81298F8
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _08128CA2
- movs r0, 0x7
- movs r1, 0
- bl sub_8129C34
- b _08128C80
- .align 2, 0
-_08128C40: .4byte sub_81298F8
-_08128C44:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08128CA2
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08128CA2
- bl sub_80FBA1C
- adds r4, r0, 0
- cmp r4, 0
- bne _08128CA2
- bl sub_800AAC0
- ldr r1, [r5]
- strh r4, [r1, 0xA]
- b _08128C82
-_08128C6E:
- ldrh r0, [r1, 0xA]
- cmp r0, 0x95
- bhi _08128C78
- adds r0, 0x1
- strh r0, [r1, 0xA]
-_08128C78:
- ldr r0, _08128C8C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08128CA2
-_08128C80:
- ldr r1, [r5]
-_08128C82:
- ldrh r0, [r1, 0x6]
- adds r0, 0x1
- strh r0, [r1, 0x6]
- b _08128CA2
- .align 2, 0
-_08128C8C: .4byte gReceivedRemoteLinkPlayers
-_08128C90:
- ldrh r0, [r1, 0xA]
- cmp r0, 0x95
- bls _08128C9E
- movs r0, 0x9
- bl sub_8129218
- b _08128CA2
-_08128C9E:
- adds r0, 0x1
- strh r0, [r1, 0xA]
-_08128CA2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8128C04
-
- thumb_func_start sub_8128CA8
-sub_8128CA8: @ 8128CA8
- push {r4,lr}
- ldr r1, _08128CC0 @ =gUnknown_203B0E0
- ldr r0, [r1]
- ldrh r0, [r0, 0x6]
- adds r2, r1, 0
- cmp r0, 0x4
- bhi _08128D9C
- lsls r0, 2
- ldr r1, _08128CC4 @ =_08128CC8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08128CC0: .4byte gUnknown_203B0E0
-_08128CC4: .4byte _08128CC8
- .align 2, 0
-_08128CC8:
- .4byte _08128CDC
- .4byte _08128D08
- .4byte _08128D30
- .4byte _08128D64
- .4byte _08128D88
-_08128CDC:
- ldr r0, _08128D00 @ =sub_81298F8
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _08128D9C
- ldr r4, _08128D04 @ =gUnknown_203B0E0
- ldr r0, [r4]
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _08128CFA
- movs r0, 0x7
- movs r1, 0
- bl sub_8129C34
-_08128CFA:
- ldr r1, [r4]
- b _08128D7A
- .align 2, 0
-_08128D00: .4byte sub_81298F8
-_08128D04: .4byte gUnknown_203B0E0
-_08128D08:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08128D9C
- ldr r4, _08128D2C @ =gUnknown_203B0E0
- ldr r0, [r4]
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _08128D26
- movs r0, 0x13
- movs r1, 0
- bl sub_8129C34
-_08128D26:
- ldr r1, [r4]
- b _08128D7A
- .align 2, 0
-_08128D2C: .4byte gUnknown_203B0E0
-_08128D30:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08128D9C
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08128D9C
- bl sub_80FBA1C
- adds r4, r0, 0
- cmp r4, 0
- bne _08128D9C
- bl sub_800AAC0
- ldr r0, _08128D60 @ =gUnknown_203B0E0
- ldr r1, [r0]
- strh r4, [r1, 0xA]
- b _08128D7A
- .align 2, 0
-_08128D60: .4byte gUnknown_203B0E0
-_08128D64:
- ldr r1, [r2]
- ldrh r0, [r1, 0xA]
- cmp r0, 0x95
- bhi _08128D70
- adds r0, 0x1
- strh r0, [r1, 0xA]
-_08128D70:
- ldr r0, _08128D84 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08128D9C
- ldr r1, [r2]
-_08128D7A:
- ldrh r0, [r1, 0x6]
- adds r0, 0x1
- strh r0, [r1, 0x6]
- b _08128D9C
- .align 2, 0
-_08128D84: .4byte gReceivedRemoteLinkPlayers
-_08128D88:
- ldr r1, [r2]
- ldrh r0, [r1, 0xA]
- cmp r0, 0x95
- bls _08128D98
- movs r0, 0x9
- bl sub_8129218
- b _08128D9C
-_08128D98:
- adds r0, 0x1
- strh r0, [r1, 0xA]
-_08128D9C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8128CA8
-
- thumb_func_start sub_8128DA4
-sub_8128DA4: @ 8128DA4
- push {r4,lr}
- ldr r1, _08128DBC @ =gUnknown_203B0E0
- ldr r0, [r1]
- ldrh r0, [r0, 0x6]
- adds r4, r1, 0
- cmp r0, 0x4
- bhi _08128E70
- lsls r0, 2
- ldr r1, _08128DC0 @ =_08128DC4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08128DBC: .4byte gUnknown_203B0E0
-_08128DC0: .4byte _08128DC4
- .align 2, 0
-_08128DC4:
- .4byte _08128DD8
- .4byte _08128E00
- .4byte _08128E34
- .4byte _08128E42
- .4byte _08128E60
-_08128DD8:
- ldr r0, _08128DE8 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08128DEC
- movs r0, 0x1
- bl sub_8129218
- b _08128E70
- .align 2, 0
-_08128DE8: .4byte gReceivedRemoteLinkPlayers
-_08128DEC:
- ldr r0, [r4]
- movs r1, 0xC8
- lsls r1, 1
- adds r0, r1
- bl sub_8129590
- ldr r1, [r4]
- ldrh r0, [r1, 0x6]
- adds r0, 0x1
- strh r0, [r1, 0x6]
-_08128E00:
- bl IsLinkTaskFinished
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08128E70
- bl sub_80FBA1C
- cmp r0, 0
- bne _08128E70
- ldr r4, _08128E30 @ =gUnknown_203B0E0
- ldr r1, [r4]
- movs r0, 0xC8
- lsls r0, 1
- adds r1, r0
- movs r0, 0
- movs r2, 0x28
- bl SendBlock
- lsls r0, 24
- cmp r0, 0
- beq _08128E70
- ldr r1, [r4]
- b _08128E52
- .align 2, 0
-_08128E30: .4byte gUnknown_203B0E0
-_08128E34:
- bl sub_8129454
- movs r0, 0x8
- movs r1, 0
- bl sub_8129C34
- b _08128E4E
-_08128E42:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08128E70
-_08128E4E:
- ldr r0, _08128E5C @ =gUnknown_203B0E0
- ldr r1, [r0]
-_08128E52:
- ldrh r0, [r1, 0x6]
- adds r0, 0x1
- strh r0, [r1, 0x6]
- b _08128E70
- .align 2, 0
-_08128E5C: .4byte gUnknown_203B0E0
-_08128E60:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08128E70
- movs r0, 0x1
- bl sub_8129218
-_08128E70:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8128DA4
-
- thumb_func_start sub_8128E78
-sub_8128E78: @ 8128E78
- push {r4,lr}
- ldr r0, _08128E90 @ =gUnknown_203B0E0
- ldr r0, [r0]
- ldrh r0, [r0, 0x6]
- cmp r0, 0x6
- bls _08128E86
- b _08128FA8
-_08128E86:
- lsls r0, 2
- ldr r1, _08128E94 @ =_08128E98
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08128E90: .4byte gUnknown_203B0E0
-_08128E94: .4byte _08128E98
- .align 2, 0
-_08128E98:
- .4byte _08128EB4
- .4byte _08128EE4
- .4byte _08128F38
- .4byte _08128F50
- .4byte _08128F60
- .4byte _08128F74
- .4byte _08128F8C
-_08128EB4:
- bl sub_8129408
- cmp r0, 0
- beq _08128ED0
- movs r0, 0x9
- movs r1, 0
- bl sub_8129C34
- ldr r0, _08128ECC @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x2
- b _08128FA6
- .align 2, 0
-_08128ECC: .4byte gUnknown_203B0E0
-_08128ED0:
- movs r0, 0xD
- movs r1, 0
- bl sub_8129C34
- ldr r0, _08128EE0 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x5
- b _08128FA6
- .align 2, 0
-_08128EE0: .4byte gUnknown_203B0E0
-_08128EE4:
- ldr r0, _08128F04 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08128F0C
- bl sub_8129424
- movs r0, 0xB
- movs r1, 0
- bl sub_8129C34
- ldr r0, _08128F08 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x3
- b _08128FA6
- .align 2, 0
-_08128F04: .4byte gMain
-_08128F08: .4byte gUnknown_203B0E0
-_08128F0C:
- movs r4, 0x2
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _08128F1A
- movs r0, 0xA
- b _08128F9A
-_08128F1A:
- bl sub_8129228
- cmp r0, 0
- beq _08128FA8
- movs r0, 0x1
- movs r1, 0
- bl sub_8129C34
- ldr r0, _08128F34 @ =gUnknown_203B0E0
- ldr r0, [r0]
- strh r4, [r0, 0x6]
- b _08128FA8
- .align 2, 0
-_08128F34: .4byte gUnknown_203B0E0
-_08128F38:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08128FA8
- ldr r0, _08128F4C @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x1
- b _08128FA6
- .align 2, 0
-_08128F4C: .4byte gUnknown_203B0E0
-_08128F50:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08128FA8
- movs r0, 0xA
- b _08128F9A
-_08128F60:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08128FA8
- movs r0, 0x1
- bl sub_8129218
- b _08128FA8
-_08128F74:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08128FA8
- ldr r0, _08128F88 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x6
- b _08128FA6
- .align 2, 0
-_08128F88: .4byte gUnknown_203B0E0
-_08128F8C:
- ldr r0, _08128FB0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08128FA8
- movs r0, 0x7
-_08128F9A:
- movs r1, 0
- bl sub_8129C34
- ldr r0, _08128FB4 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x4
-_08128FA6:
- strh r0, [r1, 0x6]
-_08128FA8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08128FB0: .4byte gMain
-_08128FB4: .4byte gUnknown_203B0E0
- thumb_func_end sub_8128E78
-
- thumb_func_start sub_8128FB8
-sub_8128FB8: @ 8128FB8
- push {r4,lr}
- sub sp, 0x4
- ldr r1, _08128FD4 @ =gUnknown_203B0E0
- ldr r0, [r1]
- ldrh r0, [r0, 0x6]
- adds r4, r1, 0
- cmp r0, 0xD
- bls _08128FCA
- b _08129206
-_08128FCA:
- lsls r0, 2
- ldr r1, _08128FD8 @ =_08128FDC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08128FD4: .4byte gUnknown_203B0E0
-_08128FD8: .4byte _08128FDC
- .align 2, 0
-_08128FDC:
- .4byte _08129014
- .4byte _0812902E
- .4byte _08129054
- .4byte _08129098
- .4byte _081290BC
- .4byte _081290D8
- .4byte _0812911C
- .4byte _08129144
- .4byte _08129168
- .4byte _08129180
- .4byte _081291A4
- .4byte _081291B2
- .4byte _081291C8
- .4byte _081291E8
-_08129014:
- ldr r1, [r4]
- ldrb r0, [r1, 0x18]
- cmp r0, 0
- bne _0812901E
- b _081291C2
-_0812901E:
- movs r0, 0x7
- movs r1, 0
- bl sub_8129C34
- ldr r1, [r4]
- movs r0, 0x1
- strh r0, [r1, 0x6]
- b _08129206
-_0812902E:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- beq _0812903C
- b _08129206
-_0812903C:
- movs r0, 0xE
- movs r1, 0
- bl sub_8129C34
- ldr r0, _08129050 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x2
- strh r0, [r1, 0x6]
- b _08129206
- .align 2, 0
-_08129050: .4byte gUnknown_203B0E0
-_08129054:
- bl sub_812A568
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _08129080
- cmp r1, 0
- bgt _0812906E
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08129074
- b _08129206
-_0812906E:
- cmp r1, 0x1
- beq _08129074
- b _08129206
-_08129074:
- ldr r0, _0812907C @ =gUnknown_203B0E0
- ldr r1, [r0]
- b _081291C2
- .align 2, 0
-_0812907C: .4byte gUnknown_203B0E0
-_08129080:
- movs r0, 0x7
- movs r1, 0
- bl sub_8129C34
- ldr r0, _08129094 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x3
- strh r0, [r1, 0x6]
- b _08129206
- .align 2, 0
-_08129094: .4byte gUnknown_203B0E0
-_08129098:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- beq _081290A6
- b _08129206
-_081290A6:
- movs r0, 0xF
- movs r1, 0
- bl sub_8129C34
- ldr r0, _081290B8 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x4
- strh r0, [r1, 0x6]
- b _08129206
- .align 2, 0
-_081290B8: .4byte gUnknown_203B0E0
-_081290BC:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- beq _081290CA
- b _08129206
-_081290CA:
- ldr r0, _081290D4 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x5
- strh r0, [r1, 0x6]
- b _08129206
- .align 2, 0
-_081290D4: .4byte gUnknown_203B0E0
-_081290D8:
- bl sub_812A568
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _08129104
- cmp r1, 0
- bgt _081290F2
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081290F8
- b _08129206
-_081290F2:
- cmp r1, 0x1
- beq _081290F8
- b _08129206
-_081290F8:
- ldr r0, _08129100 @ =gUnknown_203B0E0
- ldr r1, [r0]
- b _081291C2
- .align 2, 0
-_08129100: .4byte gUnknown_203B0E0
-_08129104:
- movs r0, 0x7
- movs r1, 0
- bl sub_8129C34
- ldr r0, _08129118 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x6
- strh r0, [r1, 0x6]
- b _08129206
- .align 2, 0
-_08129118: .4byte gUnknown_203B0E0
-_0812911C:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08129206
- movs r0, 0x10
- movs r1, 0
- bl sub_8129C34
- bl sub_8129470
- ldr r0, _08129140 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x7
- strh r0, [r1, 0x6]
- b _08129206
- .align 2, 0
-_08129140: .4byte gUnknown_203B0E0
-_08129144:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08129206
- bl SetContinueGameWarpStatusToDynamicWarp
- movs r0, 0
- bl TrySavingData
- ldr r0, _08129164 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x8
- strh r0, [r1, 0x6]
- b _08129206
- .align 2, 0
-_08129164: .4byte gUnknown_203B0E0
-_08129168:
- movs r0, 0x11
- movs r1, 0
- bl sub_8129C34
- ldr r0, _0812917C @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x9
- strh r0, [r1, 0x6]
- b _08129206
- .align 2, 0
-_0812917C: .4byte gUnknown_203B0E0
-_08129180:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _08129206
- movs r0, 0x30
- bl PlaySE
- bl ClearContinueGameWarpStatus2
- ldr r0, _081291A0 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0xA
- strh r0, [r1, 0x6]
- b _08129206
- .align 2, 0
-_081291A0: .4byte gUnknown_203B0E0
-_081291A4:
- ldr r1, [r4]
- movs r0, 0
- strb r0, [r1, 0x19]
- ldr r1, [r4]
- movs r0, 0xB
- strh r0, [r1, 0x6]
- b _08129206
-_081291B2:
- ldr r0, [r4]
- ldrb r1, [r0, 0x19]
- adds r1, 0x1
- strb r1, [r0, 0x19]
- ldr r1, [r4]
- ldrb r0, [r1, 0x19]
- cmp r0, 0x78
- bls _08129206
-_081291C2:
- movs r0, 0xC
- strh r0, [r1, 0x6]
- b _08129206
-_081291C8:
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _081291E4 @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0xD
- strh r0, [r1, 0x6]
- b _08129206
- .align 2, 0
-_081291E4: .4byte gUnknown_203B0E0
-_081291E8:
- ldr r0, _08129210 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08129206
- bl sub_812B4B8
- bl sub_8129B88
- bl sub_81284BC
- ldr r0, _08129214 @ =CB2_ReturnToField
- bl SetMainCallback2
-_08129206:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08129210: .4byte gPaletteFade
-_08129214: .4byte CB2_ReturnToField
- thumb_func_end sub_8128FB8
-
thumb_func_start sub_8129218
sub_8129218: @ 8129218
ldr r1, _08129224 @ =gUnknown_203B0E0
diff --git a/data/data_8479668.s b/data/data_8479668.s
index 8527b4f09..393a5cc44 100644
--- a/data/data_8479668.s
+++ b/data/data_8479668.s
@@ -75,64 +75,64 @@ gUnknown_847AA8F::
gUnknown_847AAA8::
.string "{CLEAR 11}…{CLEAR 16}“{CLEAR 16}”{CLEAR 18}‘{CLEAR 18}'{CLEAR 18} $"
-gUnknown_847AAC1::
+gText_UnionRoomChatKeyboard_ABCDE::
.string "ABCDE$"
-gUnknown_847AAC7::
+gText_UnionRoomChatKeyboard_FGHIJ::
.string "FGHIJ$"
-gUnknown_847AACD::
+gText_UnionRoomChatKeyboard_KLMNO::
.string "KLMNO$"
-gUnknown_847AAD3::
+gText_UnionRoomChatKeyboard_PQRST::
.string "PQRST$"
-gUnknown_847AAD9::
+gText_UnionRoomChatKeyboard_UVWXY::
.string "UVWXY$"
-gUnknown_847AADF::
+gText_UnionRoomChatKeyboard_Z::
.string "Z $"
-gUnknown_847AAE5::
+gText_UnionRoomChatKeyboard_01234Upper::
.string "01234$"
-gUnknown_847AAEB::
+gText_UnionRoomChatKeyboard_56789Upper::
.string "56789$"
-gUnknown_847AAF1::
+gText_UnionRoomChatKeyboard_PunctuationUpper::
.string ".,!? $"
-gUnknown_847AAF7::
+gText_UnionRoomChatKeyboard_SymbolsUpper::
.string "-/&… $"
-gUnknown_847AAFD::
+gText_UnionRoomChatKeyboard_abcde::
.string "abcde$"
-gUnknown_847AB03::
+gText_UnionRoomChatKeyboard_fghij::
.string "fghij$"
-gUnknown_847AB09::
+gText_UnionRoomChatKeyboard_klmno::
.string "klmno$"
-gUnknown_847AB0F::
+gText_UnionRoomChatKeyboard_pqrst::
.string "pqrst$"
-gUnknown_847AB15::
+gText_UnionRoomChatKeyboard_uvwxy::
.string "uvwxy$"
-gUnknown_847AB1B::
+gText_UnionRoomChatKeyboard_z::
.string "z $"
-gUnknown_847AB21::
+gText_UnionRoomChatKeyboard_01234Lower::
.string "01234$"
-gUnknown_847AB27::
+gText_UnionRoomChatKeyboard_56789Lower::
.string "56789$"
-gUnknown_847AB2D::
+gText_UnionRoomChatKeyboard_PunctuationLower::
.string ".,!? $"
-gUnknown_847AB33::
+gText_UnionRoomChatKeyboard_SymbolsLower::
.string "-/&… $"
.string "$"
@@ -144,34 +144,34 @@ gUnknown_847AB33::
.string "$"
.string "$"
-gUnknown_847AB41::
+gText_UnionRoomChatKeyboard_Emoji1::
.string "{EXTRA 245}{EXTRA 246}{EXTRA 247}{EXTRA 248}{EXTRA 254}$"
-gUnknown_847AB4C::
+gText_UnionRoomChatKeyboard_Emoji2::
.string "{EXTRA 249}{EXTRA 250}{EXTRA 252}{EXTRA 251}{EXTRA 253}$"
-gUnknown_847AB57::
+gText_UnionRoomChatKeyboard_Emoji3::
.string "{EXTRA 236}{EXTRA 237}{EXTRA 238}{EXTRA 235}{EXTRA 234}$"
-gUnknown_847AB62::
+gText_UnionRoomChatKeyboard_Emoji4::
.string "♂♀{EXTRA 212}{EXTRA 213}{EXTRA 211}$"
-gUnknown_847AB6B::
+gText_UnionRoomChatKeyboard_Emoji5::
.string "{EXTRA 216}{EXTRA 217}{EXTRA 242}{EXTRA 243}{EXTRA 244}$"
-gUnknown_847AB76::
+gText_UnionRoomChatKeyboard_Emoji6::
.string "{EXTRA 218}{EXTRA 241}{EXTRA 224}{EXTRA 226}{EXTRA 227}$"
-gUnknown_847AB81::
+gText_UnionRoomChatKeyboard_Emoji7::
.string "{EXTRA 240}{EXTRA 239}{EXTRA 225}{EXTRA 214}{EXTRA 215}$"
-gUnknown_847AB8C::
+gText_UnionRoomChatKeyboard_Emoji8::
.string "{EXTRA 228}{EXTRA 229}{EXTRA 230}{EXTRA 231}{EXTRA 232}$"
-gUnknown_847AB97::
+gText_UnionRoomChatKeyboard_Emoji9::
.string "{EXTRA 233}{EXTRA 220}{EXTRA 221}{EXTRA 222}{EXTRA 209}$"
-gUnknown_847ABA2::
+gText_UnionRoomChatKeyboard_Emoji10::
.string "{EXTRA 210}{EXTRA 208}ょ: $"
// trainer_tower (again?)
diff --git a/data/union_room_chat.s b/data/union_room_chat.s
index 84f9d9c39..9c23697ee 100644
--- a/data/union_room_chat.s
+++ b/data/union_room_chat.s
@@ -44,36 +44,36 @@ gUnknown_845A8AC:: @ 845A8AC
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
gUnknown_845A9AC:: @ 845A9AC
- .4byte gUnknown_847AAC1
- .4byte gUnknown_847AAC7
- .4byte gUnknown_847AACD
- .4byte gUnknown_847AAD3
- .4byte gUnknown_847AAD9
- .4byte gUnknown_847AADF
- .4byte gUnknown_847AAE5
- .4byte gUnknown_847AAEB
- .4byte gUnknown_847AAF1
- .4byte gUnknown_847AAF7
- .4byte gUnknown_847AAFD
- .4byte gUnknown_847AB03
- .4byte gUnknown_847AB09
- .4byte gUnknown_847AB0F
- .4byte gUnknown_847AB15
- .4byte gUnknown_847AB1B
- .4byte gUnknown_847AB21
- .4byte gUnknown_847AB27
- .4byte gUnknown_847AB2D
- .4byte gUnknown_847AB33
- .4byte gUnknown_847AB41
- .4byte gUnknown_847AB4C
- .4byte gUnknown_847AB57
- .4byte gUnknown_847AB62
- .4byte gUnknown_847AB6B
- .4byte gUnknown_847AB76
- .4byte gUnknown_847AB81
- .4byte gUnknown_847AB8C
- .4byte gUnknown_847AB97
- .4byte gUnknown_847ABA2
+ .4byte gText_UnionRoomChatKeyboard_ABCDE
+ .4byte gText_UnionRoomChatKeyboard_FGHIJ
+ .4byte gText_UnionRoomChatKeyboard_KLMNO
+ .4byte gText_UnionRoomChatKeyboard_PQRST
+ .4byte gText_UnionRoomChatKeyboard_UVWXY
+ .4byte gText_UnionRoomChatKeyboard_Z
+ .4byte gText_UnionRoomChatKeyboard_01234Upper
+ .4byte gText_UnionRoomChatKeyboard_56789Upper
+ .4byte gText_UnionRoomChatKeyboard_PunctuationUpper
+ .4byte gText_UnionRoomChatKeyboard_SymbolsUpper
+ .4byte gText_UnionRoomChatKeyboard_abcde
+ .4byte gText_UnionRoomChatKeyboard_fghij
+ .4byte gText_UnionRoomChatKeyboard_klmno
+ .4byte gText_UnionRoomChatKeyboard_pqrst
+ .4byte gText_UnionRoomChatKeyboard_uvwxy
+ .4byte gText_UnionRoomChatKeyboard_z
+ .4byte gText_UnionRoomChatKeyboard_01234Lower
+ .4byte gText_UnionRoomChatKeyboard_56789Lower
+ .4byte gText_UnionRoomChatKeyboard_PunctuationLower
+ .4byte gText_UnionRoomChatKeyboard_SymbolsLower
+ .4byte gText_UnionRoomChatKeyboard_Emoji1
+ .4byte gText_UnionRoomChatKeyboard_Emoji2
+ .4byte gText_UnionRoomChatKeyboard_Emoji3
+ .4byte gText_UnionRoomChatKeyboard_Emoji4
+ .4byte gText_UnionRoomChatKeyboard_Emoji5
+ .4byte gText_UnionRoomChatKeyboard_Emoji6
+ .4byte gText_UnionRoomChatKeyboard_Emoji7
+ .4byte gText_UnionRoomChatKeyboard_Emoji8
+ .4byte gText_UnionRoomChatKeyboard_Emoji9
+ .4byte gText_UnionRoomChatKeyboard_Emoji10
gUnknown_845AA24:: @ 845AA24
.incbin "graphics/union_room_chat/unk_845AA24.gbapal"
diff --git a/include/data_8479668.h b/include/data_8479668.h
new file mode 100644
index 000000000..1a1f44267
--- /dev/null
+++ b/include/data_8479668.h
@@ -0,0 +1,35 @@
+#ifndef GUARD_DATA_8479668_H
+#define GUARD_DATA_8479668_H
+
+extern const u8 gText_UnionRoomChatKeyboard_ABCDE[];
+extern const u8 gText_UnionRoomChatKeyboard_FGHIJ[];
+extern const u8 gText_UnionRoomChatKeyboard_KLMNO[];
+extern const u8 gText_UnionRoomChatKeyboard_PQRST[];
+extern const u8 gText_UnionRoomChatKeyboard_UVWXY[];
+extern const u8 gText_UnionRoomChatKeyboard_Z[];
+extern const u8 gText_UnionRoomChatKeyboard_01234Upper[];
+extern const u8 gText_UnionRoomChatKeyboard_56789Upper[];
+extern const u8 gText_UnionRoomChatKeyboard_PunctuationUpper[];
+extern const u8 gText_UnionRoomChatKeyboard_SymbolsUpper[];
+extern const u8 gText_UnionRoomChatKeyboard_abcde[];
+extern const u8 gText_UnionRoomChatKeyboard_fghij[];
+extern const u8 gText_UnionRoomChatKeyboard_klmno[];
+extern const u8 gText_UnionRoomChatKeyboard_pqrst[];
+extern const u8 gText_UnionRoomChatKeyboard_uvwxy[];
+extern const u8 gText_UnionRoomChatKeyboard_z[];
+extern const u8 gText_UnionRoomChatKeyboard_01234Lower[];
+extern const u8 gText_UnionRoomChatKeyboard_56789Lower[];
+extern const u8 gText_UnionRoomChatKeyboard_PunctuationLower[];
+extern const u8 gText_UnionRoomChatKeyboard_SymbolsLower[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji1[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji2[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji3[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji4[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji5[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji6[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji7[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji8[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji9[];
+extern const u8 gText_UnionRoomChatKeyboard_Emoji10[];
+
+#endif //GUARD_DATA_8479668_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 2e502165a..9dac781b3 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -326,6 +326,7 @@ bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name);
bool8 sub_80FCC3C(struct GFtgtGname *gname, u8 *uname, u8 idx);
bool8 sub_80FCCF4(struct GFtgtGname *gname, u8 *uname, u8 idx);
bool32 sub_80FBA1C(void);
+void sub_80FA4A8(void);
#include "mevent_server.h"
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
diff --git a/src/union_room_chat.c b/src/union_room_chat.c
index 813d20e5f..cd285267a 100644
--- a/src/union_room_chat.c
+++ b/src/union_room_chat.c
@@ -4,8 +4,11 @@
#include "link.h"
#include "link_rfu.h"
#include "list_menu.h"
+#include "load_save.h"
#include "menu.h"
+#include "overworld.h"
#include "quest_log.h"
+#include "save.h"
#include "scanline_effect.h"
#include "task.h"
#include "constants/songs.h"
@@ -58,25 +61,35 @@ void sub_8128640(void);
void sub_81286C4(void);
void sub_81287B4(void);
void sub_81288D4(void);
-void sub_8128DA4(void);
-void sub_8128E78(void);
void sub_8128AA0(void);
void sub_8128C04(void);
void sub_8128CA8(void);
+void sub_8128DA4(void);
+void sub_8128E78(void);
void sub_8128FB8(void);
void sub_8129218(u16 a0);
bool32 sub_8129228(void);
void sub_81292D8(void);
void sub_81293AC(void);
void sub_81293D8(void);
+bool32 sub_8129408(void);
+void sub_8129424(void);
+void sub_8129454(void);
+void sub_8129470(void);
void sub_8129560(u8 *ptr);
void sub_8129568(u8 *ptr);
+void sub_8129590(u8 *ptr);
+void sub_81295C0(u8 *ptr);
+void sub_81295EC(u8 *ptr);
+void sub_8129614(u8 *ptr);
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,
@@ -316,7 +329,7 @@ void sub_81287B4(void)
var0 = 0;
break;
case MENU_NOTHING_CHOSEN:
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
PlaySE(SE_SELECT);
Menu_MoveCursor(1);
@@ -350,3 +363,441 @@ void sub_81287B4(void)
break;
}
}
+
+void sub_81288D4(void)
+{
+ s8 input;
+
+ switch (gUnknown_203B0E0->unk6)
+ {
+ case 0:
+ sub_8129C34(6, 0);
+ gUnknown_203B0E0->unk6 = 1;
+ break;
+ case 1:
+ if (!sub_8129C8C(0))
+ gUnknown_203B0E0->unk6 = 2;
+ break;
+ case 2:
+ input = sub_812A568();
+ switch (input)
+ {
+ case -1:
+ case 1:
+ sub_8129C34(7, 0);
+ gUnknown_203B0E0->unk6 = 3;
+ break;
+ case 0:
+ if (gUnknown_203B0E0->unk13 == 0)
+ {
+ sub_8129614(gUnknown_203B0E0->unk190);
+ sub_8129C34(7, 0);
+ gUnknown_203B0E0->unk6 = 9;
+ }
+ else
+ {
+ sub_81295C0(gUnknown_203B0E0->unk190);
+ gUnknown_203B0E0->unk6 = 4;
+ }
+ break;
+ }
+ break;
+ case 3:
+ if (!sub_8129C8C(0))
+ sub_8129218(1);
+ break;
+ case 9:
+ if (!sub_8129C8C(0))
+ {
+ sub_8129C34(20, 0);
+ gUnknown_203B0E0->unk6 = 10;
+ }
+ break;
+ case 10:
+ if (!sub_8129C8C(0))
+ gUnknown_203B0E0->unk6 = 8;
+ break;
+ case 8:
+ input = sub_812A568();
+ switch (input)
+ {
+ case -1:
+ case 1:
+ sub_8129C34(7, 0);
+ gUnknown_203B0E0->unk6 = 3;
+ break;
+ case 0:
+ sub_80FA4A8();
+ sub_8129614(gUnknown_203B0E0->unk190);
+ gUnknown_203B0E0->unk6 = 4;
+ break;
+ }
+ break;
+ case 4:
+ if (IsLinkTaskFinished() && !sub_80FBA1C() && SendBlock(0, gUnknown_203B0E0->unk190, sizeof(gUnknown_203B0E0->unk190)))
+ {
+ if (!gUnknown_203B0E0->unk13)
+ gUnknown_203B0E0->unk6 = 6;
+ else
+ gUnknown_203B0E0->unk6 = 5;
+ }
+ break;
+ case 5:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ sub_8129218(9);
+ }
+ break;
+ }
+}
+
+void sub_8128AA0(void)
+{
+ switch (gUnknown_203B0E0->unk6)
+ {
+ case 0:
+ if (!FuncIsActiveTask(sub_81298F8))
+ {
+ sub_8129C34(7, 0);
+ gUnknown_203B0E0->unk6++;
+ }
+ break;
+ case 1:
+ if (!sub_8129C8C(0))
+ {
+ sub_8129C34(18, 0);
+ gUnknown_203B0E0->unk6++;
+ }
+ break;
+ case 2:
+ if (!sub_8129C8C(0))
+ {
+ sub_81295EC(gUnknown_203B0E0->unk190);
+ gUnknown_203B0E0->unk6++;
+ }
+ break;
+ case 3:
+ if (IsLinkTaskFinished() && !sub_80FBA1C() && SendBlock(0, gUnknown_203B0E0->unk190, sizeof(gUnknown_203B0E0->unk190)))
+ gUnknown_203B0E0->unk6++;
+ break;
+ case 4:
+ if ((GetBlockReceivedStatus() & 1) && !sub_80FBA1C())
+ gUnknown_203B0E0->unk6++;
+ break;
+ case 5:
+ if (IsLinkTaskFinished() && !sub_80FBA1C())
+ {
+ sub_800AAC0();
+ gUnknown_203B0E0->unkA = 0;
+ gUnknown_203B0E0->unk6++;
+ }
+ break;
+ case 6:
+ if (gUnknown_203B0E0->unkA < 150)
+ gUnknown_203B0E0->unkA++;
+
+ if (!gReceivedRemoteLinkPlayers)
+ gUnknown_203B0E0->unk6++;
+ break;
+ case 7:
+ if (gUnknown_203B0E0->unkA >= 150)
+ sub_8129218(9);
+ else
+ gUnknown_203B0E0->unkA++;
+ break;
+ }
+}
+
+void sub_8128C04(void)
+{
+ switch (gUnknown_203B0E0->unk6)
+ {
+ case 0:
+ if (!FuncIsActiveTask(sub_81298F8))
+ {
+ sub_8129C34(7, 0);
+ gUnknown_203B0E0->unk6++;
+ }
+ break;
+ case 1:
+ if (!sub_8129C8C(0) && IsLinkTaskFinished() && !sub_80FBA1C())
+ {
+ sub_800AAC0();
+ gUnknown_203B0E0->unkA = 0;
+ gUnknown_203B0E0->unk6++;
+ }
+ break;
+ case 2:
+ if (gUnknown_203B0E0->unkA < 150)
+ gUnknown_203B0E0->unkA++;
+
+ if (!gReceivedRemoteLinkPlayers)
+ gUnknown_203B0E0->unk6++;
+ break;
+ case 3:
+ if (gUnknown_203B0E0->unkA >= 150)
+ sub_8129218(9);
+ else
+ gUnknown_203B0E0->unkA++;
+ break;
+ }
+}
+
+void sub_8128CA8(void)
+{
+ switch (gUnknown_203B0E0->unk6)
+ {
+ case 0:
+ if (!FuncIsActiveTask(sub_81298F8))
+ {
+ if (gUnknown_203B0E0->unk13)
+ sub_8129C34(7, 0);
+
+ gUnknown_203B0E0->unk6++;
+ }
+ break;
+ case 1:
+ if (!sub_8129C8C(0))
+ {
+ if (gUnknown_203B0E0->unk13)
+ sub_8129C34(19, 0);
+
+ gUnknown_203B0E0->unk6++;
+ }
+ break;
+ case 2:
+ if (sub_8129C8C(0) != TRUE && IsLinkTaskFinished() && !sub_80FBA1C())
+ {
+ sub_800AAC0();
+ gUnknown_203B0E0->unkA = 0;
+ gUnknown_203B0E0->unk6++;
+ }
+ break;
+ case 3:
+ if (gUnknown_203B0E0->unkA < 150)
+ gUnknown_203B0E0->unkA++;
+
+ if (!gReceivedRemoteLinkPlayers)
+ gUnknown_203B0E0->unk6++;
+ break;
+ case 4:
+ if (gUnknown_203B0E0->unkA >= 150)
+ sub_8129218(9);
+ else
+ gUnknown_203B0E0->unkA++;
+ break;
+ }
+}
+
+void sub_8128DA4(void)
+{
+ switch (gUnknown_203B0E0->unk6)
+ {
+ case 0:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ sub_8129218(1);
+ break;
+ }
+
+ sub_8129590(gUnknown_203B0E0->unk190);
+ gUnknown_203B0E0->unk6++;
+ // fall through
+ case 1:
+ if (IsLinkTaskFinished() == TRUE && !sub_80FBA1C() && SendBlock(0, gUnknown_203B0E0->unk190, sizeof(gUnknown_203B0E0->unk190)))
+ gUnknown_203B0E0->unk6++;
+ break;
+ case 2:
+ sub_8129454();
+ sub_8129C34(8, 0);
+ gUnknown_203B0E0->unk6++;
+ break;
+ case 3:
+ if (!sub_8129C8C(0))
+ gUnknown_203B0E0->unk6++;
+ break;
+ case 4:
+ if (IsLinkTaskFinished())
+ sub_8129218(1);
+ break;
+ }
+}
+
+void sub_8128E78(void)
+{
+ switch (gUnknown_203B0E0->unk6)
+ {
+ case 0:
+ if (sub_8129408())
+ {
+ sub_8129C34(9, 0);
+ gUnknown_203B0E0->unk6 = 2;
+ }
+ else
+ {
+ sub_8129C34(13, 0);
+ gUnknown_203B0E0->unk6 = 5;
+ }
+ break;
+ case 1:
+ if (JOY_NEW(A_BUTTON))
+ {
+ sub_8129424();
+ sub_8129C34(11, 0);
+ gUnknown_203B0E0->unk6 = 3;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ sub_8129C34(10, 0);
+ gUnknown_203B0E0->unk6 = 4;
+ }
+ else if (sub_8129228())
+ {
+ sub_8129C34(1, 0);
+ gUnknown_203B0E0->unk6 = 2;
+ }
+ break;
+ case 2:
+ if (!sub_8129C8C(0))
+ gUnknown_203B0E0->unk6 = 1;
+ break;
+ case 3:
+ if (!sub_8129C8C(0))
+ {
+ sub_8129C34(10, 0);
+ gUnknown_203B0E0->unk6 = 4;
+ }
+ break;
+ case 4:
+ if (!sub_8129C8C(0))
+ sub_8129218(1);
+ break;
+ case 5:
+ if (!sub_8129C8C(0))
+ gUnknown_203B0E0->unk6 = 6;
+ break;
+ case 6:
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
+ {
+ sub_8129C34(7, 0);
+ gUnknown_203B0E0->unk6 = 4;
+ }
+ break;
+ }
+}
+
+void sub_8128FB8(void)
+{
+ s8 input;
+
+ switch (gUnknown_203B0E0->unk6)
+ {
+ case 0:
+ if (!gUnknown_203B0E0->unk18)
+ {
+ gUnknown_203B0E0->unk6 = 12;
+ }
+ else
+ {
+ sub_8129C34(7, 0);
+ gUnknown_203B0E0->unk6 = 1;
+ }
+ break;
+ case 1:
+ if (!sub_8129C8C(0))
+ {
+ sub_8129C34(14, 0);
+ gUnknown_203B0E0->unk6 = 2;
+ }
+ break;
+ case 2:
+ input = sub_812A568();
+ switch (input)
+ {
+ case -1:
+ case 1:
+ gUnknown_203B0E0->unk6 = 12;
+ break;
+ case 0:
+ sub_8129C34(7, 0);
+ gUnknown_203B0E0->unk6 = 3;
+ break;
+ }
+ break;
+ case 3:
+ if (!sub_8129C8C(0))
+ {
+ sub_8129C34(15, 0);
+ gUnknown_203B0E0->unk6 = 4;
+ }
+ break;
+ case 4:
+ if (!sub_8129C8C(0))
+ gUnknown_203B0E0->unk6 = 5;
+ break;
+ case 5:
+ input = sub_812A568();
+ switch (input)
+ {
+ case -1:
+ case 1:
+ gUnknown_203B0E0->unk6 = 12;
+ break;
+ case 0:
+ sub_8129C34(7, 0);
+ gUnknown_203B0E0->unk6 = 6;
+ break;
+ }
+ break;
+ case 6:
+ if (!sub_8129C8C(0))
+ {
+ sub_8129C34(16, 0);
+ sub_8129470();
+ gUnknown_203B0E0->unk6 = 7;
+ }
+ break;
+ case 7:
+ if (!sub_8129C8C(0))
+ {
+ SetContinueGameWarpStatusToDynamicWarp();
+ TrySavingData(SAVE_NORMAL);
+ gUnknown_203B0E0->unk6 = 8;
+ }
+ break;
+ case 8:
+ sub_8129C34(17, 0);
+ gUnknown_203B0E0->unk6 = 9;
+ break;
+ case 9:
+ if (!sub_8129C8C(0))
+ {
+ PlaySE(SE_SAVE);
+ ClearContinueGameWarpStatus2();
+ gUnknown_203B0E0->unk6 = 10;
+ }
+ break;
+ case 10:
+ gUnknown_203B0E0->unk19 = 0;
+ gUnknown_203B0E0->unk6 = 11;
+ break;
+ case 11:
+ gUnknown_203B0E0->unk19++;
+ if (gUnknown_203B0E0->unk19 > 120)
+ gUnknown_203B0E0->unk6 = 12;
+ break;
+ case 12:
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
+ gUnknown_203B0E0->unk6 = 13;
+ break;
+ case 13:
+ if (!gPaletteFade.active)
+ {
+ sub_812B4B8();
+ sub_8129B88();
+ sub_81284BC();
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ break;
+ }
+}