summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-03-10 11:32:18 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-03-10 11:32:18 -0400
commit9aa9c22a7f73afa710c26144a0a4da50b7cdadf9 (patch)
tree79edbb6b9ee86cd670e02768bbb817eec9734c9d
parent98d63a5268258a7f83ee776300dd4a664ad45f59 (diff)
Finish naming_screen
-rw-r--r--asm/naming_screen.s1651
-rw-r--r--data/data_8479668.s24
-rw-r--r--data/naming_screen.s254
-rw-r--r--include/data_8479668.h13
-rw-r--r--include/graphics.h16
-rw-r--r--include/strings.h8
-rw-r--r--src/graphics.c4
-rw-r--r--src/naming_screen.c1117
-rw-r--r--src/strings.c12
-rw-r--r--sym_ewram.txt6
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