diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-01-25 13:35:34 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-01-25 13:35:34 -0500 |
commit | c0b05784d64a6fce12eb25c7e40e401a59593e68 (patch) | |
tree | d0581a0e93e532dceb7661acf138d8aa1eec5b88 | |
parent | f249df41e3620c210841b57b7520f53b692fd411 (diff) |
Finish union_room_chat_display
-rw-r--r-- | asm/union_room_chat.s | 1595 | ||||
-rw-r--r-- | data/graphics.s | 6 | ||||
-rw-r--r-- | data/strings.s | 34 | ||||
-rw-r--r-- | data/union_room_chat.s | 46 | ||||
-rw-r--r-- | include/graphics.h | 8 | ||||
-rw-r--r-- | include/strings.h | 35 | ||||
-rw-r--r-- | include/text_window.h | 1 | ||||
-rw-r--r-- | include/trade.h | 4 | ||||
-rw-r--r-- | include/union_room_chat.h | 14 | ||||
-rw-r--r-- | src/daycare.c | 28 | ||||
-rw-r--r-- | src/trade.c | 25 | ||||
-rw-r--r-- | src/union_room_chat.c | 15 | ||||
-rw-r--r-- | src/union_room_chat_display.c | 572 |
13 files changed, 654 insertions, 1729 deletions
diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s index 7a9d41ef3..1045cea43 100644 --- a/asm/union_room_chat.s +++ b/asm/union_room_chat.s @@ -5,1601 +5,6 @@ .text - thumb_func_start sub_812A1FC -sub_812A1FC: @ 812A1FC - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _0812A20C - cmp r0, 0x1 - beq _0812A22C - b _0812A236 -_0812A20C: - movs r0, 0x4 - movs r1, 0 - bl sub_812A578 - ldr r0, _0812A228 @ =gUnknown_203B0E4 - ldr r0, [r0] - ldrb r0, [r0, 0x1E] - movs r1, 0x3 - bl CopyWindowToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0812A236 - .align 2, 0 -_0812A228: .4byte gUnknown_203B0E4 -_0812A22C: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0812A238 -_0812A236: - movs r0, 0x1 -_0812A238: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812A1FC - - thumb_func_start sub_812A240 -sub_812A240: @ 812A240 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _0812A250 - cmp r0, 0x1 - beq _0812A280 - b _0812A28A -_0812A250: - bl DynamicPlaceholderTextUtil_Reset - bl sub_8129814 - adds r1, r0, 0 - movs r0, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - movs r0, 0x5 - movs r1, 0 - bl sub_812A578 - ldr r0, _0812A27C @ =gUnknown_203B0E4 - ldr r0, [r0] - ldrb r0, [r0, 0x1E] - movs r1, 0x3 - bl CopyWindowToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0812A28A - .align 2, 0 -_0812A27C: .4byte gUnknown_203B0E4 -_0812A280: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0812A28C -_0812A28A: - movs r0, 0x1 -_0812A28C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812A240 - - thumb_func_start sub_812A294 -sub_812A294: @ 812A294 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _0812A2A4 - cmp r0, 0x1 - beq _0812A2D0 - b _0812A2DA -_0812A2A4: - movs r0, 0x6 - movs r1, 0 - bl sub_812A578 - movs r0, 0x17 - movs r1, 0xA - movs r2, 0x1 - bl sub_812A424 - ldr r0, _0812A2CC @ =gUnknown_203B0E4 - ldr r0, [r0] - ldrb r0, [r0, 0x1E] - movs r1, 0x3 - bl CopyWindowToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0812A2DA - .align 2, 0 -_0812A2CC: .4byte gUnknown_203B0E4 -_0812A2D0: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0812A2DC -_0812A2DA: - movs r0, 0x1 -_0812A2DC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812A294 - - thumb_func_start sub_812A2E4 -sub_812A2E4: @ 812A2E4 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _0812A2F4 - cmp r0, 0x1 - beq _0812A320 - b _0812A32A -_0812A2F4: - movs r0, 0x7 - movs r1, 0 - bl sub_812A578 - movs r0, 0x17 - movs r1, 0xA - movs r2, 0x1 - bl sub_812A424 - ldr r0, _0812A31C @ =gUnknown_203B0E4 - ldr r0, [r0] - ldrb r0, [r0, 0x1E] - movs r1, 0x3 - bl CopyWindowToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0812A32A - .align 2, 0 -_0812A31C: .4byte gUnknown_203B0E4 -_0812A320: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0812A32C -_0812A32A: - movs r0, 0x1 -_0812A32C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812A2E4 - - thumb_func_start sub_812A334 -sub_812A334: @ 812A334 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _0812A344 - cmp r0, 0x1 - beq _0812A364 - b _0812A36E -_0812A344: - movs r0, 0x8 - movs r1, 0 - bl sub_812A578 - ldr r0, _0812A360 @ =gUnknown_203B0E4 - ldr r0, [r0] - ldrb r0, [r0, 0x1E] - movs r1, 0x3 - bl CopyWindowToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0812A36E - .align 2, 0 -_0812A360: .4byte gUnknown_203B0E4 -_0812A364: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0812A370 -_0812A36E: - movs r0, 0x1 -_0812A370: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812A334 - - thumb_func_start sub_812A378 -sub_812A378: @ 812A378 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _0812A388 - cmp r0, 0x1 - beq _0812A3BC - b _0812A3C6 -_0812A388: - bl DynamicPlaceholderTextUtil_Reset - ldr r0, _0812A3B4 @ =gSaveBlock2Ptr - ldr r1, [r0] - movs r0, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - movs r0, 0x9 - movs r1, 0 - bl sub_812A578 - ldr r0, _0812A3B8 @ =gUnknown_203B0E4 - ldr r0, [r0] - ldrb r0, [r0, 0x1E] - movs r1, 0x3 - bl CopyWindowToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0812A3C6 - .align 2, 0 -_0812A3B4: .4byte gSaveBlock2Ptr -_0812A3B8: .4byte gUnknown_203B0E4 -_0812A3BC: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0812A3C8 -_0812A3C6: - movs r0, 0x1 -_0812A3C8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812A378 - - thumb_func_start sub_812A3D0 -sub_812A3D0: @ 812A3D0 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _0812A3E0 - cmp r0, 0x1 - beq _0812A40C - b _0812A416 -_0812A3E0: - movs r0, 0xA - movs r1, 0 - bl sub_812A578 - movs r0, 0x17 - movs r1, 0xA - movs r2, 0x1 - bl sub_812A424 - ldr r0, _0812A408 @ =gUnknown_203B0E4 - ldr r0, [r0] - ldrb r0, [r0, 0x1E] - movs r1, 0x3 - bl CopyWindowToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0812A416 - .align 2, 0 -_0812A408: .4byte gUnknown_203B0E4 -_0812A40C: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0812A418 -_0812A416: - movs r0, 0x1 -_0812A418: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812A3D0 - - thumb_func_start sub_812A420 -sub_812A420: @ 812A420 - movs r0, 0 - bx lr - thumb_func_end sub_812A420 - - thumb_func_start sub_812A424 -sub_812A424: @ 812A424 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - lsls r0, 24 - lsls r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - ldr r4, _0812A4FC @ =0xffffff00 - ldr r2, [sp, 0xC] - ands r2, r4 - lsrs r0, 16 - ldr r3, _0812A500 @ =0xffff00ff - ands r2, r3 - orrs r2, r0 - lsrs r1, 8 - ldr r0, _0812A504 @ =0xff00ffff - ands r2, r0 - orrs r2, r1 - ldr r0, _0812A508 @ =0x00ffffff - ands r2, r0 - movs r0, 0xC0 - lsls r0, 19 - orrs r2, r0 - str r2, [sp, 0xC] - ldr r0, [sp, 0x10] - ands r0, r4 - movs r1, 0x4 - orrs r0, r1 - ands r0, r3 - movs r1, 0xE0 - lsls r1, 4 - orrs r0, r1 - ldr r1, _0812A50C @ =0x0000ffff - ands r0, r1 - movs r1, 0xA4 - lsls r1, 15 - orrs r0, r1 - str r0, [sp, 0x10] - add r0, sp, 0xC - bl AddWindow - adds r1, r0, 0 - ldr r6, _0812A510 @ =gUnknown_203B0E4 - ldr r0, [r6] - movs r7, 0 - strh r1, [r0, 0x18] - lsls r0, r1, 16 - lsrs r0, 16 - cmp r0, 0xFF - beq _0812A4F0 - lsls r0, r1, 24 - lsrs r0, 24 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, [r6] - ldrb r0, [r0, 0x18] - bl PutWindowTilemap - ldr r0, [r6] - ldrb r0, [r0, 0x18] - ldr r2, _0812A514 @ =gText_Yes - movs r5, 0x2 - str r5, [sp] - movs r4, 0xFF - str r4, [sp, 0x4] - str r7, [sp, 0x8] - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - ldr r0, [r6] - ldrb r0, [r0, 0x18] - ldr r2, _0812A518 @ =gText_No - movs r1, 0x10 - str r1, [sp] - str r4, [sp, 0x4] - str r7, [sp, 0x8] - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - ldr r0, [r6] - ldrb r0, [r0, 0x18] - movs r1, 0x1 - movs r2, 0xD - bl DrawTextBorderOuter - ldr r0, [r6] - ldrb r0, [r0, 0x18] - movs r1, 0xE - str r1, [sp] - str r5, [sp, 0x4] - mov r1, r8 - str r1, [sp, 0x8] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl Menu_InitCursor -_0812A4F0: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812A4FC: .4byte 0xffffff00 -_0812A500: .4byte 0xffff00ff -_0812A504: .4byte 0xff00ffff -_0812A508: .4byte 0x00ffffff -_0812A50C: .4byte 0x0000ffff -_0812A510: .4byte gUnknown_203B0E4 -_0812A514: .4byte gText_Yes -_0812A518: .4byte gText_No - thumb_func_end sub_812A424 - - thumb_func_start sub_812A51C -sub_812A51C: @ 812A51C - push {r4,lr} - ldr r4, _0812A540 @ =gUnknown_203B0E4 - ldr r0, [r4] - ldrh r0, [r0, 0x18] - cmp r0, 0xFF - beq _0812A53A - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - ldr r0, [r4] - ldrb r0, [r0, 0x18] - bl ClearWindowTilemap -_0812A53A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812A540: .4byte gUnknown_203B0E4 - thumb_func_end sub_812A51C - - thumb_func_start sub_812A544 -sub_812A544: @ 812A544 - push {r4,lr} - ldr r4, _0812A564 @ =gUnknown_203B0E4 - ldr r0, [r4] - ldrh r0, [r0, 0x18] - cmp r0, 0xFF - beq _0812A55E - lsls r0, 24 - lsrs r0, 24 - bl RemoveWindow - ldr r1, [r4] - movs r0, 0xFF - strh r0, [r1, 0x18] -_0812A55E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812A564: .4byte gUnknown_203B0E4 - thumb_func_end sub_812A544 - - thumb_func_start sub_812A568 -sub_812A568: @ 812A568 - push {lr} - bl Menu_ProcessInput - lsls r0, 24 - asrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_812A568 - - thumb_func_start sub_812A578 -sub_812A578: @ 812A578 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x1C - adds r7, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - ldr r1, _0812A624 @ =0xffffff00 - ldr r3, [sp, 0x14] - ands r3, r1 - ldr r2, _0812A628 @ =0xffff00ff - ands r3, r2 - movs r0, 0x80 - lsls r0, 4 - orrs r3, r0 - ldr r0, _0812A62C @ =0xff00ffff - ands r3, r0 - movs r0, 0x80 - lsls r0, 13 - orrs r3, r0 - ldr r5, _0812A630 @ =0x00ffffff - ands r3, r5 - movs r0, 0xA8 - lsls r0, 21 - orrs r3, r0 - str r3, [sp, 0x14] - ldr r0, [sp, 0x18] - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - ands r0, r2 - movs r1, 0xE0 - lsls r1, 4 - orrs r0, r1 - ldr r1, _0812A634 @ =0x0000ffff - ands r0, r1 - movs r1, 0xD4 - lsls r1, 15 - orrs r0, r1 - str r0, [sp, 0x18] - ldr r1, _0812A638 @ =gUnknown_845AB64 - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 2 - adds r4, r0, r1 - ldrb r0, [r4, 0xA] - cmp r0, 0 - beq _0812A5F8 - lsls r0, r3, 16 - movs r1, 0xF9 - lsls r1, 24 - adds r0, r1 - lsrs r0, 16 - ands r2, r3 - orrs r2, r0 - lsrs r1, r2, 24 - adds r1, 0x7 - lsls r1, 24 - adds r0, r5, 0 - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x14] -_0812A5F8: - add r0, sp, 0x14 - bl AddWindow - ldr r5, _0812A63C @ =gUnknown_203B0E4 - ldr r1, [r5] - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x1E] - mov r8, r0 - cmp r0, 0xFF - beq _0812A6E2 - ldrb r0, [r4, 0x9] - cmp r0, 0 - beq _0812A640 - adds r0, r1, 0 - adds r0, 0x22 - ldr r1, [r4] - bl DynamicPlaceholderTextUtil_ExpandPlaceholders - ldr r0, [r5] - adds r6, r0, 0 - adds r6, 0x22 - b _0812A642 - .align 2, 0 -_0812A624: .4byte 0xffffff00 -_0812A628: .4byte 0xffff00ff -_0812A62C: .4byte 0xff00ffff -_0812A630: .4byte 0x00ffffff -_0812A634: .4byte 0x0000ffff -_0812A638: .4byte gUnknown_845AB64 -_0812A63C: .4byte gUnknown_203B0E4 -_0812A640: - ldr r6, [r4] -_0812A642: - mov r0, r9 - lsls r1, r0, 8 - movs r0, 0 - movs r2, 0 - bl ChangeBgY - mov r1, r8 - lsls r0, r1, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - adds r0, r5, 0 - bl PutWindowTilemap - ldr r1, _0812A6AC @ =gUnknown_845AB64 - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 2 - adds r4, r0, r1 - ldrb r0, [r4, 0x4] - cmp r0, 0x1 - bne _0812A6B0 - adds r0, r5, 0 - movs r1, 0xA - movs r2, 0x2 - bl DrawTextBorderInner - ldrb r3, [r4, 0x5] - adds r3, 0x8 - lsls r3, 24 - lsrs r3, 24 - ldrb r0, [r4, 0x6] - adds r0, 0x8 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - ldrb r0, [r4, 0x7] - str r0, [sp, 0xC] - ldrb r0, [r4, 0x8] - str r0, [sp, 0x10] - adds r0, r5, 0 - movs r1, 0x2 - adds r2, r6, 0 - bl AddTextPrinterParameterized5 - b _0812A6DA - .align 2, 0 -_0812A6AC: .4byte gUnknown_845AB64 -_0812A6B0: - adds r0, r5, 0 - movs r1, 0xA - movs r2, 0x2 - bl DrawTextBorderOuter - ldrb r3, [r4, 0x5] - ldrb r0, [r4, 0x6] - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - ldrb r0, [r4, 0x7] - str r0, [sp, 0xC] - ldrb r0, [r4, 0x8] - str r0, [sp, 0x10] - adds r0, r5, 0 - movs r1, 0x2 - adds r2, r6, 0 - bl AddTextPrinterParameterized5 -_0812A6DA: - ldr r0, _0812A6F0 @ =gUnknown_203B0E4 - ldr r0, [r0] - mov r1, r8 - strh r1, [r0, 0x1E] -_0812A6E2: - add sp, 0x1C - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812A6F0: .4byte gUnknown_203B0E4 - thumb_func_end sub_812A578 - - thumb_func_start sub_812A6F4 -sub_812A6F4: @ 812A6F4 - push {r4,lr} - ldr r4, _0812A724 @ =gUnknown_203B0E4 - ldr r0, [r4] - ldrh r0, [r0, 0x1E] - cmp r0, 0xFF - beq _0812A712 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - ldr r0, [r4] - ldrb r0, [r0, 0x1E] - bl ClearWindowTilemap -_0812A712: - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812A724: .4byte gUnknown_203B0E4 - thumb_func_end sub_812A6F4 - - thumb_func_start sub_812A728 -sub_812A728: @ 812A728 - push {r4,lr} - ldr r4, _0812A748 @ =gUnknown_203B0E4 - ldr r0, [r4] - ldrh r0, [r0, 0x1E] - cmp r0, 0xFF - beq _0812A742 - lsls r0, 24 - lsrs r0, 24 - bl RemoveWindow - ldr r1, [r4] - movs r0, 0xFF - strh r0, [r1, 0x1E] -_0812A742: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812A748: .4byte gUnknown_203B0E4 - thumb_func_end sub_812A728 - - thumb_func_start sub_812A74C -sub_812A74C: @ 812A74C - push {lr} - sub sp, 0x8 - adds r3, r0, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 19 - lsrs r3, 16 - lsls r1, 19 - lsrs r1, 16 - str r1, [sp] - movs r0, 0xE - str r0, [sp, 0x4] - movs r0, 0x1 - adds r1, r2, 0 - adds r2, r3, 0 - movs r3, 0x1 - bl FillWindowPixelRect - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_812A74C - - thumb_func_start sub_812A778 -sub_812A778: @ 812A778 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - mov r10, r1 - ldr r1, [sp, 0x54] - lsls r0, 16 - lsrs r5, r0, 16 - mov r9, r5 - lsls r2, 24 - lsrs r4, r2, 24 - mov r8, r4 - lsls r3, 24 - lsrs r7, r3, 24 - lsls r1, 24 - lsrs r6, r1, 24 - cmp r4, 0 - beq _0812A7B4 - bl sub_81297DC - adds r1, r0, 0 - subs r1, r5 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - adds r2, r4, 0 - bl sub_812A74C -_0812A7B4: - add r0, sp, 0xC - mov r1, r8 - strb r1, [r0] - strb r7, [r0, 0x1] - strb r6, [r0, 0x2] - add r4, sp, 0x10 - movs r0, 0xFC - strb r0, [r4] - movs r0, 0x14 - strb r0, [r4, 0x1] - movs r0, 0x8 - strb r0, [r4, 0x2] - mov r0, sp - adds r0, 0x13 - mov r1, r10 - bl StringCopy - mov r0, r9 - lsls r2, r0, 27 - lsrs r2, 24 - add r1, sp, 0xC - str r1, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r3, 0x1 - bl AddTextPrinterParameterized3 - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_812A778 - - thumb_func_start sub_812A804 -sub_812A804: @ 812A804 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4C - movs r0, 0x2 - movs r1, 0xFF - bl FillWindowPixelBuffer - bl GetCurrentKeyboardPage - lsls r0, 24 - lsrs r2, r0, 24 - add r1, sp, 0xC - movs r0, 0 - strb r0, [r1] - movs r0, 0xE - strb r0, [r1, 0x1] - movs r0, 0xD - strb r0, [r1, 0x2] - cmp r2, 0x3 - beq _0812A8A0 - add r1, sp, 0x10 - movs r0, 0xFC - strb r0, [r1] - movs r0, 0x14 - strb r0, [r1, 0x1] - movs r0, 0x8 - strb r0, [r1, 0x2] - str r0, [sp, 0x40] - str r1, [sp, 0x44] - cmp r2, 0x2 - bne _0812A84C - movs r1, 0x6 - str r1, [sp, 0x40] -_0812A84C: - movs r7, 0 - movs r6, 0 - lsls r0, r2, 2 - ldr r1, _0812A89C @ =sUnionRoomKeyboardText - adds r0, r2 - lsls r0, 3 - adds r4, r0, r1 - ldr r0, [sp, 0x40] - lsls r5, r0, 24 -_0812A85E: - ldr r1, [r4] - cmp r1, 0 - bne _0812A866 - b _0812A96C -_0812A866: - mov r0, sp - adds r0, 0x13 - bl StringCopy - lsls r3, r6, 24 - lsrs r3, 24 - add r1, sp, 0xC - str r1, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r0, [sp, 0x44] - str r0, [sp, 0x8] - movs r0, 0x2 - movs r1, 0 - lsrs r2, r5, 24 - bl AddTextPrinterParameterized3 - adds r4, 0x4 - adds r7, 0x1 - adds r0, r6, 0 - adds r0, 0xC - lsls r0, 16 - lsrs r6, r0, 16 - cmp r7, 0x9 - ble _0812A85E - b _0812A96C - .align 2, 0 -_0812A89C: .4byte sUnionRoomKeyboardText -_0812A8A0: - movs r1, 0x4 - str r1, [sp, 0x40] - movs r7, 0 - movs r6, 0 -_0812A8A8: - adds r0, r7, 0 - bl sub_81294B0 - adds r5, r0, 0 - movs r0, 0 - adds r1, r5, 0 - movs r2, 0 - bl GetStringWidth - cmp r0, 0x28 - bgt _0812A8E6 - lsls r3, r6, 24 - lsrs r3, 24 - add r4, sp, 0xC - str r4, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x2 - movs r1, 0 - movs r4, 0x80 - lsls r4, 19 - lsrs r2, r4, 24 - bl AddTextPrinterParameterized3 - adds r0, r7, 0x1 - str r0, [sp, 0x48] - adds r6, 0xC - mov r10, r6 - b _0812A960 -_0812A8E6: - adds r0, r5, 0 - bl StringLength_Multibyte - adds r4, r0, 0 - mov r1, sp - adds r1, 0x10 - str r1, [sp, 0x44] - ldr r0, [sp, 0x40] - lsls r0, 24 - mov r8, r0 - lsls r1, r6, 24 - mov r9, r1 - adds r0, r7, 0x1 - str r0, [sp, 0x48] - adds r6, 0xC - mov r10, r6 - ldr r7, [sp, 0x40] - adds r7, 0x23 - ldr r6, [sp, 0x44] -_0812A90C: - subs r4, 0x1 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl StringCopyN_Multibyte - movs r0, 0 - adds r1, r6, 0 - movs r2, 0 - bl GetStringWidth - cmp r0, 0x23 - bgt _0812A90C - mov r1, r8 - lsrs r2, r1, 24 - mov r0, r9 - lsrs r4, r0, 24 - add r1, sp, 0xC - str r1, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r1, [sp, 0x44] - str r1, [sp, 0x8] - movs r0, 0x2 - movs r1, 0 - adds r3, r4, 0 - bl AddTextPrinterParameterized3 - adds r2, r7, 0 - add r0, sp, 0xC - str r0, [sp] - movs r1, 0x1 - negs r1, r1 - str r1, [sp, 0x4] - ldr r0, _0812A97C @ =gUnknown_845ABE8 - str r0, [sp, 0x8] - movs r0, 0x2 - movs r1, 0 - adds r3, r4, 0 - bl AddTextPrinterParameterized3 -_0812A960: - ldr r7, [sp, 0x48] - mov r4, r10 - lsls r0, r4, 16 - lsrs r6, r0, 16 - cmp r7, 0x9 - ble _0812A8A8 -_0812A96C: - add sp, 0x4C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812A97C: .4byte gUnknown_845ABE8 - thumb_func_end sub_812A804 - - thumb_func_start sub_812A980 -sub_812A980: @ 812A980 - push {r4,lr} - ldr r1, _0812A9A4 @ =gUnknown_203B0E4 - ldr r2, [r1] - ldrh r3, [r2, 0x20] - movs r4, 0x20 - ldrsh r0, [r2, r4] - cmp r0, 0x37 - bgt _0812A9B4 - adds r0, r3, 0 - adds r0, 0xC - strh r0, [r2, 0x20] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x37 - ble _0812A9A8 - movs r0, 0x38 - strh r0, [r2, 0x20] - b _0812A9B4 - .align 2, 0 -_0812A9A4: .4byte gUnknown_203B0E4 -_0812A9A8: - movs r1, 0x20 - ldrsh r0, [r2, r1] - bl sub_812ADA0 - movs r0, 0x1 - b _0812A9C0 -_0812A9B4: - ldr r0, [r1] - movs r4, 0x20 - ldrsh r0, [r0, r4] - bl sub_812ADF8 - movs r0, 0 -_0812A9C0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812A980 - - thumb_func_start sub_812A9C8 -sub_812A9C8: @ 812A9C8 - push {r4,lr} - ldr r1, _0812A9EC @ =gUnknown_203B0E4 - ldr r2, [r1] - ldrh r3, [r2, 0x20] - movs r4, 0x20 - ldrsh r0, [r2, r4] - cmp r0, 0 - ble _0812A9FC - adds r0, r3, 0 - subs r0, 0xC - strh r0, [r2, 0x20] - lsls r0, 16 - cmp r0, 0 - bgt _0812A9F0 - movs r0, 0 - strh r0, [r2, 0x20] - b _0812A9FC - .align 2, 0 -_0812A9EC: .4byte gUnknown_203B0E4 -_0812A9F0: - movs r1, 0x20 - ldrsh r0, [r2, r1] - bl sub_812ADA0 - movs r0, 0x1 - b _0812AA08 -_0812A9FC: - ldr r0, [r1] - movs r4, 0x20 - ldrsh r0, [r0, r4] - bl sub_812ADF8 - movs r0, 0 -_0812AA08: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812A9C8 - - thumb_func_start sub_812AA10 -sub_812AA10: @ 812AA10 - push {lr} - sub sp, 0xC - movs r0, 0x3 - movs r1, 0x11 - bl FillWindowPixelBuffer - movs r0, 0x3 - movs r1, 0x1 - movs r2, 0xD - bl DrawTextBorderOuter - ldr r0, _0812AA60 @ =gUnknown_845ABEC - str r0, [sp] - movs r0, 0x3 - movs r1, 0x2 - movs r2, 0xE - movs r3, 0x5 - bl UnionRoomAndTradeMenuPrintOptions - bl GetCurrentKeyboardPage - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xE - str r1, [sp] - movs r1, 0x5 - str r1, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0x3 - movs r1, 0x2 - movs r2, 0 - movs r3, 0 - bl Menu_InitCursor - movs r0, 0x3 - bl PutWindowTilemap - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_0812AA60: .4byte gUnknown_845ABEC - thumb_func_end sub_812AA10 - - thumb_func_start sub_812AA64 -sub_812AA64: @ 812AA64 - push {lr} - movs r0, 0x3 - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - movs r0, 0x3 - bl ClearWindowTilemap - pop {r0} - bx r0 - thumb_func_end sub_812AA64 - - thumb_func_start sub_812AA78 -sub_812AA78: @ 812AA78 - push {r4,r5,lr} - sub sp, 0x10 - adds r5, r1, 0 - lsls r0, 16 - lsrs r0, 16 - lsls r2, 24 - add r3, sp, 0xC - movs r1, 0x1 - strb r1, [r3] - lsrs r2, 23 - adds r1, r2, 0x2 - strb r1, [r3, 0x1] - adds r1, r3, 0 - adds r2, 0x3 - strb r2, [r1, 0x2] - lsls r4, r0, 4 - subs r4, r0 - lsls r3, r4, 16 - lsrs r3, 16 - movs r0, 0xA8 - str r0, [sp] - movs r0, 0xF - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x11 - movs r2, 0 - bl FillWindowPixelRect - lsls r4, 24 - lsrs r4, 24 - add r0, sp, 0xC - str r0, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - adds r3, r4, 0 - bl AddTextPrinterParameterized3 - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_812AA78 - - thumb_func_start sub_812AAD4 -sub_812AAD4: @ 812AAD4 - push {lr} - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuRegBits - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r1, 0xE0 - lsls r1, 8 - movs r0, 0 - bl ClearGpuRegBits - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl SetGpuRegBits - ldr r1, _0812AB88 @ =0x000040f0 - movs r0, 0x40 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0x90 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0x3D - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x3F - bl SetGpuReg - pop {r0} - bx r0 - .align 2, 0 -_0812AB88: .4byte 0x000040f0 - thumb_func_end sub_812AAD4 - - thumb_func_start sub_812AB8C -sub_812AB8C: @ 812AB8C - push {r4,lr} - ldr r4, _0812ABC8 @ =gUnknown_203B0E4 - ldr r1, [r4] - movs r0, 0x94 - lsls r0, 1 - adds r1, r0 - movs r0, 0 - bl SetBgTilemapBuffer - ldr r1, [r4] - ldr r0, _0812ABCC @ =0x00000928 - adds r1, r0 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r4] - ldr r0, _0812ABD0 @ =0x00001128 - adds r1, r0 - movs r0, 0x3 - bl SetBgTilemapBuffer - ldr r1, [r4] - ldr r0, _0812ABD4 @ =0x00001928 - adds r1, r0 - movs r0, 0x2 - bl SetBgTilemapBuffer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812ABC8: .4byte gUnknown_203B0E4 -_0812ABCC: .4byte 0x00000928 -_0812ABD0: .4byte 0x00001128 -_0812ABD4: .4byte 0x00001928 - thumb_func_end sub_812AB8C - - thumb_func_start sub_812ABD8 -sub_812ABD8: @ 812ABD8 - push {lr} - sub sp, 0x8 - movs r1, 0xC0 - lsls r1, 19 - movs r0, 0 - movs r2, 0x20 - movs r3, 0x1 - bl RequestDma3Fill - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_812ABD8 - - thumb_func_start sub_812AC08 -sub_812AC08: @ 812AC08 - push {lr} - sub sp, 0x4 - ldr r0, _0812AC48 @ =gUnknown_8EAA9F0 - movs r1, 0x70 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0812AC4C @ =gUnknown_845AA24 - movs r1, 0xC0 - movs r2, 0x20 - bl LoadPalette - ldr r1, _0812AC50 @ =gUnknown_8EAAA10 - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _0812AC54 @ =gUnknown_8EAAA6C - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0812AC48: .4byte gUnknown_8EAA9F0 -_0812AC4C: .4byte gUnknown_845AA24 -_0812AC50: .4byte gUnknown_8EAAA10 -_0812AC54: .4byte gUnknown_8EAAA6C - thumb_func_end sub_812AC08 - - thumb_func_start sub_812AC58 -sub_812AC58: @ 812AC58 - push {lr} - sub sp, 0x4 - ldr r0, _0812AC90 @ =gUnknown_8EA1700 - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - ldr r1, _0812AC94 @ =gUnknown_8EA1720 - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _0812AC98 @ =gUnknown_8EA1958 - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0812AC90: .4byte gUnknown_8EA1700 -_0812AC94: .4byte gUnknown_8EA1720 -_0812AC98: .4byte gUnknown_8EA1958 - thumb_func_end sub_812AC58 - - thumb_func_start sub_812AC9C -sub_812AC9C: @ 812AC9C - push {lr} - ldr r0, _0812ACB8 @ =gUnknown_845AA44 - movs r1, 0x80 - movs r2, 0x20 - bl LoadPalette - ldr r1, _0812ACBC @ =0x06004020 - movs r0, 0 - movs r2, 0x20 - movs r3, 0x1 - bl RequestDma3Fill - pop {r0} - bx r0 - .align 2, 0 -_0812ACB8: .4byte gUnknown_845AA44 -_0812ACBC: .4byte 0x06004020 - thumb_func_end sub_812AC9C - - thumb_func_start sub_812ACC0 -sub_812ACC0: @ 812ACC0 - push {lr} - ldr r0, _0812ACE8 @ =gUnknown_845AA64 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - pop {r0} - bx r0 - .align 2, 0 -_0812ACE8: .4byte gUnknown_845AA64 - thumb_func_end sub_812ACC0 - - thumb_func_start sub_812ACEC -sub_812ACEC: @ 812ACEC - push {lr} - movs r0, 0x2 - bl PutWindowTilemap - bl sub_812A804 - movs r0, 0x2 - movs r1, 0x3 - bl CopyWindowToVram - pop {r0} - bx r0 - thumb_func_end sub_812ACEC - - thumb_func_start sub_812AD04 -sub_812AD04: @ 812AD04 - push {lr} - movs r0, 0x1 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x1 - movs r1, 0x3 - bl CopyWindowToVram - pop {r0} - bx r0 - thumb_func_end sub_812AD04 - - thumb_func_start sub_812AD20 -sub_812AD20: @ 812AD20 - push {lr} - movs r0, 0x3 - movs r1, 0x11 - bl FillWindowPixelBuffer - movs r0, 0x3 - movs r1, 0x1 - movs r2, 0xD0 - bl TextWindow_SetUserSelectedFrame - movs r0, 0x3 - movs r1, 0xA - movs r2, 0x20 - bl TextWindow_SetStdFrame0_WithPal - ldr r0, _0812AD4C @ =gTMCaseMainWindowPalette - movs r1, 0xE0 - movs r2, 0x20 - bl LoadPalette - pop {r0} - bx r0 - .align 2, 0 -_0812AD4C: .4byte gTMCaseMainWindowPalette - thumb_func_end sub_812AD20 - - thumb_func_start sub_812AD50 -sub_812AD50: @ 812AD50 - push {lr} - sub sp, 0x10 - ldr r0, _0812AD8C @ =0xa2600001 - str r0, [sp, 0x4] - ldr r0, _0812AD90 @ =0x04000014 - str r0, [sp] - mov r2, sp - movs r1, 0 - movs r0, 0x1 - strb r0, [r2, 0x8] - mov r0, sp - strb r1, [r0, 0x9] - ldr r0, _0812AD94 @ =gUnknown_203B0E4 - ldr r0, [r0] - strh r1, [r0, 0x20] - str r1, [sp, 0xC] - add r0, sp, 0xC - ldr r1, _0812AD98 @ =gScanlineEffectRegBuffers - ldr r2, _0812AD9C @ =0x010003c0 - bl CpuFastSet - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl ScanlineEffect_SetParams - add sp, 0x10 - pop {r0} - bx r0 - .align 2, 0 -_0812AD8C: .4byte 0xa2600001 -_0812AD90: .4byte 0x04000014 -_0812AD94: .4byte gUnknown_203B0E4 -_0812AD98: .4byte gScanlineEffectRegBuffers -_0812AD9C: .4byte 0x010003c0 - thumb_func_end sub_812AD50 - - thumb_func_start sub_812ADA0 -sub_812ADA0: @ 812ADA0 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - strh r0, [r1] - ldr r5, _0812ADE8 @ =gScanlineEffect - ldrb r0, [r5, 0x14] - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 7 - ldr r4, _0812ADEC @ =gScanlineEffectRegBuffers - adds r1, r4 - ldr r2, _0812ADF0 @ =0x01000090 - mov r0, sp - bl CpuSet - mov r0, sp - adds r0, 0x2 - movs r1, 0 - strh r1, [r0] - ldrb r2, [r5, 0x14] - lsls r1, r2, 4 - subs r1, r2 - lsls r1, 7 - movs r2, 0x90 - lsls r2, 1 - adds r4, r2 - adds r1, r4 - ldr r2, _0812ADF4 @ =0x01000010 - bl CpuSet - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812ADE8: .4byte gScanlineEffect -_0812ADEC: .4byte gScanlineEffectRegBuffers -_0812ADF0: .4byte 0x01000090 -_0812ADF4: .4byte 0x01000010 - thumb_func_end sub_812ADA0 - - thumb_func_start sub_812ADF8 -sub_812ADF8: @ 812ADF8 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, sp - strh r4, [r0] - ldr r5, _0812AE64 @ =gScanlineEffectRegBuffers - ldr r0, _0812AE68 @ =0x01000090 - mov r9, r0 - mov r0, sp - adds r1, r5, 0 - mov r2, r9 - bl CpuSet - mov r0, sp - adds r0, 0x2 - movs r6, 0 - strh r6, [r0] - movs r2, 0x90 - lsls r2, 1 - adds r1, r5, r2 - ldr r2, _0812AE6C @ =0x01000010 - mov r8, r2 - bl CpuSet - add r0, sp, 0x4 - strh r4, [r0] - movs r2, 0xF0 - lsls r2, 3 - adds r1, r5, r2 - mov r2, r9 - bl CpuSet - mov r0, sp - adds r0, 0x6 - strh r6, [r0] - movs r1, 0x8A - lsls r1, 4 - adds r5, r1 - adds r1, r5, 0 - mov r2, r8 - bl CpuSet - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812AE64: .4byte gScanlineEffectRegBuffers -_0812AE68: .4byte 0x01000090 -_0812AE6C: .4byte 0x01000010 - thumb_func_end sub_812ADF8 - thumb_func_start sub_812AE70 sub_812AE70: @ 812AE70 push {r4,r5,lr} diff --git a/data/graphics.s b/data/graphics.s index 809385e49..cbc66ad4d 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -16374,13 +16374,13 @@ gFameCheckerBg3Tilemap:: @ 8EA0700 gFameCheckerBg2Tilemap:: @ 8EA0F00 .incbin "data/graphics/fame_checker_tilemap2.bin" -gUnknown_8EA1700:: @ 8EA1700 +gLinkMiscMenu_Pal:: @ 8EA1700 .incbin "graphics/interface/union_room_chat.gbapal" -gUnknown_8EA1720:: @ 8EA1720 +gLinkMiscMenu_Gfx:: @ 8EA1720 .incbin "graphics/interface/union_room_chat.4bpp.lz" -gUnknown_8EA1958:: @ 8EA1958 +gLinkMiscMenu_Tilemap:: @ 8EA1958 .incbin "graphics/interface/union_room_chat.bin.lz" gUnknown_8EA1A50:: @ 8EA1A50 diff --git a/data/strings.s b/data/strings.s index 4102d3616..5cff90fcd 100644 --- a/data/strings.s +++ b/data/strings.s @@ -3093,34 +3093,34 @@ gUnknown_841B32E:: @ 841B32E .string "{DYNAMIC 0x00} learned\n" .string "{DYNAMIC 0x01}!$" -gUnknown_841B33D:: @ 0x841B33D +gText_Upper:: @ 0x841B33D .string "UPPER$" -gUnknown_841B343:: @ 0x841B343 +gText_Lower:: @ 0x841B343 .string "lower$" -gUnknown_841B349:: @ 0x841B349 +gText_Others:: @ 0x841B349 .string "OTHERS$" -gUnknown_841B350:: @ 0x841B350 +gText_Symbols:: @ 0x841B350 .string "SYMBOLS$" -gUnknown_841B358:: @ 0x841B358 +gText_Register2:: @ 0x841B358 .string "REGISTER$" -gUnknown_841B361:: @ 0x841B361 +gText_Exit:: @ 0x841B361 .string "EXIT$" -gUnknown_841B366:: @ 0x841B366 +gText_QuitChatting:: @ 0x841B366 .string "Quit chatting?$" -gUnknown_841B375:: @ 0x841B375 +gText_RegisterTextWhere:: @ 0x841B375 .string "Register text where?$" -gUnknown_841B38A:: @ 0x841B38A +gText_RegisterTextHere:: @ 0x841B38A .string "Register text here?$" -gUnknown_841B39E:: @ 0x841B39E +gText_InputText:: @ 0x841B39E .string "Input text.$" gText_F700JoinedChat:: @ 841B3AA @@ -3135,29 +3135,29 @@ gUnknown_841B3D0:: @ 0x841B3D0 gUnknown_841B3DA:: @ 0x841B3DA .string "{DYNAMIC 0x00}の{DYNAMIC 0x01}ひきめは いません$" -gUnknown_841B3E9:: @ 0x841B3E9 +gText_ExitingTheChat:: @ 0x841B3E9 .string "Exiting the chat‥$" -gUnknown_841B3FB:: @ 0x841B3FB +gText_LeaderHasLeftEndingChat:: @ 0x841B3FB .string "The LEADER, {DYNAMIC 0x00}, has\n" .string "left, ending the chat.$" -gUnknown_841B426:: @ 0x841B426 +gText_RegisteredTextChanged_OKtoSave:: @ 0x841B426 .string "The registered text has been changed.\n" .string "Is it okay to save the game?$" -gUnknown_841B469:: @ 0x841B469 +gText_RegisteredTextChanged_AlreadySavedFile:: @ 0x841B469 .string "There is already a saved file.\n" .string "Is it okay to overwrite it?$" -gUnknown_841B4A4:: @ 0x841B4A4 +gText_RegisteredTextChanged_SavingDontTurnOff:: @ 0x841B4A4 .string "SAVING‥\n" .string "DON'T TURN OFF THE POWER.$" -gUnknown_841B4C6:: @ 0x841B4C6 +gText_RegisteredTextChanged_SavedTheGame:: @ 0x841B4C6 .string "{DYNAMIC 0x00} saved the game.$" -gUnknown_841B4D9:: @ 0x841B4D9 +gText_IfLeaderLeavesChatWillEnd:: @ 0x841B4D9 .string "If the LEADER leaves, the chat\n" .string "will end. Is that okay?$" diff --git a/data/union_room_chat.s b/data/union_room_chat.s index d79974946..2873cd4b1 100644 --- a/data/union_room_chat.s +++ b/data/union_room_chat.s @@ -6,52 +6,6 @@ .section .rodata .align 2 -gUnknown_845AB64:: @ 845AB64 - .4byte gUnknown_841B366 - .byte 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00 - .align 2 - .4byte gUnknown_841B375 - .byte 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00 - .align 2 - .4byte gUnknown_841B38A - .byte 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00 - .align 2 - .4byte gUnknown_841B39E - .byte 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00 - .align 2 - .4byte gUnknown_841B3E9 - .byte 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00 - .align 2 - .4byte gUnknown_841B3FB - .byte 0x02, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00 - .align 2 - .4byte gUnknown_841B426 - .byte 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01 - .align 2 - .4byte gUnknown_841B469 - .byte 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01 - .align 2 - .4byte gUnknown_841B4A4 - .byte 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01 - .align 2 - .4byte gUnknown_841B4C6 - .byte 0x02, 0x00, 0x00, 0x01, 0x02, 0x01, 0x01 - .align 2 - .4byte gUnknown_841B4D9 - .byte 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01 - .align 2 - -gUnknown_845ABE8:: @ 845ABE8 - .string "…$" - - .align 2 -gUnknown_845ABEC:: @ 845ABEC - .4byte gUnknown_841B33D, 0 - .4byte gUnknown_841B343, 0 - .4byte gUnknown_841B350, 0 - .4byte gUnknown_841B358, 0 - .4byte gUnknown_841B361, 0 - gUnknown_845AC14:: @ 845AC14 .incbin "graphics/union_room_chat/unk_845AC14.gbapal" diff --git a/include/graphics.h b/include/graphics.h index e87acb556..c3620279d 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4864,4 +4864,12 @@ extern const u32 gUnknown_8E83444[]; extern const u32 gBagBgPalette[]; extern const u32 gBagBgPalette_FemaleOverride[]; +// union_room_chat_display +extern const u16 gUnknown_8EAA9F0[]; +extern const u32 gUnknown_8EAAA10[]; +extern const u32 gUnknown_8EAAA6C[]; +extern const u16 gLinkMiscMenu_Pal[]; +extern const u32 gLinkMiscMenu_Gfx[]; +extern const u32 gLinkMiscMenu_Tilemap[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/strings.h b/include/strings.h index 81cbc63c1..7821825cf 100644 --- a/include/strings.h +++ b/include/strings.h @@ -40,7 +40,6 @@ extern const u8 gText_Second[]; extern const u8 gText_Third[]; extern const u8 gText_NoDecorations[]; extern const u8 gText_NoDecorationsInUse[]; -extern const u8 gText_Exit[]; extern const u8 gText_Cancel[]; extern const u8 gText_Color161Shadow161[]; extern const u8 gText_GoBackPrevMenu[]; @@ -288,7 +287,6 @@ extern const u8 gText_ThreePkmnAreNeeded[]; extern const u8 gText_TwoPokemonAreNeeded[]; extern const u8 gText_PokemonCantBeSame[]; extern const u8 gText_NoIdenticalHoldItems[]; -extern const u8 gString_Dummy[]; extern const u8 gText_DoWhatWithPokemon[]; extern const u8 gText_RestoreWhichMove[]; extern const u8 gText_BoostPp[]; @@ -327,13 +325,9 @@ extern const u8 gText_SendOut[]; extern const u8 gText_Enter[]; extern const u8 gText_NoEntry[]; extern const u8 gText_Store[]; -extern const u8 gText_Register[]; extern const u8 gText_Trade4[]; extern const u8 gText_NotPkmnOtherTrainerWants[]; extern const u8 gText_ThatIsntAnEgg[]; -extern const u8 gText_PkmnCantBeTradedNow[]; -extern const u8 gText_OtherTrainersPkmnCantBeTraded[]; -extern const u8 gText_EggCantBeTradedNow[]; extern const u8 gText_OtherTrainerCantAcceptPkmn[]; extern const u8 gText_CantTradeWithTrainer[]; extern const u8 gUnknown_84176CF[]; @@ -346,7 +340,6 @@ extern const u8 gText_PkmnCantParticipate[]; extern const u8 gText_CancelParticipation[]; extern const u8 gUnknown_8417494[]; extern const u8 gMenuText_Confirm[]; -extern const u8 gText_Lv[]; extern const u8 gText_MaleSymbol[]; extern const u8 gText_FemaleSymbol[]; extern const u8 gText_Slash[]; @@ -984,6 +977,16 @@ extern const u8 gUnknown_8415F6C[]; extern const u8 gUnknown_8415FFF[]; extern const u8 gUnknown_8416002[]; +// daycare +extern const u8 gText_Lv[]; +extern const u8 gDaycareText_GetAlongVeryWell[]; +extern const u8 gDaycareText_GetAlong[]; +extern const u8 gDaycareText_DontLikeOther[]; +extern const u8 gDaycareText_PlayOther[]; +extern const u8 gExpandedPlaceholder_Empty[]; +extern const u8 gText_HatchedFromEgg[]; +extern const u8 gText_NickHatchPrompt[]; + // trainer card extern const u8 gText_WaitingTrainerFinishReading[]; extern const u8 gText_TrainerCardName[]; @@ -1075,4 +1078,22 @@ extern const u8 gText_YaySmileEmoji[]; extern const u8 gText_ThankYou[]; extern const u8 gText_ByeBye[]; +// union_room_chat_display +extern const u8 gText_QuitChatting[]; +extern const u8 gText_RegisterTextWhere[]; +extern const u8 gText_RegisterTextHere[]; +extern const u8 gText_InputText[]; +extern const u8 gText_ExitingTheChat[]; +extern const u8 gText_LeaderHasLeftEndingChat[]; +extern const u8 gText_RegisteredTextChanged_OKtoSave[]; +extern const u8 gText_RegisteredTextChanged_AlreadySavedFile[]; +extern const u8 gText_RegisteredTextChanged_SavingDontTurnOff[]; +extern const u8 gText_RegisteredTextChanged_SavedTheGame[]; +extern const u8 gText_IfLeaderLeavesChatWillEnd[]; +extern const u8 gText_Upper[]; +extern const u8 gText_Lower[]; +extern const u8 gText_Symbols[]; +extern const u8 gText_Register2[]; +extern const u8 gText_Exit[]; + #endif //GUARD_STRINGS_H diff --git a/include/text_window.h b/include/text_window.h index 8e8466145..3796629b4 100644 --- a/include/text_window.h +++ b/include/text_window.h @@ -26,6 +26,7 @@ void TextWindow_SetUserSelectedFrame(u8 windowId, u16 tileStart, u8 palette); void LoadUserWindowBorderGfx(u8 windowId, u16 tileStart, u8 palette); void sub_814FDA0(u8 windowId, u16 tileStart, u8 palette); void DrawTextBorderOuter(u8 windowId, u16 tileStart, u8 palette); +void DrawTextBorderInner(u8 windowId, u16 tileNum, u8 palNum); void TextWindow_LoadTilesStdFrame1(u8 windowId, u16 destOffset); void sub_814FE6C(u8 windowId, u16 destOffset, u8 palIdx); void sub_814FEEC(u8 windowId, u16 destOffset, u8 palIdx); diff --git a/include/trade.h b/include/trade.h index d5106b172..f8e285e40 100644 --- a/include/trade.h +++ b/include/trade.h @@ -8,6 +8,10 @@ extern struct MailStruct gLinkPartnerMail[6]; extern u8 gSelectedTradeMonPositions[2]; +extern const u8 gText_MaleSymbol4[]; +extern const u8 gText_FemaleSymbol4[]; +extern const u8 gText_GenderlessSymbol[]; + extern const u16 gUnknown_826601C[]; void CB2_ReturnFromLinkTrade(void); s32 sub_804FB34(void); diff --git a/include/union_room_chat.h b/include/union_room_chat.h index 3488e71bc..93bd4a55f 100644 --- a/include/union_room_chat.h +++ b/include/union_room_chat.h @@ -1,13 +1,27 @@ #ifndef GUARD_UNION_ROOM_CHAT_H #define GUARD_UNION_ROOM_CHAT_H +enum +{ + UNION_ROOM_KB_PAGE_UPPER, + UNION_ROOM_KB_PAGE_LOWER, + UNION_ROOM_KB_PAGE_EMOJI, + UNION_ROOM_KB_PAGE_COUNT +}; + +extern const u8 *const gUnionRoomKeyboardText[UNION_ROOM_KB_PAGE_COUNT][UNION_ROOM_KB_ROW_COUNT]; + void sub_8128420(void); +u8 *sub_81294B0(int arg0); u8 *sub_8129714(void); void sub_8129730(u32 *a0, u32 *a1); u8 *sub_8129758(void); u16 sub_8129788(void); u8 *sub_81297C4(void); u16 sub_81297D0(void); +int sub_81297DC(void); +u8 *sub_8129814(void); void copy_strings_to_sav1(void); +u8 GetCurrentKeyboardPage(void); #endif // GUARD_UNION_ROOM_CHAT_H diff --git a/src/daycare.c b/src/daycare.c index 856a5fbc0..ef9da89fe 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1,44 +1,34 @@ #include "global.h" -#include "pokemon.h" +#include "gflib.h" #include "battle.h" #include "daycare.h" -#include "string_util.h" #include "constants/species.h" #include "constants/items.h" #include "mail_data.h" #include "pokemon_storage_system.h" #include "event_data.h" #include "random.h" -#include "main.h" #include "constants/moves.h" -#include "text.h" #include "menu.h" #include "new_menu_helpers.h" #include "script.h" #include "strings.h" -#include "task.h" -#include "window.h" #include "party_menu.h" #include "list_menu.h" #include "overworld.h" #include "pokedex.h" #include "decompress.h" -#include "palette.h" -#include "sound.h" #include "constants/songs.h" #include "text_window.h" #include "trig.h" -#include "malloc.h" -#include "gpu_regs.h" -#include "bg.h" #include "m4a.h" #include "graphics.h" #include "scanline_effect.h" #include "naming_screen.h" #include "help_system.h" #include "field_fadetransition.h" +#include "trade.h" #include "constants/daycare.h" -#include "constants/pokemon.h" #include "constants/region_map.h" // Combination of RSE's Day-Care (re-used on Four Island), FRLG's Day-Care, and egg_hatch.c @@ -60,20 +50,6 @@ struct EggHatchData u8 textColor[3]; }; -extern const u8 gText_MaleSymbol4[]; -extern const u8 gText_FemaleSymbol4[]; -extern const u8 gText_GenderlessSymbol[]; -extern const u8 gText_Lv[]; -extern const u8 gDaycareText_GetAlongVeryWell[]; -extern const u8 gDaycareText_GetAlong[]; -extern const u8 gDaycareText_DontLikeOther[]; -extern const u8 gDaycareText_PlayOther[]; -extern const u8 gExpandedPlaceholder_Empty[]; - -extern const u32 gUnknown_826601C[]; // tilemap gameboy circle -extern const u8 gText_HatchedFromEgg[]; -extern const u8 gText_NickHatchPrompt[]; - // this file's functions static void ClearDaycareMonMail(struct DayCareMail *mail); static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare); diff --git a/src/trade.c b/src/trade.c index 05a259e60..fe5f53be9 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1,41 +1,22 @@ #include "global.h" -#include "palette.h" +#include "gflib.h" #include "task.h" #include "decompress.h" -#include "gpu_regs.h" -#include "malloc.h" -#include "bg.h" -#include "text.h" -#include "window.h" -#include "librfu.h" #include "text_window.h" -#include "evolution_scene.h" #include "pokemon_icon.h" -#include "pokedex.h" -#include "mail_data.h" #include "graphics.h" #include "link.h" -#include "random.h" -#include "save.h" #include "load_save.h" -#include "quest_log.h" -#include "field_fadetransition.h" -#include "mevent.h" -#include "help_system.h" #include "link_rfu.h" #include "cable_club.h" #include "data.h" -#include "sound.h" -#include "string_util.h" #include "strings.h" #include "menu.h" #include "overworld.h" #include "battle_anim.h" #include "pokeball.h" #include "party_menu.h" -#include "util.h" #include "daycare.h" -#include "script.h" #include "event_data.h" #include "battle_interface.h" #include "pokemon_summary_screen.h" @@ -43,11 +24,7 @@ #include "new_menu_helpers.h" #include "trade.h" #include "trade_scene.h" -#include "constants/species.h" -#include "constants/items.h" -#include "constants/easy_chat.h" #include "constants/songs.h" -#include "constants/region_map.h" #include "constants/moves.h" struct TradeMenuResources diff --git a/src/union_room_chat.c b/src/union_room_chat.c index 936803f80..f8243f742 100644 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -13,18 +13,11 @@ #include "scanline_effect.h" #include "strings.h" #include "task.h" +#include "union_room_chat.h" #include "union_room_chat_display.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]; @@ -147,7 +140,7 @@ const u8 gUnknown_845A8AC[] = { 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] = { +const u8 *const gUnionRoomKeyboardText[UNION_ROOM_KB_PAGE_COUNT][UNION_ROOM_KB_ROW_COUNT] = { [UNION_ROOM_KB_PAGE_UPPER] = { gText_UnionRoomChatKeyboard_ABCDE, gText_UnionRoomChatKeyboard_FGHIJ, @@ -951,7 +944,7 @@ void sub_81292D8(void) if (gUnknown_203B0E0->currentPage != UNION_ROOM_KB_PAGE_COUNT) { - charsStr = sUnionRoomKeyboardText[gUnknown_203B0E0->currentPage][gUnknown_203B0E0->currentRow]; + charsStr = gUnionRoomKeyboardText[gUnknown_203B0E0->currentPage][gUnknown_203B0E0->currentRow]; for (i = 0; i < gUnknown_203B0E0->unk11; i++) { if (*charsStr == CHAR_EXTRA_EMOJI) @@ -1265,7 +1258,7 @@ u8 *sub_81297C4(void) return gUnknown_203B0E0->unk39; } -u8 sub_81297D0(void) +u16 sub_81297D0(void) { return gUnknown_203B0E0->unk16; } diff --git a/src/union_room_chat_display.c b/src/union_room_chat_display.c index 993481d3d..0e1e7c3b6 100644 --- a/src/union_room_chat_display.c +++ b/src/union_room_chat_display.c @@ -1,7 +1,12 @@ #include "global.h" #include "gflib.h" +#include "dynamic_placeholder_text_util.h" +#include "graphics.h" +#include "menu.h" #include "new_menu_helpers.h" #include "scanline_effect.h" +#include "strings.h" +#include "text_window.h" #include "union_room_chat.h" #include "union_room_chat_display.h" #include "union_room_chat_objects.h" @@ -36,6 +41,18 @@ struct Unk845AABC bool32 (*unk4)(u8 *); }; +struct Unk845AB64 +{ + const u8 *unk0; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + u8 unk8; + u8 unk9; + u8 unkA; +}; + EWRAM_DATA struct UnionRoomChat2 * gUnknown_203B0E4 = NULL; void sub_8129BB8(struct UnionRoomChat2 * ptr); @@ -87,6 +104,8 @@ void sub_812ACEC(void); void sub_812AD04(void); void sub_812AD20(void); void sub_812AD50(void); +void sub_812ADA0(s16 a0); +void sub_812ADF8(s16 a0); const u16 gUnknown_845AA24[] = INCBIN_U16("graphics/union_room_chat/unk_845AA24.gbapal"); const u16 gUnknown_845AA44[] = INCBIN_U16("graphics/union_room_chat/unk_845AA44.gbapal"); @@ -188,6 +207,30 @@ const struct Unk845AABC gUnknown_845AABC[] = { {20, sub_812A3D0} }; +const struct Unk845AB64 gUnknown_845AB64[] = { + {gText_QuitChatting, 1, 0, 0, 1, 2, 0, 0}, + {gText_RegisterTextWhere, 1, 0, 0, 1, 2, 0, 0}, + {gText_RegisterTextHere, 1, 0, 0, 1, 2, 0, 0}, + {gText_InputText, 1, 0, 0, 1, 2, 0, 0}, + {gText_ExitingTheChat, 2, 0, 0, 1, 2, 0, 0}, + {gText_LeaderHasLeftEndingChat, 2, 0, 0, 0, 2, 1, 0}, + {gText_RegisteredTextChanged_OKtoSave, 2, 0, 0, 1, 2, 0, 1}, + {gText_RegisteredTextChanged_AlreadySavedFile, 2, 0, 0, 1, 2, 0, 1}, + {gText_RegisteredTextChanged_SavingDontTurnOff, 2, 0, 0, 1, 2, 0, 1}, + {gText_RegisteredTextChanged_SavedTheGame, 2, 0, 0, 1, 2, 1, 1}, + {gText_IfLeaderLeavesChatWillEnd, 2, 0, 0, 1, 2, 0, 1} +}; + +const u8 gText_Ellipsis[] = _("…"); + +const struct MenuAction gUnknown_845ABEC[] = { + {gText_Upper}, + {gText_Lower}, + {gText_Symbols}, + {gText_Register2}, + {gText_Exit} +}; + bool8 sub_8129B14(void) { gUnknown_203B0E4 = Alloc(sizeof(*gUnknown_203B0E4)); @@ -654,3 +697,532 @@ bool32 sub_812A1B8(u8 *state) return TRUE; } + +bool32 sub_812A1FC(u8 *state) +{ + switch (*state) + { + case 0: + sub_812A578(4, 0); + CopyWindowToVram(gUnknown_203B0E4->unk1E, 3); + (*state)++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +bool32 sub_812A240(u8 *state) +{ + u8 *str; + + switch (*state) + { + case 0: + DynamicPlaceholderTextUtil_Reset(); + str = sub_8129814(); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, str); + sub_812A578(5, 0); + CopyWindowToVram(gUnknown_203B0E4->unk1E, 3); + (*state)++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +bool32 sub_812A294(u8 *state) +{ + switch (*state) + { + case 0: + sub_812A578(6, 0); + sub_812A424(23, 10, 1); + CopyWindowToVram(gUnknown_203B0E4->unk1E, 3); + (*state)++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +bool32 sub_812A2E4(u8 *state) +{ + switch (*state) + { + case 0: + sub_812A578(7, 0); + sub_812A424(23, 10, 1); + CopyWindowToVram(gUnknown_203B0E4->unk1E, 3); + (*state)++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +bool32 sub_812A334(u8 *state) +{ + switch (*state) + { + case 0: + sub_812A578(8, 0); + CopyWindowToVram(gUnknown_203B0E4->unk1E, 3); + (*state)++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +bool32 sub_812A378(u8 *state) +{ + switch (*state) + { + case 0: + DynamicPlaceholderTextUtil_Reset(); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName); + sub_812A578(9, 0); + CopyWindowToVram(gUnknown_203B0E4->unk1E, 3); + (*state)++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +bool32 sub_812A3D0(u8 *state) +{ + switch (*state) + { + case 0: + sub_812A578(10, 0); + sub_812A424(23, 10, 1); + CopyWindowToVram(gUnknown_203B0E4->unk1E, 3); + (*state)++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +bool32 sub_812A420(u8 *arg0) +{ + return FALSE; +} + +void sub_812A424(u8 left, u8 top, u8 initialCursorPos) +{ + struct WindowTemplate template; + template.bg = 0; + template.tilemapLeft = left; + template.tilemapTop = top; + template.width = 6; + template.height = 4; + template.paletteNum = 14; + template.baseBlock = 0x52; + gUnknown_203B0E4->unk18 = AddWindow(&template); + if (gUnknown_203B0E4->unk18 != 0xFF) + { + FillWindowPixelBuffer(gUnknown_203B0E4->unk18, PIXEL_FILL(1)); + PutWindowTilemap(gUnknown_203B0E4->unk18); + AddTextPrinterParameterized(gUnknown_203B0E4->unk18, 2, gText_Yes, 8, 2, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(gUnknown_203B0E4->unk18, 2, gText_No, 8, 16, TEXT_SPEED_FF, NULL); + DrawTextBorderOuter(gUnknown_203B0E4->unk18, 1, 13); + Menu_InitCursor(gUnknown_203B0E4->unk18, 2, 0, 2, 14, 2, initialCursorPos); + } +} + +void sub_812A51C(void) +{ + if (gUnknown_203B0E4->unk18 != 0xFF) + { + ClearStdWindowAndFrameToTransparent(gUnknown_203B0E4->unk18, FALSE); + ClearWindowTilemap(gUnknown_203B0E4->unk18); + } +} + +void sub_812A544(void) +{ + if (gUnknown_203B0E4->unk18 != 0xFF) + { + RemoveWindow(gUnknown_203B0E4->unk18); + gUnknown_203B0E4->unk18 = 0xFF; + } +} + +s8 sub_812A568(void) +{ + return Menu_ProcessInput(); +} + +void sub_812A578(int arg0, u16 arg1) +{ + const u8 *str; + int windowId; + struct WindowTemplate template; + template.bg = 0; + template.tilemapLeft = 8; + template.tilemapTop = 16; + template.width = 21; + template.height = 4; + template.paletteNum = 14; + template.baseBlock = 0x06A; + if (gUnknown_845AB64[arg0].unkA) + { + template.tilemapLeft -= 7; + template.width += 7; + } + + gUnknown_203B0E4->unk1E = AddWindow(&template); + windowId = gUnknown_203B0E4->unk1E; + if (gUnknown_203B0E4->unk1E == 0xFF) + return; + + if (gUnknown_845AB64[arg0].unk9) + { + DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_203B0E4->unk22, gUnknown_845AB64[arg0].unk0); + str = gUnknown_203B0E4->unk22; + } + else + { + str = gUnknown_845AB64[arg0].unk0; + } + + ChangeBgY(0, arg1 * 256, 0); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); + PutWindowTilemap(windowId); + if (gUnknown_845AB64[arg0].unk4 == 1) + { + DrawTextBorderInner(windowId, 0xA, 2); + AddTextPrinterParameterized5( + windowId, + 2, + str, + gUnknown_845AB64[arg0].unk5 + 8, + gUnknown_845AB64[arg0].unk6 + 8, + TEXT_SPEED_FF, + NULL, + gUnknown_845AB64[arg0].unk7, + gUnknown_845AB64[arg0].unk8); + } + else + { + DrawTextBorderOuter(windowId, 0xA, 2); + AddTextPrinterParameterized5( + windowId, + 2, + str, + gUnknown_845AB64[arg0].unk5, + gUnknown_845AB64[arg0].unk6, + TEXT_SPEED_FF, + NULL, + gUnknown_845AB64[arg0].unk7, + gUnknown_845AB64[arg0].unk8); + } + + gUnknown_203B0E4->unk1E = windowId; +} + +void sub_812A6F4(void) +{ + if (gUnknown_203B0E4->unk1E != 0xFF) + { + ClearStdWindowAndFrameToTransparent(gUnknown_203B0E4->unk1E, FALSE); + ClearWindowTilemap(gUnknown_203B0E4->unk1E); + } + + ChangeBgY(0, 0, 0); +} + +void sub_812A728(void) +{ + if (gUnknown_203B0E4->unk1E != 0xFF) + { + RemoveWindow(gUnknown_203B0E4->unk1E); + gUnknown_203B0E4->unk1E = 0xFF; + } +} + +void sub_812A74C(u16 x, u16 width, u8 fillValue) +{ + FillWindowPixelRect(1, fillValue, x * 8, 1, width * 8, 14); +} + +void sub_812A778(u16 x, u8 *str, u8 fillValue, u8 arg3, u8 arg4) +{ + u8 *str2; + u8 sp[38]; + if (fillValue) + sub_812A74C(x, sub_81297DC() - x, fillValue); + + sp[0] = fillValue; + sp[1] = arg3; + sp[2] = arg4; + str2 = &sp[4]; + str2[0] = EXT_CTRL_CODE_BEGIN; + str2[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING; + str2[2] = 8; + StringCopy(&str2[3], str); + AddTextPrinterParameterized3(1, 2, x * 8, 1, sp, TEXT_SPEED_FF, str2); +} + +void sub_812A804(void) +{ + u8 page; + int i; + int var1; + u16 left; + u16 top; + u8 sp[52]; + u8 *str; + u8 *str2; + + FillWindowPixelBuffer(2, PIXEL_FILL(15)); + page = GetCurrentKeyboardPage(); + sp[0] = 0; + sp[1] = 14; + sp[2] = 13; + if (page != UNION_ROOM_KB_PAGE_COUNT) + { + str = &sp[4]; + str[0] = EXT_CTRL_CODE_BEGIN; + str[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING; + var1 = 8; + str[2] = var1; + left = var1; + if (page == UNION_ROOM_KB_PAGE_EMOJI) + left = 6; + + for (i = 0, top = 0; i < UNION_ROOM_KB_ROW_COUNT; i++, top += 12) + { + if (!gUnionRoomKeyboardText[page][i]) + return; + + StringCopy(&sp[7], gUnionRoomKeyboardText[page][i]); + AddTextPrinterParameterized3(2, 0, left, top, sp, TEXT_SPEED_FF, &sp[4]); + } + } + else + { + left = 4; + for (i = 0, top = 0; i < 10; i++, top += 12) + { + str2 = sub_81294B0(i); + if (GetStringWidth(0, str2, 0) <= 40) + { + AddTextPrinterParameterized3(2, 0, left, top, sp, TEXT_SPEED_FF, str2); + } + else + { + int length = StringLength_Multibyte(str2); + do + { + length--; + StringCopyN_Multibyte(&sp[4], str2, length); + } while (GetStringWidth(0, &sp[4], 0) > 35); + + AddTextPrinterParameterized3(2, 0, left, top, sp, TEXT_SPEED_FF, &sp[4]); + AddTextPrinterParameterized3(2, 0, left + 35, top, sp, TEXT_SPEED_FF, gText_Ellipsis); + } + } + } +} + +bool32 sub_812A980(void) +{ + if (gUnknown_203B0E4->unk20 < 56) + { + gUnknown_203B0E4->unk20 += 12; + if (gUnknown_203B0E4->unk20 >= 56) + gUnknown_203B0E4->unk20 = 56; + + if (gUnknown_203B0E4->unk20 < 56) + { + sub_812ADA0(gUnknown_203B0E4->unk20); + return TRUE; + } + } + + sub_812ADF8(gUnknown_203B0E4->unk20); + return FALSE; +} + +bool32 sub_812A9C8(void) +{ + if (gUnknown_203B0E4->unk20 > 0) + { + gUnknown_203B0E4->unk20 -= 12; + if (gUnknown_203B0E4->unk20 <= 0) + gUnknown_203B0E4->unk20 = 0; + + if (gUnknown_203B0E4->unk20 > 0) + { + sub_812ADA0(gUnknown_203B0E4->unk20); + return TRUE; + } + } + + sub_812ADF8(gUnknown_203B0E4->unk20); + return FALSE; +} + +void sub_812AA10(void) +{ + FillWindowPixelBuffer(3, PIXEL_FILL(1)); + DrawTextBorderOuter(3, 1, 13); + UnionRoomAndTradeMenuPrintOptions(3, 2, 14, 5, gUnknown_845ABEC); + Menu_InitCursor(3, 2, 0, 0, 14, 5, GetCurrentKeyboardPage()); + PutWindowTilemap(3); +} + +void sub_812AA64(void) +{ + ClearStdWindowAndFrameToTransparent(3, FALSE); + ClearWindowTilemap(3); +} + +void sub_812AA78(u16 row, u8 *str, u8 arg2) +{ + u8 color[3]; + color[0] = 1; + color[1] = arg2 * 2 + 2; + color[2] = arg2 * 2 + 3; + FillWindowPixelRect(0, PIXEL_FILL(1), 0, row * 15, 168, 15); + AddTextPrinterParameterized3(0, 2, 0, row * 15, color, TEXT_SPEED_FF, str); +} + +void sub_812AAD4(void) +{ + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJWIN_ON); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(64, 240)); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 144)); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | WININ_WIN0_BG2 | WININ_WIN0_BG3 + | WININ_WIN0_OBJ | WININ_WIN0_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); +} + +void sub_812AB8C(void) +{ + SetBgTilemapBuffer(0, gUnknown_203B0E4->unk128); + SetBgTilemapBuffer(1, gUnknown_203B0E4->unk928); + SetBgTilemapBuffer(3, gUnknown_203B0E4->unk1128); + SetBgTilemapBuffer(2, gUnknown_203B0E4->unk1928); +} + +void sub_812ABD8(void) +{ + RequestDma3Fill(0, (void *)BG_CHAR_ADDR(0), 0x20, 1); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); + CopyBgTilemapBufferToVram(0); +} + +void sub_812AC08(void) +{ + LoadPalette(gUnknown_8EAA9F0, 0x70, 0x20); + LoadPalette(gUnknown_845AA24, 0xC0, 0x20); + DecompressAndCopyTileDataToVram(1, gUnknown_8EAAA10, 0, 0, 0); + CopyToBgTilemapBuffer(1, gUnknown_8EAAA6C, 0, 0); + CopyBgTilemapBufferToVram(1); +} + +void sub_812AC58(void) +{ + u8 *ptr; + + LoadPalette(gLinkMiscMenu_Pal, 0, 0x20); + ptr = DecompressAndCopyTileDataToVram(2, gLinkMiscMenu_Gfx, 0, 0, 0); + CopyToBgTilemapBuffer(2, gLinkMiscMenu_Tilemap, 0, 0); + CopyBgTilemapBufferToVram(2); +} + +void sub_812AC9C(void) +{ + LoadPalette(gUnknown_845AA44, 0x80, 0x20); + RequestDma3Fill(0, (void *)BG_CHAR_ADDR(1) + 0x20, 0x20, 1); +} + +void sub_812ACC0(void) +{ + LoadPalette(gUnknown_845AA64, 0xF0, 0x20); + PutWindowTilemap(0); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + CopyWindowToVram(0, 3); +} + +void sub_812ACEC(void) +{ + PutWindowTilemap(2); + sub_812A804(); + CopyWindowToVram(2, 3); +} + +void sub_812AD04(void) +{ + FillWindowPixelBuffer(1, PIXEL_FILL(0)); + PutWindowTilemap(1); + CopyWindowToVram(1, 3); +} + +void sub_812AD20(void) +{ + FillWindowPixelBuffer(3, PIXEL_FILL(1)); + TextWindow_SetUserSelectedFrame(3, 1, 0xD0); + TextWindow_SetStdFrame0_WithPal(3, 0xA, 0x20); + LoadPalette(gTMCaseMainWindowPalette, 0xE0, 0x20); +} + +void sub_812AD50(void) +{ + struct ScanlineEffectParams params; + params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + params.dmaDest = ®_BG1HOFS; + params.initState = 1; + params.unused9 = 0; + gUnknown_203B0E4->unk20 = 0; + CpuFastFill(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers)); + ScanlineEffect_SetParams(params); +} + +void sub_812ADA0(s16 arg0) +{ + CpuFill16(arg0, gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], 0x120); + CpuFill16(0, gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer] + 0x90, 0x20); +} + +void sub_812ADF8(s16 arg0) +{ + CpuFill16(arg0, gScanlineEffectRegBuffers[0], 0x120); + CpuFill16(0, gScanlineEffectRegBuffers[0] + 0x90, 0x20); + CpuFill16(arg0, gScanlineEffectRegBuffers[0] + 0x3C0, 0x120); + CpuFill16(0, gScanlineEffectRegBuffers[0] + 0x450, 0x20); +} |