diff options
-rw-r--r-- | asm/union_room_chat.s | 2218 | ||||
-rw-r--r-- | data/data_8479668.s | 60 | ||||
-rw-r--r-- | data/union_room_chat.s | 81 | ||||
-rw-r--r-- | include/data_8479668.h | 35 | ||||
-rw-r--r-- | include/global.h | 5 | ||||
-rw-r--r-- | include/help_system.h | 1 | ||||
-rw-r--r-- | include/link_rfu.h | 2 | ||||
-rw-r--r-- | include/main.h | 1 | ||||
-rw-r--r-- | include/text.h | 14 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/union_room_chat.c | 1114 |
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; +} |