diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-03-10 11:32:18 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-03-10 11:32:18 -0400 |
commit | 9aa9c22a7f73afa710c26144a0a4da50b7cdadf9 (patch) | |
tree | 79edbb6b9ee86cd670e02768bbb817eec9734c9d | |
parent | 98d63a5268258a7f83ee776300dd4a664ad45f59 (diff) |
Finish naming_screen
-rw-r--r-- | asm/naming_screen.s | 1651 | ||||
-rw-r--r-- | data/data_8479668.s | 24 | ||||
-rw-r--r-- | data/naming_screen.s | 254 | ||||
-rw-r--r-- | include/data_8479668.h | 13 | ||||
-rw-r--r-- | include/graphics.h | 16 | ||||
-rw-r--r-- | include/strings.h | 8 | ||||
-rw-r--r-- | src/graphics.c | 4 | ||||
-rw-r--r-- | src/naming_screen.c | 1117 | ||||
-rw-r--r-- | src/strings.c | 12 | ||||
-rw-r--r-- | sym_ewram.txt | 6 |
10 files changed, 1155 insertions, 1950 deletions
diff --git a/asm/naming_screen.s b/asm/naming_screen.s deleted file mode 100644 index f3931d1fe..000000000 --- a/asm/naming_screen.s +++ /dev/null @@ -1,1651 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start HandleKeyboardEvent -HandleKeyboardEvent: @ 809F0CC - push {r4,r5,lr} - bl GetInputEvent - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl GetKeyRoleAtCursorPos - lsls r0, 24 - lsrs r0, 24 - cmp r4, 0x8 - bne _0809F0EA - bl sub_809F1F0 - b _0809F106 -_0809F0EA: - cmp r4, 0x6 - bne _0809F0F4 - bl sub_809F700 - b _0809F114 -_0809F0F4: - cmp r5, 0x9 - beq _0809F110 - ldr r1, _0809F10C @ =gUnknown_83E23D0 - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 -_0809F106: - lsls r0, 24 - lsrs r0, 24 - b _0809F116 - .align 2, 0 -_0809F10C: .4byte gUnknown_83E23D0 -_0809F110: - bl MoveCursorToOKButton -_0809F114: - movs r0, 0 -_0809F116: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end HandleKeyboardEvent - - thumb_func_start sub_809F11C -sub_809F11C: @ 809F11C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl sub_809E518 - cmp r4, 0x5 - bne _0809F156 - bl sub_809F75C - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_809EAA8 - cmp r4, 0 - beq _0809F156 - movs r0, 0 - bl SetInputState - ldr r0, _0809F160 @ =gNamingScreenData - ldr r0, [r0] - ldr r1, _0809F164 @ =0x00001e10 - adds r0, r1 - movs r1, 0x3 - strb r1, [r0] -_0809F156: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0809F160: .4byte gNamingScreenData -_0809F164: .4byte 0x00001e10 - thumb_func_end sub_809F11C - - thumb_func_start KeyboardKeyHandler_Page -KeyboardKeyHandler_Page: @ 809F168 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_809E518 - cmp r4, 0x5 - beq _0809F182 - movs r0, 0 - b _0809F18A -_0809F182: - bl sub_809F1F0 - lsls r0, 24 - lsrs r0, 24 -_0809F18A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end KeyboardKeyHandler_Page - - thumb_func_start KeyboardKeyHandler_Backspace -KeyboardKeyHandler_Backspace: @ 809F190 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl sub_809E518 - cmp r4, 0x5 - bne _0809F1AA - bl sub_809F700 -_0809F1AA: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end KeyboardKeyHandler_Backspace - - thumb_func_start KeyboardKeyHandler_OK -KeyboardKeyHandler_OK: @ 809F1B4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl sub_809E518 - cmp r4, 0x5 - beq _0809F1CE - movs r0, 0 - b _0809F1E2 -_0809F1CE: - movs r0, 0x5 - bl PlaySE - ldr r0, _0809F1E8 @ =gNamingScreenData - ldr r0, [r0] - ldr r1, _0809F1EC @ =0x00001e10 - adds r0, r1 - movs r1, 0x6 - strb r1, [r0] - movs r0, 0x1 -_0809F1E2: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0809F1E8: .4byte gNamingScreenData -_0809F1EC: .4byte 0x00001e10 - thumb_func_end KeyboardKeyHandler_OK - - thumb_func_start sub_809F1F0 -sub_809F1F0: @ 809F1F0 - ldr r0, _0809F200 @ =gNamingScreenData - ldr r0, [r0] - ldr r1, _0809F204 @ =0x00001e10 - adds r0, r1 - movs r1, 0x4 - strb r1, [r0] - movs r0, 0x1 - bx lr - .align 2, 0 -_0809F200: .4byte gNamingScreenData -_0809F204: .4byte 0x00001e10 - thumb_func_end sub_809F1F0 - - thumb_func_start InputInit -InputInit: @ 809F208 - push {lr} - ldr r0, _0809F218 @ =sub_809F26C - movs r1, 0x1 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0809F218: .4byte sub_809F26C - thumb_func_end InputInit - - thumb_func_start GetInputEvent -GetInputEvent: @ 809F21C - push {lr} - ldr r0, _0809F238 @ =sub_809F26C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0809F23C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0xA] - pop {r1} - bx r1 - .align 2, 0 -_0809F238: .4byte sub_809F26C -_0809F23C: .4byte gTasks - thumb_func_end GetInputEvent - - thumb_func_start SetInputState -SetInputState: @ 809F240 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0809F264 @ =sub_809F26C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0809F268 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809F264: .4byte sub_809F26C -_0809F268: .4byte gTasks - thumb_func_end SetInputState - - thumb_func_start sub_809F26C -sub_809F26C: @ 809F26C - push {lr} - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0809F294 @ =gUnknown_83E23E0 - ldr r2, _0809F298 @ =gTasks - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r2, 0x8 - ldrsh r1, [r0, r2] - lsls r1, 2 - adds r1, r3 - ldr r1, [r1] - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_0809F294: .4byte gUnknown_83E23E0 -_0809F298: .4byte gTasks - thumb_func_end sub_809F26C - - thumb_func_start InputState_Disabled -InputState_Disabled: @ 809F29C - movs r1, 0 - strh r1, [r0, 0xA] - bx lr - thumb_func_end InputState_Disabled - - thumb_func_start InputState_Enabled -InputState_Enabled: @ 809F2A4 - push {lr} - adds r2, r0, 0 - movs r0, 0 - strh r0, [r2, 0xA] - ldr r0, _0809F2C0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809F2C4 - movs r0, 0x5 - strh r0, [r2, 0xA] - b _0809F2F4 - .align 2, 0 -_0809F2C0: .4byte gMain -_0809F2C4: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809F2D2 - movs r0, 0x6 - strh r0, [r2, 0xA] - b _0809F2F4 -_0809F2D2: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0809F2E0 - movs r0, 0x8 - strh r0, [r2, 0xA] - b _0809F2F4 -_0809F2E0: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0809F2EE - movs r0, 0x9 - strh r0, [r2, 0xA] - b _0809F2F4 -_0809F2EE: - adds r0, r2, 0 - bl sub_809F2F8 -_0809F2F4: - pop {r0} - bx r0 - thumb_func_end InputState_Enabled - - thumb_func_start sub_809F2F8 -sub_809F2F8: @ 809F2F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - mov r9, r0 - ldr r1, _0809F3E4 @ =gUnknown_83E23E8 - mov r0, sp - movs r2, 0xA - bl memcpy - add r0, sp, 0xC - mov r10, r0 - ldr r1, _0809F3E8 @ =gUnknown_83E23F2 - movs r2, 0xA - bl memcpy - mov r1, sp - adds r1, 0x18 - str r1, [sp, 0x2C] - ldr r1, _0809F3EC @ =gUnknown_83E23FC - ldr r0, [sp, 0x2C] - movs r2, 0x8 - bl memcpy - mov r2, sp - adds r2, 0x20 - str r2, [sp, 0x30] - ldr r1, _0809F3F0 @ =gUnknown_83E2404 - adds r0, r2, 0 - movs r2, 0x6 - bl memcpy - add r4, sp, 0x28 - mov r5, sp - adds r5, 0x2A - adds r0, r4, 0 - adds r1, r5, 0 - bl GetCursorPos - ldr r0, _0809F3F4 @ =gMain - ldrh r2, [r0, 0x30] - movs r0, 0x40 - ands r0, r2 - lsls r0, 16 - lsrs r0, 16 - negs r0, r0 - lsrs r1, r0, 31 - movs r0, 0x80 - ands r0, r2 - adds r6, r4, 0 - cmp r0, 0 - beq _0809F366 - movs r1, 0x2 -_0809F366: - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - beq _0809F370 - movs r1, 0x3 -_0809F370: - movs r0, 0x10 - ands r0, r2 - cmp r0, 0 - beq _0809F37A - movs r1, 0x4 -_0809F37A: - ldrh r0, [r6] - mov r8, r0 - lsls r1, 1 - mov r2, sp - adds r7, r2, r1 - ldrh r0, [r7] - add r0, r8 - strh r0, [r6] - add r1, r10 - ldrh r0, [r1] - ldrh r1, [r5] - adds r0, r1 - strh r0, [r5] - movs r2, 0 - ldrsh r0, [r6, r2] - cmp r0, 0 - bge _0809F3A6 - bl GetCurrentPageColumnCount - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6] -_0809F3A6: - movs r0, 0 - ldrsh r4, [r6, r0] - bl GetCurrentPageColumnCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - ble _0809F3BA - movs r0, 0 - strh r0, [r6] -_0809F3BA: - movs r1, 0 - ldrsh r0, [r7, r1] - cmp r0, 0 - beq _0809F426 - movs r2, 0 - ldrsh r4, [r6, r2] - bl GetCurrentPageColumnCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _0809F3F8 - ldrh r0, [r5] - mov r1, r9 - strh r0, [r1, 0xC] - movs r2, 0 - ldrsh r0, [r5, r2] - lsls r0, 1 - ldr r1, [sp, 0x2C] - adds r0, r1, r0 - b _0809F422 - .align 2, 0 -_0809F3E4: .4byte gUnknown_83E23E8 -_0809F3E8: .4byte gUnknown_83E23F2 -_0809F3EC: .4byte gUnknown_83E23FC -_0809F3F0: .4byte gUnknown_83E2404 -_0809F3F4: .4byte gMain -_0809F3F8: - mov r2, r8 - lsls r4, r2, 16 - asrs r4, 16 - bl GetCurrentPageColumnCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _0809F426 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _0809F418 - mov r2, r9 - ldrh r0, [r2, 0xC] - b _0809F424 -_0809F418: - movs r1, 0 - ldrsh r0, [r5, r1] - lsls r0, 1 - ldr r2, [sp, 0x30] - adds r0, r2, r0 -_0809F422: - ldrh r0, [r0] -_0809F424: - strh r0, [r5] -_0809F426: - movs r0, 0 - ldrsh r4, [r6, r0] - bl GetCurrentPageColumnCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _0809F468 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - bge _0809F442 - movs r0, 0x2 - strh r0, [r5] -_0809F442: - movs r2, 0 - ldrsh r0, [r5, r2] - cmp r0, 0x2 - ble _0809F44E - movs r0, 0 - strh r0, [r5] -_0809F44E: - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0809F45E - movs r0, 0x1 - mov r2, r9 - strh r0, [r2, 0xC] - b _0809F480 -_0809F45E: - cmp r0, 0x2 - bne _0809F480 - mov r1, r9 - strh r0, [r1, 0xC] - b _0809F480 -_0809F468: - movs r2, 0 - ldrsh r0, [r5, r2] - cmp r0, 0 - bge _0809F474 - movs r0, 0x3 - strh r0, [r5] -_0809F474: - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0x3 - ble _0809F480 - movs r0, 0 - strh r0, [r5] -_0809F480: - movs r2, 0 - ldrsh r0, [r6, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl SetCursorPos - 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_809F2F8 - - thumb_func_start sub_809F49C -sub_809F49C: @ 809F49C - push {r4,r5,lr} - sub sp, 0xC - ldr r5, _0809F4E4 @ =gNamingScreenData - ldr r0, [r5] - ldr r4, _0809F4E8 @ =0x00001e14 - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r1, [r5] - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _0809F4EC @ =0x00001e28 - adds r1, r2 - ldr r1, [r1] - ldr r2, [r1, 0x8] - movs r1, 0x1 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x1 - bl AddTextPrinterParameterized - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl PutWindowTilemap - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809F4E4: .4byte gNamingScreenData -_0809F4E8: .4byte 0x00001e14 -_0809F4EC: .4byte 0x00001e28 - thumb_func_end sub_809F49C - - thumb_func_start sub_809F4F0 -sub_809F4F0: @ 809F4F0 - push {r4,r5,lr} - sub sp, 0x2C - ldr r5, _0809F558 @ =gNamingScreenData - ldr r0, [r5] - ldr r1, _0809F55C @ =0x00001e34 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0xB - muls r1, r0 - ldr r0, _0809F560 @ =gSpeciesNames - adds r1, r0 - add r0, sp, 0xC - bl StringCopy - ldr r0, [r5] - ldr r1, _0809F564 @ =0x00001e28 - adds r0, r1 - ldr r0, [r0] - ldr r1, [r0, 0x8] - add r0, sp, 0xC - movs r2, 0xF - bl StringAppendN - ldr r0, [r5] - ldr r4, _0809F568 @ =0x00001e14 - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x1 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x1 - add r2, sp, 0xC - movs r3, 0x1 - bl AddTextPrinterParameterized - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl PutWindowTilemap - add sp, 0x2C - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809F558: .4byte gNamingScreenData -_0809F55C: .4byte 0x00001e34 -_0809F560: .4byte gSpeciesNames -_0809F564: .4byte 0x00001e28 -_0809F568: .4byte 0x00001e14 - thumb_func_end sub_809F4F0 - - thumb_func_start sub_809F56C -sub_809F56C: @ 809F56C - push {lr} - ldr r1, _0809F588 @ =gUnknown_83E240C - ldr r0, _0809F58C @ =gNamingScreenData - ldr r0, [r0] - ldr r2, _0809F590 @ =0x00001e2c - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - pop {r0} - bx r0 - .align 2, 0 -_0809F588: .4byte gUnknown_83E240C -_0809F58C: .4byte gNamingScreenData -_0809F590: .4byte 0x00001e2c - thumb_func_end sub_809F56C - - thumb_func_start sub_809F594 -sub_809F594: @ 809F594 - push {lr} - ldr r1, _0809F5B4 @ =gUnknown_83E2420 - ldr r0, _0809F5B8 @ =gNamingScreenData - ldr r0, [r0] - ldr r2, _0809F5BC @ =0x00001e28 - adds r0, r2 - ldr r0, [r0] - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - pop {r0} - bx r0 - .align 2, 0 -_0809F5B4: .4byte gUnknown_83E2420 -_0809F5B8: .4byte gNamingScreenData -_0809F5BC: .4byte 0x00001e28 - thumb_func_end sub_809F594 - - thumb_func_start nullsub_55 -nullsub_55: @ 809F5C0 - bx lr - thumb_func_end nullsub_55 - - thumb_func_start sub_809F5C4 -sub_809F5C4: @ 809F5C4 - push {r4,r5,lr} - sub sp, 0x10 - movs r4, 0 - ldr r1, _0809F61C @ =gText_MaleSymbol - add r0, sp, 0xC - bl StringCopy - ldr r5, _0809F620 @ =gNamingScreenData - ldr r0, [r5] - ldr r1, _0809F624 @ =0x00001e36 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0xFF - beq _0809F614 - cmp r0, 0xFE - bne _0809F5EE - ldr r1, _0809F628 @ =gText_FemaleSymbol - add r0, sp, 0xC - bl StringCopy - movs r4, 0x1 -_0809F5EE: - ldr r0, [r5] - ldr r1, _0809F62C @ =0x00001e13 - adds r0, r1 - ldrb r0, [r0] - lsls r1, r4, 1 - adds r1, r4 - ldr r2, _0809F630 @ =gUnknown_83E2428 - adds r1, r2 - str r1, [sp] - movs r1, 0x1 - negs r1, r1 - str r1, [sp, 0x4] - add r1, sp, 0xC - str r1, [sp, 0x8] - movs r1, 0x2 - movs r2, 0x68 - movs r3, 0x1 - bl AddTextPrinterParameterized3 -_0809F614: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809F61C: .4byte gText_MaleSymbol -_0809F620: .4byte gNamingScreenData -_0809F624: .4byte 0x00001e36 -_0809F628: .4byte gText_FemaleSymbol -_0809F62C: .4byte 0x00001e13 -_0809F630: .4byte gUnknown_83E2428 - thumb_func_end sub_809F5C4 - - thumb_func_start sub_809F634 -sub_809F634: @ 809F634 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - ldr r6, _0809F664 @ =gUnknown_83E22D0 - bl sub_809DE50 - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 13 - adds r4, r5 - lsls r0, 24 - lsrs r0, 19 - adds r4, r0 - adds r4, r6 - ldrb r0, [r4] - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809F664: .4byte gUnknown_83E22D0 - thumb_func_end sub_809F634 - - thumb_func_start GetTextCaretPosition -GetTextCaretPosition: @ 809F668 - push {r4,r5,lr} - movs r2, 0 - ldr r0, _0809F690 @ =gNamingScreenData - ldr r4, [r0] - ldr r3, _0809F694 @ =0x00001e28 - adds r1, r4, r3 - ldr r1, [r1] - ldrb r3, [r1, 0x1] - adds r5, r0, 0 - cmp r2, r3 - bcs _0809F6A2 - movs r0, 0xC0 - lsls r0, 5 - adds r1, r4, r0 -_0809F684: - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0xFF - bne _0809F698 - adds r0, r2, 0 - b _0809F6B2 - .align 2, 0 -_0809F690: .4byte gNamingScreenData -_0809F694: .4byte 0x00001e28 -_0809F698: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r3 - bcc _0809F684 -_0809F6A2: - ldr r0, [r5] - ldr r1, _0809F6B8 @ =0x00001e28 - adds r0, r1 - ldr r0, [r0] - ldrb r0, [r0, 0x1] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 -_0809F6B2: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0809F6B8: .4byte 0x00001e28 - thumb_func_end GetTextCaretPosition - - thumb_func_start sub_809F6BC -sub_809F6BC: @ 809F6BC - push {lr} - ldr r0, _0809F6E8 @ =gNamingScreenData - ldr r2, [r0] - ldr r1, _0809F6EC @ =0x00001e28 - adds r0, r2, r1 - ldr r0, [r0] - ldrb r0, [r0, 0x1] - subs r0, 0x1 - lsls r1, r0, 24 - cmp r1, 0 - ble _0809F6F8 - movs r0, 0xC0 - lsls r0, 5 - adds r3, r2, r0 -_0809F6D8: - asrs r2, r1, 24 - adds r0, r3, r2 - ldrb r0, [r0] - cmp r0, 0xFF - beq _0809F6F0 - lsrs r0, r1, 24 - b _0809F6FA - .align 2, 0 -_0809F6E8: .4byte gNamingScreenData -_0809F6EC: .4byte 0x00001e28 -_0809F6F0: - subs r0, r2, 0x1 - lsls r1, r0, 24 - cmp r1, 0 - bgt _0809F6D8 -_0809F6F8: - movs r0, 0 -_0809F6FA: - pop {r1} - bx r1 - thumb_func_end sub_809F6BC - - thumb_func_start sub_809F700 -sub_809F700: @ 809F700 - push {r4-r6,lr} - bl sub_809F6BC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r6, _0809F758 @ =gNamingScreenData - ldr r0, [r6] - movs r5, 0xC0 - lsls r5, 5 - adds r0, r5 - adds r0, r4 - movs r1, 0 - strb r1, [r0] - bl sub_809F914 - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - ldr r0, [r6] - adds r0, r5 - adds r0, r4 - movs r1, 0xFF - strb r1, [r0] - bl GetKeyRoleAtCursorPos - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0809F740 - cmp r0, 0x2 - bne _0809F74A -_0809F740: - movs r0, 0x1 - movs r1, 0 - movs r2, 0x1 - bl sub_809E518 -_0809F74A: - movs r0, 0x17 - bl PlaySE - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809F758: .4byte gNamingScreenData - thumb_func_end sub_809F700 - - thumb_func_start sub_809F75C -sub_809F75C: @ 809F75C - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetCursorPos - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl sub_809F634 - lsls r0, 24 - lsrs r0, 24 - bl sub_809F7C4 - bl sub_809F914 - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - movs r0, 0x5 - bl PlaySE - bl sub_809F6BC - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0809F7B0 @ =gNamingScreenData - ldr r1, [r1] - ldr r2, _0809F7B4 @ =0x00001e28 - adds r1, r2 - ldr r1, [r1] - ldrb r1, [r1, 0x1] - subs r1, 0x1 - cmp r0, r1 - bne _0809F7B8 - movs r0, 0x1 - b _0809F7BA - .align 2, 0 -_0809F7B0: .4byte gNamingScreenData -_0809F7B4: .4byte 0x00001e28 -_0809F7B8: - movs r0, 0 -_0809F7BA: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809F75C - - thumb_func_start sub_809F7C4 -sub_809F7C4: @ 809F7C4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl GetTextCaretPosition - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0809F7E8 @ =gNamingScreenData - ldr r1, [r1] - movs r2, 0xC0 - lsls r2, 5 - adds r1, r2 - adds r1, r0 - strb r4, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809F7E8: .4byte gNamingScreenData - thumb_func_end sub_809F7C4 - - thumb_func_start sub_809F7EC -sub_809F7EC: @ 809F7EC - push {r4,r5,lr} - movs r2, 0 - ldr r1, _0809F800 @ =gNamingScreenData - ldr r0, [r1] - ldr r4, _0809F804 @ =0x00001e28 - adds r0, r4 - ldr r0, [r0] - adds r5, r1, 0 - b _0809F84C - .align 2, 0 -_0809F800: .4byte gNamingScreenData -_0809F804: .4byte 0x00001e28 -_0809F808: - ldr r1, [r1] - movs r0, 0xC0 - lsls r0, 5 - adds r3, r1, r0 - adds r0, r3, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0809F83C - cmp r0, 0xFF - beq _0809F83C - ldr r2, _0809F838 @ =0x00001e30 - adds r0, r1, r2 - ldr r0, [r0] - adds r1, r4 - ldr r1, [r1] - ldrb r2, [r1, 0x1] - adds r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - adds r1, r3, 0 - bl StringCopyN - b _0809F852 - .align 2, 0 -_0809F838: .4byte 0x00001e30 -_0809F83C: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - adds r1, r5, 0 - ldr r0, [r1] - ldr r4, _0809F858 @ =0x00001e28 - adds r0, r4 - ldr r0, [r0] -_0809F84C: - ldrb r0, [r0, 0x1] - cmp r2, r0 - bcc _0809F808 -_0809F852: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809F858: .4byte 0x00001e28 - thumb_func_end sub_809F7EC - - thumb_func_start choose_name_or_words_screen_load_bg_tile_patterns -choose_name_or_words_screen_load_bg_tile_patterns: @ 809F85C - push {r4-r6,lr} - ldr r0, _0809F8AC @ =gUnknown_8E980E4 - ldr r6, _0809F8B0 @ =gNamingScreenData - ldr r1, [r6] - ldr r4, _0809F8B4 @ =0x00001810 - adds r1, r4 - bl LZ77UnCompWram - ldr r1, [r6] - adds r1, r4 - movs r5, 0xC0 - lsls r5, 3 - movs r0, 0x1 - adds r2, r5, 0 - movs r3, 0 - bl LoadBgTiles - ldr r1, [r6] - adds r1, r4 - movs r0, 0x2 - adds r2, r5, 0 - movs r3, 0 - bl LoadBgTiles - ldr r1, [r6] - adds r1, r4 - movs r0, 0x3 - adds r2, r5, 0 - movs r3, 0 - bl LoadBgTiles - ldr r0, _0809F8B8 @ =gUnknown_83E267C - bl LoadSpriteSheets - ldr r0, _0809F8BC @ =gUnknown_83E26E4 - bl LoadSpritePalettes - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809F8AC: .4byte gUnknown_8E980E4 -_0809F8B0: .4byte gNamingScreenData -_0809F8B4: .4byte 0x00001810 -_0809F8B8: .4byte gUnknown_83E267C -_0809F8BC: .4byte gUnknown_83E26E4 - thumb_func_end choose_name_or_words_screen_load_bg_tile_patterns - - thumb_func_start sub_809F8C0 -sub_809F8C0: @ 809F8C0 - push {lr} - bl InputInit - bl sub_809E4F0 - pop {r0} - bx r0 - thumb_func_end sub_809F8C0 - - thumb_func_start choose_name_or_words_screen_apply_bg_pals -choose_name_or_words_screen_apply_bg_pals: @ 809F8D0 - push {lr} - ldr r0, _0809F8F8 @ =gUnknown_8E98024 - movs r1, 0 - movs r2, 0xC0 - bl LoadPalette - ldr r0, _0809F8FC @ =gUnknown_8E97FE4 - movs r1, 0xA0 - movs r2, 0x20 - bl LoadPalette - movs r0, 0x2 - bl stdpal_get - movs r1, 0xB0 - movs r2, 0x20 - bl LoadPalette - pop {r0} - bx r0 - .align 2, 0 -_0809F8F8: .4byte gUnknown_8E98024 -_0809F8FC: .4byte gUnknown_8E97FE4 - thumb_func_end choose_name_or_words_screen_apply_bg_pals - - thumb_func_start sub_809F900 -sub_809F900: @ 809F900 - push {lr} - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - pop {r0} - bx r0 - thumb_func_end sub_809F900 - - thumb_func_start sub_809F914 -sub_809F914: @ 809F914 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - ldr r7, _0809F9D8 @ =gNamingScreenData - ldr r1, [r7] - ldr r2, _0809F9DC @ =0x00001e28 - adds r0, r1, r2 - ldr r0, [r0] - ldrb r6, [r0, 0x1] - subs r2, 0x12 - adds r0, r1, r2 - ldrh r0, [r0] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - ldr r0, _0809F9E0 @ =0x00001e13 - adds r1, r0 - ldrb r0, [r1] - movs r1, 0x11 - bl FillWindowPixelBuffer - movs r4, 0 - cmp r4, r6 - bcs _0809F9AA - add r5, sp, 0xC - mov r10, r4 - ldr r0, _0809F9E4 @ =gExpandedPlaceholder_Empty - ldrb r0, [r0] - mov r8, r0 -_0809F956: - ldr r0, [r7] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - strb r0, [r5] - mov r2, r8 - strb r2, [r5, 0x1] - ldrb r0, [r5] - bl sub_809FC54 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - cmp r0, 0x1 - bne _0809F97A - movs r1, 0x2 -_0809F97A: - ldr r0, [r7] - ldr r2, _0809F9E0 @ =0x00001e13 - adds r0, r2 - ldrb r0, [r0] - lsls r3, r4, 3 - add r3, r9 - adds r3, r1 - lsls r3, 24 - lsrs r3, 24 - movs r1, 0x1 - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - mov r1, r10 - str r1, [sp, 0x8] - movs r1, 0x2 - add r2, sp, 0xC - bl AddTextPrinterParameterized - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r6 - bcc _0809F956 -_0809F9AA: - bl sub_809F594 - ldr r5, _0809F9D8 @ =gNamingScreenData - ldr r0, [r5] - ldr r4, _0809F9E0 @ =0x00001e13 - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl PutWindowTilemap - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809F9D8: .4byte gNamingScreenData -_0809F9DC: .4byte 0x00001e28 -_0809F9E0: .4byte 0x00001e13 -_0809F9E4: .4byte gExpandedPlaceholder_Empty - thumb_func_end sub_809F914 - - thumb_func_start sub_809F9E8 -sub_809F9E8: @ 809F9E8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _0809FA54 @ =gUnknown_83E243C - adds r0, r5, r0 - ldrb r1, [r0] - adds r0, r6, 0 - bl FillWindowPixelBuffer - movs r4, 0 - ldr r1, _0809FA58 @ =gUnknown_83E2440 - lsls r0, r5, 2 - adds r0, r1 - ldr r7, [r0] - ldr r0, _0809FA5C @ =gUnknown_83E264C - mov r8, r0 -_0809FA12: - lsls r3, r4, 4 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - str r7, [sp] - movs r0, 0 - str r0, [sp, 0x4] - lsls r0, r4, 2 - lsls r1, r5, 4 - adds r0, r1 - add r0, r8 - ldr r0, [r0] - str r0, [sp, 0x8] - adds r0, r6, 0 - movs r1, 0x1 - movs r2, 0 - bl AddTextPrinterParameterized3 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _0809FA12 - adds r0, r6, 0 - bl PutWindowTilemap - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809FA54: .4byte gUnknown_83E243C -_0809FA58: .4byte gUnknown_83E2440 -_0809FA5C: .4byte gUnknown_83E264C - thumb_func_end sub_809F9E8 - - thumb_func_start sub_809FA60 -sub_809FA60: @ 809FA60 - push {r4,r5,lr} - movs r0, 0xA - bl GetGpuReg - adds r4, r0, 0 - movs r5, 0x3 - ands r4, r5 - movs r0, 0xC - bl GetGpuReg - ands r0, r5 - cmp r4, r0 - bls _0809FA90 - movs r2, 0x1 - movs r5, 0x1 - ldr r1, _0809FA88 @ =gNamingScreenData - ldr r0, [r1] - ldr r3, _0809FA8C @ =0x00001e11 - b _0809FA9A - .align 2, 0 -_0809FA88: .4byte gNamingScreenData -_0809FA8C: .4byte 0x00001e11 -_0809FA90: - movs r2, 0x2 - movs r5, 0x2 - ldr r1, _0809FAD4 @ =gNamingScreenData - ldr r0, [r1] - ldr r3, _0809FAD8 @ =0x00001e12 -_0809FA9A: - adds r0, r3 - ldrb r4, [r0] - adds r0, r1, 0 - ldr r1, _0809FADC @ =gUnknown_83E244C - ldr r0, [r0] - ldr r3, _0809FAE0 @ =0x00001e22 - adds r0, r3 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r2, 0 - bl sub_809F900 - bl sub_809DE30 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_809F9E8 - adds r0, r5, 0 - bl CopyBgTilemapBufferToVram - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809FAD4: .4byte gNamingScreenData -_0809FAD8: .4byte 0x00001e12 -_0809FADC: .4byte gUnknown_83E244C -_0809FAE0: .4byte 0x00001e22 - thumb_func_end sub_809FA60 - - thumb_func_start sub_809FAE4 -sub_809FAE4: @ 809FAE4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x10 - ldr r1, _0809FB60 @ =gUnknown_83E2458 - add r0, sp, 0xC - movs r2, 0x3 - bl memcpy - ldr r0, _0809FB64 @ =gUnknown_8418E77 - mov r8, r0 - movs r0, 0 - mov r1, r8 - movs r2, 0 - bl GetStringWidth - adds r6, r0, 0 - ldr r5, _0809FB68 @ =gNamingScreenData - ldr r0, [r5] - ldr r4, _0809FB6C @ =0x00001e15 - adds r0, r4 - ldrb r0, [r0] - movs r1, 0xFF - bl FillWindowPixelBuffer - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x14 - negs r1, r1 - adds r2, r1, 0 - subs r2, r6 - lsls r2, 24 - lsrs r2, 24 - add r1, sp, 0xC - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - mov r1, r8 - str r1, [sp, 0x8] - movs r1, 0 - movs r3, 0 - bl AddTextPrinterParameterized3 - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809FB60: .4byte gUnknown_83E2458 -_0809FB64: .4byte gUnknown_8418E77 -_0809FB68: .4byte gNamingScreenData -_0809FB6C: .4byte 0x00001e15 - thumb_func_end sub_809FAE4 - - thumb_func_start sub_809FB70 -sub_809FB70: @ 809FB70 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_809FB70 - - thumb_func_start NamingScreen_TurnOffScreen -NamingScreen_TurnOffScreen: @ 809FB88 - push {lr} - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - pop {r0} - bx r0 - thumb_func_end NamingScreen_TurnOffScreen - - thumb_func_start NamingScreen_InitDisplayMode -NamingScreen_InitDisplayMode: @ 809FB9C - push {lr} - ldr r0, _0809FBA8 @ =sub_809FBAC - bl SetVBlankCallback - pop {r0} - bx r0 - .align 2, 0 -_0809FBA8: .4byte sub_809FBAC - thumb_func_end NamingScreen_InitDisplayMode - - thumb_func_start sub_809FBAC -sub_809FBAC: @ 809FBAC - push {r4,r5,lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - ldr r5, _0809FC1C @ =gNamingScreenData - ldr r0, [r5] - ldr r1, _0809FC20 @ =0x00001e18 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x16 - bl SetGpuReg - ldr r0, [r5] - ldr r1, _0809FC24 @ =0x00001e1a - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x1A - bl SetGpuReg - movs r0, 0xA - bl GetGpuReg - ldr r4, _0809FC28 @ =0x0000fffc - adds r1, r4, 0 - ands r1, r0 - movs r0, 0xA - bl SetGpuReg - ldr r0, [r5] - ldr r1, _0809FC2C @ =0x00001e1c - adds r0, r1 - ldrh r1, [r0] - movs r0, 0xA - bl SetGpuRegBits - movs r0, 0xC - bl GetGpuReg - ands r4, r0 - movs r0, 0xC - adds r1, r4, 0 - bl SetGpuReg - ldr r0, [r5] - ldr r1, _0809FC30 @ =0x00001e1e - adds r0, r1 - ldrh r1, [r0] - movs r0, 0xC - bl SetGpuRegBits - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809FC1C: .4byte gNamingScreenData -_0809FC20: .4byte 0x00001e18 -_0809FC24: .4byte 0x00001e1a -_0809FC28: .4byte 0x0000fffc -_0809FC2C: .4byte 0x00001e1c -_0809FC30: .4byte 0x00001e1e - thumb_func_end sub_809FBAC - - thumb_func_start sub_809FC34 -sub_809FC34: @ 809FC34 - push {lr} - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - pop {r0} - bx r0 - thumb_func_end sub_809FC34 - - thumb_func_start sub_809FC54 -sub_809FC54: @ 809FC54 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r2, 0 - ldr r0, _0809FC74 @ =gUnknown_8418E8A - ldrb r1, [r0] - adds r3, r0, 0 - cmp r1, 0xFF - beq _0809FC86 - adds r1, r3, 0 -_0809FC68: - adds r0, r2, r1 - ldrb r0, [r0] - cmp r4, r0 - bne _0809FC78 - movs r0, 0x1 - b _0809FC88 - .align 2, 0 -_0809FC74: .4byte gUnknown_8418E8A -_0809FC78: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0xFF - bne _0809FC68 -_0809FC86: - movs r0, 0 -_0809FC88: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809FC54 - - thumb_func_start sub_809FC90 -sub_809FC90: @ 809FC90 - push {lr} - sub sp, 0x8 - ldr r0, _0809FCB0 @ =gSaveBlock2Ptr - ldr r1, [r0] - ldrb r2, [r1, 0x8] - movs r0, 0 - str r0, [sp] - ldr r0, _0809FCB4 @ =CB2_ReturnToFieldWithOpenMenu - str r0, [sp, 0x4] - movs r0, 0 - movs r3, 0 - bl DoNamingScreen - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0809FCB0: .4byte gSaveBlock2Ptr -_0809FCB4: .4byte CB2_ReturnToFieldWithOpenMenu - thumb_func_end sub_809FC90 - - thumb_func_start sub_809FCB8 -sub_809FCB8: @ 809FCB8 - push {lr} - sub sp, 0x8 - ldr r0, _0809FCD8 @ =gSaveBlock2Ptr - ldr r1, [r0] - ldrb r2, [r1, 0x8] - movs r0, 0 - str r0, [sp] - ldr r0, _0809FCDC @ =CB2_ReturnToFieldWithOpenMenu - str r0, [sp, 0x4] - movs r0, 0x1 - movs r3, 0 - bl DoNamingScreen - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0809FCD8: .4byte gSaveBlock2Ptr -_0809FCDC: .4byte CB2_ReturnToFieldWithOpenMenu - thumb_func_end sub_809FCB8 - - thumb_func_start sub_809FCE0 -sub_809FCE0: @ 809FCE0 - push {lr} - sub sp, 0x8 - ldr r0, _0809FD00 @ =gSaveBlock2Ptr - ldr r1, [r0] - ldrb r2, [r1, 0x8] - movs r0, 0 - str r0, [sp] - ldr r0, _0809FD04 @ =CB2_ReturnToFieldWithOpenMenu - str r0, [sp, 0x4] - movs r0, 0x2 - movs r3, 0 - bl DoNamingScreen - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0809FD00: .4byte gSaveBlock2Ptr -_0809FD04: .4byte CB2_ReturnToFieldWithOpenMenu - thumb_func_end sub_809FCE0 - - thumb_func_start sub_809FD08 -sub_809FD08: @ 809FD08 - push {lr} - sub sp, 0x8 - ldr r0, _0809FD28 @ =gSaveBlock2Ptr - ldr r1, [r0] - ldrb r2, [r1, 0x8] - movs r0, 0 - str r0, [sp] - ldr r0, _0809FD2C @ =CB2_ReturnToFieldWithOpenMenu - str r0, [sp, 0x4] - movs r0, 0x3 - movs r3, 0 - bl DoNamingScreen - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0809FD28: .4byte gSaveBlock2Ptr -_0809FD2C: .4byte CB2_ReturnToFieldWithOpenMenu - thumb_func_end sub_809FD08 - - thumb_func_start sub_809FD30 -sub_809FD30: @ 809FD30 - push {lr} - sub sp, 0x8 - ldr r0, _0809FD50 @ =gSaveBlock2Ptr - ldr r1, [r0] - ldrb r2, [r1, 0x8] - movs r0, 0 - str r0, [sp] - ldr r0, _0809FD54 @ =CB2_ReturnToFieldWithOpenMenu - str r0, [sp, 0x4] - movs r0, 0x4 - movs r3, 0 - bl DoNamingScreen - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0809FD50: .4byte gSaveBlock2Ptr -_0809FD54: .4byte CB2_ReturnToFieldWithOpenMenu - thumb_func_end sub_809FD30 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/data_8479668.s b/data/data_8479668.s index 50ce06127..695d98def 100644 --- a/data/data_8479668.s +++ b/data/data_8479668.s @@ -29,40 +29,40 @@ gUnknown_847A934:: // naming_screen -gUnknown_847A955:: +gText_NamingScreenKeyboard_abcdef:: .string "{CLEAR 11}a{CLEAR 6}b{CLEAR 6}c{CLEAR 26}d{CLEAR 6}e{CLEAR 6}f{CLEAR 6} {CLEAR 26}.$" -gUnknown_847A976:: +gText_NamingScreenKeyboard_ghijkl:: .string "{CLEAR 11}g{CLEAR 6}h{CLEAR 7}i{CLEAR 27}j{CLEAR 6}k{CLEAR 6}l{CLEAR 7} {CLEAR 26},$" -gUnknown_847A997:: +gText_NamingScreenKeyboard_mnopqrs:: .string "{CLEAR 11}m{CLEAR 6}n{CLEAR 7}o{CLEAR 26}p{CLEAR 6}q{CLEAR 7}r{CLEAR 6}s{CLEAR 27} $" -gUnknown_847A9B8:: +gText_NamingScreenKeyboard_tuvwxyz:: .string "{CLEAR 12}t{CLEAR 6}u{CLEAR 6}v{CLEAR 26}w{CLEAR 6}x{CLEAR 6}y{CLEAR 6}z{CLEAR 26} $" -gUnknown_847A9D9:: +gText_NamingScreenKeyboard_ABCDEF:: .string "{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 6} {CLEAR 26}.$" -gUnknown_847A9FA:: +gText_NamingScreenKeyboard_GHIJKL:: .string "{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L{CLEAR 6} {CLEAR 26},$" -gUnknown_847AA1B:: +gText_NamingScreenKeyboard_MNOPQRS:: .string "{CLEAR 11}M{CLEAR 6}N{CLEAR 6}O{CLEAR 26}P{CLEAR 6}Q{CLEAR 6}R{CLEAR 6}S{CLEAR 26} $" -gUnknown_847AA3C:: +gText_NamingScreenKeyboard_TUVWXYZ:: .string "{CLEAR 11}T{CLEAR 6}U{CLEAR 6}V{CLEAR 26}W{CLEAR 6}X{CLEAR 6}Y{CLEAR 6}Z{CLEAR 26} $" -gUnknown_847AA5D:: +gText_NamingScreenKeyboard_01234:: .string "{CLEAR 11}0{CLEAR 16}1{CLEAR 16}2{CLEAR 16}3{CLEAR 16}4{CLEAR 16} $" -gUnknown_847AA76:: +gText_NamingScreenKeyboard_56789:: .string "{CLEAR 11}5{CLEAR 16}6{CLEAR 16}7{CLEAR 16}8{CLEAR 16}9{CLEAR 16} $" -gUnknown_847AA8F:: +gText_NamingScreenKeyboard_Symbols1:: .string "{CLEAR 11}!{CLEAR 16}?{CLEAR 16}♂{CLEAR 16}♀{CLEAR 16}/{CLEAR 16}-$" -gUnknown_847AAA8:: +gText_NamingScreenKeyboard_Symbols2:: .string "{CLEAR 11}…{CLEAR 16}“{CLEAR 16}”{CLEAR 18}‘{CLEAR 18}'{CLEAR 18} $" // union_room_chat diff --git a/data/naming_screen.s b/data/naming_screen.s deleted file mode 100644 index 4f89d013f..000000000 --- a/data/naming_screen.s +++ /dev/null @@ -1,254 +0,0 @@ -#include "constants/maps.h" -#include "constants/species.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnknown_83E23D0:: @ 83E23D0 - .4byte sub_809F11C - .4byte KeyboardKeyHandler_Page - .4byte KeyboardKeyHandler_Backspace - .4byte KeyboardKeyHandler_OK - -gUnknown_83E23E0:: @ 83E23E0 - .4byte InputState_Disabled - .4byte InputState_Enabled - -gUnknown_83E23E8:: @ 83E23E8 - .2byte 0x0000, 0x0000, 0x0000, 0xffff, 0x0001 - -gUnknown_83E23F2:: @ 83E23F2 - .2byte 0x0000, 0xffff, 0x0001, 0x0000, 0x0000 - -gUnknown_83E23FC:: @ 83E23FC - .2byte 0x0000, 0x0001, 0x0001, 0x0002 - -gUnknown_83E2404:: @ 83E2404 - .2byte 0x0000, 0x0000, 0x0003, 0x0000 - -gUnknown_83E240C:: @ 83E240C - .4byte sub_809F49C - .4byte sub_809F49C - .4byte sub_809F4F0 - .4byte sub_809F4F0 - .4byte sub_809F49C - -gUnknown_83E2420:: @ 83E2420 - .4byte nullsub_55 - .4byte sub_809F5C4 - -gUnknown_83E2428:: @ 83E2428 - .byte 0x00, 0x09, 0x08, 0x00 - .byte 0x05, 0x04, 0x00, 0x00 - -gUnknown_83E2430:: @ 83E2430 - .byte 0x0d, 0x01, 0x02, 0x00 - -gUnknown_83E2434:: @ 83E2434 - .byte 0x0e, 0x01, 0x02, 0x00 - -gUnknown_83E2438:: @ 83E2438 - .byte 0x0f, 0x01, 0x02, 0x00 - -gUnknown_83E243C:: @ 83E243C - .byte 0xee, 0xdd, 0xff, 0x00 - -gUnknown_83E2440:: @ 83E2440 - .4byte gUnknown_83E2434 - .4byte gUnknown_83E2430 - .4byte gUnknown_83E2438 - -gUnknown_83E244C:: @ 83E244C - .4byte gUnknown_8E98398 - .4byte gUnknown_8E98458 - .4byte gUnknown_8E98518 - -gUnknown_83E2458:: @ 83E2458 - .byte 0x0f, 0x01, 0x02 - - .align 2 -gUnknown_83E245C:: @ 83E245C - .byte 0x00, 0x07, 0x01, 0x00, 0x01 - .align 2 - .4byte gUnknown_8418E47 - -gUnknown_83E2468:: @ 83E2468 - .byte 0x00, 0x08, 0x02, 0x00, 0x01 - .align 2 - .4byte gUnknown_8418E52 - -gUnknown_83E2474:: @ 83E2474 - .byte 0x00, 0x0a, 0x03, 0x01, 0x01 - .align 2 - .4byte gUnknown_8418E5C - -gUnknown_83E2480:: @ 83E2480 - .byte 0x00, 0x07, 0x04, 0x00, 0x01 - .align 2 - .4byte gUnknown_8418E69 - -sNamingScreenTemplates:: @ 83E248C - .4byte gUnknown_83E245C @ NAMING_SCREEN_PLAYER - .4byte gUnknown_83E2468 @ NAMING_SCREEN_BOX - .4byte gUnknown_83E2474 @ NAMING_SCREEN_CAUGHT_MON - .4byte gUnknown_83E2474 @ NAMING_SCREEN_NAME_RATER - .4byte gUnknown_83E2480 @ NAMING_SCREEN_RIVAL - -gUnknown_83E24A0:: @ 83E24A0 - .4byte 0x00000000, 0x00000000 - -gUnknown_83E24A8:: @ 3E24A8 - .4byte 0x40000000, 0x00000000 - -gUnknown_83E24B0:: @ 3E24B0 - .4byte 0x80004000, 0x00000000 - -gUnknown_83E24B8:: @ 83E24B8 - subsprite 236, 240, 1, 0x0000, 32x8 - subsprite 12, 240, 1, 0x0004, 8x8 - subsprite 236, 248, 1, 0x0005, 32x8 - subsprite 12, 248, 1, 0x0009, 8x8 - subsprite 236, 0, 1, 0x000a, 32x8 - subsprite 12, 0, 1, 0x000e, 8x8 - subsprite 236, 8, 1, 0x000f, 32x8 - subsprite 12, 8, 1, 0x0013, 8x8 - -gUnknown_83E24D8:: @ 83E24D8 - subsprite 244, 252, 1, 0x0000, 16x8 - subsprite 4, 252, 1, 0x0002, 8x8 - -gUnknown_83E24E0:: @ 83E24E0 - subsprite 236, 244, 1, 0x0000, 32x8 - subsprite 12, 244, 1, 0x0004, 8x8 - subsprite 236, 252, 1, 0x0005, 32x8 - subsprite 12, 252, 1, 0x0009, 8x8 - subsprite 236, 4, 1, 0x000a, 32x8 - subsprite 12, 4, 1, 0x000e, 8x8 - -gUnknown_83E24F8:: - subsprite 248, 244, 3, 0x0000, 16x8 - subsprite 248, 252, 3, 0x0002, 16x8 - subsprite 248, 4, 3, 0x0004, 16x8 - -gUnknown_83E2504:: @ 83E2504 - .byte 0x08 - .align 2 - .4byte gUnknown_83E24B8 - -gUnknown_83E250C:: @ 83E250C - .byte 0x02 - .align 2 - .4byte gUnknown_83E24D8 - .byte 0x02 - .align 2 - .4byte gUnknown_83E24D8 - .byte 0x02 - .align 2 - .4byte gUnknown_83E24D8 - -gUnknown_83E2524:: @ 83E2524 - .byte 0x06 - .align 2 - .4byte gUnknown_83E24E0 - -gUnknown_83E252C:: @ 83E252C - .byte 0x03 - .align 2 - .4byte gUnknown_83E24F8 - -gUnknown_83E2534:: @ 83E2534 - obj_frame_tiles gUnknown_83E1800, 0x00c0 - obj_frame_tiles gUnknown_83E18C0, 0x00c0 - -gUnknown_83E2544:: @ 83E2544 - obj_image_anim_frame 0, 1 - obj_image_anim_jump 0 - -gUnknown_83E254C:: @ 83E254C - obj_image_anim_frame 4, 8 - obj_image_anim_frame 8, 8 - obj_image_anim_end - -gUnknown_83E2558:: @ 83E2558 - obj_image_anim_frame 0, 2 - obj_image_anim_frame 1, 2 - obj_image_anim_jump 0 - -gUnknown_83E2564:: @ 83E2564 - .4byte gUnknown_83E2544 - -gUnknown_83E2568:: @ 83E2568 - .4byte gUnknown_83E2544 - .4byte gUnknown_83E254C - -gUnknown_83E2570:: @ 83E2570 - .4byte gUnknown_83E2558 - -gUnknown_83E2574:: @ 83E2574 - spr_template 2, 4, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCB_PageSwap - -gUnknown_83E258C:: @ 83E258C - spr_template 3, 1, gUnknown_83E24B0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83E25A4:: @ 83E25A4 - spr_template 4, 4, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83E25BC:: @ 83E25BC - spr_template 0, 6, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83E25D4:: @ 83E25D4 - spr_template 1, 7, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83E25EC:: @ 83E25EC - spr_template 7, 5, gUnknown_83E24A8, gUnknown_83E2568, NULL, gDummySpriteAffineAnimTable, sub_809E700 - -sSpriteTemplate_InputArrow:: @ 83E2604 - spr_template 10, 3, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, sub_809E7F0 - -sSpriteTemplate_Underscore:: @ 83E261C - spr_template 11, 3, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, sub_809E83C - -gUnknown_83E2634:: @ 83E2634 - spr_template 65535, 0, gUnknown_83E24A0, gUnknown_83E2570, gUnknown_83E2534, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83E264C:: @ 83E264C - .4byte gUnknown_847A955 - .4byte gUnknown_847A976 - .4byte gUnknown_847A997 - .4byte gUnknown_847A9B8 - .4byte gUnknown_847A9D9 - .4byte gUnknown_847A9FA - .4byte gUnknown_847AA1B - .4byte gUnknown_847AA3C - .4byte gUnknown_847AA5D - .4byte gUnknown_847AA76 - .4byte gUnknown_847AA8F - .4byte gUnknown_847AAA8 - -gUnknown_83E267C:: @ 83E267C - obj_tiles gUnknown_8E98858, 0x01e0, 0 - obj_tiles gUnknown_8E98A38, 0x01e0, 1 - obj_tiles gUnknown_8E985D8, 0x0280, 2 - obj_tiles gUnknown_8E98FD8, 0x0100, 3 - obj_tiles gUnknown_8E98C18, 0x0060, 4 - obj_tiles gUnknown_8E98CB8, 0x0060, 5 - obj_tiles gUnknown_8E98D58, 0x0060, 6 - obj_tiles gUnknown_8E98DF8, 0x0080, 7 - obj_tiles gUnknown_8E98E98, 0x0080, 8 - obj_tiles gUnknown_8E98F38, 0x0080, 9 - obj_tiles gUnknown_8E990D8, 0x0020, 10 - obj_tiles gUnknown_8E990F8, 0x0020, 11 - null_obj_tiles - -gUnknown_83E26E4:: @ 83E26E4 - obj_pal gUnknown_8E98024, 0 - obj_pal gUnknown_8E98044, 1 - obj_pal gUnknown_8E98064, 2 - obj_pal gUnknown_8E98084, 3 - obj_pal gUnknown_8E980A4, 4 - obj_pal gUnknown_8E980C4, 5 - obj_pal gUnknown_8E980A4, 6 - obj_pal gUnknown_8E980A4, 7 - null_obj_pal diff --git a/include/data_8479668.h b/include/data_8479668.h index aba3721c8..7f6029808 100644 --- a/include/data_8479668.h +++ b/include/data_8479668.h @@ -37,4 +37,17 @@ extern const u8 gUnknown_847A8FA[]; extern const u8 gUnknown_847A913[]; extern const u8 gUnknown_847A934[]; +extern const u8 gText_NamingScreenKeyboard_abcdef[]; +extern const u8 gText_NamingScreenKeyboard_ghijkl[]; +extern const u8 gText_NamingScreenKeyboard_mnopqrs[]; +extern const u8 gText_NamingScreenKeyboard_tuvwxyz[]; +extern const u8 gText_NamingScreenKeyboard_ABCDEF[]; +extern const u8 gText_NamingScreenKeyboard_GHIJKL[]; +extern const u8 gText_NamingScreenKeyboard_MNOPQRS[]; +extern const u8 gText_NamingScreenKeyboard_TUVWXYZ[]; +extern const u8 gText_NamingScreenKeyboard_01234[]; +extern const u8 gText_NamingScreenKeyboard_56789[]; +extern const u8 gText_NamingScreenKeyboard_Symbols1[]; +extern const u8 gText_NamingScreenKeyboard_Symbols2[]; + #endif //GUARD_DATA_8479668_H diff --git a/include/graphics.h b/include/graphics.h index a61250ea8..d84371e3a 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4899,6 +4899,22 @@ extern const u32 gEasyChatModeIcons_Tiles[]; extern const u32 gUnknown_8E982BC[]; extern const u32 gUnknown_8E98458[]; extern const u32 gUnknown_8E98398[]; +extern const u32 gUnknown_8E98518[]; +extern const u32 gNamingScreenMenu_Gfx[]; extern const u16 gUnknown_8E98004[]; +extern const u16 gUnknown_8E97FE4[]; +extern const u16 gNamingScreenMenu_Pal[]; +extern const u16 gUnknown_8E98858[]; +extern const u16 gUnknown_8E98A38[]; +extern const u16 gUnknown_8E985D8[]; +extern const u16 gUnknown_8E98FD8[]; +extern const u16 gUnknown_8E98C18[]; +extern const u16 gUnknown_8E98CB8[]; +extern const u16 gUnknown_8E98D58[]; +extern const u16 gUnknown_8E98DF8[]; +extern const u16 gUnknown_8E98E98[]; +extern const u16 gUnknown_8E98F38[]; +extern const u16 gUnknown_8E990D8[]; +extern const u16 gUnknown_8E990F8[]; #endif //GUARD_GRAPHICS_H diff --git a/include/strings.h b/include/strings.h index 443d84de2..be3555780 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1350,4 +1350,12 @@ extern const u8 gUnknown_8418AA1[]; extern const u8 gUnknown_8418AB2[]; extern const u8 gUnknown_841EE2B[]; +// naming_screen +extern const u8 gText_MoveOkBack[]; +extern const u8 gText_AlphabetUpperLower[]; +extern const u8 gText_YourName[]; +extern const u8 gText_BoxName[]; +extern const u8 gText_PkmnsNickname[]; +extern const u8 gText_RivalsName[]; + #endif //GUARD_STRINGS_H diff --git a/src/graphics.c b/src/graphics.c index cb35568fa..69e804fd9 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1182,14 +1182,14 @@ const u32 gUnknown_8E97EC4[] = INCBIN_U32("graphics/interface/learn_move.bin.lz" const u16 gUnknown_8E97FE4[] = INCBIN_U16("graphics/interface/naming_screen_8E97FE4.gbapal"); const u16 gUnknown_8E98004[] = INCBIN_U16("graphics/interface/naming_screen_8E98004.gbapal"); -const u16 gUnknown_8E98024[] = INCBIN_U16("graphics/interface/naming_screen_8E98024.gbapal"); +const u16 gNamingScreenMenu_Pal[] = INCBIN_U16("graphics/interface/naming_screen_8E98024.gbapal"); const u16 gUnknown_8E98044[] = INCBIN_U16("graphics/interface/naming_screen_8E98044.gbapal"); const u16 gUnknown_8E98064[] = INCBIN_U16("graphics/interface/naming_screen_8E98064.gbapal"); const u16 gUnknown_8E98084[] = INCBIN_U16("graphics/interface/naming_screen_8E98084.gbapal"); const u16 gUnknown_8E980A4[] = INCBIN_U16("graphics/interface/naming_screen_8E980A4.gbapal"); const u16 gUnknown_8E980C4[] = INCBIN_U16("graphics/interface/naming_screen_8E980C4.gbapal"); -const u32 gUnknown_8E980E4[] = INCBIN_U32("graphics/interface/naming_screen_menu.4bpp.lz"); +const u32 gNamingScreenMenu_Gfx[] = INCBIN_U32("graphics/interface/naming_screen_menu.4bpp.lz"); const u32 gUnknown_8E982BC[] = INCBIN_U32("graphics/interface/naming_screen_menu.bin.lz"); const u32 gUnknown_8E98398[] = INCBIN_U32("graphics/interface/naming_screen_E98398.bin.lz"); const u32 gUnknown_8E98458[] = INCBIN_U32("graphics/interface/naming_screen_E98458.bin.lz"); diff --git a/src/naming_screen.c b/src/naming_screen.c index 6f506f621..b877a3cee 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1,24 +1,40 @@ #include "global.h" #include "gflib.h" -#include "graphics.h" +#include "data.h" +#include "data_8479668.h" #include "event_data.h" #include "event_object_movement.h" #include "event_scripts.h" #include "field_effect.h" #include "field_player_avatar.h" #include "field_specials.h" +#include "graphics.h" #include "help_system.h" +#include "menu.h" +#include "overworld.h" #include "naming_screen.h" #include "new_menu_helpers.h" #include "pokemon_icon.h" #include "pokemon_storage_system.h" +#include "strings.h" #include "task.h" +#include "text_window.h" #include "trig.h" #include "constants/help_system.h" #include "constants/flags.h" #include "constants/songs.h" #include "constants/event_objects.h" +#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))} + +#define KBEVENT_NONE 0 +#define KBEVENT_PRESSED_A 5 +#define KBEVENT_PRESSED_B 6 +#define KBEVENT_PRESSED_SELECT 8 +#define KBEVENT_PRESSED_START 9 + +#define KBROW_COUNT 4 + enum { KBPAGE_LETTERS_LOWER, @@ -45,7 +61,6 @@ enum { INPUT_STATE_DISABLED, INPUT_STATE_ENABLED, - INPUT_STATE_2, }; enum @@ -63,7 +78,6 @@ struct NamingScreenTemplate u8 iconFunction; u8 addGenderIcon; u8 initialPage; - u8 unused; const u8 *title; }; @@ -152,23 +166,40 @@ void NamingScreen_CreatePlayerIcon(void); void NamingScreen_CreatePCIcon(void); void NamingScreen_CreateMonIcon(void); void NamingScreen_CreateRivalIcon(void); -void sub_809FA60(void); -bool8 NamingScreen_InitDisplayMode(void); -void NamingScreen_TurnOffScreen(void); -void choose_name_or_words_screen_apply_bg_pals(void); -void choose_name_or_words_screen_load_bg_tile_patterns(void); bool8 HandleKeyboardEvent(void); +bool8 KeyboardKeyHandler_Character(u8); +bool8 KeyboardKeyHandler_Page(u8); +bool8 KeyboardKeyHandler_Backspace(u8); +bool8 KeyboardKeyHandler_OK(u8); +bool8 TriggerKeyboardChange(void); +u8 GetInputEvent(void); void SetInputState(u8 state); -void sub_809F56C(void); +void Task_HandleInput(u8 taskId); +void InputState_Disabled(struct Task * task); +void InputState_Enabled(struct Task * task); +void HandleDpadMovement(struct Task * task); +void PrintTitle(void); +void AddGenderIconFunc_No(void); +void AddGenderIconFunc_Yes(void); +void DeleteTextCharacter(void); u8 GetTextCaretPosition(void); -void sub_809F7EC(void); +bool8 AppendCharToBuffer_CheckBufferFull(void); +void AddTextCharacter(u8 character); +void CopyStringToDestBuffer(void); +void choose_name_or_words_screen_load_bg_tile_patterns(void); void sub_809F8C0(void); -void sub_809F900(u8 bgId, const u32 * tmap); -void sub_809F914(void); +void choose_name_or_words_screen_apply_bg_pals(void); +void DecompressToBgTilemapBuffer(u8 bgId, const u32 * tmap); +void PrintBufferCharactersOnScreen(void); void sub_809F9E8(u8 windowId, u8 kbPage); +void sub_809FA60(void); void sub_809FAE4(void); void sub_809FB70(void); -void sub_809FC34(void); +void NamingScreen_TurnOffScreen(void); +void NamingScreen_InitDisplayMode(void); +void VBlankCB_NamingScreen(void); +void ShowAllBgs(void); +bool8 IsLetter(u8 character); extern const struct SubspriteTable gUnknown_83E2504[]; extern const struct SubspriteTable gUnknown_83E250C[]; @@ -185,6 +216,11 @@ extern const struct SpriteTemplate sSpriteTemplate_InputArrow; extern const struct SpriteTemplate sSpriteTemplate_Underscore; extern const struct SpriteTemplate gUnknown_83E2634; +extern const u8 *const sNamingScreenKeyboardText[][KBROW_COUNT]; + +extern const struct SpriteSheet gUnknown_83E267C[]; +extern const struct SpritePalette gUnknown_83E26E4[]; + const u16 gUnknown_83E1800[] = INCBIN_U16("graphics/interface/naming_screen_83E1800.4bpp"); const u16 gUnknown_83E18C0[] = INCBIN_U16("graphics/interface/naming_screen_83E18C0.4bpp"); const u16 gUnknown_83E1980[] = INCBIN_U16("graphics/interface/naming_screen_83E1980.4bpp"); @@ -396,7 +432,7 @@ void C2_NamingScreen(void) case 7: sub_809E898(); UpdatePaletteFade(); - sub_809FC34(); + ShowAllBgs(); gMain.state++; break; default: @@ -558,14 +594,14 @@ u8 sub_809DE50(void) bool8 MainState_BeginFadeIn(void) { - sub_809F900(3, gUnknown_8E982BC); + DecompressToBgTilemapBuffer(3, gUnknown_8E982BC); gNamingScreenData->currentPage = KBPAGE_LETTERS_UPPER; - sub_809F900(2, gUnknown_8E98458); - sub_809F900(1, gUnknown_8E98398); + DecompressToBgTilemapBuffer(2, gUnknown_8E98458); + DecompressToBgTilemapBuffer(1, gUnknown_8E98398); sub_809F9E8(gNamingScreenData->windows[1], KBPAGE_LETTERS_LOWER); sub_809F9E8(gNamingScreenData->windows[0], KBPAGE_LETTERS_UPPER); - sub_809F914(); - sub_809F56C(); + PrintBufferCharactersOnScreen(); + PrintTitle(); sub_809FAE4(); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); @@ -605,7 +641,7 @@ bool8 MainState_MoveToOKButton(void) bool8 pokemon_store(void) { - sub_809F7EC(); + CopyStringToDestBuffer(); SetInputState(INPUT_STATE_DISABLED); sub_809EA64(0); sub_809E518(3, 0, 1); @@ -1319,3 +1355,1044 @@ void NamingScreen_CreateRivalIcon(void) spriteId = CreateSprite(&template, 0x38, 0x25, 0); gSprites[spriteId].oam.priority = 3; } + +bool8 (*const sKeyboardKeyHandlers[])(u8) = { + KeyboardKeyHandler_Character, + KeyboardKeyHandler_Page, + KeyboardKeyHandler_Backspace, + KeyboardKeyHandler_OK, +}; + +bool8 HandleKeyboardEvent(void) +{ + u8 event = GetInputEvent(); + u8 keyRole = GetKeyRoleAtCursorPos(); + + if (event == KBEVENT_PRESSED_SELECT) + { + return TriggerKeyboardChange(); + } + else if (event == KBEVENT_PRESSED_B) + { + DeleteTextCharacter(); + return FALSE; + } + else if (event == KBEVENT_PRESSED_START) + { + MoveCursorToOKButton(); + return FALSE; + } + else + { + return sKeyboardKeyHandlers[keyRole](event); + } +} + +bool8 KeyboardKeyHandler_Character(u8 event) +{ + sub_809E518(3, 0, 0); + if (event == KBEVENT_PRESSED_A) + { + bool8 var = AppendCharToBuffer_CheckBufferFull(); + + sub_809EAA8(); + if (var) + { + SetInputState(INPUT_STATE_DISABLED); + gNamingScreenData->state = MAIN_STATE_MOVE_TO_OK_BUTTON; + } + } + return FALSE; +} + +bool8 KeyboardKeyHandler_Page(u8 event) +{ + sub_809E518(0, 1, 0); + if (event == KBEVENT_PRESSED_A) + return TriggerKeyboardChange(); + else + return FALSE; +} + +bool8 KeyboardKeyHandler_Backspace(u8 event) +{ + sub_809E518(1, 1, 0); + if (event == KBEVENT_PRESSED_A) + DeleteTextCharacter(); + return FALSE; +} + +bool8 KeyboardKeyHandler_OK(u8 event) +{ + sub_809E518(2, 1, 0); + if (event == KBEVENT_PRESSED_A) + { + PlaySE(SE_SELECT); + gNamingScreenData->state = MAIN_STATE_6; + return TRUE; + } + else + return FALSE; +} + +bool8 TriggerKeyboardChange(void) +{ + gNamingScreenData->state = MAIN_STATE_START_PAGE_SWAP; + return TRUE; +} + +//-------------------------------------------------- +// Input handling +//-------------------------------------------------- + +enum +{ + FNKEY_CASE, + FNKEY_BACK, + FNKEY_OK, +}; + +#define tState data[0] +#define tKeyboardEvent data[1] +#define tKbFunctionKey data[2] + +void (*const sInputStateFuncs[])(struct Task *) = { + InputState_Disabled, + InputState_Enabled +}; + +void InputInit(void) +{ + CreateTask(Task_HandleInput, 1); +} + +u8 GetInputEvent(void) +{ + u8 taskId = FindTaskIdByFunc(Task_HandleInput); + + return gTasks[taskId].tKeyboardEvent; +} + +void SetInputState(u8 state) +{ + u8 taskId = FindTaskIdByFunc(Task_HandleInput); + + gTasks[taskId].tState = state; +} + +void Task_HandleInput(u8 taskId) +{ + sInputStateFuncs[gTasks[taskId].tState](&gTasks[taskId]); +} + +void InputState_Disabled(struct Task *task) +{ + task->tKeyboardEvent = 0; +} + +void InputState_Enabled(struct Task *task) +{ + task->tKeyboardEvent = 0; + + if (gMain.newKeys & A_BUTTON) + task->tKeyboardEvent = KBEVENT_PRESSED_A; + else if (gMain.newKeys & B_BUTTON) + task->tKeyboardEvent = KBEVENT_PRESSED_B; + else if (gMain.newKeys & SELECT_BUTTON) + task->tKeyboardEvent = KBEVENT_PRESSED_SELECT; + else if (gMain.newKeys & START_BUTTON) + task->tKeyboardEvent = KBEVENT_PRESSED_START; + else + HandleDpadMovement(task); +} + +void HandleDpadMovement(struct Task *task) +{ + const s16 sDpadDeltaX[] = { + 0, //none + 0, //up + 0, //down + -1, //left + 1 //right + }; + + const s16 sDpadDeltaY[] = { + 0, //none + -1, //up + 1, //down + 0, //left + 0 //right + }; + + const s16 s4RowTo3RowTableY[] = {0, 1, 1, 2}; + const s16 s3RowTo4RowTableY[] = {0, 0, 3}; + + s16 cursorX; + s16 cursorY; + u16 dpadDir; + s16 prevCursorX; + + GetCursorPos(&cursorX, &cursorY); + dpadDir = 0; + if (gMain.newAndRepeatedKeys & DPAD_UP) + dpadDir = 1; + if (gMain.newAndRepeatedKeys & DPAD_DOWN) + dpadDir = 2; + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + dpadDir = 3; + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + dpadDir = 4; + + //Get new cursor position + prevCursorX = cursorX; + cursorX += sDpadDeltaX[dpadDir]; + cursorY += sDpadDeltaY[dpadDir]; + + //Wrap cursor position in the X direction + if (cursorX < 0) + cursorX = GetCurrentPageColumnCount(); + if (cursorX > GetCurrentPageColumnCount()) + cursorX = 0; + + //Handle cursor movement in X direction + if (sDpadDeltaX[dpadDir] != 0) + { + if (cursorX == GetCurrentPageColumnCount()) + { + //We are now on the last column + task->tKbFunctionKey = cursorY; + cursorY = s4RowTo3RowTableY[cursorY]; + } + else if (prevCursorX == GetCurrentPageColumnCount()) + { + if (cursorY == 1) + cursorY = task->tKbFunctionKey; + else + cursorY = s3RowTo4RowTableY[cursorY]; + } + } + + if (cursorX == GetCurrentPageColumnCount()) + { + //There are only 3 keys on the last column, unlike the others, + //so wrap Y accordingly + if (cursorY < 0) + cursorY = 2; + if (cursorY > 2) + cursorY = 0; + if (cursorY == 0) + task->tKbFunctionKey = FNKEY_BACK; + else if (cursorY == 2) + task->tKbFunctionKey = FNKEY_OK; + } + else + { + if (cursorY < 0) + cursorY = 3; + if (cursorY > 3) + cursorY = 0; + } + SetCursorPos(cursorX, cursorY); +} + +#undef tState +#undef tKeyboardEvent +#undef tKbFunctionKey + +void PrintTitleFunction_NoMon(void) +{ + FillWindowPixelBuffer(gNamingScreenData->windows[3], PIXEL_FILL(1)); + AddTextPrinterParameterized(gNamingScreenData->windows[3], 1, gNamingScreenData->template->title, 1, 1, 0, NULL); + PutWindowTilemap(gNamingScreenData->windows[3]); +} + +void PrintTitleFunction_WithMon(void) +{ + u8 buffer[0x20]; + + StringCopy(buffer, gSpeciesNames[gNamingScreenData->monSpecies]); + StringAppendN(buffer, gNamingScreenData->template->title, 15); + FillWindowPixelBuffer(gNamingScreenData->windows[3], PIXEL_FILL(1)); + AddTextPrinterParameterized(gNamingScreenData->windows[3], 1, buffer, 1, 1, 0, NULL); + PutWindowTilemap(gNamingScreenData->windows[3]); +} + +void (*const sPrintTitleFuncs[])(void) = { + [NAMING_SCREEN_PLAYER] = PrintTitleFunction_NoMon, + [NAMING_SCREEN_BOX] = PrintTitleFunction_NoMon, + [NAMING_SCREEN_CAUGHT_MON] = PrintTitleFunction_WithMon, + [NAMING_SCREEN_NAME_RATER] = PrintTitleFunction_WithMon, + [NAMING_SCREEN_RIVAL] = PrintTitleFunction_NoMon +}; + +void PrintTitle(void) +{ + sPrintTitleFuncs[gNamingScreenData->templateNum](); +} + +void (*const sAddGenderIconFuncs[])(void) = { + AddGenderIconFunc_No, + AddGenderIconFunc_Yes +}; + +void CallAddGenderIconFunc(void) +{ + sAddGenderIconFuncs[gNamingScreenData->template->addGenderIcon](); +} + +void AddGenderIconFunc_No(void) +{ + +} + +const u8 sGenderColors[2][3] = { + {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_BLUE, TEXT_COLOR_BLUE}, + {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED} +}; + +void AddGenderIconFunc_Yes(void) +{ + u8 genderSymbol[2]; + bool8 isFemale = FALSE; + + StringCopy(genderSymbol, gText_MaleSymbol); + + if (gNamingScreenData->monGender != MON_GENDERLESS) + { + if (gNamingScreenData->monGender == MON_FEMALE) + { + StringCopy(genderSymbol, gText_FemaleSymbol); + isFemale = TRUE; + } + AddTextPrinterParameterized3(gNamingScreenData->windows[2], 2, 0x68, 1, sGenderColors[isFemale], TEXT_SPEED_FF, genderSymbol); + } +} + +u8 GetCharAtKeyboardPos(s16 x, s16 y) +{ + return gUnknown_83E22D0[sub_809DE50()][y][x]; +} + +u8 GetTextCaretPosition(void) +{ + u8 i; + + for (i = 0; i < gNamingScreenData->template->maxChars; i++) + { + if (gNamingScreenData->textBuffer[i] == EOS) + return i; + } + return gNamingScreenData->template->maxChars - 1; +} + +u8 GetPreviousTextCaretPosition(void) +{ + s8 i; + + for (i = gNamingScreenData->template->maxChars - 1; i > 0; i--) + { + if (gNamingScreenData->textBuffer[i] != EOS) + return i; + } + return 0; +} + +void DeleteTextCharacter(void) +{ + u8 index; + u8 var2; + + index = GetPreviousTextCaretPosition(); + // Temporarily make this a space for redrawing purposes + gNamingScreenData->textBuffer[index] = CHAR_SPACE; + PrintBufferCharactersOnScreen(); + CopyBgTilemapBufferToVram(3); + gNamingScreenData->textBuffer[index] = EOS; + var2 = GetKeyRoleAtCursorPos(); + if (var2 == KEY_ROLE_CHAR || var2 == KEY_ROLE_BACKSPACE) + sub_809E518(1, 0, 1); + PlaySE(SE_BOWA); +} + +bool8 AppendCharToBuffer_CheckBufferFull(void) +{ + s16 x; + s16 y; + + GetCursorPos(&x, &y); + AddTextCharacter(GetCharAtKeyboardPos(x, y)); + PrintBufferCharactersOnScreen(); + CopyBgTilemapBufferToVram(3); + PlaySE(SE_SELECT); + + if (GetPreviousTextCaretPosition() != gNamingScreenData->template->maxChars - 1) + return FALSE; + else + return TRUE; +} + +void AddTextCharacter(u8 ch) +{ + u8 index = GetTextCaretPosition(); + + gNamingScreenData->textBuffer[index] = ch; +} + +void CopyStringToDestBuffer(void) +{ + // Copy from the first non-whitespace character + u8 i; + + for (i = 0; i < gNamingScreenData->template->maxChars; i++) + { + if (gNamingScreenData->textBuffer[i] != CHAR_SPACE && gNamingScreenData->textBuffer[i] != EOS) + { + StringCopyN(gNamingScreenData->destBuffer, gNamingScreenData->textBuffer, gNamingScreenData->template->maxChars + 1); + break; + } + } +} + +void choose_name_or_words_screen_load_bg_tile_patterns(void) +{ + LZ77UnCompWram(gNamingScreenMenu_Gfx, gNamingScreenData->tileBuffer); + LoadBgTiles(1, gNamingScreenData->tileBuffer, 0x600, 0); + LoadBgTiles(2, gNamingScreenData->tileBuffer, 0x600, 0); + LoadBgTiles(3, gNamingScreenData->tileBuffer, 0x600, 0); + LoadSpriteSheets(gUnknown_83E267C); + LoadSpritePalettes(gUnknown_83E26E4); +} + +void sub_809F8C0(void) +{ + InputInit(); + sub_809E4F0(); +} + +void choose_name_or_words_screen_apply_bg_pals(void) +{ + LoadPalette(gNamingScreenMenu_Pal, 0, 0xC0); + LoadPalette(gUnknown_8E97FE4, 0xA0, 0x20); + LoadPalette(stdpal_get(2), 0xB0, 0x20); +} + +void DecompressToBgTilemapBuffer(u8 bg, const u32 *src) +{ + CopyToBgTilemapBuffer(bg, src, 0, 0); +} + +void PrintBufferCharactersOnScreen(void) +{ + u8 i; + u8 temp[2]; + u16 xoff; + u8 maxChars = gNamingScreenData->template->maxChars; + u16 xpos = gNamingScreenData->inputCharBaseXPos - 0x40; + + FillWindowPixelBuffer(gNamingScreenData->windows[2], PIXEL_FILL(1)); + + for (i = 0; i < maxChars; i++) + { + temp[0] = gNamingScreenData->textBuffer[i]; + temp[1] = gExpandedPlaceholder_Empty[0]; + xoff = (IsLetter(temp[0]) == TRUE) ? 2 : 0; + + AddTextPrinterParameterized(gNamingScreenData->windows[2], 2, temp, i * 8 + xpos + xoff, 1, TEXT_SPEED_FF, NULL); + } + + CallAddGenderIconFunc(); + CopyWindowToVram(gNamingScreenData->windows[2], 2); + PutWindowTilemap(gNamingScreenData->windows[2]); +} + +struct TextColor // Needed because of alignment +{ + u8 colors[3][4]; +}; + +const struct TextColor sTextColorStruct = { + { + {TEXT_DYNAMIC_COLOR_4, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}, + {TEXT_DYNAMIC_COLOR_5, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}, + {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY} + } +}; + +const u8 sFillValues[KBPAGE_COUNT] = { + [KBPAGE_LETTERS_LOWER] = PIXEL_FILL(14), + [KBPAGE_LETTERS_UPPER] = PIXEL_FILL(13), + [KBPAGE_SYMBOLS] = PIXEL_FILL(15) +}; + +const u8 *const sKeyboardTextColors[KBPAGE_COUNT] = { + [KBPAGE_LETTERS_LOWER] = sTextColorStruct.colors[1], + [KBPAGE_LETTERS_UPPER] = sTextColorStruct.colors[0], + [KBPAGE_SYMBOLS] = sTextColorStruct.colors[2] +}; + +void sub_809F9E8(u8 window, u8 page) +{ + u8 i; + + FillWindowPixelBuffer(window, sFillValues[page]); + + for (i = 0; i < KBROW_COUNT; i++) + { + AddTextPrinterParameterized3(window, 1, 0, i * 16 + 1, sKeyboardTextColors[page], 0, sNamingScreenKeyboardText[page][i]); + } + + PutWindowTilemap(window); +} + +const u32 *const gUnknown_83E244C[] = { + gUnknown_8E98398, + gUnknown_8E98458, + gUnknown_8E98518 +}; + +void sub_809FA60(void) +{ + u8 bgId; + u8 bgId_copy; + u8 windowId; + u8 bg1Priority = GetGpuReg(REG_OFFSET_BG1CNT) & 3; + u8 bg2Priority = GetGpuReg(REG_OFFSET_BG2CNT) & 3; + + if (bg1Priority > bg2Priority) + { + bgId = 1; + bgId_copy = 1; + windowId = gNamingScreenData->windows[0]; + } + else + { + bgId = 2; + bgId_copy = 2; + windowId = gNamingScreenData->windows[1]; + } + + DecompressToBgTilemapBuffer(bgId, gUnknown_83E244C[gNamingScreenData->currentPage]); + sub_809F9E8(windowId, sub_809DE30()); + CopyBgTilemapBufferToVram(bgId_copy); +} + +void sub_809FAE4(void) +{ + const u8 color[3] = { TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY }; + int strwidth = GetStringWidth(0, gText_MoveOkBack, 0); + + FillWindowPixelBuffer(gNamingScreenData->windows[4], PIXEL_FILL(15)); + AddTextPrinterParameterized3(gNamingScreenData->windows[4], 0, 236 - strwidth, 0, color, 0, gText_MoveOkBack); + PutWindowTilemap(gNamingScreenData->windows[4]); + CopyWindowToVram(gNamingScreenData->windows[4], 3); +} + +void sub_809FB70(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void NamingScreen_TurnOffScreen(void) +{ + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); +} + +void NamingScreen_InitDisplayMode(void) +{ + SetVBlankCallback(VBlankCB_NamingScreen); +} + +void VBlankCB_NamingScreen(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + SetGpuReg(REG_OFFSET_BG1VOFS, gNamingScreenData->bg1vOffset); + SetGpuReg(REG_OFFSET_BG2VOFS, gNamingScreenData->bg2vOffset); + SetGpuReg(REG_OFFSET_BG1CNT, GetGpuReg(REG_OFFSET_BG1CNT) & 0xFFFC); // clear priority bits + SetGpuRegBits(REG_OFFSET_BG1CNT, gNamingScreenData->bg1Priority); + SetGpuReg(REG_OFFSET_BG2CNT, GetGpuReg(REG_OFFSET_BG2CNT) & 0xFFFC); // clear priority bits + SetGpuRegBits(REG_OFFSET_BG2CNT, gNamingScreenData->bg2Priority); +} + +void ShowAllBgs(void) +{ + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); +} + +bool8 IsLetter(u8 character) +{ + u8 i; + + for (i = 0; gText_AlphabetUpperLower[i] != EOS; i++) + { + if (character == gText_AlphabetUpperLower[i]) + return TRUE; + } + return FALSE; +} + +//-------------------------------------------------- +// Unused debug functions +//-------------------------------------------------- + +void Debug_DoNamingScreen_Player(void) +{ + DoNamingScreen(NAMING_SCREEN_PLAYER, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu); +} + +void Debug_DoNamingScreen_Box(void) +{ + DoNamingScreen(NAMING_SCREEN_BOX, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu); +} + +void Debug_DoNamingScreen_CaughtMon(void) +{ + DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu); +} + +void Debug_DoNamingScreen_NameRater(void) +{ + DoNamingScreen(NAMING_SCREEN_NAME_RATER, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu); +} + +void Debug_DoNamingScreen_Rival(void) +{ + DoNamingScreen(NAMING_SCREEN_RIVAL, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu); +} + +//-------------------------------------------------- +// Forward-declared variables +//-------------------------------------------------- + +const struct NamingScreenTemplate playerNamingScreenTemplate = { + .copyExistingString = FALSE, + .maxChars = PLAYER_NAME_LENGTH, + .iconFunction = 1, + .addGenderIcon = 0, + .initialPage = KBPAGE_LETTERS_UPPER, + .title = gText_YourName, +}; + +const struct NamingScreenTemplate pcBoxNamingTemplate = { + .copyExistingString = FALSE, + .maxChars = 8/*BOX_NAME_LENGTH*/, + .iconFunction = 2, + .addGenderIcon = 0, + .initialPage = KBPAGE_LETTERS_UPPER, + .title = gText_BoxName, +}; + +const struct NamingScreenTemplate monNamingScreenTemplate = { + .copyExistingString = FALSE, + .maxChars = POKEMON_NAME_LENGTH, + .iconFunction = 3, + .addGenderIcon = 1, + .initialPage = KBPAGE_LETTERS_UPPER, + .title = gText_PkmnsNickname, +}; + +const struct NamingScreenTemplate rivalNamingScreenTemplate = { + .copyExistingString = FALSE, + .maxChars = OT_NAME_LENGTH, + .iconFunction = 4, + .addGenderIcon = 0, + .initialPage = KBPAGE_LETTERS_UPPER, + .title = gText_RivalsName, +}; + +const struct NamingScreenTemplate *const sNamingScreenTemplates[] = { + &playerNamingScreenTemplate, + &pcBoxNamingTemplate, + &monNamingScreenTemplate, + &monNamingScreenTemplate, + &rivalNamingScreenTemplate, +}; + +const struct OamData gOamData_858BFEC = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 0, + .paletteNum = 0, +}; + +const struct OamData gOamData_858BFF4 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 0, + .paletteNum = 0, +}; + +const struct OamData gOamData_858BFFC = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 0, + .paletteNum = 0, +}; + +const struct Subsprite gUnknown_83E24B8[] = { + { + .x = -20, + .y = -16, + .shape = SPRITE_SHAPE(32x8), + .size = SPRITE_SIZE(32x8), + .tileOffset = 0, + .priority = 1 + }, { + .x = 12, + .y = -16, + .shape = SPRITE_SHAPE(8x8), + .size = SPRITE_SIZE(8x8), + .tileOffset = 4, + .priority = 1 + }, { + .x = -20, + .y = -8, + .shape = SPRITE_SHAPE(32x8), + .size = SPRITE_SIZE(32x8), + .tileOffset = 5, + .priority = 1 + }, { + .x = 12, + .y = -8, + .shape = SPRITE_SHAPE(8x8), + .size = SPRITE_SIZE(8x8), + .tileOffset = 9, + .priority = 1 + }, { + .x = -20, + .y = 0, + .shape = SPRITE_SHAPE(32x8), + .size = SPRITE_SIZE(32x8), + .tileOffset = 10, + .priority = 1 + }, { + .x = 12, + .y = 0, + .shape = SPRITE_SHAPE(8x8), + .size = SPRITE_SIZE(8x8), + .tileOffset = 14, + .priority = 1 + }, { + .x = -20, + .y = 8, + .shape = SPRITE_SHAPE(32x8), + .size = SPRITE_SIZE(32x8), + .tileOffset = 15, + .priority = 1 + }, { + .x = 12, + .y = 8, + .shape = SPRITE_SHAPE(8x8), + .size = SPRITE_SIZE(8x8), + .tileOffset = 19, + .priority = 1 + } +}; + +const struct Subsprite gUnknown_83E24D8[] = { + { + .x = -12, + .y = -4, + .shape = SPRITE_SHAPE(16x8), + .size = SPRITE_SIZE(16x8), + .tileOffset = 0, + .priority = 1 + }, { + .x = 4, + .y = -4, + .shape = SPRITE_SHAPE(8x8), + .size = SPRITE_SIZE(8x8), + .tileOffset = 2, + .priority = 1 + } +}; + +const struct Subsprite gUnknown_83E24E0[] = { + { + .x = -20, + .y = -12, + .shape = SPRITE_SHAPE(32x8), + .size = SPRITE_SIZE(32x8), + .tileOffset = 0, + .priority = 1 + }, { + .x = 12, + .y = -12, + .shape = SPRITE_SHAPE(8x8), + .size = SPRITE_SIZE(8x8), + .tileOffset = 4, + .priority = 1 + }, { + .x = -20, + .y = -4, + .shape = SPRITE_SHAPE(32x8), + .size = SPRITE_SIZE(32x8), + .tileOffset = 5, + .priority = 1 + }, { + .x = 12, + .y = -4, + .shape = SPRITE_SHAPE(8x8), + .size = SPRITE_SIZE(8x8), + .tileOffset = 9, + .priority = 1 + }, { + .x = -20, + .y = 4, + .shape = SPRITE_SHAPE(32x8), + .size = SPRITE_SIZE(32x8), + .tileOffset = 10, + .priority = 1 + }, { + .x = 12, + .y = 4, + .shape = SPRITE_SHAPE(8x8), + .size = SPRITE_SIZE(8x8), + .tileOffset = 14, + .priority = 1 + } +}; + +const struct Subsprite gUnknown_83E24F8[] = { + { + .x = -8, + .y = -12, + .shape = SPRITE_SHAPE(16x8), + .size = SPRITE_SIZE(16x8), + .tileOffset = 0, + .priority = 3 + }, { + .x = -8, + .y = -4, + .shape = SPRITE_SHAPE(16x8), + .size = SPRITE_SIZE(16x8), + .tileOffset = 2, + .priority = 3 + }, { + .x = -8, + .y = 4, + .shape = SPRITE_SHAPE(16x8), + .size = SPRITE_SIZE(16x8), + .tileOffset = 4, + .priority = 3 + } +}; + +const struct SubspriteTable gUnknown_83E2504[] = { + subsprite_table(gUnknown_83E24B8) +}; + +const struct SubspriteTable gUnknown_83E250C[] = { + subsprite_table(gUnknown_83E24D8), + subsprite_table(gUnknown_83E24D8), + subsprite_table(gUnknown_83E24D8) +}; + +const struct SubspriteTable gUnknown_83E2524[] = { + subsprite_table(gUnknown_83E24E0) +}; + +const struct SubspriteTable gUnknown_83E252C[] = { + subsprite_table(gUnknown_83E24F8) +}; + +const struct SpriteFrameImage gUnknown_0858C080[] = { + {gUnknown_83E1800, sizeof(gUnknown_83E1800)}, + {gUnknown_83E18C0, sizeof(gUnknown_83E18C0)}, +}; + +const union AnimCmd gSpriteAnim_858C090[] = { + ANIMCMD_FRAME(0, 1), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gSpriteAnim_858C098[] = { + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(8, 8), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_858C0A4[] = { + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd *const gSpriteAnimTable_858C0B0[] = { + gSpriteAnim_858C090 +}; + +const union AnimCmd *const gSpriteAnimTable_858C0B4[] = { + gSpriteAnim_858C090, + gSpriteAnim_858C098 +}; + +const union AnimCmd *const gSpriteAnimTable_858C0BC[] = { + gSpriteAnim_858C0A4 +}; + +const struct SpriteTemplate gUnknown_83E2574 = { + .tileTag = 0x0002, + .paletteTag = 0x0004, + .oam = &gOamData_858BFEC, + .anims = gSpriteAnimTable_858C0B0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_PageSwap +}; + +const struct SpriteTemplate gUnknown_83E258C = { + .tileTag = 0x0003, + .paletteTag = 0x0001, + .oam = &gOamData_858BFFC, + .anims = gSpriteAnimTable_858C0B0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +const struct SpriteTemplate gUnknown_83E25A4 = { + .tileTag = 0x0004, + .paletteTag = 0x0004, + .oam = &gOamData_858BFEC, + .anims = gSpriteAnimTable_858C0B0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +const struct SpriteTemplate gUnknown_83E25BC = { + .tileTag = 0x0000, + .paletteTag = 0x0006, + .oam = &gOamData_858BFEC, + .anims = gSpriteAnimTable_858C0B0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +const struct SpriteTemplate gUnknown_83E25D4 = { + .tileTag = 0x0001, + .paletteTag = 0x0007, + .oam = &gOamData_858BFEC, + .anims = gSpriteAnimTable_858C0B0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +const struct SpriteTemplate gUnknown_83E25EC = { + .tileTag = 0x0007, + .paletteTag = 0x0005, + .oam = &gOamData_858BFF4, + .anims = gSpriteAnimTable_858C0B4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_809E700 +}; + +const struct SpriteTemplate sSpriteTemplate_InputArrow = { + .tileTag = 0x000A, + .paletteTag = 0x0003, + .oam = &gOamData_858BFEC, + .anims = gSpriteAnimTable_858C0B0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_809E7F0 +}; + +const struct SpriteTemplate sSpriteTemplate_Underscore = { + .tileTag = 0x000B, + .paletteTag = 0x0003, + .oam = &gOamData_858BFEC, + .anims = gSpriteAnimTable_858C0B0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_809E83C +}; + +const struct SpriteTemplate gUnknown_83E2634 = { + .tileTag = 0xFFFF, + .paletteTag = 0x0000, + .oam = &gOamData_858BFEC, + .anims = gSpriteAnimTable_858C0BC, + .images = gUnknown_0858C080, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +const u8 *const sNamingScreenKeyboardText[KBPAGE_COUNT][KBROW_COUNT] = { + [KBPAGE_LETTERS_LOWER] = { + gText_NamingScreenKeyboard_abcdef, + gText_NamingScreenKeyboard_ghijkl, + gText_NamingScreenKeyboard_mnopqrs, + gText_NamingScreenKeyboard_tuvwxyz + }, + [KBPAGE_LETTERS_UPPER] = { + gText_NamingScreenKeyboard_ABCDEF, + gText_NamingScreenKeyboard_GHIJKL, + gText_NamingScreenKeyboard_MNOPQRS, + gText_NamingScreenKeyboard_TUVWXYZ + }, + [KBPAGE_SYMBOLS] = { + gText_NamingScreenKeyboard_01234, + gText_NamingScreenKeyboard_56789, + gText_NamingScreenKeyboard_Symbols1, + gText_NamingScreenKeyboard_Symbols2 + }, +}; + +// FIXME: Sync with Emerald +const struct SpriteSheet gUnknown_83E267C[] = { + {gUnknown_8E98858, 0x1E0, 0x0000}, + {gUnknown_8E98A38, 0x1E0, 0x0001}, + {gUnknown_8E985D8, 0x280, 0x0002}, + {gUnknown_8E98FD8, 0x100, 0x0003}, + {gUnknown_8E98C18, 0x060, 0x0004}, + {gUnknown_8E98CB8, 0x060, 0x0005}, + {gUnknown_8E98D58, 0x060, 0x0006}, + {gUnknown_8E98DF8, 0x080, 0x0007}, + {gUnknown_8E98E98, 0x080, 0x0008}, + {gUnknown_8E98F38, 0x080, 0x0009}, + {gUnknown_8E990D8, 0x020, 0x000A}, + {gUnknown_8E990F8, 0x020, 0x000B}, + {NULL} +}; + +const struct SpritePalette gUnknown_83E26E4[] = { + {gNamingScreenMenu_Pal, 0x0000}, + {gNamingScreenMenu_Pal + 0x10, 0x0001}, + {gNamingScreenMenu_Pal + 0x20, 0x0002}, + {gNamingScreenMenu_Pal + 0x30, 0x0003}, + {gNamingScreenMenu_Pal + 0x40, 0x0004}, + {gNamingScreenMenu_Pal + 0x50, 0x0005}, + {gNamingScreenMenu_Pal + 0x40, 0x0006}, + {gNamingScreenMenu_Pal + 0x40, 0x0007}, + {NULL} +}; diff --git a/src/strings.c b/src/strings.c index 8ef338eb3..f5040838a 100644 --- a/src/strings.c +++ b/src/strings.c @@ -767,12 +767,12 @@ const u8 gText_SaveFailedScreen_SaveCompleted[] = _("Save completed.\n“Please const u8 gUnknown_8418E36[] = _("れんらくせん"); const u8 gUnknown_8418E3D[] = _("ひみつきち"); const u8 gUnknown_8418E43[] = _("アジト"); -const u8 gUnknown_8418E47[] = _("YOUR NAME?"); -const u8 gUnknown_8418E52[] = _("BOX NAME?"); -const u8 gUnknown_8418E5C[] = _("'s nickname?"); -const u8 gUnknown_8418E69[] = _("RIVAL's NAME?"); -const u8 gUnknown_8418E77[] = _("{DPAD_ANY}MOVE {A_BUTTON}OK {B_BUTTON}BACK"); -const u8 gUnknown_8418E8A[] = _(""); +const u8 gText_YourName[] = _("YOUR NAME?"); +const u8 gText_BoxName[] = _("BOX NAME?"); +const u8 gText_PkmnsNickname[] = _("'s nickname?"); +const u8 gText_RivalsName[] = _("RIVAL's NAME?"); +const u8 gText_MoveOkBack[] = _("{DPAD_ANY}MOVE {A_BUTTON}OK {B_BUTTON}BACK"); +const u8 gText_AlphabetUpperLower[] = _(""); const u8 gText_RegionMap_Space[] = _(" "); const u8 gText_RegionMap_AButtonGuide[] = _("{A_BUTTON}GUIDE"); const u8 gText_RegionMap_AButtonCancel[] = _("{A_BUTTON}CANCEL"); diff --git a/sym_ewram.txt b/sym_ewram.txt index 56d8e7104..9de1255c2 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -233,12 +233,8 @@ gUnknown_203982C: @ 203982C .include "src/special_field_anim.o" .align 2 .include "src/script_menu.o" - .align 2 - @ .include "src/naming_screen.o" -gNamingScreenData: @ 203998C - .space 0x4 - + .include "src/naming_screen.o" .align 2 .include "src/money.o" .align 2 |