summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/union_room_chat.s2218
-rw-r--r--data/data_8479668.s60
-rw-r--r--data/union_room_chat.s81
-rw-r--r--include/data_8479668.h35
-rw-r--r--include/global.h5
-rw-r--r--include/help_system.h1
-rw-r--r--include/link_rfu.h2
-rw-r--r--include/main.h1
-rw-r--r--include/text.h14
-rw-r--r--ld_script.txt2
-rw-r--r--src/union_room_chat.c1114
11 files changed, 1205 insertions, 2328 deletions
diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s
index adfd66b5d..24e341f0d 100644
--- a/asm/union_room_chat.s
+++ b/asm/union_room_chat.s
@@ -5,2220 +5,6 @@
.text
- thumb_func_start sub_8128420
-sub_8128420: @ 8128420
- push {r4,lr}
- ldr r4, _08128450 @ =gUnknown_203B0E0
- movs r0, 0xDC
- lsls r0, 1
- bl Alloc
- str r0, [r4]
- bl sub_812845C
- ldr r1, _08128454 @ =gKeyRepeatStartDelay
- movs r0, 0x14
- strh r0, [r1]
- bl sub_812B4AC
- movs r0, 0
- bl SetVBlankCallback
- ldr r0, _08128458 @ =c2_081284E0
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08128450: .4byte gUnknown_203B0E0
-_08128454: .4byte gKeyRepeatStartDelay
-_08128458: .4byte c2_081284E0
- thumb_func_end sub_8128420
-
- thumb_func_start sub_812845C
-sub_812845C: @ 812845C
- push {r4-r7,lr}
- adds r4, r0, 0
- movs r5, 0
- movs r0, 0
- strh r0, [r4, 0x4]
- strh r0, [r4, 0x6]
- strb r5, [r4, 0x10]
- strb r5, [r4, 0x11]
- strb r5, [r4, 0x12]
- strb r5, [r4, 0x14]
- strb r5, [r4, 0x15]
- strb r5, [r4, 0x16]
- movs r0, 0xFF
- strb r0, [r4, 0x1A]
- bl GetLinkPlayerCount
- strb r0, [r4, 0xD]
- bl GetMultiplayerId
- strb r0, [r4, 0x13]
- strb r5, [r4, 0x17]
- strb r5, [r4, 0x18]
- movs r1, 0xC8
- lsls r1, 1
- adds r0, r4, r1
- bl sub_8129560
- ldr r7, _081284B4 @ =gSaveBlock1Ptr
- ldr r6, _081284B8 @ =0x00003ad4
- adds r4, 0xB9
- movs r5, 0x9
-_0812849A:
- ldr r1, [r7]
- adds r1, r6
- adds r0, r4, 0
- bl StringCopy
- adds r6, 0x15
- adds r4, 0x15
- subs r5, 0x1
- cmp r5, 0
- bge _0812849A
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081284B4: .4byte gSaveBlock1Ptr
-_081284B8: .4byte 0x00003ad4
- thumb_func_end sub_812845C
-
- thumb_func_start sub_81284BC
-sub_81284BC: @ 81284BC
- push {r4,lr}
- ldr r4, _081284DC @ =gUnknown_203B0E0
- ldr r0, [r4]
- ldrb r0, [r0, 0xE]
- bl DestroyTask
- ldr r0, [r4]
- ldrb r0, [r0, 0xF]
- bl DestroyTask
- ldr r0, [r4]
- bl Free
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081284DC: .4byte gUnknown_203B0E0
- thumb_func_end sub_81284BC
-
- thumb_func_start c2_081284E0
-c2_081284E0: @ 81284E0
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r0, _081284FC @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r6, r0, r1
- ldrb r0, [r6]
- cmp r0, 0x1
- beq _08128518
- cmp r0, 0x1
- bgt _08128500
- cmp r0, 0
- beq _08128506
- b _08128598
- .align 2, 0
-_081284FC: .4byte gMain
-_08128500:
- cmp r0, 0x2
- beq _08128554
- b _08128598
-_08128506:
- bl ResetTasks
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl sub_8129B14
- b _08128548
-_08128518:
- bl sub_8129BFC
- bl sub_8129B78
- adds r5, r0, 0
- cmp r5, 0
- bne _08128598
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- str r5, [sp]
- adds r0, r4, 0
- adds r1, r4, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _08128550 @ =sub_81285B4
- bl SetVBlankCallback
-_08128548:
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- b _08128598
- .align 2, 0
-_08128550: .4byte sub_81285B4
-_08128554:
- bl UpdatePaletteFade
- ldr r0, _081285A0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08128598
- ldr r0, _081285A4 @ =sub_81285CC
- bl SetMainCallback2
- movs r0, 0x11
- movs r1, 0
- bl SetQuestLogEvent
- ldr r0, _081285A8 @ =sub_81285E8
- movs r1, 0x8
- bl CreateTask
- ldr r4, _081285AC @ =gUnknown_203B0E0
- ldr r1, [r4]
- strb r0, [r1, 0xE]
- ldr r0, _081285B0 @ =sub_81298F8
- movs r1, 0x7
- bl CreateTask
- ldr r1, [r4]
- strb r0, [r1, 0xF]
- bl LoadWirelessStatusIndicatorSpriteGfx
- movs r0, 0xE8
- movs r1, 0x96
- bl CreateWirelessStatusIndicatorSprite
-_08128598:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081285A0: .4byte gPaletteFade
-_081285A4: .4byte sub_81285CC
-_081285A8: .4byte sub_81285E8
-_081285AC: .4byte gUnknown_203B0E0
-_081285B0: .4byte sub_81298F8
- thumb_func_end c2_081284E0
-
- thumb_func_start sub_81285B4
-sub_81285B4: @ 81285B4
- push {lr}
- bl TransferPlttBuffer
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl ScanlineEffect_InitHBlankDmaTransfer
- pop {r0}
- bx r0
- thumb_func_end sub_81285B4
-
- thumb_func_start sub_81285CC
-sub_81285CC: @ 81285CC
- push {lr}
- bl RunTasks
- bl sub_8129BFC
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_81285CC
-
- thumb_func_start sub_81285E8
-sub_81285E8: @ 81285E8
- push {r4,lr}
- ldr r4, _08128600 @ =gUnknown_203B0E0
- ldr r0, [r4]
- ldrb r0, [r0, 0x17]
- cmp r0, 0x2
- beq _0812860E
- cmp r0, 0x2
- bgt _08128604
- cmp r0, 0x1
- beq _0812860A
- b _0812861E
- .align 2, 0
-_08128600: .4byte gUnknown_203B0E0
-_08128604:
- cmp r0, 0x3
- beq _08128612
- b _0812861E
-_0812860A:
- movs r0, 0x6
- b _08128614
-_0812860E:
- movs r0, 0x7
- b _08128614
-_08128612:
- movs r0, 0x8
-_08128614:
- bl sub_8129218
- ldr r1, [r4]
- movs r0, 0
- strb r0, [r1, 0x17]
-_0812861E:
- ldr r1, _08128638 @ =gUnknown_845A880
- ldr r0, _0812863C @ =gUnknown_203B0E0
- ldr r0, [r0]
- ldrh r0, [r0, 0x4]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08128638: .4byte gUnknown_845A880
-_0812863C: .4byte gUnknown_203B0E0
- thumb_func_end sub_81285E8
-
- thumb_func_start sub_8128640
-sub_8128640: @ 8128640
- push {r4,lr}
- ldr r4, _08128658 @ =gUnknown_203B0E0
- ldr r0, [r4]
- ldrh r1, [r0, 0x6]
- cmp r1, 0x1
- beq _08128674
- cmp r1, 0x1
- bgt _0812865C
- cmp r1, 0
- beq _08128662
- b _081286BC
- .align 2, 0
-_08128658: .4byte gUnknown_203B0E0
-_0812865C:
- cmp r1, 0x2
- beq _081286AC
- b _081286BC
-_08128662:
- movs r1, 0xC8
- lsls r1, 1
- adds r0, r1
- bl sub_8129568
- ldr r1, [r4]
- ldrh r0, [r1, 0x6]
- adds r0, 0x1
- strh r0, [r1, 0x6]
-_08128674:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _081286BC
- bl sub_80FBA1C
- cmp r0, 0
- bne _081286BC
- ldr r4, _081286A8 @ =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 _081286BC
- ldr r1, [r4]
- ldrh r0, [r1, 0x6]
- adds r0, 0x1
- strh r0, [r1, 0x6]
- b _081286BC
- .align 2, 0
-_081286A8: .4byte gUnknown_203B0E0
-_081286AC:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _081286BC
- movs r0, 0x1
- bl sub_8129218
-_081286BC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8128640
-
- thumb_func_start sub_81286C4
-sub_81286C4: @ 81286C4
- push {r4,r5,lr}
- ldr r5, _081286D8 @ =gUnknown_203B0E0
- ldr r3, [r5]
- ldrh r0, [r3, 0x6]
- cmp r0, 0
- beq _081286DC
- cmp r0, 0x1
- beq _0812878A
- b _081287AC
- .align 2, 0
-_081286D8: .4byte gUnknown_203B0E0
-_081286DC:
- ldr r1, _081286F8 @ =gMain
- ldrh r2, [r1, 0x2E]
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _081286FC
- ldrb r0, [r3, 0x15]
- cmp r0, 0
- beq _081287AC
- movs r0, 0x4
- bl sub_8129218
- b _081287AC
- .align 2, 0
-_081286F8: .4byte gMain
-_081286FC:
- movs r0, 0x4
- ands r0, r2
- cmp r0, 0
- beq _0812870C
- movs r0, 0x2
- bl sub_8129218
- b _081287AC
-_0812870C:
- ldrh r1, [r1, 0x30]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08128738
- ldrb r0, [r3, 0x15]
- cmp r0, 0
- beq _08128730
- bl sub_81293AC
- movs r0, 0x8
- movs r1, 0
- bl sub_8129C34
- ldr r1, [r5]
- movs r0, 0x1
- strh r0, [r1, 0x6]
- b _081287AC
-_08128730:
- movs r0, 0x3
- bl sub_8129218
- b _081287AC
-_08128738:
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r2
- cmp r0, 0
- beq _08128754
- bl sub_81292D8
- movs r0, 0x8
- movs r1, 0
- bl sub_8129C34
- movs r0, 0x2
- movs r1, 0x1
- b _08128780
-_08128754:
- movs r0, 0x80
- lsls r0, 1
- ands r0, r2
- cmp r0, 0
- beq _08128774
- ldrb r0, [r3, 0x10]
- cmp r0, 0x3
- beq _0812876C
- bl sub_81293D8
- movs r0, 0x8
- b _0812877E
-_0812876C:
- movs r0, 0x5
- bl sub_8129218
- b _081287AC
-_08128774:
- bl sub_8129228
- cmp r0, 0
- beq _081287AC
- movs r0, 0x1
-_0812877E:
- movs r1, 0
-_08128780:
- bl sub_8129C34
- ldr r0, [r5]
- strh r4, [r0, 0x6]
- b _081287AC
-_0812878A:
- movs r0, 0
- bl sub_8129C8C
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl sub_8129C8C
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r4, 0
- bne _081287AC
- cmp r1, 0
- bne _081287AC
- ldr r0, [r5]
- strh r1, [r0, 0x6]
-_081287AC:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81286C4
-
- thumb_func_start sub_81287B4
-sub_81287B4: @ 81287B4
- push {r4-r6,lr}
- ldr r0, _081287CC @ =gUnknown_203B0E0
- ldr r0, [r0]
- ldrh r0, [r0, 0x6]
- cmp r0, 0x4
- bls _081287C2
- b _081288CE
-_081287C2:
- lsls r0, 2
- ldr r1, _081287D0 @ =_081287D4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081287CC: .4byte gUnknown_203B0E0
-_081287D0: .4byte _081287D4
- .align 2, 0
-_081287D4:
- .4byte _081287E8
- .4byte _081287F2
- .4byte _08128810
- .4byte _0812889C
- .4byte _081288B0
-_081287E8:
- movs r0, 0x3
- movs r1, 0
- bl sub_8129C34
- b _081287FE
-_081287F2:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _081288CE
-_081287FE:
- ldr r0, _0812880C @ =gUnknown_203B0E0
- ldr r1, [r0]
- ldrh r0, [r1, 0x6]
- adds r0, 0x1
- strh r0, [r1, 0x6]
- b _081288CE
- .align 2, 0
-_0812880C: .4byte gUnknown_203B0E0
-_08128810:
- bl Menu_ProcessInput
- lsls r0, 24
- asrs r0, 8
- lsrs r6, r0, 16
- asrs r4, r0, 16
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _08128848
- adds r0, 0x1
- cmp r4, r0
- beq _08128868
- movs r0, 0x4
- movs r1, 0
- bl sub_8129C34
- ldr r5, _08128844 @ =gUnknown_203B0E0
- ldr r2, [r5]
- ldrb r0, [r2, 0x10]
- cmp r0, r4
- beq _08128870
- cmp r4, 0x3
- ble _08128880
- b _08128870
- .align 2, 0
-_08128844: .4byte gUnknown_203B0E0
-_08128848:
- ldr r0, _08128864 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _081288CE
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl Menu_MoveCursor
- b _081288CE
- .align 2, 0
-_08128864: .4byte gMain
-_08128868:
- movs r0, 0x4
- movs r1, 0
- bl sub_8129C34
-_08128870:
- ldr r0, _0812887C @ =gUnknown_203B0E0
- ldr r1, [r0]
- movs r0, 0x3
- strh r0, [r1, 0x6]
- b _081288CE
- .align 2, 0
-_0812887C: .4byte gUnknown_203B0E0
-_08128880:
- movs r1, 0
- strb r1, [r2, 0x11]
- ldr r0, [r5]
- strb r1, [r0, 0x12]
- movs r0, 0x5
- movs r1, 0x1
- bl sub_8129C34
- ldr r0, [r5]
- strb r6, [r0, 0x10]
- ldr r1, [r5]
- movs r0, 0x4
- strh r0, [r1, 0x6]
- b _081288CE
-_0812889C:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _081288CE
- movs r0, 0x1
- bl sub_8129218
- b _081288CE
-_081288B0:
- movs r0, 0
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _081288CE
- movs r0, 0x1
- bl sub_8129C8C
- lsls r0, 24
- cmp r0, 0
- bne _081288CE
- movs r0, 0x1
- bl sub_8129218
-_081288CE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81287B4
-
- 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
- ldr r1, [r1]
- movs r2, 0
- strh r0, [r1, 0x4]
- strh r2, [r1, 0x6]
- bx lr
- .align 2, 0
-_08129224: .4byte gUnknown_203B0E0
- thumb_func_end sub_8129218
-
- thumb_func_start sub_8129228
-sub_8129228: @ 8129228
- push {lr}
- ldr r0, _08129258 @ =gMain
- ldrh r2, [r0, 0x30]
- movs r0, 0x40
- ands r0, r2
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- bne _081292B2
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _08129268
- ldr r0, _0812925C @ =gUnknown_203B0E0
- ldr r2, [r0]
- ldr r1, _08129260 @ =gUnknown_845A8A8
- ldrb r0, [r2, 0x10]
- adds r0, r1
- ldrb r1, [r2, 0x12]
- ldrb r0, [r0]
- cmp r1, r0
- bcs _08129264
- adds r0, r1, 0x1
- b _081292CC
- .align 2, 0
-_08129258: .4byte gMain
-_0812925C: .4byte gUnknown_203B0E0
-_08129260: .4byte gUnknown_845A8A8
-_08129264:
- strb r3, [r2, 0x12]
- b _081292CE
-_08129268:
- ldr r0, _0812928C @ =gUnknown_203B0E0
- ldr r1, [r0]
- ldrb r0, [r1, 0x10]
- cmp r0, 0x3
- beq _081292AE
- movs r0, 0x20
- ands r0, r2
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- beq _08129296
- ldrb r0, [r1, 0x11]
- cmp r0, 0
- beq _08129290
- subs r0, 0x1
- strb r0, [r1, 0x11]
- b _081292CE
- .align 2, 0
-_0812928C: .4byte gUnknown_203B0E0
-_08129290:
- movs r0, 0x4
- strb r0, [r1, 0x11]
- b _081292CE
-_08129296:
- movs r0, 0x10
- ands r0, r2
- cmp r0, 0
- beq _081292AE
- ldrb r0, [r1, 0x11]
- cmp r0, 0x3
- bhi _081292AA
- adds r0, 0x1
- strb r0, [r1, 0x11]
- b _081292CE
-_081292AA:
- strb r3, [r1, 0x11]
- b _081292CE
-_081292AE:
- movs r0, 0
- b _081292D0
-_081292B2:
- ldr r0, _081292C0 @ =gUnknown_203B0E0
- ldr r2, [r0]
- ldrb r0, [r2, 0x12]
- cmp r0, 0
- beq _081292C4
- subs r0, 0x1
- b _081292CC
- .align 2, 0
-_081292C0: .4byte gUnknown_203B0E0
-_081292C4:
- ldr r0, _081292D4 @ =gUnknown_845A8A8
- ldrb r1, [r2, 0x10]
- adds r1, r0
- ldrb r0, [r1]
-_081292CC:
- strb r0, [r2, 0x12]
-_081292CE:
- movs r0, 0x1
-_081292D0:
- pop {r1}
- bx r1
- .align 2, 0
-_081292D4: .4byte gUnknown_845A8A8
- thumb_func_end sub_8129228
-
- thumb_func_start sub_81292D8
-sub_81292D8: @ 81292D8
- push {r4-r6,lr}
- sub sp, 0x18
- ldr r0, _08129318 @ =gUnknown_203B0E0
- ldr r5, [r0]
- ldrb r0, [r5, 0x10]
- cmp r0, 0x3
- beq _08129320
- ldr r3, _0812931C @ =gUnknown_845A9AC
- ldrb r1, [r5, 0x12]
- lsls r1, 2
- adds r2, r0, 0
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r1, r3
- ldr r4, [r1]
- ldrb r0, [r5, 0x11]
- cmp r0, 0
- beq _08129312
- adds r1, r0, 0
-_08129302:
- ldrb r0, [r4]
- cmp r0, 0xF9
- bne _0812930A
- adds r4, 0x1
-_0812930A:
- adds r4, 0x1
- subs r1, 0x1
- cmp r1, 0
- bne _08129302
-_08129312:
- movs r5, 0x1
- b _08129346
- .align 2, 0
-_08129318: .4byte gUnknown_203B0E0
-_0812931C: .4byte gUnknown_845A9AC
-_08129320:
- ldrb r0, [r5, 0x12]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r0
- adds r1, 0xB9
- adds r1, r5, r1
- mov r0, sp
- bl StringCopy
- movs r1, 0
- strb r1, [r0]
- movs r1, 0xFF
- strb r1, [r0, 0x1]
- mov r4, sp
- mov r0, sp
- bl StringLength_Multibyte
- adds r5, r0, 0
-_08129346:
- ldr r6, _081293A8 @ =gUnknown_203B0E0
- ldr r1, [r6]
- ldrb r0, [r1, 0x15]
- strb r0, [r1, 0x14]
- cmp r4, 0
- beq _0812939E
- bl sub_81294C8
- adds r2, r0, 0
- subs r5, 0x1
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- beq _0812939A
- ldr r0, [r6]
- ldrb r0, [r0, 0x15]
- cmp r0, 0xE
- bhi _0812939A
- adds r3, r6, 0
-_0812936C:
- ldrb r0, [r4]
- cmp r0, 0xF9
- bne _08129378
- strb r0, [r2]
- adds r4, 0x1
- adds r2, 0x1
-_08129378:
- ldrb r0, [r4]
- strb r0, [r2]
- adds r4, 0x1
- adds r2, 0x1
- ldr r1, [r3]
- ldrb r0, [r1, 0x15]
- adds r0, 0x1
- strb r0, [r1, 0x15]
- subs r5, 0x1
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- beq _0812939A
- ldr r0, [r3]
- ldrb r0, [r0, 0x15]
- cmp r0, 0xE
- bls _0812936C
-_0812939A:
- movs r0, 0xFF
- strb r0, [r2]
-_0812939E:
- add sp, 0x18
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081293A8: .4byte gUnknown_203B0E0
- thumb_func_end sub_81292D8
-
- thumb_func_start sub_81293AC
-sub_81293AC: @ 81293AC
- push {r4,lr}
- ldr r4, _081293D4 @ =gUnknown_203B0E0
- ldr r1, [r4]
- ldrb r0, [r1, 0x15]
- strb r0, [r1, 0x14]
- ldr r0, [r4]
- ldrb r0, [r0, 0x15]
- cmp r0, 0
- beq _081293CE
- bl sub_81294EC
- movs r1, 0xFF
- strb r1, [r0]
- ldr r1, [r4]
- ldrb r0, [r1, 0x15]
- subs r0, 0x1
- strb r0, [r1, 0x15]
-_081293CE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081293D4: .4byte gUnknown_203B0E0
- thumb_func_end sub_81293AC
-
- thumb_func_start sub_81293D8
-sub_81293D8: @ 81293D8
- push {lr}
- ldr r0, _08129400 @ =gUnknown_203B0E0
- ldr r1, [r0]
- ldrb r0, [r1, 0x15]
- subs r0, 0x1
- strb r0, [r1, 0x14]
- bl sub_81294EC
- adds r2, r0, 0
- ldrb r0, [r2]
- cmp r0, 0xF9
- beq _081293FC
- ldr r1, _08129404 @ =gUnknown_845A8AC
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _081293FC
- strb r0, [r2]
-_081293FC:
- pop {r0}
- bx r0
- .align 2, 0
-_08129400: .4byte gUnknown_203B0E0
-_08129404: .4byte gUnknown_845A8AC
- thumb_func_end sub_81293D8
-
- thumb_func_start sub_8129408
-sub_8129408: @ 8129408
- push {lr}
- ldr r0, _08129418 @ =gUnknown_203B0E0
- ldr r0, [r0]
- ldrb r0, [r0, 0x15]
- cmp r0, 0
- bne _0812941C
- movs r0, 0
- b _0812941E
- .align 2, 0
-_08129418: .4byte gUnknown_203B0E0
-_0812941C:
- movs r0, 0x1
-_0812941E:
- pop {r1}
- bx r1
- thumb_func_end sub_8129408
-
- thumb_func_start sub_8129424
-sub_8129424: @ 8129424
- push {r4,lr}
- bl sub_8129758
- adds r1, r0, 0
- ldr r4, _08129450 @ =gUnknown_203B0E0
- ldr r0, [r4]
- ldrb r3, [r0, 0x12]
- lsls r2, r3, 2
- adds r2, r3
- lsls r2, 2
- adds r2, r3
- adds r2, 0xB9
- adds r0, r2
- bl StringCopy
- ldr r1, [r4]
- movs r0, 0x1
- strb r0, [r1, 0x18]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08129450: .4byte gUnknown_203B0E0
- thumb_func_end sub_8129424
-
- thumb_func_start sub_8129454
-sub_8129454: @ 8129454
- ldr r1, _0812946C @ =gUnknown_203B0E0
- ldr r2, [r1]
- movs r0, 0xFF
- strb r0, [r2, 0x1A]
- ldr r2, [r1]
- movs r3, 0
- movs r0, 0xF
- strb r0, [r2, 0x14]
- ldr r0, [r1]
- strb r3, [r0, 0x15]
- bx lr
- .align 2, 0
-_0812946C: .4byte gUnknown_203B0E0
- thumb_func_end sub_8129454
-
- thumb_func_start sub_8129470
-sub_8129470: @ 8129470
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _081294A4 @ =gSaveBlock1Ptr
- mov r8, r0
- ldr r7, _081294A8 @ =gUnknown_203B0E0
- movs r6, 0xB9
- ldr r5, _081294AC @ =0x00003ad4
- movs r4, 0x9
-_08129482:
- mov r1, r8
- ldr r0, [r1]
- adds r0, r5
- ldr r1, [r7]
- adds r1, r6
- bl StringCopy
- adds r6, 0x15
- adds r5, 0x15
- subs r4, 0x1
- cmp r4, 0
- bge _08129482
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081294A4: .4byte gSaveBlock1Ptr
-_081294A8: .4byte gUnknown_203B0E0
-_081294AC: .4byte 0x00003ad4
- thumb_func_end sub_8129470
-
- thumb_func_start sub_81294B0
-sub_81294B0: @ 81294B0
- ldr r2, _081294C4 @ =gUnknown_203B0E0
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r0
- adds r1, 0xB9
- ldr r0, [r2]
- adds r0, r1
- bx lr
- .align 2, 0
-_081294C4: .4byte gUnknown_203B0E0
- thumb_func_end sub_81294B0
-
- thumb_func_start sub_81294C8
-sub_81294C8: @ 81294C8
- push {lr}
- ldr r0, _081294E8 @ =gUnknown_203B0E0
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0x1A
- ldrb r0, [r0, 0x1A]
- cmp r0, 0xFF
- beq _081294E0
-_081294D8:
- adds r1, 0x1
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _081294D8
-_081294E0:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .align 2, 0
-_081294E8: .4byte gUnknown_203B0E0
- thumb_func_end sub_81294C8
-
- thumb_func_start sub_81294EC
-sub_81294EC: @ 81294EC
- push {lr}
- ldr r0, _08129518 @ =gUnknown_203B0E0
- ldr r0, [r0]
- adds r2, r0, 0
- adds r2, 0x1A
- adds r1, r2, 0
- ldrb r0, [r0, 0x1A]
- cmp r0, 0xFF
- beq _08129510
-_081294FE:
- adds r2, r1, 0
- ldrb r0, [r2]
- cmp r0, 0xF9
- bne _08129508
- adds r1, r2, 0x1
-_08129508:
- adds r1, 0x1
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _081294FE
-_08129510:
- adds r0, r2, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08129518: .4byte gUnknown_203B0E0
- thumb_func_end sub_81294EC
-
- thumb_func_start sub_812951C
-sub_812951C: @ 812951C
- push {r4,lr}
- ldr r4, _0812955C @ =gUnknown_203B0E0
- ldr r0, [r4]
- adds r0, 0x1A
- bl StringLength_Multibyte
- adds r2, r0, 0
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x1A
- movs r4, 0
- cmp r2, 0xA
- bls _08129550
- subs r2, 0xA
- movs r3, 0
- cmp r4, r2
- bcs _08129550
-_0812953E:
- ldrb r0, [r1]
- cmp r0, 0xF9
- bne _08129546
- adds r1, 0x1
-_08129546:
- adds r1, 0x1
- adds r4, 0x1
- adds r3, 0x1
- cmp r3, r2
- bcc _0812953E
-_08129550:
- lsls r0, r4, 16
- lsrs r0, 16
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812955C: .4byte gUnknown_203B0E0
- thumb_func_end sub_812951C
-
- thumb_func_start sub_8129560
-sub_8129560: @ 8129560
- movs r1, 0
- strb r1, [r0]
- bx lr
- thumb_func_end sub_8129560
-
thumb_func_start sub_8129568
sub_8129568: @ 8129568
push {r4,lr}
@@ -4740,7 +2526,7 @@ _0812A84C:
movs r7, 0
movs r6, 0
lsls r0, r2, 2
- ldr r1, _0812A89C @ =gUnknown_845A9AC
+ ldr r1, _0812A89C @ =sUnionRoomKeyboardText
adds r0, r2
lsls r0, 3
adds r4, r0, r1
@@ -4778,7 +2564,7 @@ _0812A866:
ble _0812A85E
b _0812A96C
.align 2, 0
-_0812A89C: .4byte gUnknown_845A9AC
+_0812A89C: .4byte sUnionRoomKeyboardText
_0812A8A0:
movs r1, 0x4
str r1, [sp, 0x40]
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 b61c5f44d..0a51e90a4 100644
--- a/data/union_room_chat.s
+++ b/data/union_room_chat.s
@@ -6,87 +6,6 @@
.section .rodata
.align 2
-gUnknown_845A880:: @ 845A880
- .4byte sub_8128640
- .4byte sub_81286C4
- .4byte sub_81287B4
- .4byte sub_81288D4
- .4byte sub_8128DA4
- .4byte sub_8128E78
- .4byte sub_8128AA0
- .4byte sub_8128C04
- .4byte sub_8128CA8
- .4byte sub_8128FB8
-
-gUnknown_845A8A8:: @ 845A8A8
- .byte 0x09, 0x09, 0x09, 0x09
-
-gUnknown_845A8AC:: @ 845A8AC
- .byte 0x00, 0x16, 0x17, 0x68, 0x19, 0x1a, 0x1b, 0x1c
- .byte 0x1d, 0x1e, 0x00, 0x20, 0x21, 0x22, 0x23, 0x24
- .byte 0x25, 0x26, 0x27, 0x28, 0x29, 0x15, 0x01, 0x02
- .byte 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00
- .byte 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12
- .byte 0x13, 0x14, 0x2a, 0x2b, 0x2c, 0x2d, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x36, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x53, 0x54, 0x55, 0x56, 0x00
- .byte 0x00, 0x00, 0x6f, 0x5b, 0x5c, 0x5d, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x84, 0x85, 0x86, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7
- .byte 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf
- .byte 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7
- .byte 0xb8, 0xb9, 0xba, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9
- .byte 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1
- .byte 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9
- .byte 0xea, 0xeb, 0xec, 0xed, 0xee, 0xbb, 0xbc, 0xbd
- .byte 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5
- .byte 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd
- .byte 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xef
- .byte 0xf0, 0xf4, 0xf5, 0xf6, 0xf1, 0xf2, 0xf3, 0x00
- .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
-
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/global.h b/include/global.h
index 180a1e0a3..686ecb11c 100644
--- a/include/global.h
+++ b/include/global.h
@@ -718,6 +718,8 @@ struct TrainerNameRecord
u8 trainerName[PLAYER_NAME_LENGTH];
};
+#define UNION_ROOM_KB_ROW_COUNT 10
+
struct SaveBlock1
{
/*0x0000*/ struct Coords16 pos;
@@ -772,7 +774,8 @@ struct SaveBlock1
/*0x3A18*/ u8 seen2[DEX_FLAGS_NO];
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH];
/*0x3A54*/ struct FameCheckerSaveData fameChecker[NUM_FAMECHECKER_PERSONS];
- /*0x3A94*/ u8 filler3A94[0x114];
+ /*0x3A94*/ u8 filler3A94[0x40];
+ /*0x3AD4*/ u8 unk3AD4[UNION_ROOM_KB_ROW_COUNT][21];
/*0x3BA8*/ struct TrainerNameRecord trainerNameRecords[20];
/*0x3C98*/ struct DaycareMon route5DayCareMon;
/*0x3D24*/ u8 filler3D24[0x10];
diff --git a/include/help_system.h b/include/help_system.h
index 273b5e119..59adec912 100644
--- a/include/help_system.h
+++ b/include/help_system.h
@@ -92,5 +92,6 @@ bool8 MoveCursor(u8 by, u8 dirn);
void HelpSystem_BackupSomeVariable(void);
void HelpSystem_RestoreSomeVariable(void);
void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 width, u8 height);
+void sub_812B4AC(void);
#endif //GUARD_HELP_SYSTEM_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 790429870..9dac781b3 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -325,6 +325,8 @@ void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2);
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/include/main.h b/include/main.h
index c962cf7bd..f89ffbd63 100644
--- a/include/main.h
+++ b/include/main.h
@@ -73,5 +73,6 @@ extern const char RomHeaderGameCode[4];
extern const char RomHeaderSoftwareVersion;
extern u8 gLinkTransferringData;
+extern u16 gKeyRepeatStartDelay;
#endif // GUARD_MAIN_H
diff --git a/include/text.h b/include/text.h
index cd059e0e5..ff8b033e9 100644
--- a/include/text.h
+++ b/include/text.h
@@ -5,10 +5,24 @@
#define CHAR_SPACE 0x00
#define CHAR_0 0xA1
+#define CHAR_1 0xA2
+#define CHAR_2 0xA3
+#define CHAR_3 0xA4
+#define CHAR_4 0xA5
+#define CHAR_5 0xA6
+#define CHAR_6 0xA7
+#define CHAR_7 0xA8
+#define CHAR_8 0xA9
+#define CHAR_9 0xAA
+#define CHAR_EXCL_MARK 0xAB
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_PERIOD 0xAD
#define CHAR_HYPHEN 0xAE
#define CHAR_ELLIPSIS 0xB0
+#define CHAR_DBL_QUOT_LEFT 0xB1
+#define CHAR_DBL_QUOT_RIGHT 0xB2
+#define CHAR_SGL_QUOT_LEFT 0xB3
+#define CHAR_SGL_QUOT_RIGHT 0xB4
#define CHAR_MALE 0xB5
#define CHAR_FEMALE 0xB6
#define CHAR_CURRENCY 0xB7
diff --git a/ld_script.txt b/ld_script.txt
index f0792ad9d..c21f61f53 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -246,6 +246,7 @@ SECTIONS {
src/union_room_battle.o(.text);
asm/pokemon_special_anim.o(.text);
src/party_menu.o(.text);
+ src/union_room_chat.o(.text);
asm/union_room_chat.o(.text);
src/help_system_812B1E0.o(.text);
src/quest_log_battle.o(.text);
@@ -534,6 +535,7 @@ SECTIONS {
src/union_room_message.o(.rodata);
data/pokemon_special_anim.o(.rodata);
src/party_menu.o(.rodata);
+ src/union_room_chat.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
new file mode 100644
index 000000000..c171731c2
--- /dev/null
+++ b/src/union_room_chat.c
@@ -0,0 +1,1114 @@
+#include "global.h"
+#include "gflib.h"
+#include "help_system.h"
+#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 "data_8479668.h"
+#include "constants/songs.h"
+
+enum
+{
+ UNION_ROOM_KB_PAGE_UPPER,
+ UNION_ROOM_KB_PAGE_LOWER,
+ UNION_ROOM_KB_PAGE_EMOJI,
+ UNION_ROOM_KB_PAGE_COUNT
+};
+
+struct UnionRoomChat
+{
+ u8 filler0[0x4];
+ u16 unk4;
+ u16 unk6;
+ u8 filler8[0x2];
+ u16 unkA;
+ u8 fillerC[0x1];
+ u8 unkD;
+ u8 unkE;
+ u8 unkF;
+ u8 currentPage;
+ u8 unk11;
+ u8 currentRow;
+ u8 unk13;
+ u8 unk14;
+ u8 unk15;
+ u8 unk16;
+ u8 unk17;
+ u8 unk18;
+ u8 unk19;
+ u8 unk1A[0x1F];
+ u8 unk39[0x40];
+ u8 unk79[0x40];
+ u8 unkB9[UNION_ROOM_KB_ROW_COUNT][21];
+ u8 filler18B[0x5];
+ u8 unk190[0x28];
+};
+
+EWRAM_DATA struct UnionRoomChat * gUnknown_203B0E0 = NULL;
+
+void sub_812845C(struct UnionRoomChat * unionRoomChat);
+void c2_081284E0(void);
+void sub_81285B4(void);
+void sub_81285CC(void);
+void sub_81285E8(u8 taskId);
+void sub_8128640(void);
+void sub_81286C4(void);
+void sub_81287B4(void);
+void sub_81288D4(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);
+u8 *sub_81294C8(void);
+u8 *sub_81294EC(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);
+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,
+ sub_81286C4,
+ sub_81287B4,
+ sub_81288D4,
+ sub_8128DA4,
+ sub_8128E78,
+ sub_8128AA0,
+ sub_8128C04,
+ sub_8128CA8,
+ sub_8128FB8
+};
+
+static const u8 sKeyboardPageMaxRow[] =
+{
+ [UNION_ROOM_KB_PAGE_UPPER] = 9,
+ [UNION_ROOM_KB_PAGE_LOWER] = 9,
+ [UNION_ROOM_KB_PAGE_EMOJI] = 9,
+ 9
+};
+
+const u8 gUnknown_845A8AC[] = {
+ CHAR_SPACE, 0x16, 0x17, 0x68, 0x19, 0x1A, 0x1B, 0x1C,
+ 0x1D, 0x1E, CHAR_SPACE, 0x20, 0x21, 0x22, 0x23, 0x24,
+ 0x25, 0x26, 0x27, 0x28, 0x29, 0x15, 0x01, 0x02,
+ CHAR_SPACE, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, CHAR_SPACE,
+ 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12,
+ 0x13, 0x14, 0x2A, 0x2B, 0x2C, 0x2D, CHAR_SPACE, CHAR_SPACE,
+ CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, 0x35, 0x36, CHAR_SPACE,
+ CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
+ CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
+ CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
+ CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, 0x53, 0x54, 0x55, 0x56, CHAR_SPACE,
+ CHAR_SPACE, CHAR_SPACE, 0x6F, 0x5B, 0x5C, 0x5D, CHAR_SPACE, CHAR_SPACE,
+ CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
+ 0x03, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, 0x5A,
+ CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
+ CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
+ CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, 0x84, 0x85, 0x86, CHAR_SPACE,
+ CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
+ CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
+ CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE,
+ 0xA0, CHAR_0, CHAR_1, CHAR_2, CHAR_3, CHAR_4, CHAR_5, CHAR_6,
+ CHAR_7, CHAR_8, CHAR_9, CHAR_EXCL_MARK, CHAR_QUESTION_MARK, CHAR_PERIOD, CHAR_HYPHEN, 0xAF,
+ CHAR_ELLIPSIS, CHAR_DBL_QUOT_LEFT, CHAR_DBL_QUOT_RIGHT, CHAR_SGL_QUOT_LEFT, CHAR_SGL_QUOT_RIGHT, CHAR_MALE, CHAR_FEMALE, CHAR_CURRENCY,
+ CHAR_COMMA, CHAR_MULT_SIGN, CHAR_SLASH, CHAR_a, CHAR_b, CHAR_c, CHAR_d, CHAR_e,
+ CHAR_f, CHAR_g, CHAR_h, CHAR_i, CHAR_j, CHAR_k, CHAR_l, CHAR_m,
+ CHAR_n, CHAR_o, CHAR_p, CHAR_q, CHAR_r, CHAR_s, CHAR_t, CHAR_u,
+ CHAR_v, CHAR_w, CHAR_x, CHAR_y, CHAR_z, CHAR_A, CHAR_B, CHAR_C,
+ CHAR_D, CHAR_E, CHAR_F, CHAR_G, CHAR_H, CHAR_I, CHAR_J, CHAR_K,
+ CHAR_L, CHAR_M, CHAR_N, CHAR_O, CHAR_P, CHAR_Q, CHAR_R, CHAR_S,
+ CHAR_T, CHAR_U, CHAR_V, CHAR_W, CHAR_X, CHAR_Y, CHAR_Z, 0xEF,
+ CHAR_COLON, 0xF4, 0xF5, 0xF6, 0xF1, 0xF2, 0xF3, CHAR_SPACE,
+ CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE
+};
+
+const u8 *const sUnionRoomKeyboardText[UNION_ROOM_KB_PAGE_COUNT][UNION_ROOM_KB_ROW_COUNT] = {
+ [UNION_ROOM_KB_PAGE_UPPER] = {
+ gText_UnionRoomChatKeyboard_ABCDE,
+ gText_UnionRoomChatKeyboard_FGHIJ,
+ gText_UnionRoomChatKeyboard_KLMNO,
+ gText_UnionRoomChatKeyboard_PQRST,
+ gText_UnionRoomChatKeyboard_UVWXY,
+ gText_UnionRoomChatKeyboard_Z,
+ gText_UnionRoomChatKeyboard_01234Upper,
+ gText_UnionRoomChatKeyboard_56789Upper,
+ gText_UnionRoomChatKeyboard_PunctuationUpper,
+ gText_UnionRoomChatKeyboard_SymbolsUpper
+ },
+ [UNION_ROOM_KB_PAGE_LOWER] = {
+ gText_UnionRoomChatKeyboard_abcde,
+ gText_UnionRoomChatKeyboard_fghij,
+ gText_UnionRoomChatKeyboard_klmno,
+ gText_UnionRoomChatKeyboard_pqrst,
+ gText_UnionRoomChatKeyboard_uvwxy,
+ gText_UnionRoomChatKeyboard_z,
+ gText_UnionRoomChatKeyboard_01234Lower,
+ gText_UnionRoomChatKeyboard_56789Lower,
+ gText_UnionRoomChatKeyboard_PunctuationLower,
+ gText_UnionRoomChatKeyboard_SymbolsLower
+ },
+ [UNION_ROOM_KB_PAGE_EMOJI] = {
+ gText_UnionRoomChatKeyboard_Emoji1,
+ gText_UnionRoomChatKeyboard_Emoji2,
+ gText_UnionRoomChatKeyboard_Emoji3,
+ gText_UnionRoomChatKeyboard_Emoji4,
+ gText_UnionRoomChatKeyboard_Emoji5,
+ gText_UnionRoomChatKeyboard_Emoji6,
+ gText_UnionRoomChatKeyboard_Emoji7,
+ gText_UnionRoomChatKeyboard_Emoji8,
+ gText_UnionRoomChatKeyboard_Emoji9,
+ gText_UnionRoomChatKeyboard_Emoji10
+ }
+};
+
+void sub_8128420(void)
+{
+ gUnknown_203B0E0 = Alloc(sizeof(struct UnionRoomChat));
+ sub_812845C(gUnknown_203B0E0);
+ gKeyRepeatStartDelay = 20;
+ sub_812B4AC();
+ SetVBlankCallback(NULL);
+ SetMainCallback2(c2_081284E0);
+}
+
+void sub_812845C(struct UnionRoomChat * unionRoomChat)
+{
+ int i;
+
+ unionRoomChat->unk4 = 0;
+ unionRoomChat->unk6 = 0;
+ unionRoomChat->currentPage = 0;
+ unionRoomChat->unk11 = 0;
+ unionRoomChat->currentRow = 0;
+ unionRoomChat->unk14 = 0;
+ unionRoomChat->unk15 = 0;
+ unionRoomChat->unk16 = 0;
+ unionRoomChat->unk1A[0] = EOS;
+ unionRoomChat->unkD = GetLinkPlayerCount();
+ unionRoomChat->unk13 = GetMultiplayerId();
+ unionRoomChat->unk17 = 0;
+ unionRoomChat->unk18 = 0;
+ sub_8129560(unionRoomChat->unk190);
+ for (i = 0; i < UNION_ROOM_KB_ROW_COUNT; i++)
+ StringCopy(unionRoomChat->unkB9[i], gSaveBlock1Ptr->unk3AD4[i]);
+}
+
+void sub_81284BC(void)
+{
+ DestroyTask(gUnknown_203B0E0->unkE);
+ DestroyTask(gUnknown_203B0E0->unkF);
+ Free(gUnknown_203B0E0);
+}
+
+void c2_081284E0(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ sub_8129B14();
+ gMain.state++;
+ break;
+ case 1:
+ sub_8129BFC();
+ if (!sub_8129B78())
+ {
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
+ SetVBlankCallback(sub_81285B4);
+ gMain.state++;
+ }
+ break;
+ case 2:
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(sub_81285CC);
+ SetQuestLogEvent(QL_EVENT_USED_UNION_ROOM_CHAT, NULL);
+ gUnknown_203B0E0->unkE = CreateTask(sub_81285E8, 8);
+ gUnknown_203B0E0->unkF = CreateTask(sub_81298F8, 7);
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(232, 150);
+ }
+ break;
+ }
+}
+
+void sub_81285B4(void)
+{
+ TransferPlttBuffer();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ ScanlineEffect_InitHBlankDmaTransfer();
+}
+
+void sub_81285CC(void)
+{
+ RunTasks();
+ sub_8129BFC();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_81285E8(u8 taskId)
+{
+ switch (gUnknown_203B0E0->unk17)
+ {
+ case 1:
+ sub_8129218(6);
+ gUnknown_203B0E0->unk17 = 0;
+ break;
+ case 2:
+ sub_8129218(7);
+ gUnknown_203B0E0->unk17 = 0;
+ break;
+ case 3:
+ sub_8129218(8);
+ gUnknown_203B0E0->unk17 = 0;
+ break;
+ }
+
+ gUnknown_845A880[gUnknown_203B0E0->unk4]();
+}
+
+void sub_8128640(void)
+{
+ switch (gUnknown_203B0E0->unk6)
+ {
+ case 0:
+ sub_8129568(gUnknown_203B0E0->unk190);
+ gUnknown_203B0E0->unk6++;
+ // fall through
+ case 1:
+ if (IsLinkTaskFinished() && !sub_80FBA1C())
+ {
+ if (SendBlock(0, gUnknown_203B0E0->unk190, sizeof(gUnknown_203B0E0->unk190)))
+ gUnknown_203B0E0->unk6++;
+ }
+ break;
+ case 2:
+ if (IsLinkTaskFinished())
+ sub_8129218(1);
+ break;
+ }
+}
+
+void sub_81286C4(void)
+{
+ bool8 var0, var1;
+
+ switch (gUnknown_203B0E0->unk6)
+ {
+ case 0:
+ if (JOY_NEW(START_BUTTON))
+ {
+ if (gUnknown_203B0E0->unk15)
+ sub_8129218(4);
+ }
+ else if (JOY_NEW(SELECT_BUTTON))
+ {
+ sub_8129218(2);
+ }
+ else if (JOY_REPT(B_BUTTON))
+ {
+ if (gUnknown_203B0E0->unk15)
+ {
+ sub_81293AC();
+ sub_8129C34(8, 0);
+ gUnknown_203B0E0->unk6 = 1;
+ }
+ else
+ {
+ sub_8129218(3);
+ }
+ }
+ else if (JOY_NEW(A_BUTTON))
+ {
+ sub_81292D8();
+ sub_8129C34(8, 0);
+ sub_8129C34(2, 1);
+ gUnknown_203B0E0->unk6 = 1;
+ }
+ else if (JOY_NEW(R_BUTTON))
+ {
+ if (gUnknown_203B0E0->currentPage != UNION_ROOM_KB_PAGE_COUNT)
+ {
+ sub_81293D8();
+ sub_8129C34(8, 0);
+ gUnknown_203B0E0->unk6 = 1;
+ }
+ else
+ {
+ sub_8129218(5);
+ }
+ }
+ else if (sub_8129228())
+ {
+ sub_8129C34(1, 0);
+ gUnknown_203B0E0->unk6 = 1;
+ }
+ break;
+ case 1:
+ var0 = sub_8129C8C(0);
+ var1 = sub_8129C8C(1);
+ if (!var0 && !var1)
+ gUnknown_203B0E0->unk6 = 0;
+ break;
+ }
+}
+
+void sub_81287B4(void)
+{
+ s16 input;
+ int var0;
+
+ switch (gUnknown_203B0E0->unk6)
+ {
+ case 0:
+ sub_8129C34(3, 0);
+ gUnknown_203B0E0->unk6++;
+ break;
+ case 1:
+ if (!sub_8129C8C(0))
+ gUnknown_203B0E0->unk6++;
+ break;
+ case 2:
+ input = Menu_ProcessInput();
+ switch (input)
+ {
+ default:
+ sub_8129C34(4, 0);
+ var0 = 1;
+ if (gUnknown_203B0E0->currentPage == input || input > UNION_ROOM_KB_PAGE_COUNT)
+ var0 = 0;
+ break;
+ case MENU_NOTHING_CHOSEN:
+ if (JOY_NEW(SELECT_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(1);
+ }
+ return;
+ case MENU_B_PRESSED:
+ sub_8129C34(4, 0);
+ gUnknown_203B0E0->unk6 = 3;
+ return;
+ }
+
+ if (!var0)
+ {
+ gUnknown_203B0E0->unk6 = 3;
+ return;
+ }
+
+ gUnknown_203B0E0->unk11 = 0;
+ gUnknown_203B0E0->currentRow = 0;
+ sub_8129C34(5, 1);
+ gUnknown_203B0E0->currentPage = input;
+ gUnknown_203B0E0->unk6 = 4;
+ break;
+ case 3:
+ if (!sub_8129C8C(0))
+ sub_8129218(1);
+ break;
+ case 4:
+ if (!sub_8129C8C(0) && !sub_8129C8C(1))
+ sub_8129218(1);
+ 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;
+ }
+}
+
+void sub_8129218(u16 arg0)
+{
+ gUnknown_203B0E0->unk4 = arg0;
+ gUnknown_203B0E0->unk6 = 0;
+}
+
+bool32 sub_8129228(void)
+{
+ if (!(gMain.newAndRepeatedKeys & DPAD_UP))
+ {
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ if (gUnknown_203B0E0->currentRow < sKeyboardPageMaxRow[gUnknown_203B0E0->currentPage])
+ gUnknown_203B0E0->currentRow++;
+ else
+ gUnknown_203B0E0->currentRow = 0;
+
+ return TRUE;
+ }
+
+ if (gUnknown_203B0E0->currentPage != UNION_ROOM_KB_PAGE_COUNT)
+ {
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ if (gUnknown_203B0E0->unk11)
+ gUnknown_203B0E0->unk11--;
+ else
+ gUnknown_203B0E0->unk11 = 4;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ if (gUnknown_203B0E0->unk11 > 3)
+ gUnknown_203B0E0->unk11 = 0;
+ else
+ gUnknown_203B0E0->unk11++;
+ }
+ else
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+ }
+
+ return FALSE;
+ }
+ else
+ {
+ if (gUnknown_203B0E0->currentRow)
+ gUnknown_203B0E0->currentRow--;
+ else
+ gUnknown_203B0E0->currentRow = sKeyboardPageMaxRow[gUnknown_203B0E0->currentPage];
+
+ return TRUE;
+ }
+}
+
+void sub_81292D8(void)
+{
+ int i;
+ const u8 *charsStr;
+ int strLength;
+ u8 *str;
+ u8 buffer[21];
+
+ if (gUnknown_203B0E0->currentPage != UNION_ROOM_KB_PAGE_COUNT)
+ {
+ charsStr = sUnionRoomKeyboardText[gUnknown_203B0E0->currentPage][gUnknown_203B0E0->currentRow];
+ for (i = 0; i < gUnknown_203B0E0->unk11; i++)
+ {
+ if (*charsStr == CHAR_EXTRA_EMOJI)
+ charsStr++;
+ charsStr++;
+ }
+
+ strLength = 1;
+ }
+ else
+ {
+ u8 *tempStr = StringCopy(buffer, gUnknown_203B0E0->unkB9[gUnknown_203B0E0->currentRow]);
+ tempStr[0] = CHAR_SPACE;
+ tempStr[1] = EOS;
+ charsStr = buffer;
+ strLength = StringLength_Multibyte(buffer);
+ }
+
+ gUnknown_203B0E0->unk14 = gUnknown_203B0E0->unk15;
+ if (!charsStr)
+ return;
+
+ str = sub_81294C8();
+ while (--strLength != -1 && gUnknown_203B0E0->unk15 < 15)
+ {
+ if (*charsStr == CHAR_EXTRA_EMOJI)
+ {
+ *str = *charsStr;
+ charsStr++;
+ str++;
+ }
+
+ *str = *charsStr;
+ charsStr++;
+ str++;
+
+ gUnknown_203B0E0->unk15++;
+ }
+
+ *str = EOS;
+}
+
+void sub_81293AC(void)
+{
+ gUnknown_203B0E0->unk14 = gUnknown_203B0E0->unk15;
+ if (gUnknown_203B0E0->unk15)
+ {
+ u8 *str = sub_81294EC();
+ *str = EOS;
+ gUnknown_203B0E0->unk15--;
+ }
+}
+
+void sub_81293D8(void)
+{
+ u8 *str;
+ u8 character;
+
+ gUnknown_203B0E0->unk14 = gUnknown_203B0E0->unk15 - 1;
+ str = sub_81294EC();
+ if (*str != CHAR_EXTRA_EMOJI)
+ {
+ character = gUnknown_845A8AC[*str];
+ if (character)
+ *str = character;
+ }
+}
+
+bool32 sub_8129408(void)
+{
+ if (gUnknown_203B0E0->unk15)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_8129424(void)
+{
+ u8 *src = sub_8129758();
+ StringCopy(gUnknown_203B0E0->unkB9[gUnknown_203B0E0->currentRow], src);
+ gUnknown_203B0E0->unk18 = 1;
+}
+
+void sub_8129454(void)
+{
+ gUnknown_203B0E0->unk1A[0] = EOS;
+ gUnknown_203B0E0->unk14 = 15;
+ gUnknown_203B0E0->unk15 = 0;
+}
+
+void sub_8129470(void)
+{
+ int i;
+ for (i = 0; i < UNION_ROOM_KB_ROW_COUNT; i++)
+ StringCopy(gSaveBlock1Ptr->unk3AD4[i], gUnknown_203B0E0->unkB9[i]);
+}
+
+u8 *sub_81294B0(int arg0)
+{
+ return gUnknown_203B0E0->unkB9[arg0];
+}
+
+// GetEndOfUnk1A
+u8 *sub_81294C8(void)
+{
+ u8 *str = gUnknown_203B0E0->unk1A;
+ while (*str != EOS)
+ str++;
+
+ return str;
+}
+
+// GetPtrToLastCharOfUnk1A
+u8 *sub_81294EC(void)
+{
+ u8 *str = gUnknown_203B0E0->unk1A;
+ u8 *str2 = str;
+ while (*str != EOS)
+ {
+ str2 = str;
+ if (*str == CHAR_EXTRA_EMOJI)
+ str++;
+ str++;
+ }
+
+ return str2;
+}
+
+u16 sub_812951C(void)
+{
+ u8 *str;
+ u32 i, numChars, strLength;
+
+ strLength = StringLength_Multibyte(gUnknown_203B0E0->unk1A);
+ str = gUnknown_203B0E0->unk1A;
+ numChars = 0;
+ if (strLength > 10)
+ {
+ strLength -= 10;
+ for (i = 0; i < strLength; i++)
+ {
+ if (*str == CHAR_EXTRA_EMOJI)
+ str++;
+
+ str++;
+ numChars++;
+ }
+ }
+
+ return numChars;
+}
+
+void sub_8129560(u8 *arg0)
+{
+ arg0[0] = CHAR_SPACE;
+}