From 0fdffabbc8682c347694aa06f9fb7a7a8aad4e8e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 9 Mar 2020 14:28:13 -0400 Subject: [PATCH 01/10] through pokemon_store --- asm/naming_screen.s | 1066 +++++---------------------------------- data/naming_screen.s | 165 +----- include/graphics.h | 5 + include/naming_screen.h | 4 +- ld_script.txt | 2 + src/naming_screen.c | 567 +++++++++++++++++++++ sym_ewram.txt | 2 +- 7 files changed, 712 insertions(+), 1099 deletions(-) create mode 100644 src/naming_screen.c diff --git a/asm/naming_screen.s b/asm/naming_screen.s index 1e0d2ef68..2870ebe03 100644 --- a/asm/naming_screen.s +++ b/asm/naming_screen.s @@ -5,810 +5,8 @@ .text - thumb_func_start DoNamingScreen -DoNamingScreen: @ 809D954 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r1 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r2, 16 - lsrs r5, r2, 16 - lsls r3, 16 - lsrs r6, r3, 16 - ldr r4, _0809D980 @ =gUnknown_203998C - movs r0, 0xF2 - lsls r0, 5 - bl Alloc - str r0, [r4] - cmp r0, 0 - bne _0809D984 - ldr r0, [sp, 0x1C] - bl SetMainCallback2 - b _0809D9BE - .align 2, 0 -_0809D980: .4byte gUnknown_203998C -_0809D984: - ldr r1, _0809D9C8 @ =0x00001e2c - adds r0, r1 - strb r7, [r0] - ldr r0, [r4] - ldr r2, _0809D9CC @ =0x00001e34 - adds r1, r0, r2 - strh r5, [r1] - adds r2, 0x2 - adds r1, r0, r2 - strh r6, [r1] - ldr r1, _0809D9D0 @ =0x00001e38 - adds r2, r0, r1 - ldr r1, [sp, 0x18] - str r1, [r2] - ldr r2, _0809D9D4 @ =0x00001e30 - adds r1, r0, r2 - mov r2, r8 - str r2, [r1] - ldr r1, _0809D9D8 @ =0x00001e3c - adds r0, r1 - ldr r2, [sp, 0x1C] - str r2, [r0] - cmp r7, 0 - bne _0809D9B8 - bl StartTimer1 -_0809D9B8: - ldr r0, _0809D9DC @ =c2_choose_name_or_words_screen - bl SetMainCallback2 -_0809D9BE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809D9C8: .4byte 0x00001e2c -_0809D9CC: .4byte 0x00001e34 -_0809D9D0: .4byte 0x00001e38 -_0809D9D4: .4byte 0x00001e30 -_0809D9D8: .4byte 0x00001e3c -_0809D9DC: .4byte c2_choose_name_or_words_screen - thumb_func_end DoNamingScreen - - thumb_func_start c2_choose_name_or_words_screen -c2_choose_name_or_words_screen: @ 809D9E0 - push {lr} - ldr r0, _0809D9FC @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x7 - bhi _0809DA78 - lsls r0, 2 - ldr r1, _0809DA00 @ =_0809DA04 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809D9FC: .4byte gMain -_0809DA00: .4byte _0809DA04 - .align 2, 0 -_0809DA04: - .4byte _0809DA24 - .4byte _0809DA2E - .4byte _0809DA34 - .4byte _0809DA3A - .4byte _0809DA44 - .4byte _0809DA4A - .4byte _0809DA50 - .4byte _0809DA56 -_0809DA24: - bl sub_809FB88 - bl sub_809DA84 - b _0809DA62 -_0809DA2E: - bl choose_name_or_words_screen_init_bgs - b _0809DA62 -_0809DA34: - bl ResetPaletteFade - b _0809DA62 -_0809DA3A: - bl ResetSpriteData - bl FreeAllSpritePalettes - b _0809DA62 -_0809DA44: - bl ResetTasks - b _0809DA62 -_0809DA4A: - bl choose_name_or_words_screen_apply_bg_pals - b _0809DA62 -_0809DA50: - bl choose_name_or_words_screen_load_bg_tile_patterns - b _0809DA62 -_0809DA56: - bl sub_809E898 - bl UpdatePaletteFade - bl sub_809FC34 -_0809DA62: - ldr r1, _0809DA74 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0809DA80 - .align 2, 0 -_0809DA74: .4byte gMain -_0809DA78: - bl sub_809F8C0 - bl sub_809DD60 -_0809DA80: - pop {r0} - bx r0 - thumb_func_end c2_choose_name_or_words_screen - - thumb_func_start sub_809DA84 -sub_809DA84: @ 809DA84 - push {r4-r6,lr} - ldr r4, _0809DB3C @ =gUnknown_203998C - ldr r0, [r4] - ldr r1, _0809DB40 @ =0x00001e10 - adds r0, r1 - movs r2, 0 - strb r2, [r0] - ldr r1, [r4] - ldr r3, _0809DB44 @ =0x00001e18 - adds r0, r1, r3 - movs r5, 0 - strh r2, [r0] - ldr r6, _0809DB48 @ =0x00001e1a - adds r0, r1, r6 - strh r2, [r0] - ldr r0, _0809DB4C @ =0x00001e1c - adds r2, r1, r0 - movs r3, 0x1 - movs r0, 0x1 - strh r0, [r2] - adds r6, 0x4 - adds r2, r1, r6 - movs r0, 0x2 - strh r0, [r2] - movs r0, 0xF1 - lsls r0, 5 - adds r1, r0 - strb r5, [r1] - ldr r0, [r4] - ldr r1, _0809DB50 @ =0x00001e21 - adds r0, r1 - strb r3, [r0] - ldr r1, [r4] - ldr r5, _0809DB54 @ =0x00001e28 - adds r3, r1, r5 - ldr r2, _0809DB58 @ =gUnknown_83E248C - adds r6, 0xE - adds r0, r1, r6 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [r3] - ldrb r0, [r0, 0x4] - ldr r2, _0809DB5C @ =0x00001e22 - adds r1, r2 - strb r0, [r1] - ldr r2, [r4] - adds r0, r2, r5 - ldr r0, [r0] - ldrb r1, [r0, 0x1] - lsls r1, 3 - movs r0, 0xF0 - subs r0, r1 - asrs r0, 1 - adds r0, 0x6 - ldr r3, _0809DB60 @ =0x00001e16 - adds r1, r2, r3 - strh r0, [r1] - ldr r6, _0809DB64 @ =gKeyRepeatStartDelay - ldrh r0, [r6] - ldr r1, _0809DB68 @ =0x00001e25 - adds r2, r1 - strb r0, [r2] - ldr r0, [r4] - movs r2, 0xC0 - lsls r2, 5 - adds r0, r2 - movs r1, 0xFF - movs r2, 0x10 - bl memset - ldr r1, [r4] - adds r5, r1, r5 - ldr r0, [r5] - ldrb r0, [r0] - cmp r0, 0 - beq _0809DB30 - movs r3, 0xC0 - lsls r3, 5 - adds r0, r1, r3 - ldr r2, _0809DB6C @ =0x00001e30 - adds r1, r2 - ldr r1, [r1] - bl StringCopy -_0809DB30: - movs r0, 0x10 - strh r0, [r6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809DB3C: .4byte gUnknown_203998C -_0809DB40: .4byte 0x00001e10 -_0809DB44: .4byte 0x00001e18 -_0809DB48: .4byte 0x00001e1a -_0809DB4C: .4byte 0x00001e1c -_0809DB50: .4byte 0x00001e21 -_0809DB54: .4byte 0x00001e28 -_0809DB58: .4byte gUnknown_83E248C -_0809DB5C: .4byte 0x00001e22 -_0809DB60: .4byte 0x00001e16 -_0809DB64: .4byte gKeyRepeatStartDelay -_0809DB68: .4byte 0x00001e25 -_0809DB6C: .4byte 0x00001e30 - thumb_func_end sub_809DA84 - - thumb_func_start sub_809DB70 -sub_809DB70: @ 809DB70 - push {r4,r5,lr} - movs r3, 0 - ldr r4, _0809DBAC @ =gSprites - movs r5, 0x5 - negs r5, r5 -_0809DB7A: - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - adds r0, r4 - adds r2, r0, 0 - adds r2, 0x3E - ldrb r1, [r2] - lsls r0, r1, 31 - cmp r0, 0 - beq _0809DB94 - adds r0, r5, 0 - ands r0, r1 - strb r0, [r2] -_0809DB94: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3F - bls _0809DB7A - movs r0, 0 - bl sub_809EA0C - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809DBAC: .4byte gSprites - thumb_func_end sub_809DB70 - - thumb_func_start choose_name_or_words_screen_init_bgs -choose_name_or_words_screen_init_bgs: @ 809DBB0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r0, sp, 0xC - mov r8, r0 - add r2, sp, 0x8 - movs r6, 0 - ldr r1, _0809DD44 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _0809DD48 @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_0809DBD6: - strh r6, [r2] - add r0, sp, 0x8 - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _0809DBD6 - strh r6, [r2] - add r2, sp, 0x8 - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0xC] - ldr r2, _0809DD44 @ =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - add r0, sp, 0x8 - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0809DD4C @ =gUnknown_83E2290 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - bl InitStandardTextBoxWindows - bl ResetBg0 -_0809DCA4: - lsls r0, r4, 3 - ldr r1, _0809DD50 @ =gUnknown_83E22A0 - adds r0, r1 - bl AddWindow - ldr r5, _0809DD54 @ =gUnknown_203998C - ldr r1, [r5] - ldr r2, _0809DD58 @ =0x00001e11 - adds r1, r2 - adds r1, r4 - strb r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x4 - bls _0809DCA4 - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r1, 0xC8 - lsls r1, 3 - movs r0, 0x50 - bl SetGpuReg - ldr r1, _0809DD5C @ =0x0000080c - movs r0, 0x52 - bl SetGpuReg - ldr r1, [r5] - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r5] - movs r0, 0x80 - lsls r0, 4 - adds r1, r0 - movs r0, 0x2 - bl SetBgTilemapBuffer - ldr r1, [r5] - movs r2, 0x80 - lsls r2, 5 - adds r1, r2 - movs r0, 0x3 - bl SetBgTilemapBuffer - movs r4, 0x20 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809DD44: .4byte 0x040000d4 -_0809DD48: .4byte 0x81000800 -_0809DD4C: .4byte gUnknown_83E2290 -_0809DD50: .4byte gUnknown_83E22A0 -_0809DD54: .4byte gUnknown_203998C -_0809DD58: .4byte 0x00001e11 -_0809DD5C: .4byte 0x0000080c - thumb_func_end choose_name_or_words_screen_init_bgs - - thumb_func_start sub_809DD60 -sub_809DD60: @ 809DD60 - push {lr} - ldr r0, _0809DD80 @ =sub_809DD88 - movs r1, 0x2 - bl CreateTask - ldr r0, _0809DD84 @ =sub_809FB70 - bl SetMainCallback2 - bl BackupHelpContext - movs r0, 0x3 @ HELPCONTEXT_NAMING_SCREEN - bl SetHelpContext - pop {r0} - bx r0 - .align 2, 0 -_0809DD80: .4byte sub_809DD88 -_0809DD84: .4byte sub_809FB70 - thumb_func_end sub_809DD60 - - thumb_func_start sub_809DD88 -sub_809DD88: @ 809DD88 - push {lr} - ldr r0, _0809DDA4 @ =gUnknown_203998C - ldr r0, [r0] - ldr r1, _0809DDA8 @ =0x00001e10 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x9 - bhi _0809DE1A - lsls r0, 2 - ldr r1, _0809DDAC @ =_0809DDB0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809DDA4: .4byte gUnknown_203998C -_0809DDA8: .4byte 0x00001e10 -_0809DDAC: .4byte _0809DDB0 - .align 2, 0 -_0809DDB0: - .4byte _0809DDD8 - .4byte _0809DDE6 - .4byte _0809DDEC - .4byte _0809DDF2 - .4byte _0809DDF8 - .4byte _0809DDFE - .4byte _0809DE04 - .4byte _0809DE0A - .4byte _0809DE10 - .4byte _0809DE16 -_0809DDD8: - bl sub_809DE70 - bl sub_809DB70 - bl sub_809FB9C - b _0809DE1A -_0809DDE6: - bl sub_809DF28 - b _0809DE1A -_0809DDEC: - bl sub_809DF64 - b _0809DE1A -_0809DDF2: - bl sub_809DF74 - b _0809DE1A -_0809DDF8: - bl sub_809E210 - b _0809DE1A -_0809DDFE: - bl sub_809E250 - b _0809DE1A -_0809DE04: - bl pokemon_store - b _0809DE1A -_0809DE0A: - bl sub_809E1D4 - b _0809DE1A -_0809DE10: - bl sub_809E014 - b _0809DE1A -_0809DE16: - bl sub_809E048 -_0809DE1A: - pop {r0} - bx r0 - thumb_func_end sub_809DD88 - - thumb_func_start sub_809DE20 -sub_809DE20: @ 809DE20 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0809DE2C @ =gUnknown_83E234B - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0809DE2C: .4byte gUnknown_83E234B - thumb_func_end sub_809DE20 - - thumb_func_start sub_809DE30 -sub_809DE30: @ 809DE30 - ldr r1, _0809DE44 @ =gUnknown_83E234E - ldr r0, _0809DE48 @ =gUnknown_203998C - ldr r0, [r0] - ldr r2, _0809DE4C @ =0x00001e22 - adds r0, r2 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0809DE44: .4byte gUnknown_83E234E -_0809DE48: .4byte gUnknown_203998C -_0809DE4C: .4byte 0x00001e22 - thumb_func_end sub_809DE30 - - thumb_func_start sub_809DE50 -sub_809DE50: @ 809DE50 - ldr r1, _0809DE64 @ =gUnknown_83E2351 - ldr r0, _0809DE68 @ =gUnknown_203998C - ldr r0, [r0] - ldr r2, _0809DE6C @ =0x00001e22 - adds r0, r2 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0809DE64: .4byte gUnknown_83E2351 -_0809DE68: .4byte gUnknown_203998C -_0809DE6C: .4byte 0x00001e22 - thumb_func_end sub_809DE50 - - thumb_func_start sub_809DE70 -sub_809DE70: @ 809DE70 - push {r4-r6,lr} - sub sp, 0x4 - ldr r1, _0809DF08 @ =gUnknown_8E982BC - movs r0, 0x3 - bl sub_809F900 - ldr r5, _0809DF0C @ =gUnknown_203998C - ldr r0, [r5] - ldr r1, _0809DF10 @ =0x00001e22 - adds r0, r1 - movs r6, 0 - movs r1, 0x1 - strb r1, [r0] - ldr r1, _0809DF14 @ =gUnknown_8E98458 - movs r0, 0x2 - bl sub_809F900 - ldr r1, _0809DF18 @ =gUnknown_8E98398 - movs r0, 0x1 - bl sub_809F900 - ldr r0, [r5] - ldr r1, _0809DF1C @ =0x00001e12 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_809F9E8 - ldr r0, [r5] - ldr r1, _0809DF20 @ =0x00001e11 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x1 - bl sub_809F9E8 - bl sub_809F914 - bl sub_809F56C - bl sub_809FAE4 - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - movs r4, 0x1 - negs r4, r4 - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - str r6, [sp] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, [r5] - ldr r0, _0809DF24 @ =0x00001e10 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809DF08: .4byte gUnknown_8E982BC -_0809DF0C: .4byte gUnknown_203998C -_0809DF10: .4byte 0x00001e22 -_0809DF14: .4byte gUnknown_8E98458 -_0809DF18: .4byte gUnknown_8E98398 -_0809DF1C: .4byte 0x00001e12 -_0809DF20: .4byte 0x00001e11 -_0809DF24: .4byte 0x00001e10 - thumb_func_end sub_809DE70 - - thumb_func_start sub_809DF28 -sub_809DF28: @ 809DF28 - push {lr} - ldr r0, _0809DF58 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0809DF50 - movs r0, 0x1 - bl SetInputState - movs r0, 0x1 - bl sub_809EA64 - ldr r0, _0809DF5C @ =gUnknown_203998C - ldr r1, [r0] - ldr r0, _0809DF60 @ =0x00001e10 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0809DF50: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0809DF58: .4byte gPaletteFade -_0809DF5C: .4byte gUnknown_203998C -_0809DF60: .4byte 0x00001e10 - thumb_func_end sub_809DF28 - - thumb_func_start sub_809DF64 -sub_809DF64: @ 809DF64 - push {lr} - bl sub_809F0CC - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_809DF64 - - thumb_func_start sub_809DF74 -sub_809DF74: @ 809DF74 - push {lr} - bl sub_809EAD4 - lsls r0, 24 - cmp r0, 0 - beq _0809DF96 - movs r0, 0x1 - bl SetInputState - bl sub_809E9F8 - ldr r0, _0809DF9C @ =gUnknown_203998C - ldr r0, [r0] - ldr r1, _0809DFA0 @ =0x00001e10 - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] -_0809DF96: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0809DF9C: .4byte gUnknown_203998C -_0809DFA0: .4byte 0x00001e10 - thumb_func_end sub_809DF74 - - thumb_func_start pokemon_store -pokemon_store: @ 809DFA4 - push {r4,lr} - bl sub_809F7EC - movs r0, 0 - bl SetInputState - movs r0, 0 - bl sub_809EA64 - movs r0, 0x3 - movs r1, 0 - movs r2, 0x1 - bl sub_809E518 - ldr r4, _0809DFEC @ =gUnknown_203998C - ldr r0, [r4] - ldr r1, _0809DFF0 @ =0x00001e2c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x2 - bne _0809DFF8 - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _0809DFF8 - bl pokemon_transfer_to_pc_with_message - ldr r0, [r4] - ldr r1, _0809DFF4 @ =0x00001e10 - adds r0, r1 - movs r1, 0x7 - strb r1, [r0] - movs r0, 0 - b _0809E006 - .align 2, 0 -_0809DFEC: .4byte gUnknown_203998C -_0809DFF0: .4byte 0x00001e2c -_0809DFF4: .4byte 0x00001e10 -_0809DFF8: - ldr r0, _0809E00C @ =gUnknown_203998C - ldr r0, [r0] - ldr r1, _0809E010 @ =0x00001e10 - adds r0, r1 - movs r1, 0x8 - strb r1, [r0] - movs r0, 0x1 -_0809E006: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0809E00C: .4byte gUnknown_203998C -_0809E010: .4byte 0x00001e10 - thumb_func_end pokemon_store - - thumb_func_start sub_809E014 -sub_809E014: @ 809E014 + thumb_func_start MainState_BeginFadeInOut +MainState_BeginFadeInOut: @ 809E014 push {lr} sub sp, 0x4 movs r0, 0x1 @@ -818,7 +16,7 @@ sub_809E014: @ 809E014 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r0, _0809E040 @ =gUnknown_203998C + ldr r0, _0809E040 @ =gNamingScreenData ldr r1, [r0] ldr r0, _0809E044 @ =0x00001e10 adds r1, r0 @@ -830,12 +28,12 @@ sub_809E014: @ 809E014 pop {r1} bx r1 .align 2, 0 -_0809E040: .4byte gUnknown_203998C +_0809E040: .4byte gNamingScreenData _0809E044: .4byte 0x00001e10 - thumb_func_end sub_809E014 + thumb_func_end MainState_BeginFadeInOut - thumb_func_start sub_809E048 -sub_809E048: @ 809E048 + thumb_func_start MainState_WaitFadeOutAndExit +MainState_WaitFadeOutAndExit: @ 809E048 push {r4,r5,lr} ldr r0, _0809E0A0 @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -845,7 +43,7 @@ sub_809E048: @ 809E048 lsrs r5, r0, 24 cmp r5, 0 bne _0809E096 - ldr r4, _0809E0A4 @ =gUnknown_203998C + ldr r4, _0809E0A4 @ =gNamingScreenData ldr r0, [r4] ldr r1, _0809E0A8 @ =0x00001e2c adds r0, r1 @@ -876,11 +74,11 @@ _0809E096: bx r1 .align 2, 0 _0809E0A0: .4byte gPaletteFade -_0809E0A4: .4byte gUnknown_203998C +_0809E0A4: .4byte gNamingScreenData _0809E0A8: .4byte 0x00001e2c _0809E0AC: .4byte 0x00001e3c _0809E0B0: .4byte sub_809DD88 - thumb_func_end sub_809E048 + thumb_func_end MainState_WaitFadeOutAndExit thumb_func_start pokemon_transfer_to_pc_with_message pokemon_transfer_to_pc_with_message: @ 809E0B4 @@ -901,7 +99,7 @@ pokemon_transfer_to_pc_with_message: @ 809E0B4 adds r0, r4, 0 bl StringCopy ldr r0, _0809E0F8 @ =gStringVar2 - ldr r1, _0809E0FC @ =gUnknown_203998C + ldr r1, _0809E0FC @ =gNamingScreenData ldr r1, [r1] ldr r2, _0809E100 @ =0x00001e30 adds r1, r2 @@ -912,7 +110,7 @@ pokemon_transfer_to_pc_with_message: @ 809E0B4 _0809E0F0: .4byte gStringVar1 _0809E0F4: .4byte 0x00004037 _0809E0F8: .4byte gStringVar2 -_0809E0FC: .4byte gUnknown_203998C +_0809E0FC: .4byte gNamingScreenData _0809E100: .4byte 0x00001e30 _0809E104: ldr r4, _0809E1AC @ =gStringVar1 @@ -925,7 +123,7 @@ _0809E104: adds r0, r4, 0 bl StringCopy ldr r0, _0809E1B4 @ =gStringVar2 - ldr r1, _0809E1B8 @ =gUnknown_203998C + ldr r1, _0809E1B8 @ =gNamingScreenData ldr r1, [r1] ldr r2, _0809E1BC @ =0x00001e30 adds r1, r2 @@ -992,7 +190,7 @@ _0809E156: _0809E1AC: .4byte gStringVar1 _0809E1B0: .4byte 0x00004037 _0809E1B4: .4byte gStringVar2 -_0809E1B8: .4byte gUnknown_203998C +_0809E1B8: .4byte gNamingScreenData _0809E1BC: .4byte 0x00001e30 _0809E1C0: .4byte gStringVar3 _0809E1C4: .4byte 0x00000834 @@ -1016,7 +214,7 @@ sub_809E1D4: @ 809E1D4 ands r0, r1 cmp r0, 0 beq _0809E1FE - ldr r0, _0809E208 @ =gUnknown_203998C + ldr r0, _0809E208 @ =gNamingScreenData ldr r0, [r0] ldr r1, _0809E20C @ =0x00001e10 adds r0, r1 @@ -1028,12 +226,12 @@ _0809E1FE: bx r1 .align 2, 0 _0809E204: .4byte gMain -_0809E208: .4byte gUnknown_203998C +_0809E208: .4byte gNamingScreenData _0809E20C: .4byte 0x00001e10 thumb_func_end sub_809E1D4 - thumb_func_start sub_809E210 -sub_809E210: @ 809E210 + thumb_func_start MainState_StartPageSwap +MainState_StartPageSwap: @ 809E210 push {lr} movs r0, 0 bl SetInputState @@ -1047,7 +245,7 @@ sub_809E210: @ 809E210 bl sub_809E518 movs r0, 0x6 bl PlaySE - ldr r0, _0809E248 @ =gUnknown_203998C + ldr r0, _0809E248 @ =gNamingScreenData ldr r0, [r0] ldr r1, _0809E24C @ =0x00001e10 adds r0, r1 @@ -1057,12 +255,12 @@ sub_809E210: @ 809E210 pop {r1} bx r1 .align 2, 0 -_0809E248: .4byte gUnknown_203998C +_0809E248: .4byte gNamingScreenData _0809E24C: .4byte 0x00001e10 - thumb_func_end sub_809E210 + thumb_func_end MainState_StartPageSwap - thumb_func_start sub_809E250 -sub_809E250: @ 809E250 + thumb_func_start MainState_WaitPageSwap +MainState_WaitPageSwap: @ 809E250 push {r4-r6,lr} sub sp, 0x4 bl sub_809E364 @@ -1086,7 +284,7 @@ sub_809E250: @ 809E250 bne _0809E282 movs r5, 0x1 _0809E282: - ldr r2, _0809E2B8 @ =gUnknown_203998C + ldr r2, _0809E2B8 @ =gNamingScreenData ldr r0, [r2] ldr r1, _0809E2BC @ =0x00001e10 adds r0, r1 @@ -1112,7 +310,7 @@ _0809E282: lsrs r0, 24 b _0809E2E2 .align 2, 0 -_0809E2B8: .4byte gUnknown_203998C +_0809E2B8: .4byte gNamingScreenData _0809E2BC: .4byte 0x00001e10 _0809E2C0: .4byte 0x00001e22 _0809E2C4: @@ -1149,7 +347,7 @@ _0809E302: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_809E250 + thumb_func_end MainState_WaitPageSwap thumb_func_start sub_809E30C sub_809E30C: @ 809E30C @@ -1173,7 +371,7 @@ sub_809E32C: @ 809E32C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _0809E35C @ =gUnknown_83E2354 + ldr r5, _0809E35C @ =sPageSwapAnimStateFuncs ldr r2, _0809E360 @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -1194,7 +392,7 @@ _0809E33E: pop {r0} bx r0 .align 2, 0 -_0809E35C: .4byte gUnknown_83E2354 +_0809E35C: .4byte sPageSwapAnimStateFuncs _0809E360: .4byte gTasks thumb_func_end sub_809E32C @@ -1218,9 +416,9 @@ _0809E37E: bx r1 thumb_func_end sub_809E364 - thumb_func_start sub_809E384 -sub_809E384: @ 809E384 - ldr r1, _0809E3A0 @ =gUnknown_203998C + thumb_func_start PageSwapAnimState_Init +PageSwapAnimState_Init: @ 809E384 + ldr r1, _0809E3A0 @ =gNamingScreenData ldr r1, [r1] ldr r3, _0809E3A4 @ =0x00001e18 adds r2, r1, r3 @@ -1235,17 +433,17 @@ sub_809E384: @ 809E384 movs r0, 0 bx lr .align 2, 0 -_0809E3A0: .4byte gUnknown_203998C +_0809E3A0: .4byte gNamingScreenData _0809E3A4: .4byte 0x00001e18 _0809E3A8: .4byte 0x00001e1a - thumb_func_end sub_809E384 + thumb_func_end PageSwapAnimState_Init - thumb_func_start sub_809E3AC -sub_809E3AC: @ 809E3AC + thumb_func_start PageSwapAnimState_1 +PageSwapAnimState_1: @ 809E3AC push {r4,r5,lr} sub sp, 0x8 adds r4, r0, 0 - ldr r5, _0809E42C @ =gUnknown_203998C + ldr r5, _0809E42C @ =gNamingScreenData ldr r0, [r5] ldr r2, _0809E430 @ =0x00001e1a adds r1, r0, r2 @@ -1306,19 +504,19 @@ _0809E422: pop {r1} bx r1 .align 2, 0 -_0809E42C: .4byte gUnknown_203998C +_0809E42C: .4byte gNamingScreenData _0809E430: .4byte 0x00001e1a _0809E434: .4byte 0x00001e18 _0809E438: .4byte 0x00001e21 _0809E43C: .4byte 0x00001e1c - thumb_func_end sub_809E3AC + thumb_func_end PageSwapAnimState_1 - thumb_func_start sub_809E440 -sub_809E440: @ 809E440 + thumb_func_start PageSwapAnimState_2 +PageSwapAnimState_2: @ 809E440 push {r4,r5,lr} sub sp, 0x8 adds r4, r0, 0 - ldr r5, _0809E4C4 @ =gUnknown_203998C + ldr r5, _0809E4C4 @ =gNamingScreenData ldr r0, [r5] ldr r2, _0809E4C8 @ =0x00001e1a adds r1, r0, r2 @@ -1381,14 +579,14 @@ _0809E4BA: pop {r1} bx r1 .align 2, 0 -_0809E4C4: .4byte gUnknown_203998C +_0809E4C4: .4byte gNamingScreenData _0809E4C8: .4byte 0x00001e1a _0809E4CC: .4byte 0x00001e18 _0809E4D0: .4byte 0x00001e21 - thumb_func_end sub_809E440 + thumb_func_end PageSwapAnimState_2 - thumb_func_start sub_809E4D4 -sub_809E4D4: @ 809E4D4 + thumb_func_start PageSwapAnimState_Done +PageSwapAnimState_Done: @ 809E4D4 push {lr} ldr r0, _0809E4EC @ =sub_809E32C bl FindTaskIdByFunc @@ -1400,7 +598,7 @@ sub_809E4D4: @ 809E4D4 bx r1 .align 2, 0 _0809E4EC: .4byte sub_809E32C - thumb_func_end sub_809E4D4 + thumb_func_end PageSwapAnimState_Done thumb_func_start sub_809E4F0 sub_809E4F0: @ 809E4F0 @@ -1921,7 +1119,7 @@ sub_809E8B4: @ 809E8B4 movs r2, 0x58 movs r3, 0x1 bl CreateSprite - ldr r5, _0809E93C @ =gUnknown_203998C + ldr r5, _0809E93C @ =gNamingScreenData ldr r1, [r5] ldr r4, _0809E940 @ =0x00001e23 adds r1, r4 @@ -1979,7 +1177,7 @@ sub_809E8B4: @ 809E8B4 bx r0 .align 2, 0 _0809E938: .4byte gUnknown_83E25EC -_0809E93C: .4byte gUnknown_203998C +_0809E93C: .4byte gNamingScreenData _0809E940: .4byte 0x00001e23 _0809E944: .4byte gSprites thumb_func_end sub_809E8B4 @@ -1992,7 +1190,7 @@ sub_809E948: @ 809E948 lsls r0, 16 lsls r1, 16 lsrs r7, r1, 16 - ldr r1, _0809E994 @ =gUnknown_203998C + ldr r1, _0809E994 @ =gNamingScreenData ldr r1, [r1] ldr r2, _0809E998 @ =0x00001e23 adds r1, r2 @@ -2023,7 +1221,7 @@ sub_809E948: @ 809E948 adds r0, 0x26 b _0809E9AA .align 2, 0 -_0809E994: .4byte gUnknown_203998C +_0809E994: .4byte gNamingScreenData _0809E998: .4byte 0x00001e23 _0809E99C: .4byte gSprites _0809E9A0: .4byte gUnknown_83E2330 @@ -2052,7 +1250,7 @@ _0809E9AA: thumb_func_start sub_809E9CC sub_809E9CC: @ 809E9CC - ldr r2, _0809E9EC @ =gUnknown_203998C + ldr r2, _0809E9EC @ =gNamingScreenData ldr r2, [r2] ldr r3, _0809E9F0 @ =0x00001e23 adds r2, r3 @@ -2068,13 +1266,13 @@ sub_809E9CC: @ 809E9CC strh r0, [r1] bx lr .align 2, 0 -_0809E9EC: .4byte gUnknown_203998C +_0809E9EC: .4byte gNamingScreenData _0809E9F0: .4byte 0x00001e23 _0809E9F4: .4byte gSprites thumb_func_end sub_809E9CC - thumb_func_start sub_809E9F8 -sub_809E9F8: @ 809E9F8 + thumb_func_start MoveCursorToOKButton +MoveCursorToOKButton: @ 809E9F8 push {lr} bl sub_809EB40 lsls r0, 24 @@ -2083,7 +1281,7 @@ sub_809E9F8: @ 809E9F8 bl sub_809E948 pop {r0} bx r0 - thumb_func_end sub_809E9F8 + thumb_func_end MoveCursorToOKButton thumb_func_start sub_809EA0C sub_809EA0C: @ 809EA0C @@ -2091,7 +1289,7 @@ sub_809EA0C: @ 809EA0C lsls r0, 24 lsrs r0, 24 ldr r5, _0809EA54 @ =gSprites - ldr r1, _0809EA58 @ =gUnknown_203998C + ldr r1, _0809EA58 @ =gNamingScreenData ldr r4, [r1] ldr r1, _0809EA5C @ =0x00001e23 adds r4, r1 @@ -2124,7 +1322,7 @@ sub_809EA0C: @ 809EA0C bx r0 .align 2, 0 _0809EA54: .4byte gSprites -_0809EA58: .4byte gUnknown_203998C +_0809EA58: .4byte gNamingScreenData _0809EA5C: .4byte 0x00001e23 _0809EA60: .4byte 0xffffff00 thumb_func_end sub_809EA0C @@ -2134,7 +1332,7 @@ sub_809EA64: @ 809EA64 push {r4,r5,lr} lsls r0, 24 ldr r5, _0809EA9C @ =gSprites - ldr r1, _0809EAA0 @ =gUnknown_203998C + ldr r1, _0809EAA0 @ =gNamingScreenData ldr r4, [r1] ldr r1, _0809EAA4 @ =0x00001e23 adds r4, r1 @@ -2161,14 +1359,14 @@ sub_809EA64: @ 809EA64 bx r0 .align 2, 0 _0809EA9C: .4byte gSprites -_0809EAA0: .4byte gUnknown_203998C +_0809EAA0: .4byte gNamingScreenData _0809EAA4: .4byte 0x00001e23 thumb_func_end sub_809EA64 thumb_func_start sub_809EAA8 sub_809EAA8: @ 809EAA8 push {lr} - ldr r0, _0809EAC8 @ =gUnknown_203998C + ldr r0, _0809EAC8 @ =gNamingScreenData ldr r0, [r0] ldr r1, _0809EACC @ =0x00001e23 adds r0, r1 @@ -2183,15 +1381,15 @@ sub_809EAA8: @ 809EAA8 pop {r0} bx r0 .align 2, 0 -_0809EAC8: .4byte gUnknown_203998C +_0809EAC8: .4byte gNamingScreenData _0809EACC: .4byte 0x00001e23 _0809EAD0: .4byte gSprites thumb_func_end sub_809EAA8 - thumb_func_start sub_809EAD4 -sub_809EAD4: @ 809EAD4 + thumb_func_start IsCursorAnimFinished +IsCursorAnimFinished: @ 809EAD4 ldr r2, _0809EAF4 @ =gSprites - ldr r0, _0809EAF8 @ =gUnknown_203998C + ldr r0, _0809EAF8 @ =gNamingScreenData ldr r0, [r0] ldr r1, _0809EAFC @ =0x00001e23 adds r0, r1 @@ -2207,9 +1405,9 @@ sub_809EAD4: @ 809EAD4 bx lr .align 2, 0 _0809EAF4: .4byte gSprites -_0809EAF8: .4byte gUnknown_203998C +_0809EAF8: .4byte gNamingScreenData _0809EAFC: .4byte 0x00001e23 - thumb_func_end sub_809EAD4 + thumb_func_end IsCursorAnimFinished thumb_func_start sub_809EB00 sub_809EB00: @ 809EB00 @@ -2273,7 +1471,7 @@ sub_809EB5C: @ 809EB5C bl CreateSprite lsls r0, 24 lsrs r0, 24 - ldr r1, _0809EC04 @ =gUnknown_203998C + ldr r1, _0809EC04 @ =gNamingScreenData ldr r1, [r1] ldr r2, _0809EC08 @ =0x00001e24 adds r1, r2 @@ -2341,7 +1539,7 @@ sub_809EB5C: @ 809EB5C bx r0 .align 2, 0 _0809EC00: .4byte gUnknown_83E2574 -_0809EC04: .4byte gUnknown_203998C +_0809EC04: .4byte gNamingScreenData _0809EC08: .4byte 0x00001e24 _0809EC0C: .4byte gSprites _0809EC10: .4byte gUnknown_83E2504 @@ -2352,7 +1550,7 @@ _0809EC1C: .4byte gUnknown_83E258C thumb_func_start sub_809EC20 sub_809EC20: @ 809EC20 - ldr r0, _0809EC44 @ =gUnknown_203998C + ldr r0, _0809EC44 @ =gNamingScreenData ldr r2, [r0] ldr r1, _0809EC48 @ =0x00001e24 adds r0, r2, r1 @@ -2370,7 +1568,7 @@ sub_809EC20: @ 809EC20 strh r1, [r0, 0x30] bx lr .align 2, 0 -_0809EC44: .4byte gUnknown_203998C +_0809EC44: .4byte gNamingScreenData _0809EC48: .4byte 0x00001e24 _0809EC4C: .4byte gSprites _0809EC50: .4byte 0x00001e22 @@ -2416,7 +1614,7 @@ sub_809EC7C: @ 809EC7C adds r4, r0 lsls r4, 2 adds r4, r1 - ldr r0, _0809ECC8 @ =gUnknown_203998C + ldr r0, _0809ECC8 @ =gNamingScreenData ldr r0, [r0] ldr r1, _0809ECCC @ =0x00001e22 adds r0, r1 @@ -2436,7 +1634,7 @@ sub_809EC7C: @ 809EC7C bx r1 .align 2, 0 _0809ECC4: .4byte gSprites -_0809ECC8: .4byte gUnknown_203998C +_0809ECC8: .4byte gNamingScreenData _0809ECCC: .4byte 0x00001e22 thumb_func_end sub_809EC7C @@ -2651,7 +1849,7 @@ _0809EE5C: .4byte gUnknown_83E25D4 thumb_func_start sub_809EE60 sub_809EE60: @ 809EE60 push {r4-r6,lr} - ldr r5, _0809EF0C @ =gUnknown_203998C + ldr r5, _0809EF0C @ =gNamingScreenData ldr r0, [r5] ldr r4, _0809EF10 @ =0x00001e16 adds r0, r4 @@ -2723,7 +1921,7 @@ _0809EEB2: adds r4, 0x8 lsls r4, 16 lsrs r1, r4, 16 - ldr r0, _0809EF0C @ =gUnknown_203998C + ldr r0, _0809EF0C @ =gNamingScreenData ldr r0, [r0] ldr r2, _0809EF1C @ =0x00001e28 adds r0, r2 @@ -2736,7 +1934,7 @@ _0809EF04: pop {r0} bx r0 .align 2, 0 -_0809EF0C: .4byte gUnknown_203998C +_0809EF0C: .4byte gNamingScreenData _0809EF10: .4byte 0x00001e16 _0809EF14: .4byte gUnknown_83E2604 _0809EF18: .4byte gSprites @@ -2748,7 +1946,7 @@ _0809EF20: .4byte gUnknown_83E261C sub_809EF24: @ 809EF24 push {lr} ldr r1, _0809EF44 @ =gUnknown_83E2394 - ldr r0, _0809EF48 @ =gUnknown_203998C + ldr r0, _0809EF48 @ =gNamingScreenData ldr r0, [r0] ldr r2, _0809EF4C @ =0x00001e28 adds r0, r2 @@ -2762,7 +1960,7 @@ sub_809EF24: @ 809EF24 bx r0 .align 2, 0 _0809EF44: .4byte gUnknown_83E2394 -_0809EF48: .4byte gUnknown_203998C +_0809EF48: .4byte gNamingScreenData _0809EF4C: .4byte 0x00001e28 thumb_func_end sub_809EF24 @@ -2775,7 +1973,7 @@ nullsub_54: @ 809EF50 sub_809EF54: @ 809EF54 push {lr} sub sp, 0x4 - ldr r0, _0809EFA0 @ =gUnknown_203998C + ldr r0, _0809EFA0 @ =gNamingScreenData ldr r0, [r0] ldr r1, _0809EFA4 @ =0x00001e34 adds r0, r1 @@ -2808,7 +2006,7 @@ sub_809EF54: @ 809EF54 pop {r0} bx r0 .align 2, 0 -_0809EFA0: .4byte gUnknown_203998C +_0809EFA0: .4byte gNamingScreenData _0809EFA4: .4byte 0x00001e34 _0809EFA8: .4byte SpriteCallbackDummy _0809EFAC: .4byte gSprites @@ -2850,7 +2048,7 @@ sub_809EFF0: @ 809EFF0 push {lr} sub sp, 0xC bl LoadMonIconPalettes - ldr r0, _0809F038 @ =gUnknown_203998C + ldr r0, _0809F038 @ =gNamingScreenData ldr r3, [r0] ldr r1, _0809F03C @ =0x00001e34 adds r0, r3, r1 @@ -2882,7 +2080,7 @@ sub_809EFF0: @ 809EFF0 pop {r0} bx r0 .align 2, 0 -_0809F038: .4byte gUnknown_203998C +_0809F038: .4byte gNamingScreenData _0809F03C: .4byte 0x00001e34 _0809F040: .4byte SpriteCallbackDummy _0809F044: .4byte 0x00001e38 @@ -2948,8 +2146,8 @@ _0809F0C4: .4byte gUnknown_83E23BC _0809F0C8: .4byte gSprites thumb_func_end sub_809F04C - thumb_func_start sub_809F0CC -sub_809F0CC: @ 809F0CC + thumb_func_start HandleKeyboardEvent +HandleKeyboardEvent: @ 809F0CC push {r4,r5,lr} bl GetInputEvent lsls r0, 24 @@ -2983,14 +2181,14 @@ _0809F106: .align 2, 0 _0809F10C: .4byte gUnknown_83E23D0 _0809F110: - bl sub_809E9F8 + bl MoveCursorToOKButton _0809F114: movs r0, 0 _0809F116: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_809F0CC + thumb_func_end HandleKeyboardEvent thumb_func_start sub_809F11C sub_809F11C: @ 809F11C @@ -3013,7 +2211,7 @@ sub_809F11C: @ 809F11C beq _0809F156 movs r0, 0 bl SetInputState - ldr r0, _0809F160 @ =gUnknown_203998C + ldr r0, _0809F160 @ =gNamingScreenData ldr r0, [r0] ldr r1, _0809F164 @ =0x00001e10 adds r0, r1 @@ -3025,7 +2223,7 @@ _0809F156: pop {r1} bx r1 .align 2, 0 -_0809F160: .4byte gUnknown_203998C +_0809F160: .4byte gNamingScreenData _0809F164: .4byte 0x00001e10 thumb_func_end sub_809F11C @@ -3090,7 +2288,7 @@ KeyboardKeyHandler_OK: @ 809F1B4 _0809F1CE: movs r0, 0x5 bl PlaySE - ldr r0, _0809F1E8 @ =gUnknown_203998C + ldr r0, _0809F1E8 @ =gNamingScreenData ldr r0, [r0] ldr r1, _0809F1EC @ =0x00001e10 adds r0, r1 @@ -3102,13 +2300,13 @@ _0809F1E2: pop {r1} bx r1 .align 2, 0 -_0809F1E8: .4byte gUnknown_203998C +_0809F1E8: .4byte gNamingScreenData _0809F1EC: .4byte 0x00001e10 thumb_func_end KeyboardKeyHandler_OK thumb_func_start sub_809F1F0 sub_809F1F0: @ 809F1F0 - ldr r0, _0809F200 @ =gUnknown_203998C + ldr r0, _0809F200 @ =gNamingScreenData ldr r0, [r0] ldr r1, _0809F204 @ =0x00001e10 adds r0, r1 @@ -3117,7 +2315,7 @@ sub_809F1F0: @ 809F1F0 movs r0, 0x1 bx lr .align 2, 0 -_0809F200: .4byte gUnknown_203998C +_0809F200: .4byte gNamingScreenData _0809F204: .4byte 0x00001e10 thumb_func_end sub_809F1F0 @@ -3477,7 +2675,7 @@ _0809F480: sub_809F49C: @ 809F49C push {r4,r5,lr} sub sp, 0xC - ldr r5, _0809F4E4 @ =gUnknown_203998C + ldr r5, _0809F4E4 @ =gNamingScreenData ldr r0, [r5] ldr r4, _0809F4E8 @ =0x00001e14 adds r0, r4 @@ -3508,7 +2706,7 @@ sub_809F49C: @ 809F49C pop {r0} bx r0 .align 2, 0 -_0809F4E4: .4byte gUnknown_203998C +_0809F4E4: .4byte gNamingScreenData _0809F4E8: .4byte 0x00001e14 _0809F4EC: .4byte 0x00001e28 thumb_func_end sub_809F49C @@ -3517,7 +2715,7 @@ _0809F4EC: .4byte 0x00001e28 sub_809F4F0: @ 809F4F0 push {r4,r5,lr} sub sp, 0x2C - ldr r5, _0809F558 @ =gUnknown_203998C + ldr r5, _0809F558 @ =gNamingScreenData ldr r0, [r5] ldr r1, _0809F55C @ =0x00001e34 adds r0, r1 @@ -3563,7 +2761,7 @@ sub_809F4F0: @ 809F4F0 pop {r0} bx r0 .align 2, 0 -_0809F558: .4byte gUnknown_203998C +_0809F558: .4byte gNamingScreenData _0809F55C: .4byte 0x00001e34 _0809F560: .4byte gSpeciesNames _0809F564: .4byte 0x00001e28 @@ -3574,7 +2772,7 @@ _0809F568: .4byte 0x00001e14 sub_809F56C: @ 809F56C push {lr} ldr r1, _0809F588 @ =gUnknown_83E240C - ldr r0, _0809F58C @ =gUnknown_203998C + ldr r0, _0809F58C @ =gNamingScreenData ldr r0, [r0] ldr r2, _0809F590 @ =0x00001e2c adds r0, r2 @@ -3587,7 +2785,7 @@ sub_809F56C: @ 809F56C bx r0 .align 2, 0 _0809F588: .4byte gUnknown_83E240C -_0809F58C: .4byte gUnknown_203998C +_0809F58C: .4byte gNamingScreenData _0809F590: .4byte 0x00001e2c thumb_func_end sub_809F56C @@ -3595,7 +2793,7 @@ _0809F590: .4byte 0x00001e2c sub_809F594: @ 809F594 push {lr} ldr r1, _0809F5B4 @ =gUnknown_83E2420 - ldr r0, _0809F5B8 @ =gUnknown_203998C + ldr r0, _0809F5B8 @ =gNamingScreenData ldr r0, [r0] ldr r2, _0809F5BC @ =0x00001e28 adds r0, r2 @@ -3609,7 +2807,7 @@ sub_809F594: @ 809F594 bx r0 .align 2, 0 _0809F5B4: .4byte gUnknown_83E2420 -_0809F5B8: .4byte gUnknown_203998C +_0809F5B8: .4byte gNamingScreenData _0809F5BC: .4byte 0x00001e28 thumb_func_end sub_809F594 @@ -3626,7 +2824,7 @@ sub_809F5C4: @ 809F5C4 ldr r1, _0809F61C @ =gText_MaleSymbol add r0, sp, 0xC bl StringCopy - ldr r5, _0809F620 @ =gUnknown_203998C + ldr r5, _0809F620 @ =gNamingScreenData ldr r0, [r5] ldr r1, _0809F624 @ =0x00001e36 adds r0, r1 @@ -3665,7 +2863,7 @@ _0809F614: bx r0 .align 2, 0 _0809F61C: .4byte gText_MaleSymbol -_0809F620: .4byte gUnknown_203998C +_0809F620: .4byte gNamingScreenData _0809F624: .4byte 0x00001e36 _0809F628: .4byte gText_FemaleSymbol _0809F62C: .4byte 0x00001e13 @@ -3704,7 +2902,7 @@ _0809F664: .4byte gUnknown_83E22D0 sub_809F668: @ 809F668 push {r4,r5,lr} movs r2, 0 - ldr r0, _0809F690 @ =gUnknown_203998C + ldr r0, _0809F690 @ =gNamingScreenData ldr r4, [r0] ldr r3, _0809F694 @ =0x00001e28 adds r1, r4, r3 @@ -3724,7 +2922,7 @@ _0809F684: adds r0, r2, 0 b _0809F6B2 .align 2, 0 -_0809F690: .4byte gUnknown_203998C +_0809F690: .4byte gNamingScreenData _0809F694: .4byte 0x00001e28 _0809F698: adds r0, r2, 0x1 @@ -3752,7 +2950,7 @@ _0809F6B8: .4byte 0x00001e28 thumb_func_start sub_809F6BC sub_809F6BC: @ 809F6BC push {lr} - ldr r0, _0809F6E8 @ =gUnknown_203998C + ldr r0, _0809F6E8 @ =gNamingScreenData ldr r2, [r0] ldr r1, _0809F6EC @ =0x00001e28 adds r0, r2, r1 @@ -3774,7 +2972,7 @@ _0809F6D8: lsrs r0, r1, 24 b _0809F6FA .align 2, 0 -_0809F6E8: .4byte gUnknown_203998C +_0809F6E8: .4byte gNamingScreenData _0809F6EC: .4byte 0x00001e28 _0809F6F0: subs r0, r2, 0x1 @@ -3795,7 +2993,7 @@ sub_809F700: @ 809F700 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r6, _0809F758 @ =gUnknown_203998C + ldr r6, _0809F758 @ =gNamingScreenData ldr r0, [r6] movs r5, 0xC0 lsls r5, 5 @@ -3830,7 +3028,7 @@ _0809F74A: pop {r0} bx r0 .align 2, 0 -_0809F758: .4byte gUnknown_203998C +_0809F758: .4byte gNamingScreenData thumb_func_end sub_809F700 thumb_func_start sub_809F75C @@ -3859,7 +3057,7 @@ sub_809F75C: @ 809F75C bl sub_809F6BC lsls r0, 24 lsrs r0, 24 - ldr r1, _0809F7B0 @ =gUnknown_203998C + ldr r1, _0809F7B0 @ =gNamingScreenData ldr r1, [r1] ldr r2, _0809F7B4 @ =0x00001e28 adds r1, r2 @@ -3871,7 +3069,7 @@ sub_809F75C: @ 809F75C movs r0, 0x1 b _0809F7BA .align 2, 0 -_0809F7B0: .4byte gUnknown_203998C +_0809F7B0: .4byte gNamingScreenData _0809F7B4: .4byte 0x00001e28 _0809F7B8: movs r0, 0 @@ -3891,7 +3089,7 @@ sub_809F7C4: @ 809F7C4 bl sub_809F668 lsls r0, 24 lsrs r0, 24 - ldr r1, _0809F7E8 @ =gUnknown_203998C + ldr r1, _0809F7E8 @ =gNamingScreenData ldr r1, [r1] movs r2, 0xC0 lsls r2, 5 @@ -3902,14 +3100,14 @@ sub_809F7C4: @ 809F7C4 pop {r0} bx r0 .align 2, 0 -_0809F7E8: .4byte gUnknown_203998C +_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 @ =gUnknown_203998C + ldr r1, _0809F800 @ =gNamingScreenData ldr r0, [r1] ldr r4, _0809F804 @ =0x00001e28 adds r0, r4 @@ -3917,7 +3115,7 @@ sub_809F7EC: @ 809F7EC adds r5, r1, 0 b _0809F84C .align 2, 0 -_0809F800: .4byte gUnknown_203998C +_0809F800: .4byte gNamingScreenData _0809F804: .4byte 0x00001e28 _0809F808: ldr r1, [r1] @@ -3969,7 +3167,7 @@ _0809F858: .4byte 0x00001e28 choose_name_or_words_screen_load_bg_tile_patterns: @ 809F85C push {r4-r6,lr} ldr r0, _0809F8AC @ =gUnknown_8E980E4 - ldr r6, _0809F8B0 @ =gUnknown_203998C + ldr r6, _0809F8B0 @ =gNamingScreenData ldr r1, [r6] ldr r4, _0809F8B4 @ =0x00001810 adds r1, r4 @@ -4003,7 +3201,7 @@ choose_name_or_words_screen_load_bg_tile_patterns: @ 809F85C bx r0 .align 2, 0 _0809F8AC: .4byte gUnknown_8E980E4 -_0809F8B0: .4byte gUnknown_203998C +_0809F8B0: .4byte gNamingScreenData _0809F8B4: .4byte 0x00001810 _0809F8B8: .4byte gUnknown_83E267C _0809F8BC: .4byte gUnknown_83E26E4 @@ -4061,7 +3259,7 @@ sub_809F914: @ 809F914 mov r5, r8 push {r5-r7} sub sp, 0x10 - ldr r7, _0809F9D8 @ =gUnknown_203998C + ldr r7, _0809F9D8 @ =gNamingScreenData ldr r1, [r7] ldr r2, _0809F9DC @ =0x00001e28 adds r0, r1, r2 @@ -4131,7 +3329,7 @@ _0809F97A: bcc _0809F956 _0809F9AA: bl sub_809F594 - ldr r5, _0809F9D8 @ =gUnknown_203998C + ldr r5, _0809F9D8 @ =gNamingScreenData ldr r0, [r5] ldr r4, _0809F9E0 @ =0x00001e13 adds r0, r4 @@ -4151,7 +3349,7 @@ _0809F9AA: pop {r0} bx r0 .align 2, 0 -_0809F9D8: .4byte gUnknown_203998C +_0809F9D8: .4byte gNamingScreenData _0809F9DC: .4byte 0x00001e28 _0809F9E0: .4byte 0x00001e13 _0809F9E4: .4byte gExpandedPlaceholder_Empty @@ -4231,17 +3429,17 @@ sub_809FA60: @ 809FA60 bls _0809FA90 movs r2, 0x1 movs r5, 0x1 - ldr r1, _0809FA88 @ =gUnknown_203998C + ldr r1, _0809FA88 @ =gNamingScreenData ldr r0, [r1] ldr r3, _0809FA8C @ =0x00001e11 b _0809FA9A .align 2, 0 -_0809FA88: .4byte gUnknown_203998C +_0809FA88: .4byte gNamingScreenData _0809FA8C: .4byte 0x00001e11 _0809FA90: movs r2, 0x2 movs r5, 0x2 - ldr r1, _0809FAD4 @ =gUnknown_203998C + ldr r1, _0809FAD4 @ =gNamingScreenData ldr r0, [r1] ldr r3, _0809FAD8 @ =0x00001e12 _0809FA9A: @@ -4270,7 +3468,7 @@ _0809FA9A: pop {r0} bx r0 .align 2, 0 -_0809FAD4: .4byte gUnknown_203998C +_0809FAD4: .4byte gNamingScreenData _0809FAD8: .4byte 0x00001e12 _0809FADC: .4byte gUnknown_83E244C _0809FAE0: .4byte 0x00001e22 @@ -4293,7 +3491,7 @@ sub_809FAE4: @ 809FAE4 movs r2, 0 bl GetStringWidth adds r6, r0, 0 - ldr r5, _0809FB68 @ =gUnknown_203998C + ldr r5, _0809FB68 @ =gNamingScreenData ldr r0, [r5] ldr r4, _0809FB6C @ =0x00001e15 adds r0, r4 @@ -4336,7 +3534,7 @@ sub_809FAE4: @ 809FAE4 .align 2, 0 _0809FB60: .4byte gUnknown_83E2458 _0809FB64: .4byte gUnknown_8418E77 -_0809FB68: .4byte gUnknown_203998C +_0809FB68: .4byte gNamingScreenData _0809FB6C: .4byte 0x00001e15 thumb_func_end sub_809FAE4 @@ -4351,8 +3549,8 @@ sub_809FB70: @ 809FB70 bx r0 thumb_func_end sub_809FB70 - thumb_func_start sub_809FB88 -sub_809FB88: @ 809FB88 + thumb_func_start NamingScreen_TurnOffScreen +NamingScreen_TurnOffScreen: @ 809FB88 push {lr} movs r0, 0 bl SetVBlankCallback @@ -4360,10 +3558,10 @@ sub_809FB88: @ 809FB88 bl SetHBlankCallback pop {r0} bx r0 - thumb_func_end sub_809FB88 + thumb_func_end NamingScreen_TurnOffScreen - thumb_func_start sub_809FB9C -sub_809FB9C: @ 809FB9C + thumb_func_start NamingScreen_InitDisplayMode +NamingScreen_InitDisplayMode: @ 809FB9C push {lr} ldr r0, _0809FBA8 @ =sub_809FBAC bl SetVBlankCallback @@ -4371,7 +3569,7 @@ sub_809FB9C: @ 809FB9C bx r0 .align 2, 0 _0809FBA8: .4byte sub_809FBAC - thumb_func_end sub_809FB9C + thumb_func_end NamingScreen_InitDisplayMode thumb_func_start sub_809FBAC sub_809FBAC: @ 809FBAC @@ -4379,7 +3577,7 @@ sub_809FBAC: @ 809FBAC bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer - ldr r5, _0809FC1C @ =gUnknown_203998C + ldr r5, _0809FC1C @ =gNamingScreenData ldr r0, [r5] ldr r1, _0809FC20 @ =0x00001e18 adds r0, r1 @@ -4421,7 +3619,7 @@ sub_809FBAC: @ 809FBAC pop {r0} bx r0 .align 2, 0 -_0809FC1C: .4byte gUnknown_203998C +_0809FC1C: .4byte gNamingScreenData _0809FC20: .4byte 0x00001e18 _0809FC24: .4byte 0x00001e1a _0809FC28: .4byte 0x0000fffc diff --git a/data/naming_screen.s b/data/naming_screen.s index b7d348165..e06159b00 100644 --- a/data/naming_screen.s +++ b/data/naming_screen.s @@ -6,166 +6,6 @@ .section .rodata .align 2 -gUnknown_83E1800:: @ 83E1800 - .incbin "graphics/interface/naming_screen_83E1800.4bpp" - -gUnknown_83E18C0:: @ 83E18C0 - .incbin "graphics/interface/naming_screen_83E18C0.4bpp" - -gUnknown_83E1980:: @ 83E1980 - .incbin "graphics/interface/naming_screen_83E1980.4bpp" - -gUnknown_83E2280:: @ 83E2280 - .4byte Text_MonSentToBoxInSomeonesPC - .4byte Text_MonSentToBoxInBillsPC - .4byte Text_MonSentToBoxSomeonesBoxFull - .4byte Text_MonSentToBoxBillsBoxFull - -gUnknown_83E2290:: @ 83E2290 - .4byte 0x000001e0 - @ { - @ .bg = 0, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 30, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 0, - @ .baseTile = 0x0000 - @ } - .4byte 0x000011d9 - @ { - @ .bg = 1, - @ .charBaseIndex = 2, - @ .mapBaseIndex = 29, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 1, - @ .baseTile = 0x0000 - @ } - .4byte 0x000021ca - @ { - @ .bg = 2, - @ .charBaseIndex = 2, - @ .mapBaseIndex = 28, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 2, - @ .baseTile = 0x0000 - @ } - .4byte 0x000031ff - @ { - @ .bg = 3, - @ .charBaseIndex = 3, - @ .mapBaseIndex = 31, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 3, - @ .baseTile = 0x0000 - @ } - -gUnknown_83E22A0:: @ 83E22A0 - .byte 1, 3, 10, 19, 8, 10 - .2byte 0x0030 - @ { - @ .bg = 1, - @ .tilemapLeft = 3, - @ .tilemapTop = 10, - @ .width = 19, - @ .height = 8, - @ .paletteNum = 10, - @ .baseBlock = 0x0030 - @ } - .byte 2, 3, 10, 19, 8, 10 - .2byte 0x00c8 - @ { - @ .bg = 2, - @ .tilemapLeft = 3, - @ .tilemapTop = 10, - @ .width = 19, - @ .height = 8, - @ .paletteNum = 10, - @ .baseBlock = 0x00c8 - @ } - .byte 3, 8, 6, 14, 2, 10 - .2byte 0x0030 - @ { - @ .bg = 3, - @ .tilemapLeft = 8, - @ .tilemapTop = 6, - @ .width = 14, - @ .height = 2, - @ .paletteNum = 10, - @ .baseBlock = 0x0030 - @ } - .byte 3, 9, 4, 16, 2, 10 - .2byte 0x004c - @ { - @ .bg = 3, - @ .tilemapLeft = 9, - @ .tilemapTop = 4, - @ .width = 16, - @ .height = 2, - @ .paletteNum = 10, - @ .baseBlock = 0x004c - @ } - .byte 0, 0, 0, 30, 2, 11 - .2byte 0x006c - @ { - @ .bg = 0, - @ .tilemapLeft = 0, - @ .tilemapTop = 0, - @ .width = 30, - @ .height = 2, - @ .paletteNum = 11, - @ .baseBlock = 0x006c - @ } - .byte 255, 0, 0, 0, 0, 0 - .2byte 0x0000 - @ { - @ .bg = 255, - @ .tilemapLeft = 0, - @ .tilemapTop = 0, - @ .width = 0, - @ .height = 0, - @ .paletteNum = 0, - @ .baseBlock = 0x0000 - @ } - -gUnknown_83E22D0:: @ 83E22D0 - .string "abcdef .", 8 - .string "ghijkl ,", 8 - .string "mnopqrs", 8 - .string "tuvwxyz", 8 - .string "ABCDEF .", 8 - .string "GHIJKL ,", 8 - .string "MNOPQRS", 8 - .string "TUVWXYZ", 8 - .string "01234", 8 - .string "56789", 8 - .string "!?♂♀/-", 8 - .string "…“”‘'", 8 - -gUnknown_83E2330:: @ 83E2330 - .byte 0x08, 0x08, 0x06 - -gUnknown_83E2333:: @ 83E2333 - .byte 0x00, 0x0c, 0x18, 0x38, 0x44, 0x50, 0x5c, 0x7b, 0x00, 0x0c, 0x18, 0x38, 0x44, 0x50, 0x5c, 0x7b, 0x00, 0x16, 0x2c, 0x42, 0x58, 0x6e, 0x00, 0x00 - -gUnknown_83E234B:: @ 83E234B - .byte 0x00, 0x02, 0x01 - -gUnknown_83E234E:: @ 83E234E - .byte 0x01, 0x00, 0x02 - -gUnknown_83E2351:: @ 83E2351 - .byte 0x02, 0x01, 0x00 - -gUnknown_83E2354:: @ 83E2354 - .4byte sub_809E384 - .4byte sub_809E3AC - .4byte sub_809E440 - .4byte sub_809E4D4 - gUnknown_83E2364:: @ 83E2364 .2byte 0x0000, 0xfffc, 0xfffe, 0xffff @@ -173,8 +13,9 @@ gUnknown_83E236C:: @ 83E236C .2byte 0x0002, 0x0003, 0x0002, 0x0001 gUnknown_83E2374:: @ 83E2374 - .byte 0x01, 0x02, 0x03, 0x00 + .byte 0x01, 0x02, 0x03 + .align 2 gUnknown_83E2378:: @ 83E2378 .4byte sub_809EC7C .4byte sub_809ECD0 @@ -293,7 +134,7 @@ gUnknown_83E2480:: @ 83E2480 .align 2 .4byte gUnknown_8418E69 -gUnknown_83E248C:: @ 83E248C +sNamingScreenTemplates:: @ 83E248C .4byte gUnknown_83E245C .4byte gUnknown_83E2468 .4byte gUnknown_83E2474 diff --git a/include/graphics.h b/include/graphics.h index a61d5f62f..f85b95bad 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4895,4 +4895,9 @@ extern const u32 gEasyChatRedRectangularCursor_Tiles[]; extern const u32 gEasyChatSelectGroupHelp_Tiles[]; extern const u32 gEasyChatModeIcons_Tiles[]; +// naming_screen +extern const u32 gUnknown_8E982BC[]; +extern const u32 gUnknown_8E98458[]; +extern const u32 gUnknown_8E98398[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/naming_screen.h b/include/naming_screen.h index be2cf34f8..424d1bdba 100644 --- a/include/naming_screen.h +++ b/include/naming_screen.h @@ -7,8 +7,8 @@ #define NAMING_SCREEN_BOX 1 #define NAMING_SCREEN_CAUGHT_MON 2 #define NAMING_SCREEN_3 3 -#define NAMING_SCREEN_WALDA 4 +#define NAMING_SCREEN_WALDA 4 // Wrong name? -void DoNamingScreen(u8 caseId, u8* dst, u16 monSpecies, u8 monGender, u32 monPersonality, void (*callback)(void)); +void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGender, u32 monPersonality, MainCallback returnCallback); #endif // GUARD_NAMING_SCREEN_H diff --git a/ld_script.txt b/ld_script.txt index c2b35f7a2..28d187d26 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -141,6 +141,7 @@ SECTIONS { src/special_field_anim.o(.text); src/berry.o(.text); src/script_menu.o(.text); + src/naming_screen.o(.text); asm/naming_screen.o(.text); src/money.o(.text); src/script_pokemon_util.o(.text); @@ -459,6 +460,7 @@ SECTIONS { src/special_field_anim.o(.rodata); src/berry.o(.rodata); src/script_menu.o(.rodata); + src/naming_screen.o(.rodata); data/naming_screen.o(.rodata); src/pokemon_size_record.o(.rodata); src/item_use.o(.rodata); diff --git a/src/naming_screen.c b/src/naming_screen.c new file mode 100644 index 000000000..a929f9f4e --- /dev/null +++ b/src/naming_screen.c @@ -0,0 +1,567 @@ +#include "global.h" +#include "gflib.h" +#include "graphics.h" +#include "event_scripts.h" +#include "help_system.h" +#include "naming_screen.h" +#include "new_menu_helpers.h" +#include "strings.h" +#include "task.h" +#include "constants/help_system.h" + +enum +{ + KBPAGE_LETTERS_LOWER, + KBPAGE_LETTERS_UPPER, + KBPAGE_SYMBOLS, + KBPAGE_COUNT, +}; + +enum +{ + MAIN_STATE_BEGIN_FADE_IN, + MAIN_STATE_WAIT_FADE_IN, + MAIN_STATE_HANDLE_INPUT, + MAIN_STATE_MOVE_TO_OK_BUTTON, + MAIN_STATE_START_PAGE_SWAP, + MAIN_STATE_WAIT_PAGE_SWAP, + MAIN_STATE_6, + MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE, + MAIN_STATE_BEGIN_FADE_OUT, + MAIN_STATE_WAIT_FADE_OUT_AND_EXIT, +}; + +enum +{ + INPUT_STATE_DISABLED, + INPUT_STATE_ENABLED, + INPUT_STATE_2, +}; + +struct NamingScreenTemplate +{ + u8 copyExistingString; + u8 maxChars; + u8 iconFunction; + u8 addGenderIcon; + u8 initialPage; + u8 unused; + const u8 *title; +}; + +struct NamingScreenData { + /*0x0*/ u8 tilemapBuffer1[0x800]; + /*0x800*/ u8 tilemapBuffer2[0x800]; + /*0x800*/ u8 tilemapBuffer3[0x800]; + /*0x1800*/ u8 textBuffer[0x10]; + /*0x1810*/ u8 tileBuffer[0x600]; + /*0x1E10*/ u8 state; + /*0x1E11*/ u8 windows[5]; + /*0x1E16*/ u16 inputCharBaseXPos; + /*0x1E18*/ u16 bg1vOffset; + /*0x1E1A*/ u16 bg2vOffset; + /*0x1E1C*/ u16 bg1Priority; + /*0x1E1E*/ u16 bg2Priority; + /*0x1E20*/ u8 bgToReveal; + /*0x1E21*/ u8 bgToHide; + /*0x1E22*/ u8 currentPage; + /*0x1E23*/ u8 cursorSpriteId; + /*0x1E24*/ u8 selectBtnFrameSpriteId; + /*0x1E25*/ u8 keyRepeatStartDelayCopy; + /*0x1E28*/ const struct NamingScreenTemplate *template; + /*0x1E2C*/ u8 templateNum; + /*0x1E30*/ u8 *destBuffer; + /*0x1E34*/ u16 monSpecies; + /*0x1E36*/ u16 monGender; + /*0x1E38*/ u32 monPersonality; + /*0x1E3C*/ MainCallback returnCallback; +}; + +EWRAM_DATA struct NamingScreenData * gNamingScreenData = NULL; + +void C2_NamingScreen(void); +void NamingScreen_Init(void); +void NamingScreen_InitBGs(void); +void sub_809DD60(void); +void sub_809DD88(u8 taskId); +bool8 MainState_BeginFadeIn(void); +bool8 MainState_WaitFadeIn(void); +bool8 MainState_HandleInput(void); +bool8 MainState_MoveToOKButton(void); +bool8 pokemon_store(void); +void pokemon_transfer_to_pc_with_message(void); +bool8 NamingScreen_InitDisplayMode(void); +bool8 MainState_StartPageSwap(void); +bool8 MainState_WaitPageSwap(void); +bool8 sub_809E1D4(void); +bool8 PageSwapAnimState_Init(struct Task * task); +bool8 PageSwapAnimState_1(struct Task * task); +bool8 PageSwapAnimState_2(struct Task * task); +bool8 PageSwapAnimState_Done(struct Task * task); +void MainState_BeginFadeInOut(void); +void MainState_WaitFadeOutAndExit(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); +void sub_809E518(u8 a0, u8 a1, u8 a2); +void sub_809E898(void); +bool8 IsCursorAnimFinished(); +void MoveCursorToOKButton(); +void sub_809EA0C(u8 a0); +void sub_809EA64(u8 a0); +bool8 HandleKeyboardEvent(void); +void SetInputState(u8 state); +void sub_809F56C(void); +void sub_809F7EC(void); +void sub_809F8C0(void); +void sub_809F900(u8 bgId, const u32 * tmap); +void sub_809F914(void); +void sub_809F9E8(u8 windowId, u8 kbPage); +void sub_809FAE4(void); +void sub_809FB70(void); +void sub_809FC34(void); + +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"); + +const u8 *const gUnknown_83E2280[] = { + Text_MonSentToBoxInSomeonesPC, + Text_MonSentToBoxInBillsPC, + Text_MonSentToBoxSomeonesBoxFull, + Text_MonSentToBoxBillsBoxFull +}; + +const struct BgTemplate gUnknown_83E2290[4] = { + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 2, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 28, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + }, { + .bg = 3, + .charBaseIndex = 3, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0x000 + } +}; + +const struct WindowTemplate gUnknown_83E22A0[6] = { + { + .bg = 1, + .tilemapLeft = 3, + .tilemapTop = 10, + .width = 19, + .height = 8, + .paletteNum = 10, + .baseBlock = 0x0030 + }, { + .bg = 2, + .tilemapLeft = 3, + .tilemapTop = 10, + .width = 19, + .height = 8, + .paletteNum = 10, + .baseBlock = 0x00c8 + }, { + .bg = 3, + .tilemapLeft = 8, + .tilemapTop = 6, + .width = 14, + .height = 2, + .paletteNum = 10, + .baseBlock = 0x0030 + }, { + .bg = 3, + .tilemapLeft = 9, + .tilemapTop = 4, + .width = 16, + .height = 2, + .paletteNum = 10, + .baseBlock = 0x004c + }, { + .bg = 0, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 30, + .height = 2, + .paletteNum = 11, + .baseBlock = 0x006c + }, DUMMY_WIN_TEMPLATE +}; + +const u8 gUnknown_83E22D0[][4][8] = { + [KBPAGE_LETTERS_LOWER] = { + __("abcdef ."), + __("ghijkl ,"), + __("mnopqrs"), + __("tuvwxyz"), + }, + [KBPAGE_LETTERS_UPPER] = { + __("ABCDEF ."), + __("GHIJKL ,"), + __("MNOPQRS"), + __("TUVWXYZ"), + }, + [KBPAGE_SYMBOLS] = { + __("01234"), + __("56789"), + __("!?♂♀/-"), + __("…“”‘'"), + } +}; + +const u8 gUnknown_83E2330[] = { + [KBPAGE_LETTERS_LOWER] = 8, // lower + [KBPAGE_LETTERS_UPPER] = 8, // upper + [KBPAGE_SYMBOLS] = 6 +}; + +const u8 gUnknown_83E2333[][8] = { + [KBPAGE_LETTERS_LOWER] = { + 0, + 12, + 24, + 56, + 68, + 80, + 92, + 123 + }, + [KBPAGE_LETTERS_UPPER] = { + 0, + 12, + 24, + 56, + 68, + 80, + 92, + 123 + }, + [KBPAGE_SYMBOLS] = { + 0, + 22, + 44, + 66, + 88, + 110 + } +}; + +extern const struct NamingScreenTemplate *const sNamingScreenTemplates[]; + +void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGender, u32 monPersonality, MainCallback returnCallback) +{ + gNamingScreenData = Alloc(sizeof(struct NamingScreenData)); + if (!gNamingScreenData) + { + SetMainCallback2(returnCallback); + } + else + { + gNamingScreenData->templateNum = templateNum; + gNamingScreenData->monSpecies = monSpecies; + gNamingScreenData->monGender = monGender; + gNamingScreenData->monPersonality = monPersonality; + gNamingScreenData->destBuffer = destBuffer; + gNamingScreenData->returnCallback = returnCallback; + + if (templateNum == 0) + StartTimer1(); + + SetMainCallback2(C2_NamingScreen); + } +} + +void C2_NamingScreen(void) +{ + switch (gMain.state) + { + case 0: + NamingScreen_TurnOffScreen(); + NamingScreen_Init(); + gMain.state++; + break; + case 1: + NamingScreen_InitBGs(); + gMain.state++; + break; + case 2: + ResetPaletteFade(); + gMain.state++; + break; + case 3: + ResetSpriteData(); + FreeAllSpritePalettes(); + gMain.state++; + break; + case 4: + ResetTasks(); + gMain.state++; + break; + case 5: + choose_name_or_words_screen_apply_bg_pals(); + gMain.state++; + break; + case 6: + choose_name_or_words_screen_load_bg_tile_patterns(); + gMain.state++; + break; + case 7: + sub_809E898(); + UpdatePaletteFade(); + sub_809FC34(); + gMain.state++; + break; + default: + sub_809F8C0(); + sub_809DD60(); + break; + } +} + +void NamingScreen_Init(void) +{ + gNamingScreenData->state = 0; + gNamingScreenData->bg1vOffset = 0; + gNamingScreenData->bg2vOffset = 0; + gNamingScreenData->bg1Priority = BGCNT_PRIORITY(1); + gNamingScreenData->bg2Priority = BGCNT_PRIORITY(2); + gNamingScreenData->bgToReveal = 0; + gNamingScreenData->bgToHide = 1; + gNamingScreenData->template = sNamingScreenTemplates[gNamingScreenData->templateNum]; + gNamingScreenData->currentPage = gNamingScreenData->template->initialPage; + gNamingScreenData->inputCharBaseXPos = (240 - gNamingScreenData->template->maxChars * 8) / 2 + 6; + gNamingScreenData->keyRepeatStartDelayCopy = gKeyRepeatStartDelay; + memset(gNamingScreenData->textBuffer, 0xFF, sizeof(gNamingScreenData->textBuffer)); + if (gNamingScreenData->template->copyExistingString != 0) + StringCopy(gNamingScreenData->textBuffer, gNamingScreenData->destBuffer); + gKeyRepeatStartDelay = 16; +} + +void sub_809DB70(void) +{ + u8 i; + for (i = 0; i < MAX_SPRITES; i++) + { + if (gSprites[i].inUse) + gSprites[i].invisible = FALSE; + } + sub_809EA0C(0); +} + +void NamingScreen_InitBGs(void) +{ + u8 i; + + DmaClearLarge16(3, (void *)VRAM, VRAM_SIZE, 0x1000); + DmaClear32(3, (void *)OAM, OAM_SIZE); + DmaClear16(3, (void *)PLTT, PLTT_SIZE); + + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0); + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, gUnknown_83E2290, NELEMS(gUnknown_83E2290)); + + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + + InitStandardTextBoxWindows(); + ResetBg0(); + + for (i = 0; i < NELEMS(gUnknown_83E22A0) - 1; i++) + gNamingScreenData->windows[i] = AddWindow(&gUnknown_83E22A0[i]); + + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0xC, 0x8)); + + SetBgTilemapBuffer(1, gNamingScreenData->tilemapBuffer1); + SetBgTilemapBuffer(2, gNamingScreenData->tilemapBuffer2); + SetBgTilemapBuffer(3, gNamingScreenData->tilemapBuffer3); + + FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 0x20, 0x20); + FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 0x20, 0x20); + FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 0x20, 0x20); +} + +void sub_809DD60(void) +{ + CreateTask(sub_809DD88, 2); + SetMainCallback2(sub_809FB70); + BackupHelpContext(); + SetHelpContext(HELPCONTEXT_NAMING_SCREEN); +} + +void sub_809DD88(u8 taskId) +{ + switch (gNamingScreenData->state) + { + case MAIN_STATE_BEGIN_FADE_IN: + MainState_BeginFadeIn(); + sub_809DB70(); + NamingScreen_InitDisplayMode(); + break; + case MAIN_STATE_WAIT_FADE_IN: + MainState_WaitFadeIn(); + break; + case MAIN_STATE_HANDLE_INPUT: + MainState_HandleInput(); + break; + case MAIN_STATE_MOVE_TO_OK_BUTTON: + MainState_MoveToOKButton(); + break; + case MAIN_STATE_START_PAGE_SWAP: + MainState_StartPageSwap(); + break; + case MAIN_STATE_WAIT_PAGE_SWAP: + MainState_WaitPageSwap(); + break; + case MAIN_STATE_6: + pokemon_store(); + break; + case MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE: + sub_809E1D4(); + break; + case MAIN_STATE_BEGIN_FADE_OUT: + MainState_BeginFadeInOut(); + break; + case MAIN_STATE_WAIT_FADE_OUT_AND_EXIT: + MainState_WaitFadeOutAndExit(); + break; + } +} + +const u8 sPageOrderLowerFirst[] = { + KBPAGE_LETTERS_LOWER, + KBPAGE_SYMBOLS, + KBPAGE_LETTERS_UPPER +}; + +const u8 sPageOrderUpperFirst[] = { + KBPAGE_LETTERS_UPPER, + KBPAGE_LETTERS_LOWER, + KBPAGE_SYMBOLS +}; + +const u8 sPageOrderSymbolsFirst[] = { + KBPAGE_SYMBOLS, + KBPAGE_LETTERS_UPPER, + KBPAGE_LETTERS_LOWER +}; + +u8 sub_809DE20(u8 a1) +{ + return sPageOrderLowerFirst[a1]; +} + +bool8 (*const sPageSwapAnimStateFuncs[])(struct Task * task) = { + PageSwapAnimState_Init, + PageSwapAnimState_1, + PageSwapAnimState_2, + PageSwapAnimState_Done +}; + +u8 sub_809DE30(void) +{ + return sPageOrderUpperFirst[gNamingScreenData->currentPage]; +} + +u8 sub_809DE50(void) +{ + return sPageOrderSymbolsFirst[gNamingScreenData->currentPage]; +} + +bool8 MainState_BeginFadeIn(void) +{ + sub_809F900(3, gUnknown_8E982BC); + gNamingScreenData->currentPage = KBPAGE_LETTERS_UPPER; + sub_809F900(2, gUnknown_8E98458); + sub_809F900(1, gUnknown_8E98398); + sub_809F9E8(gNamingScreenData->windows[1], KBPAGE_LETTERS_LOWER); + sub_809F9E8(gNamingScreenData->windows[0], KBPAGE_LETTERS_UPPER); + sub_809F914(); + sub_809F56C(); + sub_809FAE4(); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + BlendPalettes(-1, 16, RGB_BLACK); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + gNamingScreenData->state++; + return FALSE; +} + +bool8 MainState_WaitFadeIn(void) +{ + if (!gPaletteFade.active) + { + SetInputState(INPUT_STATE_ENABLED); + sub_809EA64(1); + gNamingScreenData->state++; + } + return FALSE; +} + +bool8 MainState_HandleInput(void) +{ + return HandleKeyboardEvent(); +} + +bool8 MainState_MoveToOKButton(void) +{ + if (IsCursorAnimFinished()) + { + SetInputState(INPUT_STATE_ENABLED); + MoveCursorToOKButton(); + gNamingScreenData->state = MAIN_STATE_HANDLE_INPUT; + } + return FALSE; +} + +bool8 pokemon_store(void) +{ + sub_809F7EC(); + SetInputState(INPUT_STATE_DISABLED); + sub_809EA64(0); + sub_809E518(3, 0, 1); + if (gNamingScreenData->templateNum == NAMING_SCREEN_CAUGHT_MON && + CalculatePlayerPartyCount() >= 6) + { + pokemon_transfer_to_pc_with_message(); + gNamingScreenData->state = MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE; + return FALSE; + } + else + { + gNamingScreenData->state = MAIN_STATE_BEGIN_FADE_OUT; + return TRUE; //Exit the naming screen + } +} diff --git a/sym_ewram.txt b/sym_ewram.txt index ea2b7b749..56d8e7104 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -236,7 +236,7 @@ gUnknown_203982C: @ 203982C .align 2 @ .include "src/naming_screen.o" -gUnknown_203998C: @ 203998C +gNamingScreenData: @ 203998C .space 0x4 .align 2 From 3a83a987b40c9208697d375e687e11bd21b5ed45 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 9 Mar 2020 16:19:16 -0400 Subject: [PATCH 02/10] through sub_809E6E0 --- asm/naming_screen.s | 921 +------------------------------ include/field_effect.h | 1 + include/field_specials.h | 1 + include/pokemon_storage_system.h | 3 +- src/naming_screen.c | 348 +++++++++++- 5 files changed, 361 insertions(+), 913 deletions(-) diff --git a/asm/naming_screen.s b/asm/naming_screen.s index 2870ebe03..fd065f6f6 100644 --- a/asm/naming_screen.s +++ b/asm/naming_screen.s @@ -5,881 +5,6 @@ .text - thumb_func_start MainState_BeginFadeInOut -MainState_BeginFadeInOut: @ 809E014 - push {lr} - sub sp, 0x4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0809E040 @ =gNamingScreenData - ldr r1, [r0] - ldr r0, _0809E044 @ =0x00001e10 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 - add sp, 0x4 - pop {r1} - bx r1 - .align 2, 0 -_0809E040: .4byte gNamingScreenData -_0809E044: .4byte 0x00001e10 - thumb_func_end MainState_BeginFadeInOut - - thumb_func_start MainState_WaitFadeOutAndExit -MainState_WaitFadeOutAndExit: @ 809E048 - push {r4,r5,lr} - ldr r0, _0809E0A0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0809E096 - ldr r4, _0809E0A4 @ =gNamingScreenData - ldr r0, [r4] - ldr r1, _0809E0A8 @ =0x00001e2c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0809E06C - bl SeedRngAndSetTrainerId -_0809E06C: - ldr r0, [r4] - ldr r1, _0809E0AC @ =0x00001e3c - adds r0, r1 - ldr r0, [r0] - bl SetMainCallback2 - ldr r0, _0809E0B0 @ =sub_809DD88 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - bl FreeAllWindowBuffers - ldr r0, [r4] - bl Free - str r5, [r4] - bl RestoreHelpContext -_0809E096: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0809E0A0: .4byte gPaletteFade -_0809E0A4: .4byte gNamingScreenData -_0809E0A8: .4byte 0x00001e2c -_0809E0AC: .4byte 0x00001e3c -_0809E0B0: .4byte sub_809DD88 - thumb_func_end MainState_WaitFadeOutAndExit - - thumb_func_start pokemon_transfer_to_pc_with_message -pokemon_transfer_to_pc_with_message: @ 809E0B4 - push {r4,r5,lr} - sub sp, 0x10 - movs r5, 0 - bl IsDestinationBoxFull - lsls r0, 24 - cmp r0, 0 - bne _0809E104 - ldr r4, _0809E0F0 @ =gStringVar1 - ldr r0, _0809E0F4 @ =0x00004037 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - bl GetBoxNamePtr - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldr r0, _0809E0F8 @ =gStringVar2 - ldr r1, _0809E0FC @ =gNamingScreenData - ldr r1, [r1] - ldr r2, _0809E100 @ =0x00001e30 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - b _0809E144 - .align 2, 0 -_0809E0F0: .4byte gStringVar1 -_0809E0F4: .4byte 0x00004037 -_0809E0F8: .4byte gStringVar2 -_0809E0FC: .4byte gNamingScreenData -_0809E100: .4byte 0x00001e30 -_0809E104: - ldr r4, _0809E1AC @ =gStringVar1 - ldr r0, _0809E1B0 @ =0x00004037 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - bl GetBoxNamePtr - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldr r0, _0809E1B4 @ =gStringVar2 - ldr r1, _0809E1B8 @ =gNamingScreenData - ldr r1, [r1] - ldr r2, _0809E1BC @ =0x00001e30 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - ldr r4, _0809E1C0 @ =gStringVar3 - bl GetPCBoxToSendMon - lsls r0, 24 - lsrs r0, 24 - bl GetBoxNamePtr - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - movs r5, 0x2 -_0809E144: - ldr r0, _0809E1C4 @ =0x00000834 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0809E156 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_0809E156: - ldr r4, _0809E1C8 @ =gStringVar4 - ldr r1, _0809E1CC @ =gUnknown_83E2280 - lsls r0, r5, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - movs r1, 0 - bl DrawDialogueFrame - ldr r2, _0809E1D0 @ =gTextFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - bl GetTextSpeedSetting - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x2 - adds r2, r4, 0 - bl AddTextPrinterParameterized2 - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809E1AC: .4byte gStringVar1 -_0809E1B0: .4byte 0x00004037 -_0809E1B4: .4byte gStringVar2 -_0809E1B8: .4byte gNamingScreenData -_0809E1BC: .4byte 0x00001e30 -_0809E1C0: .4byte gStringVar3 -_0809E1C4: .4byte 0x00000834 -_0809E1C8: .4byte gStringVar4 -_0809E1CC: .4byte gUnknown_83E2280 -_0809E1D0: .4byte gTextFlags - thumb_func_end pokemon_transfer_to_pc_with_message - - thumb_func_start sub_809E1D4 -sub_809E1D4: @ 809E1D4 - push {lr} - bl RunTextPrinters - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _0809E1FE - ldr r0, _0809E204 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809E1FE - ldr r0, _0809E208 @ =gNamingScreenData - ldr r0, [r0] - ldr r1, _0809E20C @ =0x00001e10 - adds r0, r1 - movs r1, 0x8 - strb r1, [r0] -_0809E1FE: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0809E204: .4byte gMain -_0809E208: .4byte gNamingScreenData -_0809E20C: .4byte 0x00001e10 - thumb_func_end sub_809E1D4 - - thumb_func_start MainState_StartPageSwap -MainState_StartPageSwap: @ 809E210 - push {lr} - movs r0, 0 - bl SetInputState - bl sub_809EC20 - bl sub_809E30C - movs r0, 0x1 - bl sub_809EA0C - movs r0, 0 - movs r1, 0 - movs r2, 0x1 - bl sub_809E518 - movs r0, 0x6 - bl PlaySE - ldr r0, _0809E248 @ =gNamingScreenData - ldr r0, [r0] - ldr r1, _0809E24C @ =0x00001e10 - adds r0, r1 - movs r1, 0x5 - strb r1, [r0] - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0809E248: .4byte gNamingScreenData -_0809E24C: .4byte 0x00001e10 - thumb_func_end MainState_StartPageSwap - - thumb_func_start MainState_WaitPageSwap -MainState_WaitPageSwap: @ 809E250 - push {r4-r6,lr} - sub sp, 0x4 - bl sub_809E364 - lsls r0, 24 - cmp r0, 0 - beq _0809E302 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl sub_809E9CC - bl sub_809EB40 - movs r5, 0 - mov r1, sp - movs r2, 0 - ldrsh r1, [r1, r2] - lsls r0, 24 - lsrs r0, 24 - adds r6, r4, 0 - cmp r1, r0 - bne _0809E282 - movs r5, 0x1 -_0809E282: - ldr r2, _0809E2B8 @ =gNamingScreenData - ldr r0, [r2] - ldr r1, _0809E2BC @ =0x00001e10 - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - ldr r1, [r2] - ldr r3, _0809E2C0 @ =0x00001e22 - adds r1, r3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r4, [r2] - adds r4, r3 - ldrb r0, [r4] - movs r1, 0x3 - bl __umodsi3 - strb r0, [r4] - cmp r5, 0 - beq _0809E2C4 - mov r4, sp - bl sub_809EB40 - lsls r0, 24 - lsrs r0, 24 - b _0809E2E2 - .align 2, 0 -_0809E2B8: .4byte gNamingScreenData -_0809E2BC: .4byte 0x00001e10 -_0809E2C0: .4byte 0x00001e22 -_0809E2C4: - mov r0, sp - movs r2, 0 - ldrsh r4, [r0, r2] - bl sub_809EB40 - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - blt _0809E2E4 - mov r4, sp - bl sub_809EB40 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 -_0809E2E2: - strh r0, [r4] -_0809E2E4: - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r6, r2] - bl sub_809E948 - bl sub_809FA60 - movs r0, 0x1 - bl SetInputState - movs r0, 0 - bl sub_809EA0C -_0809E302: - movs r0, 0 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end MainState_WaitPageSwap - - thumb_func_start sub_809E30C -sub_809E30C: @ 809E30C - push {r4,lr} - ldr r4, _0809E328 @ =sub_809E32C - adds r0, r4, 0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809E328: .4byte sub_809E32C - thumb_func_end sub_809E30C - - thumb_func_start sub_809E32C -sub_809E32C: @ 809E32C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0809E35C @ =sPageSwapAnimStateFuncs - ldr r2, _0809E360 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0809E33E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0809E33E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809E35C: .4byte sPageSwapAnimStateFuncs -_0809E360: .4byte gTasks - thumb_func_end sub_809E32C - - thumb_func_start sub_809E364 -sub_809E364: @ 809E364 - push {lr} - ldr r0, _0809E378 @ =sub_809E32C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0809E37C - movs r0, 0 - b _0809E37E - .align 2, 0 -_0809E378: .4byte sub_809E32C -_0809E37C: - movs r0, 0x1 -_0809E37E: - pop {r1} - bx r1 - thumb_func_end sub_809E364 - - thumb_func_start PageSwapAnimState_Init -PageSwapAnimState_Init: @ 809E384 - ldr r1, _0809E3A0 @ =gNamingScreenData - ldr r1, [r1] - ldr r3, _0809E3A4 @ =0x00001e18 - adds r2, r1, r3 - movs r3, 0 - strh r3, [r2] - ldr r2, _0809E3A8 @ =0x00001e1a - adds r1, r2 - strh r3, [r1] - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - movs r0, 0 - bx lr - .align 2, 0 -_0809E3A0: .4byte gNamingScreenData -_0809E3A4: .4byte 0x00001e18 -_0809E3A8: .4byte 0x00001e1a - thumb_func_end PageSwapAnimState_Init - - thumb_func_start PageSwapAnimState_1 -PageSwapAnimState_1: @ 809E3AC - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r5, _0809E42C @ =gNamingScreenData - ldr r0, [r5] - ldr r2, _0809E430 @ =0x00001e1a - adds r1, r0, r2 - str r1, [sp] - ldr r1, _0809E434 @ =0x00001e18 - adds r0, r1 - str r0, [sp, 0x4] - ldrh r0, [r4, 0xA] - adds r0, 0x4 - strh r0, [r4, 0xA] - movs r2, 0xA - ldrsh r0, [r4, r2] - movs r1, 0x28 - bl Sin - ldr r1, [r5] - movs r2, 0xF1 - lsls r2, 5 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 2 - add r1, sp - ldr r1, [r1] - strh r0, [r1] - ldrh r0, [r4, 0xA] - adds r0, 0x80 - movs r1, 0xFF - ands r0, r1 - movs r1, 0x28 - bl Sin - ldr r1, [r5] - ldr r2, _0809E438 @ =0x00001e21 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 2 - add r1, sp - ldr r1, [r1] - strh r0, [r1] - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x3F - ble _0809E422 - ldr r0, [r5] - ldr r1, _0809E43C @ =0x00001e1c - adds r2, r0, r1 - ldrb r3, [r2] - adds r1, 0x2 - adds r0, r1 - ldrh r1, [r0] - strh r1, [r2] - strh r3, [r0] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0809E422: - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0809E42C: .4byte gNamingScreenData -_0809E430: .4byte 0x00001e1a -_0809E434: .4byte 0x00001e18 -_0809E438: .4byte 0x00001e21 -_0809E43C: .4byte 0x00001e1c - thumb_func_end PageSwapAnimState_1 - - thumb_func_start PageSwapAnimState_2 -PageSwapAnimState_2: @ 809E440 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r5, _0809E4C4 @ =gNamingScreenData - ldr r0, [r5] - ldr r2, _0809E4C8 @ =0x00001e1a - adds r1, r0, r2 - str r1, [sp] - ldr r3, _0809E4CC @ =0x00001e18 - adds r0, r3 - str r0, [sp, 0x4] - ldrh r0, [r4, 0xA] - adds r0, 0x4 - strh r0, [r4, 0xA] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r1, 0x28 - bl Sin - ldr r1, [r5] - movs r2, 0xF1 - lsls r2, 5 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 2 - add r1, sp - ldr r1, [r1] - strh r0, [r1] - ldrh r0, [r4, 0xA] - adds r0, 0x80 - movs r1, 0xFF - ands r0, r1 - movs r1, 0x28 - bl Sin - ldr r1, [r5] - ldr r3, _0809E4D0 @ =0x00001e21 - adds r1, r3 - ldrb r1, [r1] - lsls r1, 2 - add r1, sp - ldr r1, [r1] - strh r0, [r1] - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x7F - ble _0809E4BA - ldr r0, [r5] - movs r2, 0xF1 - lsls r2, 5 - adds r1, r0, r2 - ldrb r2, [r1] - adds r0, r3 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, [r5] - adds r0, r3 - strb r2, [r0] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0809E4BA: - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0809E4C4: .4byte gNamingScreenData -_0809E4C8: .4byte 0x00001e1a -_0809E4CC: .4byte 0x00001e18 -_0809E4D0: .4byte 0x00001e21 - thumb_func_end PageSwapAnimState_2 - - thumb_func_start PageSwapAnimState_Done -PageSwapAnimState_Done: @ 809E4D4 - push {lr} - ldr r0, _0809E4EC @ =sub_809E32C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0809E4EC: .4byte sub_809E32C - thumb_func_end PageSwapAnimState_Done - - thumb_func_start sub_809E4F0 -sub_809E4F0: @ 809E4F0 - push {lr} - ldr r0, _0809E510 @ =c3_0809E58C - movs r1, 0x3 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0809E514 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0x3 - strh r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_0809E510: .4byte c3_0809E58C -_0809E514: .4byte gTasks - thumb_func_end sub_809E4F0 - - thumb_func_start sub_809E518 -sub_809E518: @ 809E518 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r0, _0809E550 @ =c3_0809E58C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0809E554 @ =gTasks - adds r4, r1, r0 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r5, r0 - bne _0809E558 - cmp r6, 0 - bne _0809E558 - strh r7, [r4, 0xA] - movs r0, 0x1 - strh r0, [r4, 0xC] - b _0809E584 - .align 2, 0 -_0809E550: .4byte c3_0809E58C -_0809E554: .4byte gTasks -_0809E558: - cmp r5, 0x3 - bne _0809E568 - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0809E568 - cmp r6, 0 - beq _0809E584 -_0809E568: - ldrh r1, [r4, 0x8] - movs r2, 0x8 - ldrsh r0, [r4, r2] - cmp r0, 0x3 - beq _0809E57A - lsls r0, r1, 24 - lsrs r0, 24 - bl sub_809E6B8 -_0809E57A: - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r7, 0 - bl sub_809E6E0 -_0809E584: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_809E518 - - thumb_func_start c3_0809E58C -c3_0809E58C: @ 809E58C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0809E5F4 @ =gTasks - adds r4, r1, r0 - ldrh r1, [r4, 0x8] - movs r2, 0x8 - ldrsh r0, [r4, r2] - cmp r0, 0x3 - beq _0809E63E - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _0809E63E - lsls r0, r1, 24 - lsrs r0, 24 - bl sub_809E644 - lsls r0, 16 - lsrs r0, 16 - ldrb r3, [r4, 0xE] - adds r1, r3, 0 - adds r2, r3, 0 - bl MultiplyInvertedPaletteRGBComponents - ldrh r1, [r4, 0x12] - movs r2, 0x12 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0809E5D8 - subs r0, r1, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - cmp r0, 0 - bne _0809E63E -_0809E5D8: - movs r0, 0x2 - strh r0, [r4, 0x12] - ldrh r1, [r4, 0x10] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r0, 0 - blt _0809E602 - ldrh r2, [r4, 0xE] - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r0, 0xD - bgt _0809E5F8 - adds r0, r2, r1 - b _0809E606 - .align 2, 0 -_0809E5F4: .4byte gTasks -_0809E5F8: - movs r0, 0x10 - strh r0, [r4, 0xE] - ldrh r0, [r4, 0x14] - adds r0, 0x1 - b _0809E60C -_0809E602: - ldrh r3, [r4, 0xE] - adds r0, r1, r3 -_0809E606: - strh r0, [r4, 0xE] - ldrh r2, [r4, 0x14] - adds r0, r1, r2 -_0809E60C: - strh r0, [r4, 0x14] - movs r3, 0xE - ldrsh r0, [r4, r3] - ldrh r1, [r4, 0xE] - cmp r0, 0x10 - bne _0809E62C - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0x16 - bne _0809E62C - ldr r0, _0809E628 @ =0x0000fffc - strh r0, [r4, 0x10] - b _0809E63E - .align 2, 0 -_0809E628: .4byte 0x0000fffc -_0809E62C: - lsls r0, r1, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _0809E63E - ldrh r0, [r4, 0xA] - strh r0, [r4, 0xC] - movs r0, 0x2 - strh r0, [r4, 0x10] - strh r1, [r4, 0x14] -_0809E63E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end c3_0809E58C - - thumb_func_start sub_809E644 -sub_809E644: @ 809E644 - push {r4-r6,lr} - sub sp, 0x10 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x4 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r1, 0x87 - lsls r1, 1 - adds r5, r1, 0 - adds r0, r5 - add r6, sp, 0x8 - strh r0, [r6] - movs r0, 0x6 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - adds r0, r5 - mov r1, sp - adds r1, 0xA - strh r0, [r1] - movs r0, 0x7 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - adds r0, r5 - add r1, sp, 0xC - strh r0, [r1] - movs r0, 0x7 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - ldr r1, _0809E6B4 @ =0x00000101 - adds r0, r1 - mov r1, sp - adds r1, 0xE - strh r0, [r1] - mov r0, sp - adds r1, r6, 0 - movs r2, 0x8 - bl memcpy - lsls r4, 1 - mov r1, sp - adds r0, r1, r4 - ldrh r0, [r0] - add sp, 0x10 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809E6B4: .4byte 0x00000101 - thumb_func_end sub_809E644 - - thumb_func_start sub_809E6B8 -sub_809E6B8: @ 809E6B8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_809E644 - lsls r0, 16 - ldr r2, _0809E6D8 @ =gPlttBufferFaded - lsrs r0, 15 - adds r2, r0, r2 - ldr r1, _0809E6DC @ =gPlttBufferUnfaded - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - pop {r0} - bx r0 - .align 2, 0 -_0809E6D8: .4byte gPlttBufferFaded -_0809E6DC: .4byte gPlttBufferUnfaded - thumb_func_end sub_809E6B8 - - thumb_func_start sub_809E6E0 -sub_809E6E0: @ 809E6E0 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - movs r3, 0 - strh r1, [r0, 0x8] - strh r2, [r0, 0xA] - movs r1, 0x1 - strh r1, [r0, 0xC] - movs r2, 0x4 - strh r2, [r0, 0xE] - movs r1, 0x2 - strh r1, [r0, 0x10] - strh r3, [r0, 0x12] - strh r2, [r0, 0x14] - bx lr - thumb_func_end sub_809E6E0 - thumb_func_start sub_809E700 sub_809E700: @ 809E700 push {r4-r6,lr} @@ -910,7 +35,7 @@ _0809E718: strb r0, [r6] movs r0, 0x2E ldrsh r4, [r5, r0] - bl sub_809EB40 + bl GetCurrentPageColumnCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -1171,7 +296,7 @@ sub_809E8B4: @ 809E8B4 strh r1, [r0, 0x3A] movs r0, 0 movs r1, 0 - bl sub_809E948 + bl SetCursorPos pop {r4-r6} pop {r0} bx r0 @@ -1182,8 +307,8 @@ _0809E940: .4byte 0x00001e23 _0809E944: .4byte gSprites thumb_func_end sub_809E8B4 - thumb_func_start sub_809E948 -sub_809E948: @ 809E948 + thumb_func_start SetCursorPos +SetCursorPos: @ 809E948 push {r4-r7,lr} mov r7, r8 push {r7} @@ -1246,10 +371,10 @@ _0809E9AA: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_809E948 + thumb_func_end SetCursorPos - thumb_func_start sub_809E9CC -sub_809E9CC: @ 809E9CC + thumb_func_start GetCursorPos +GetCursorPos: @ 809E9CC ldr r2, _0809E9EC @ =gNamingScreenData ldr r2, [r2] ldr r3, _0809E9F0 @ =0x00001e23 @@ -1269,16 +394,16 @@ sub_809E9CC: @ 809E9CC _0809E9EC: .4byte gNamingScreenData _0809E9F0: .4byte 0x00001e23 _0809E9F4: .4byte gSprites - thumb_func_end sub_809E9CC + thumb_func_end GetCursorPos thumb_func_start MoveCursorToOKButton MoveCursorToOKButton: @ 809E9F8 push {lr} - bl sub_809EB40 + bl GetCurrentPageColumnCount lsls r0, 24 lsrs r0, 24 movs r1, 0x2 - bl sub_809E948 + bl SetCursorPos pop {r0} bx r0 thumb_func_end MoveCursorToOKButton @@ -1417,11 +542,11 @@ sub_809EB00: @ 809EB00 adds r5, 0x2 mov r0, sp adds r1, r5, 0 - bl sub_809E9CC + bl GetCursorPos mov r0, sp movs r1, 0 ldrsh r4, [r0, r1] - bl sub_809EB40 + bl GetCurrentPageColumnCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -1443,8 +568,8 @@ _0809EB36: bx r1 thumb_func_end sub_809EB00 - thumb_func_start sub_809EB40 -sub_809EB40: @ 809EB40 + thumb_func_start GetCurrentPageColumnCount +GetCurrentPageColumnCount: @ 809EB40 push {r4,lr} ldr r4, _0809EB58 @ =gUnknown_83E2330 bl sub_809DE50 @@ -1457,7 +582,7 @@ sub_809EB40: @ 809EB40 bx r1 .align 2, 0 _0809EB58: .4byte gUnknown_83E2330 - thumb_func_end sub_809EB40 + thumb_func_end GetCurrentPageColumnCount thumb_func_start sub_809EB5C sub_809EB5C: @ 809EB5C @@ -2493,7 +1618,7 @@ sub_809F2F8: @ 809F2F8 adds r5, 0x2A adds r0, r4, 0 adds r1, r5, 0 - bl sub_809E9CC + bl GetCursorPos ldr r0, _0809F3F4 @ =gMain ldrh r2, [r0, 0x30] movs r0, 0x40 @@ -2538,14 +1663,14 @@ _0809F37A: ldrsh r0, [r6, r2] cmp r0, 0 bge _0809F3A6 - bl sub_809EB40 + bl GetCurrentPageColumnCount lsls r0, 24 lsrs r0, 24 strh r0, [r6] _0809F3A6: movs r0, 0 ldrsh r4, [r6, r0] - bl sub_809EB40 + bl GetCurrentPageColumnCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -2559,7 +1684,7 @@ _0809F3BA: beq _0809F426 movs r2, 0 ldrsh r4, [r6, r2] - bl sub_809EB40 + bl GetCurrentPageColumnCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -2583,7 +1708,7 @@ _0809F3F8: mov r2, r8 lsls r4, r2, 16 asrs r4, 16 - bl sub_809EB40 + bl GetCurrentPageColumnCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -2608,7 +1733,7 @@ _0809F424: _0809F426: movs r0, 0 ldrsh r4, [r6, r0] - bl sub_809EB40 + bl GetCurrentPageColumnCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -2660,7 +1785,7 @@ _0809F480: ldrsh r0, [r6, r2] movs r2, 0 ldrsh r1, [r5, r2] - bl sub_809E948 + bl SetCursorPos add sp, 0x34 pop {r3-r5} mov r8, r3 @@ -3039,7 +2164,7 @@ sub_809F75C: @ 809F75C adds r4, 0x2 mov r0, sp adds r1, r4, 0 - bl sub_809E9CC + bl GetCursorPos mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] diff --git a/include/field_effect.h b/include/field_effect.h index 3c92afb6a..59de741be 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -24,5 +24,6 @@ void sub_8083598(u8 a0); void FreeResourcesAndDestroySprite(struct Sprite * sprite, u8 spriteId); u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, bool8 unused); void ReturnToFieldFromFlyMapSelect(void); +void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b); #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/field_specials.h b/include/field_specials.h index 811bfef93..b3291bf54 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -21,6 +21,7 @@ void nullsub_61(void); u8 ContextNpcGetTextColor(void); void SetPCBoxToSendMon(u8); u16 GetPCBoxToSendMon(void); +bool8 IsDestinationBoxFull(void); bool8 ShouldShowBoxWasFullMessage(void); u16 GetHiddenItemAttr(u32 hiddenItem, u8 attr); u8 GetUnlockedSeviiAreas(void); diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 81f50e1e9..c636651f3 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -6,13 +6,12 @@ #define TOTAL_BOXES_COUNT 14 #define IN_BOX_COUNT 30 -u8* GetBoxNamePtr(u8 boxNumber); +u8 *GetBoxNamePtr(u8 boxNumber); struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 monPosition); void SetBoxMonNickFromAnyBox(u8 boxId, u8 monPosition, u8 * newNick); void CompactPartySlots(void); u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request); void sub_808BCB4(u8 boxId, u8 monPosition); -u8 * GetBoxNamePtr(u8 boxId); void sub_808CE60(void); void ResetPokemonStorageSystem(void); u8 StorageGetCurrentBox(void); diff --git a/src/naming_screen.c b/src/naming_screen.c index a929f9f4e..40d099c55 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1,13 +1,21 @@ #include "global.h" #include "gflib.h" +#include "battle_message.h" #include "graphics.h" +#include "event_data.h" #include "event_scripts.h" +#include "field_effect.h" +#include "field_specials.h" #include "help_system.h" #include "naming_screen.h" #include "new_menu_helpers.h" +#include "pokemon_storage_system.h" #include "strings.h" #include "task.h" +#include "trig.h" #include "constants/help_system.h" +#include "constants/flags.h" +#include "constants/songs.h" enum { @@ -89,26 +97,38 @@ bool8 MainState_WaitFadeIn(void); bool8 MainState_HandleInput(void); bool8 MainState_MoveToOKButton(void); bool8 pokemon_store(void); +bool8 MainState_BeginFadeInOut(void); +bool8 MainState_WaitFadeOutAndExit(void); void pokemon_transfer_to_pc_with_message(void); -bool8 NamingScreen_InitDisplayMode(void); +bool8 sub_809E1D4(void); bool8 MainState_StartPageSwap(void); bool8 MainState_WaitPageSwap(void); -bool8 sub_809E1D4(void); +void StartPageSwapAnim(void); +void Task_HandlePageSwapAnim(u8 taskId); +bool8 IsPageSwapAnimNotInProgress(void); bool8 PageSwapAnimState_Init(struct Task * task); bool8 PageSwapAnimState_1(struct Task * task); bool8 PageSwapAnimState_2(struct Task * task); bool8 PageSwapAnimState_Done(struct Task * task); -void MainState_BeginFadeInOut(void); -void MainState_WaitFadeOutAndExit(void); +void sub_809E518(u8 a0, u8 a1, u8 a2); +void Task_809E58C(u8 taskId); +u16 sub_809E644(u8 tag); +void sub_809E6B8(u8 a0); +void sub_809E6E0(struct Task * task, u8 a1, u8 a2); +void GetCursorPos(s16 *xP, s16 *yP); +u8 GetCurrentPageColumnCount(void); +void SetCursorPos(s16 x, s16 y); +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); -void sub_809E518(u8 a0, u8 a1, u8 a2); void sub_809E898(void); bool8 IsCursorAnimFinished(); void MoveCursorToOKButton(); void sub_809EA0C(u8 a0); void sub_809EA64(u8 a0); +void sub_809EC20(void); bool8 HandleKeyboardEvent(void); void SetInputState(u8 state); void sub_809F56C(void); @@ -125,7 +145,7 @@ const u16 gUnknown_83E1800[] = INCBIN_U16("graphics/interface/naming_screen_83E1 const u16 gUnknown_83E18C0[] = INCBIN_U16("graphics/interface/naming_screen_83E18C0.4bpp"); const u16 gUnknown_83E1980[] = INCBIN_U16("graphics/interface/naming_screen_83E1980.4bpp"); -const u8 *const gUnknown_83E2280[] = { +const u8 *const sTransferredToPCMessages[] = { Text_MonSentToBoxInSomeonesPC, Text_MonSentToBoxInBillsPC, Text_MonSentToBoxSomeonesBoxFull, @@ -482,13 +502,6 @@ u8 sub_809DE20(u8 a1) return sPageOrderLowerFirst[a1]; } -bool8 (*const sPageSwapAnimStateFuncs[])(struct Task * task) = { - PageSwapAnimState_Init, - PageSwapAnimState_1, - PageSwapAnimState_2, - PageSwapAnimState_Done -}; - u8 sub_809DE30(void) { return sPageOrderUpperFirst[gNamingScreenData->currentPage]; @@ -565,3 +578,312 @@ bool8 pokemon_store(void) return TRUE; //Exit the naming screen } } + +bool8 MainState_BeginFadeInOut(void) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gNamingScreenData->state++; + return FALSE; +} + +bool8 MainState_WaitFadeOutAndExit(void) +{ + if (!gPaletteFade.active) + { + if (gNamingScreenData->templateNum == NAMING_SCREEN_PLAYER) + SeedRngAndSetTrainerId(); + SetMainCallback2(gNamingScreenData->returnCallback); + DestroyTask(FindTaskIdByFunc(sub_809DD88)); + FreeAllWindowBuffers(); + FREE_AND_SET_NULL(gNamingScreenData); + RestoreHelpContext(); + } + return FALSE; +} + +void pokemon_transfer_to_pc_with_message(void) +{ + u8 stringToDisplay = 0; + + if (!IsDestinationBoxFull()) + { + StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON))); + StringCopy(gStringVar2, gNamingScreenData->destBuffer); + } + else + { + StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON))); + StringCopy(gStringVar2, gNamingScreenData->destBuffer); + StringCopy(gStringVar3, GetBoxNamePtr(GetPCBoxToSendMon())); + stringToDisplay = 2; + } + + if (FlagGet(FLAG_SYS_NOT_SOMEONES_PC)) + stringToDisplay++; + + StringExpandPlaceholders(gStringVar4, sTransferredToPCMessages[stringToDisplay]); + DrawDialogueFrame(0, FALSE); + gTextFlags.canABSpeedUpPrint = TRUE; + AddTextPrinterParameterized2(0, 2, gStringVar4, GetTextSpeedSetting(), NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + CopyWindowToVram(0, 3); +} + +bool8 sub_809E1D4(void) +{ + RunTextPrinters(); + + if (!IsTextPrinterActive(0) && (JOY_NEW(A_BUTTON))) + gNamingScreenData->state = MAIN_STATE_BEGIN_FADE_OUT; + + return FALSE; +} + +bool8 MainState_StartPageSwap(void) +{ + SetInputState(INPUT_STATE_DISABLED); + sub_809EC20(); + StartPageSwapAnim(); + sub_809EA0C(1); + sub_809E518(0, 0, 1); + PlaySE(SE_WIN_OPEN); + gNamingScreenData->state = MAIN_STATE_WAIT_PAGE_SWAP; + return FALSE; +} + +bool8 MainState_WaitPageSwap(void) +{ + s16 cursorX; + s16 cursorY; + bool32 var3; + + if (IsPageSwapAnimNotInProgress()) + { + + GetCursorPos(&cursorX, &cursorY); + var3 = (cursorX == GetCurrentPageColumnCount()); + + gNamingScreenData->state = MAIN_STATE_HANDLE_INPUT; + gNamingScreenData->currentPage++; + gNamingScreenData->currentPage %= 3; + + if (var3) + { + cursorX = GetCurrentPageColumnCount(); + } + else + { + if (cursorX >= GetCurrentPageColumnCount()) + cursorX = GetCurrentPageColumnCount() - 1; + } + + SetCursorPos(cursorX, cursorY); + sub_809FA60(); + SetInputState(INPUT_STATE_ENABLED); + sub_809EA0C(0); + } + return FALSE; +} + +//-------------------------------------------------- +// Page Swap +//-------------------------------------------------- + +#define tState data[0] +#define tFrameCount data[1] + +bool8 (*const sPageSwapAnimStateFuncs[])(struct Task * task) = { + PageSwapAnimState_Init, + PageSwapAnimState_1, + PageSwapAnimState_2, + PageSwapAnimState_Done +}; + +void StartPageSwapAnim(void) +{ + u8 taskId; + + taskId = CreateTask(Task_HandlePageSwapAnim, 0); + Task_HandlePageSwapAnim(taskId); +} + +void Task_HandlePageSwapAnim(u8 taskId) +{ + while (sPageSwapAnimStateFuncs[gTasks[taskId].tState](&gTasks[taskId])) + ; +} + +bool8 IsPageSwapAnimNotInProgress(void) +{ + if (FindTaskIdByFunc(Task_HandlePageSwapAnim) == 0xFF) + return TRUE; + else + return FALSE; +} + +bool8 PageSwapAnimState_Init(struct Task *task) +{ + gNamingScreenData->bg1vOffset = 0; + gNamingScreenData->bg2vOffset = 0; + task->tState++; + return 0; +} + +bool8 PageSwapAnimState_1(struct Task *task) +{ + u16 *const arr[] = + { + &gNamingScreenData->bg2vOffset, + &gNamingScreenData->bg1vOffset + }; + + task->tFrameCount += 4; + *arr[gNamingScreenData->bgToReveal] = Sin(task->tFrameCount, 40); + *arr[gNamingScreenData->bgToHide] = Sin((task->tFrameCount + 128) & 0xFF, 40); + if (task->tFrameCount >= 64) + { + u8 temp = gNamingScreenData->bg1Priority; //Why u8 and not u16? + + gNamingScreenData->bg1Priority = gNamingScreenData->bg2Priority; + gNamingScreenData->bg2Priority = temp; + task->tState++; + } + return 0; +} + +bool8 PageSwapAnimState_2(struct Task *task) +{ + u16 *const arr[] = + { + &gNamingScreenData->bg2vOffset, + &gNamingScreenData->bg1vOffset + }; + + task->tFrameCount += 4; + *arr[gNamingScreenData->bgToReveal] = Sin(task->tFrameCount, 40); + *arr[gNamingScreenData->bgToHide] = Sin((task->tFrameCount + 128) & 0xFF, 40); + if (task->tFrameCount >= 128) + { + u8 temp = gNamingScreenData->bgToReveal; + + gNamingScreenData->bgToReveal = gNamingScreenData->bgToHide; + gNamingScreenData->bgToHide = temp; + task->tState++; + } + return 0; +} + +bool8 PageSwapAnimState_Done(struct Task *task) +{ + DestroyTask(FindTaskIdByFunc(Task_HandlePageSwapAnim)); + return 0; +} + +#undef tState +#undef tFrameCount + +//-------------------------------------------------- +// Cursor blink +//-------------------------------------------------- + +#define tIdent data[0] + +void sub_809E4F0(void) +{ + u8 taskId; + + taskId = CreateTask(Task_809E58C, 3); + gTasks[taskId].data[0] = 3; +} + +void sub_809E518(u8 a, u8 b, u8 c) +{ + struct Task *task = &gTasks[FindTaskIdByFunc(Task_809E58C)]; + + if (a == task->data[0] && c == 0) + { + task->data[1] = b; + task->data[2] = 1; + return; + } + if (a == 3 && task->data[1] == 0 && c == 0) + return; + if (task->data[0] != 3) + sub_809E6B8(task->data[0]); + sub_809E6E0(task, a, b); +} + +void Task_809E58C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (task->data[0] == 3 || task->data[2] == 0) + return; + MultiplyInvertedPaletteRGBComponents(sub_809E644(task->data[0]), task->data[3], task->data[3], task->data[3]); + if (task->data[5] != 0) + { + task->data[5]--; + if (task->data[5] != 0) + return; + } + task->data[5] = 2; + if (task->data[4] >= 0) + { + if (task->data[3] < 14) + { + task->data[3] += task->data[4]; + task->data[6] += task->data[4]; + } + else + { + task->data[3] = 16; + task->data[6]++; + } + } + else + { + task->data[3] += task->data[4]; + task->data[6] += task->data[4]; + } + + if (task->data[3] == 16 && task->data[6] == 22) + { + task->data[4] = -4; + } + else if (task->data[3] == 0) + { + task->data[2] = task->data[1]; + task->data[4] = 2; + task->data[6] = 0; + } +} + +u16 sub_809E644(u8 a) +{ + const u16 arr[] = + { + IndexOfSpritePaletteTag(4) * 16 + 0x10E, // Swap + IndexOfSpritePaletteTag(6) * 16 + 0x10E, // BACK + IndexOfSpritePaletteTag(7) * 16 + 0x10E, // OK + IndexOfSpritePaletteTag(7) * 16 + 0x101, // kbd + }; + + return arr[a]; +} + +void sub_809E6B8(u8 a) +{ + u16 index = sub_809E644(a); + + gPlttBufferFaded[index] = gPlttBufferUnfaded[index]; +} + +void sub_809E6E0(struct Task *task, u8 b, u8 c) +{ + task->data[0] = b; + task->data[1] = c; + task->data[2] = 1; + task->data[3] = 4; + task->data[4] = 2; + task->data[5] = 0; + task->data[6] = 4; +} From 1689cb55a7601a893912f171ff44166b33f97af8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 9 Mar 2020 16:58:40 -0400 Subject: [PATCH 03/10] through sub_809EC54 --- asm/naming_screen.s | 747 +------------------------------------------ data/naming_screen.s | 16 - src/naming_screen.c | 256 ++++++++++++++- 3 files changed, 263 insertions(+), 756 deletions(-) diff --git a/asm/naming_screen.s b/asm/naming_screen.s index fd065f6f6..a4f237008 100644 --- a/asm/naming_screen.s +++ b/asm/naming_screen.s @@ -5,723 +5,6 @@ .text - thumb_func_start sub_809E700 -sub_809E700: @ 809E700 - push {r4-r6,lr} - adds r5, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0809E718 - adds r0, r5, 0 - movs r1, 0 - bl StartSpriteAnim -_0809E718: - ldrh r0, [r5, 0x36] - movs r1, 0xFF - ands r1, r0 - adds r6, r5, 0 - adds r6, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r6] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r6] - movs r0, 0x2E - ldrsh r4, [r5, r0] - bl GetCurrentPageColumnCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _0809E74C - ldrb r0, [r6] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r6] -_0809E74C: - ldrb r1, [r6] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0809E77C - movs r1, 0x36 - ldrsh r0, [r5, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _0809E77C - movs r2, 0x2E - ldrsh r1, [r5, r2] - movs r2, 0x32 - ldrsh r0, [r5, r2] - cmp r1, r0 - bne _0809E77C - movs r0, 0x30 - ldrsh r1, [r5, r0] - movs r2, 0x34 - ldrsh r0, [r5, r2] - cmp r1, r0 - beq _0809E786 -_0809E77C: - movs r0, 0 - strh r0, [r5, 0x38] - movs r0, 0x2 - strh r0, [r5, 0x3A] - strh r0, [r5, 0x3C] -_0809E786: - ldrh r0, [r5, 0x3C] - subs r0, 0x1 - strh r0, [r5, 0x3C] - lsls r0, 16 - cmp r0, 0 - bne _0809E7AE - ldrh r1, [r5, 0x3A] - ldrh r2, [r5, 0x38] - adds r0, r1, r2 - strh r0, [r5, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - beq _0809E7A6 - cmp r0, 0 - bne _0809E7AA -_0809E7A6: - negs r0, r1 - strh r0, [r5, 0x3A] -_0809E7AA: - movs r0, 0x2 - strh r0, [r5, 0x3C] -_0809E7AE: - movs r1, 0x36 - ldrsh r0, [r5, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _0809E7E4 - ldrh r4, [r5, 0x38] - lsls r5, r4, 24 - lsrs r5, 24 - lsls r4, 16 - asrs r4, 17 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 4 - ldr r2, _0809E7EC @ =0x01010000 - adds r0, r2 - lsrs r0, 16 - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r5, 0 - bl MultiplyInvertedPaletteRGBComponents -_0809E7E4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809E7EC: .4byte 0x01010000 - thumb_func_end sub_809E700 - - thumb_func_start sub_809E7F0 -sub_809E7F0: @ 809E7F0 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r1, _0809E838 @ =gUnknown_83E2364 - mov r0, sp - movs r2, 0x8 - bl memcpy - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0809E814 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _0809E822 -_0809E814: - movs r0, 0x8 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - strh r0, [r4, 0x30] -_0809E822: - movs r1, 0x30 - ldrsh r0, [r4, r1] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r4, 0x24] - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809E838: .4byte gUnknown_83E2364 - thumb_func_end sub_809E7F0 - - thumb_func_start sub_809E83C -sub_809E83C: @ 809E83C - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r1, _0809E864 @ =gUnknown_83E236C - mov r0, sp - movs r2, 0x8 - bl memcpy - bl sub_809F668 - lsls r0, 24 - ldrh r1, [r4, 0x2E] - lsls r1, 24 - cmp r0, r1 - beq _0809E868 - movs r0, 0 - strh r0, [r4, 0x26] - strh r0, [r4, 0x30] - b _0809E88E - .align 2, 0 -_0809E864: .4byte gUnknown_83E236C -_0809E868: - movs r1, 0x30 - ldrsh r0, [r4, r1] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _0809E890 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - strh r0, [r4, 0x30] - movs r0, 0 -_0809E88E: - strh r0, [r4, 0x32] -_0809E890: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_809E83C - - thumb_func_start sub_809E898 -sub_809E898: @ 809E898 - push {lr} - bl sub_809E8B4 - bl sub_809EB5C - bl sub_809EDE8 - bl sub_809EE60 - bl sub_809EF24 - pop {r0} - bx r0 - thumb_func_end sub_809E898 - - thumb_func_start sub_809E8B4 -sub_809E8B4: @ 809E8B4 - push {r4-r6,lr} - ldr r0, _0809E938 @ =gUnknown_83E25EC - movs r1, 0x26 - movs r2, 0x58 - movs r3, 0x1 - bl CreateSprite - ldr r5, _0809E93C @ =gNamingScreenData - ldr r1, [r5] - ldr r4, _0809E940 @ =0x00001e23 - adds r1, r4 - strb r0, [r1] - movs r0, 0x1 - bl sub_809EA0C - ldr r6, _0809E944 @ =gSprites - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r3, [r1, 0x5] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - movs r3, 0x4 - orrs r0, r3 - strb r0, [r1, 0x5] - ldr r0, [r5] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0, 0x1] - ands r2, r1 - orrs r2, r3 - strb r2, [r0, 0x1] - ldr r2, [r5] - adds r2, r4 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x1 - strh r1, [r0, 0x3A] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x2 - strh r1, [r0, 0x3A] - movs r0, 0 - movs r1, 0 - bl SetCursorPos - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809E938: .4byte gUnknown_83E25EC -_0809E93C: .4byte gNamingScreenData -_0809E940: .4byte 0x00001e23 -_0809E944: .4byte gSprites - thumb_func_end sub_809E8B4 - - thumb_func_start SetCursorPos -SetCursorPos: @ 809E948 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsls r1, 16 - lsrs r7, r1, 16 - ldr r1, _0809E994 @ =gNamingScreenData - ldr r1, [r1] - ldr r2, _0809E998 @ =0x00001e23 - adds r1, r2 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - ldr r2, _0809E99C @ =gSprites - adds r5, r1, r2 - lsrs r1, r0, 16 - mov r8, r1 - asrs r6, r0, 16 - ldr r4, _0809E9A0 @ =gUnknown_83E2330 - bl sub_809DE50 - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r0, [r0] - cmp r6, r0 - bge _0809E9A8 - bl sub_809DE50 - ldr r1, _0809E9A4 @ =gUnknown_83E2333 - lsls r0, 24 - lsrs r0, 21 - adds r0, r6, r0 - adds r0, r1 - ldrb r0, [r0] - adds r0, 0x26 - b _0809E9AA - .align 2, 0 -_0809E994: .4byte gNamingScreenData -_0809E998: .4byte 0x00001e23 -_0809E99C: .4byte gSprites -_0809E9A0: .4byte gUnknown_83E2330 -_0809E9A4: .4byte gUnknown_83E2333 -_0809E9A8: - movs r0, 0 -_0809E9AA: - strh r0, [r5, 0x20] - lsls r0, r7, 16 - asrs r0, 12 - adds r0, 0x58 - strh r0, [r5, 0x22] - ldrh r0, [r5, 0x2E] - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x30] - strh r0, [r5, 0x34] - mov r2, r8 - strh r2, [r5, 0x2E] - strh r7, [r5, 0x30] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end SetCursorPos - - thumb_func_start GetCursorPos -GetCursorPos: @ 809E9CC - ldr r2, _0809E9EC @ =gNamingScreenData - ldr r2, [r2] - ldr r3, _0809E9F0 @ =0x00001e23 - adds r2, r3 - ldrb r3, [r2] - lsls r2, r3, 4 - adds r2, r3 - lsls r2, 2 - ldr r3, _0809E9F4 @ =gSprites - adds r2, r3 - ldrh r3, [r2, 0x2E] - strh r3, [r0] - ldrh r0, [r2, 0x30] - strh r0, [r1] - bx lr - .align 2, 0 -_0809E9EC: .4byte gNamingScreenData -_0809E9F0: .4byte 0x00001e23 -_0809E9F4: .4byte gSprites - thumb_func_end GetCursorPos - - thumb_func_start MoveCursorToOKButton -MoveCursorToOKButton: @ 809E9F8 - push {lr} - bl GetCurrentPageColumnCount - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl SetCursorPos - pop {r0} - bx r0 - thumb_func_end MoveCursorToOKButton - - thumb_func_start sub_809EA0C -sub_809EA0C: @ 809EA0C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0809EA54 @ =gSprites - ldr r1, _0809EA58 @ =gNamingScreenData - ldr r4, [r1] - ldr r1, _0809EA5C @ =0x00001e23 - adds r4, r1 - ldrb r1, [r4] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - adds r2, r5 - ldrh r3, [r2, 0x36] - ldr r1, _0809EA60 @ =0xffffff00 - ands r1, r3 - strh r1, [r2, 0x36] - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - ldrh r2, [r1, 0x36] - orrs r0, r2 - strh r0, [r1, 0x36] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0 - bl StartSpriteAnim - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809EA54: .4byte gSprites -_0809EA58: .4byte gNamingScreenData -_0809EA5C: .4byte 0x00001e23 -_0809EA60: .4byte 0xffffff00 - thumb_func_end sub_809EA0C - - thumb_func_start sub_809EA64 -sub_809EA64: @ 809EA64 - push {r4,r5,lr} - lsls r0, 24 - ldr r5, _0809EA9C @ =gSprites - ldr r1, _0809EAA0 @ =gNamingScreenData - ldr r4, [r1] - ldr r1, _0809EAA4 @ =0x00001e23 - adds r4, r1 - ldrb r1, [r4] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - adds r2, r5 - ldrh r3, [r2, 0x36] - movs r1, 0xFF - ands r1, r3 - strh r1, [r2, 0x36] - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - lsrs r0, 16 - ldrh r2, [r1, 0x36] - orrs r0, r2 - strh r0, [r1, 0x36] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809EA9C: .4byte gSprites -_0809EAA0: .4byte gNamingScreenData -_0809EAA4: .4byte 0x00001e23 - thumb_func_end sub_809EA64 - - thumb_func_start sub_809EAA8 -sub_809EAA8: @ 809EAA8 - push {lr} - ldr r0, _0809EAC8 @ =gNamingScreenData - ldr r0, [r0] - ldr r1, _0809EACC @ =0x00001e23 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0809EAD0 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - pop {r0} - bx r0 - .align 2, 0 -_0809EAC8: .4byte gNamingScreenData -_0809EACC: .4byte 0x00001e23 -_0809EAD0: .4byte gSprites - thumb_func_end sub_809EAA8 - - thumb_func_start IsCursorAnimFinished -IsCursorAnimFinished: @ 809EAD4 - ldr r2, _0809EAF4 @ =gSprites - ldr r0, _0809EAF8 @ =gNamingScreenData - ldr r0, [r0] - ldr r1, _0809EAFC @ =0x00001e23 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - lsrs r0, 31 - bx lr - .align 2, 0 -_0809EAF4: .4byte gSprites -_0809EAF8: .4byte gNamingScreenData -_0809EAFC: .4byte 0x00001e23 - thumb_func_end IsCursorAnimFinished - - thumb_func_start sub_809EB00 -sub_809EB00: @ 809EB00 - push {r4,r5,lr} - sub sp, 0x4 - mov r5, sp - adds r5, 0x2 - mov r0, sp - adds r1, r5, 0 - bl GetCursorPos - mov r0, sp - movs r1, 0 - ldrsh r4, [r0, r1] - bl GetCurrentPageColumnCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - blt _0809EB34 - ldr r0, _0809EB30 @ =gUnknown_83E2374 - movs r2, 0 - ldrsh r1, [r5, r2] - adds r1, r0 - ldrb r0, [r1] - b _0809EB36 - .align 2, 0 -_0809EB30: .4byte gUnknown_83E2374 -_0809EB34: - movs r0, 0 -_0809EB36: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_809EB00 - - thumb_func_start GetCurrentPageColumnCount -GetCurrentPageColumnCount: @ 809EB40 - push {r4,lr} - ldr r4, _0809EB58 @ =gUnknown_83E2330 - bl sub_809DE50 - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r0, [r0] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0809EB58: .4byte gUnknown_83E2330 - thumb_func_end GetCurrentPageColumnCount - - thumb_func_start sub_809EB5C -sub_809EB5C: @ 809EB5C - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r0, _0809EC00 @ =gUnknown_83E2574 - movs r1, 0xCC - movs r2, 0x58 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0809EC04 @ =gNamingScreenData - ldr r1, [r1] - ldr r2, _0809EC08 @ =0x00001e24 - adds r1, r2 - strb r0, [r1] - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - ldr r0, _0809EC0C @ =gSprites - mov r8, r0 - add r5, r8 - ldr r1, _0809EC10 @ =gUnknown_83E2504 - adds r0, r5, 0 - bl SetSubspriteTables - adds r1, r5, 0 - adds r1, 0x3E - ldrb r0, [r1] - movs r6, 0x4 - orrs r0, r6 - strb r0, [r1] - ldr r0, _0809EC14 @ =gUnknown_83E25A4 - movs r1, 0xCC - movs r2, 0x54 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x3A] - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - add r4, r8 - ldr r1, _0809EC18 @ =gUnknown_83E250C - adds r0, r4, 0 - bl SetSubspriteTables - adds r4, 0x3E - ldrb r0, [r4] - orrs r0, r6 - strb r0, [r4] - ldr r0, _0809EC1C @ =gUnknown_83E258C - movs r1, 0xCC - movs r2, 0x53 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - orrs r1, r6 - strb r1, [r2, 0x5] - strh r0, [r5, 0x3C] - adds r2, 0x3E - ldrb r0, [r2] - orrs r0, r6 - strb r0, [r2] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809EC00: .4byte gUnknown_83E2574 -_0809EC04: .4byte gNamingScreenData -_0809EC08: .4byte 0x00001e24 -_0809EC0C: .4byte gSprites -_0809EC10: .4byte gUnknown_83E2504 -_0809EC14: .4byte gUnknown_83E25A4 -_0809EC18: .4byte gUnknown_83E250C -_0809EC1C: .4byte gUnknown_83E258C - thumb_func_end sub_809EB5C - - thumb_func_start sub_809EC20 -sub_809EC20: @ 809EC20 - ldr r0, _0809EC44 @ =gNamingScreenData - ldr r2, [r0] - ldr r1, _0809EC48 @ =0x00001e24 - adds r0, r2, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0809EC4C @ =gSprites - adds r0, r1 - movs r1, 0x2 - strh r1, [r0, 0x2E] - ldr r1, _0809EC50 @ =0x00001e22 - adds r2, r1 - ldrb r1, [r2] - strh r1, [r0, 0x30] - bx lr - .align 2, 0 -_0809EC44: .4byte gNamingScreenData -_0809EC48: .4byte 0x00001e24 -_0809EC4C: .4byte gSprites -_0809EC50: .4byte 0x00001e22 - thumb_func_end sub_809EC20 - - thumb_func_start sub_809EC54 -sub_809EC54: @ 809EC54 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _0809EC78 @ =gUnknown_83E2378 -_0809EC5A: - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0809EC5A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809EC78: .4byte gUnknown_83E2378 - thumb_func_end sub_809EC54 - thumb_func_start sub_809EC7C sub_809EC7C: @ 809EC7C push {r4-r6,lr} @@ -914,8 +197,8 @@ _0809EDE0: .4byte gUnknown_83E2388 _0809EDE4: .4byte gUnknown_83E238E thumb_func_end sub_809ED88 - thumb_func_start sub_809EDE8 -sub_809EDE8: @ 809EDE8 + thumb_func_start CreateBackOkSprites +CreateBackOkSprites: @ 809EDE8 push {r4-r6,lr} mov r6, r8 push {r6} @@ -969,10 +252,10 @@ _0809EE50: .4byte gUnknown_83E25BC _0809EE54: .4byte gSprites _0809EE58: .4byte gUnknown_83E2524 _0809EE5C: .4byte gUnknown_83E25D4 - thumb_func_end sub_809EDE8 + thumb_func_end CreateBackOkSprites - thumb_func_start sub_809EE60 -sub_809EE60: @ 809EE60 + thumb_func_start CreateUnderscoreSprites +CreateUnderscoreSprites: @ 809EE60 push {r4-r6,lr} ldr r5, _0809EF0C @ =gNamingScreenData ldr r0, [r5] @@ -1065,10 +348,10 @@ _0809EF14: .4byte gUnknown_83E2604 _0809EF18: .4byte gSprites _0809EF1C: .4byte 0x00001e28 _0809EF20: .4byte gUnknown_83E261C - thumb_func_end sub_809EE60 + thumb_func_end CreateUnderscoreSprites - thumb_func_start sub_809EF24 -sub_809EF24: @ 809EF24 + thumb_func_start CreateInputTargetIcon +CreateInputTargetIcon: @ 809EF24 push {lr} ldr r1, _0809EF44 @ =gUnknown_83E2394 ldr r0, _0809EF48 @ =gNamingScreenData @@ -1087,7 +370,7 @@ sub_809EF24: @ 809EF24 _0809EF44: .4byte gUnknown_83E2394 _0809EF48: .4byte gNamingScreenData _0809EF4C: .4byte 0x00001e28 - thumb_func_end sub_809EF24 + thumb_func_end CreateInputTargetIcon thumb_func_start nullsub_54 nullsub_54: @ 809EF50 @@ -1278,7 +561,7 @@ HandleKeyboardEvent: @ 809F0CC lsls r0, 24 lsrs r4, r0, 24 adds r5, r4, 0 - bl sub_809EB00 + bl GetKeyRoleAtCursorPos lsls r0, 24 lsrs r0, 24 cmp r4, 0x8 @@ -2023,8 +1306,8 @@ sub_809F634: @ 809F634 _0809F664: .4byte gUnknown_83E22D0 thumb_func_end sub_809F634 - thumb_func_start sub_809F668 -sub_809F668: @ 809F668 + thumb_func_start GetTextCaretPosition +GetTextCaretPosition: @ 809F668 push {r4,r5,lr} movs r2, 0 ldr r0, _0809F690 @ =gNamingScreenData @@ -2070,7 +1353,7 @@ _0809F6B2: bx r1 .align 2, 0 _0809F6B8: .4byte 0x00001e28 - thumb_func_end sub_809F668 + thumb_func_end GetTextCaretPosition thumb_func_start sub_809F6BC sub_809F6BC: @ 809F6BC @@ -2134,7 +1417,7 @@ sub_809F700: @ 809F700 adds r0, r4 movs r1, 0xFF strb r1, [r0] - bl sub_809EB00 + bl GetKeyRoleAtCursorPos lsls r0, 24 lsrs r0, 24 cmp r0, 0 @@ -2211,7 +1494,7 @@ sub_809F7C4: @ 809F7C4 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_809F668 + bl GetTextCaretPosition lsls r0, 24 lsrs r0, 24 ldr r1, _0809F7E8 @ =gNamingScreenData diff --git a/data/naming_screen.s b/data/naming_screen.s index e06159b00..366638746 100644 --- a/data/naming_screen.s +++ b/data/naming_screen.s @@ -6,22 +6,6 @@ .section .rodata .align 2 -gUnknown_83E2364:: @ 83E2364 - .2byte 0x0000, 0xfffc, 0xfffe, 0xffff - -gUnknown_83E236C:: @ 83E236C - .2byte 0x0002, 0x0003, 0x0002, 0x0001 - -gUnknown_83E2374:: @ 83E2374 - .byte 0x01, 0x02, 0x03 - - .align 2 -gUnknown_83E2378:: @ 83E2378 - .4byte sub_809EC7C - .4byte sub_809ECD0 - .4byte sub_809ECD4 - .4byte sub_809ED48 - gUnknown_83E2388:: @ 83E2388 .2byte 0x0001, 0x0003, 0x0002 diff --git a/src/naming_screen.c b/src/naming_screen.c index 40d099c55..a5a6b5a5b 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -46,6 +46,14 @@ enum INPUT_STATE_2, }; +enum +{ + KEY_ROLE_CHAR, + KEY_ROLE_PAGE, + KEY_ROLE_BACKSPACE, + KEY_ROLE_OK, +}; + struct NamingScreenTemplate { u8 copyExistingString; @@ -115,23 +123,36 @@ void Task_809E58C(u8 taskId); u16 sub_809E644(u8 tag); void sub_809E6B8(u8 a0); void sub_809E6E0(struct Task * task, u8 a1, u8 a2); -void GetCursorPos(s16 *xP, s16 *yP); -u8 GetCurrentPageColumnCount(void); +void sub_809E700(struct Sprite * sprite); +void sub_809E7F0(struct Sprite * sprite); +void sub_809E83C(struct Sprite * sprite); +void sub_809E898(void); +void CursorInit(void); void SetCursorPos(s16 x, s16 y); +void GetCursorPos(s16 *xP, s16 *yP); +void MoveCursorToOKButton(); +void sub_809EA0C(u8 a0); +void sub_809EA64(u8 a0); +bool8 IsCursorAnimFinished(); +u8 GetCurrentPageColumnCount(void); +void CreatePageSwitcherSprites(void); +void sub_809EC20(void); +bool8 sub_809EC7C(struct Sprite * sprite); +bool8 sub_809ECD0(struct Sprite * sprite); +bool8 sub_809ECD4(struct Sprite * sprite); +bool8 sub_809ED48(struct Sprite * sprite); +void CreateBackOkSprites(void); +void CreateUnderscoreSprites(void); +void CreateInputTargetIcon(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); -void sub_809E898(void); -bool8 IsCursorAnimFinished(); -void MoveCursorToOKButton(); -void sub_809EA0C(u8 a0); -void sub_809EA64(u8 a0); -void sub_809EC20(void); bool8 HandleKeyboardEvent(void); void SetInputState(u8 state); void sub_809F56C(void); +u8 GetTextCaretPosition(void); void sub_809F7EC(void); void sub_809F8C0(void); void sub_809F900(u8 bgId, const u32 * tmap); @@ -141,6 +162,19 @@ void sub_809FAE4(void); void sub_809FB70(void); void sub_809FC34(void); +extern const struct SubspriteTable gUnknown_83E2504[]; +extern const struct SubspriteTable gUnknown_83E250C[]; + +extern const struct SpriteTemplate gUnknown_83E2574; +extern const struct SpriteTemplate gUnknown_83E258C; +extern const struct SpriteTemplate gUnknown_83E25A4; +extern const struct SpriteTemplate gUnknown_83E25BC; +extern const struct SpriteTemplate gUnknown_83E25D4; +extern const struct SpriteTemplate gUnknown_83E25EC; +extern const struct SpriteTemplate gUnknown_83E2604; +extern const struct SpriteTemplate gUnknown_83E261C; +extern const struct SpriteTemplate gUnknown_83E2634; + 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"); @@ -887,3 +921,209 @@ void sub_809E6E0(struct Task *task, u8 b, u8 c) task->data[5] = 0; task->data[6] = 4; } + +//-------------------------------------------------- +// Cursor +//-------------------------------------------------- + +void sub_809E700(struct Sprite *sprite) +{ + if (sprite->animEnded) + StartSpriteAnim(sprite, 0); + sprite->invisible = (sprite->data[4] & 0xFF); + if (sprite->data[0] == GetCurrentPageColumnCount()) + sprite->invisible = TRUE; + if (sprite->invisible || (sprite->data[4] & 0xFF00) == 0 + || sprite->data[0] != sprite->data[2] || sprite->data[1] != sprite->data[3]) + { + sprite->data[5] = 0; + sprite->data[6] = 2; + sprite->data[7] = 2; + } + sprite->data[7]--; + if (sprite->data[7] == 0) + { + sprite->data[5] += sprite->data[6]; + if (sprite->data[5] == 16 || sprite->data[5] == 0) + sprite->data[6] = -sprite->data[6]; + sprite->data[7] = 2; + } + if ((sprite->data[4] & 0xFF00) != 0) + { + s8 gb = sprite->data[5]; + s8 r = sprite->data[5] >> 1; + u16 index = IndexOfSpritePaletteTag(5) * 16 + 0x0101; + + MultiplyInvertedPaletteRGBComponents(index, r, gb, gb); + } +} + +void sub_809E7F0(struct Sprite *sprite) +{ + const s16 arr[] = {0, -4, -2, -1}; + + if (sprite->data[0] == 0 || --sprite->data[0] == 0) + { + sprite->data[0] = 8; + sprite->data[1] = (sprite->data[1] + 1) & 3; + } + sprite->pos2.x = arr[sprite->data[1]]; +} + +void sub_809E83C(struct Sprite *sprite) +{ + const s16 arr[] = {2, 3, 2, 1}; + u8 var; + + var = GetTextCaretPosition(); + if (var != (u8)sprite->data[0]) + { + sprite->pos2.y = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + } + else + { + sprite->pos2.y = arr[sprite->data[1]]; + sprite->data[2]++; + if (sprite->data[2] > 8) + { + sprite->data[1] = (sprite->data[1] + 1) & 3; + sprite->data[2] = 0; + } + } +} + +void sub_809E898(void) +{ + CursorInit(); + CreatePageSwitcherSprites(); + CreateBackOkSprites(); + CreateUnderscoreSprites(); + CreateInputTargetIcon(); +} + +void CursorInit(void) +{ + gNamingScreenData->cursorSpriteId = CreateSprite(&gUnknown_83E25EC, 38, 88, 1); + sub_809EA0C(1); + gSprites[gNamingScreenData->cursorSpriteId].oam.priority = 1; + gSprites[gNamingScreenData->cursorSpriteId].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[gNamingScreenData->cursorSpriteId].data[6] = 1; + gSprites[gNamingScreenData->cursorSpriteId].data[6] = 2; + SetCursorPos(0, 0); +} + +void SetCursorPos(s16 x, s16 y) +{ + struct Sprite *cursorSprite = &gSprites[gNamingScreenData->cursorSpriteId]; + + if (x < gUnknown_83E2330[sub_809DE50()]) + cursorSprite->pos1.x = gUnknown_83E2333[sub_809DE50()][x] + 38; + else + cursorSprite->pos1.x = 0; + + cursorSprite->pos1.y = y * 16 + 88; + cursorSprite->data[2] = cursorSprite->data[0]; + cursorSprite->data[3] = cursorSprite->data[1]; + cursorSprite->data[0] = x; + cursorSprite->data[1] = y; +} + +void GetCursorPos(s16 *x, s16 *y) +{ + struct Sprite *cursorSprite = &gSprites[gNamingScreenData->cursorSpriteId]; + + *x = cursorSprite->data[0]; + *y = cursorSprite->data[1]; +} + +void MoveCursorToOKButton(void) +{ + SetCursorPos(GetCurrentPageColumnCount(), 2); +} + +void sub_809EA0C(u8 a) +{ + gSprites[gNamingScreenData->cursorSpriteId].data[4] &= ~0xFF; + gSprites[gNamingScreenData->cursorSpriteId].data[4] |= a; + StartSpriteAnim(&gSprites[gNamingScreenData->cursorSpriteId], 0); +} + +void sub_809EA64(u8 a) +{ + gSprites[gNamingScreenData->cursorSpriteId].data[4] &= 0xFF; + gSprites[gNamingScreenData->cursorSpriteId].data[4] |= a << 8; +} + +void sub_809EAA8(void) +{ + StartSpriteAnim(&gSprites[gNamingScreenData->cursorSpriteId], 1); +} + +bool8 IsCursorAnimFinished(void) +{ + return gSprites[gNamingScreenData->cursorSpriteId].animEnded; +} + +const u8 sKeyRoles[] = {KEY_ROLE_PAGE, KEY_ROLE_BACKSPACE, KEY_ROLE_OK}; + +u8 GetKeyRoleAtCursorPos(void) +{ + s16 cursorX; + s16 cursorY; + + GetCursorPos(&cursorX, &cursorY); + if (cursorX < GetCurrentPageColumnCount()) + return KEY_ROLE_CHAR; + else + return sKeyRoles[cursorY]; +} + +u8 GetCurrentPageColumnCount(void) +{ + return gUnknown_83E2330[sub_809DE50()]; +} + +void CreatePageSwitcherSprites(void) +{ + u8 spriteId1; + u8 spriteId2; + u8 spriteId3; + + spriteId1 = CreateSprite(&gUnknown_83E2574, 0xCC, 0x58, 0); + gNamingScreenData->selectBtnFrameSpriteId = spriteId1; + SetSubspriteTables(&gSprites[spriteId1], gUnknown_83E2504); + gSprites[spriteId1].invisible = TRUE; + + spriteId2 = CreateSprite(&gUnknown_83E25A4, 0xCC, 0x54, 1); + gSprites[spriteId1].data[6] = spriteId2; + SetSubspriteTables(&gSprites[spriteId2], gUnknown_83E250C); + gSprites[spriteId2].invisible = TRUE; + + spriteId3 = CreateSprite(&gUnknown_83E258C, 0xCC, 0x53, 2); + gSprites[spriteId3].oam.priority = 1; + gSprites[spriteId1].data[7] = spriteId3; + gSprites[spriteId3].invisible = TRUE; +} + +void sub_809EC20(void) +{ + struct Sprite *sprite = &gSprites[gNamingScreenData->selectBtnFrameSpriteId]; + + sprite->data[0] = 2; + sprite->data[1] = gNamingScreenData->currentPage; +} + +bool8 (*const gUnknown_83E2378[])(struct Sprite * sprite) = { + sub_809EC7C, + sub_809ECD0, + sub_809ECD4, + sub_809ED48 +}; + +void sub_809EC54(struct Sprite *sprite) +{ + while (gUnknown_83E2378[sprite->data[0]](sprite)) + ; +} From 98d63a5268258a7f83ee776300dd4a664ad45f59 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 10 Mar 2020 09:55:29 -0400 Subject: [PATCH 04/10] through NamingScreen_CreateRivalIcon --- asm/event_object_movement.s | 14 +- asm/naming_screen.s | 549 -------------------------------- data/naming_screen.s | 45 +-- include/event_object_movement.h | 1 + include/field_player_avatar.h | 1 + include/graphics.h | 1 + include/naming_screen.h | 4 +- src/daycare.c | 2 +- src/field_specials.c | 4 +- src/naming_screen.c | 222 ++++++++++++- src/oak_speech.c | 4 +- 11 files changed, 232 insertions(+), 615 deletions(-) diff --git a/asm/event_object_movement.s b/asm/event_object_movement.s index e9ddd9ebc..d09ee8e97 100644 --- a/asm/event_object_movement.s +++ b/asm/event_object_movement.s @@ -1470,8 +1470,8 @@ _0805E8E0: bx r1 thumb_func_end TrySpawnObjectEvent - thumb_func_start sub_805E8E8 -sub_805E8E8: @ 805E8E8 + thumb_func_start MakeObjectTemplateFromObjectEventGraphicsInfo +MakeObjectTemplateFromObjectEventGraphicsInfo: @ 805E8E8 push {r4-r7,lr} adds r6, r1, 0 adds r4, r2, 0 @@ -1515,7 +1515,7 @@ _0805E936: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_805E8E8 + thumb_func_end MakeObjectTemplateFromObjectEventGraphicsInfo thumb_func_start MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex: @ 805E940 @@ -1527,7 +1527,7 @@ MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex: @ 805E940 lsrs r1, 14 adds r1, r4 ldr r1, [r1] - bl sub_805E8E8 + bl MakeObjectTemplateFromObjectEventGraphicsInfo pop {r4} pop {r0} bx r0 @@ -1565,7 +1565,7 @@ AddPseudoObjectEvent: @ 805E978 lsrs r4, 24 add r3, sp, 0x18 mov r2, sp - bl sub_805E8E8 + bl MakeObjectTemplateFromObjectEventGraphicsInfo mov r0, sp ldrh r1, [r0, 0x2] ldr r0, _0805E9F0 @ =0x0000ffff @@ -1649,7 +1649,7 @@ sprite_new: @ 805E9F8 add r3, sp, 0x1C adds r0, r5, 0 mov r2, sp - bl sub_805E8E8 + bl MakeObjectTemplateFromObjectEventGraphicsInfo mov r1, sp ldr r2, _0805EB3C @ =0x0000ffff adds r0, r2, 0 @@ -1799,7 +1799,7 @@ sub_805EB44: @ 805EB44 add r3, sp, 0x18 adds r0, r6, 0 mov r2, sp - bl sub_805E8E8 + bl MakeObjectTemplateFromObjectEventGraphicsInfo mov r1, sp ldr r2, _0805EC28 @ =0x0000ffff adds r0, r2, 0 diff --git a/asm/naming_screen.s b/asm/naming_screen.s index a4f237008..f3931d1fe 100644 --- a/asm/naming_screen.s +++ b/asm/naming_screen.s @@ -5,555 +5,6 @@ .text - thumb_func_start sub_809EC7C -sub_809EC7C: @ 809EC7C - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x3A - ldrsh r0, [r6, r1] - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - ldr r1, _0809ECC4 @ =gSprites - adds r5, r1 - movs r2, 0x3C - ldrsh r0, [r6, r2] - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r4, r1 - ldr r0, _0809ECC8 @ =gNamingScreenData - ldr r0, [r0] - ldr r1, _0809ECCC @ =0x00001e22 - adds r0, r1 - ldrb r0, [r0] - bl sub_809DE20 - lsls r0, 24 - lsrs r0, 24 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_809ED88 - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - strh r0, [r6, 0x2E] - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809ECC4: .4byte gSprites -_0809ECC8: .4byte gNamingScreenData -_0809ECCC: .4byte 0x00001e22 - thumb_func_end sub_809EC7C - - thumb_func_start sub_809ECD0 -sub_809ECD0: @ 809ECD0 - movs r0, 0 - bx lr - thumb_func_end sub_809ECD0 - - thumb_func_start sub_809ECD4 -sub_809ECD4: @ 809ECD4 - push {r4,r5,lr} - adds r3, r0, 0 - movs r0, 0x3A - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r2, _0809ED40 @ =gSprites - adds r4, r0, r2 - movs r0, 0x3C - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r5, r0, r2 - ldrh r0, [r4, 0x26] - adds r0, 0x1 - strh r0, [r4, 0x26] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _0809ED38 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - ldr r0, _0809ED44 @ =0x0000fffc - strh r0, [r4, 0x26] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r3, 0x30] - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - bl __modsi3 - lsls r0, 24 - lsrs r0, 24 - bl sub_809DE20 - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_809ED88 -_0809ED38: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0809ED40: .4byte gSprites -_0809ED44: .4byte 0x0000fffc - thumb_func_end sub_809ECD4 - - thumb_func_start sub_809ED48 -sub_809ED48: @ 809ED48 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x3A - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0809ED84 @ =gSprites - adds r2, r0, r1 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldrh r0, [r2, 0x26] - adds r0, 0x1 - strh r0, [r2, 0x26] - lsls r0, 16 - cmp r0, 0 - blt _0809ED7C - movs r0, 0 - strh r0, [r2, 0x26] - movs r0, 0x1 - strh r0, [r4, 0x2E] -_0809ED7C: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0809ED84: .4byte gSprites - thumb_func_end sub_809ED48 - - thumb_func_start sub_809ED88 -sub_809ED88: @ 809ED88 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r5, r0, 0 - adds r6, r1, 0 - mov r8, r2 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0809EDE0 @ =gUnknown_83E2388 - lsls r4, r5, 1 - adds r0, r4, r0 - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 4 - mov r1, r8 - ldrb r2, [r1, 0x5] - movs r1, 0xF - ands r1, r2 - orrs r1, r0 - mov r0, r8 - strb r1, [r0, 0x5] - ldr r0, _0809EDE4 @ =gUnknown_83E238E - adds r4, r0 - ldrh r0, [r4] - bl GetSpriteTileStartByTag - adds r1, r6, 0 - adds r1, 0x40 - strh r0, [r1] - adds r6, 0x42 - movs r1, 0x3F - ands r1, r5 - ldrb r2, [r6] - movs r0, 0x40 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r6] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809EDE0: .4byte gUnknown_83E2388 -_0809EDE4: .4byte gUnknown_83E238E - thumb_func_end sub_809ED88 - - thumb_func_start CreateBackOkSprites -CreateBackOkSprites: @ 809EDE8 - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r0, _0809EE50 @ =gUnknown_83E25BC - movs r1, 0xCC - movs r2, 0x74 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r6, _0809EE54 @ =gSprites - adds r4, r6 - ldr r0, _0809EE58 @ =gUnknown_83E2524 - mov r8, r0 - adds r0, r4, 0 - mov r1, r8 - bl SetSubspriteTables - adds r4, 0x3E - ldrb r0, [r4] - movs r5, 0x4 - orrs r0, r5 - strb r0, [r4] - ldr r0, _0809EE5C @ =gUnknown_83E25D4 - movs r1, 0xCC - movs r2, 0x8C - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r4, r6 - adds r0, r4, 0 - mov r1, r8 - bl SetSubspriteTables - adds r4, 0x3E - ldrb r0, [r4] - orrs r0, r5 - strb r0, [r4] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809EE50: .4byte gUnknown_83E25BC -_0809EE54: .4byte gSprites -_0809EE58: .4byte gUnknown_83E2524 -_0809EE5C: .4byte gUnknown_83E25D4 - thumb_func_end CreateBackOkSprites - - thumb_func_start CreateUnderscoreSprites -CreateUnderscoreSprites: @ 809EE60 - push {r4-r6,lr} - ldr r5, _0809EF0C @ =gNamingScreenData - ldr r0, [r5] - ldr r4, _0809EF10 @ =0x00001e16 - adds r0, r4 - ldrh r1, [r0] - subs r1, 0x5 - ldr r0, _0809EF14 @ =gUnknown_83E2604 - lsls r1, 16 - asrs r1, 16 - movs r2, 0x38 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - ldr r3, _0809EF18 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0, 0x5] - movs r2, 0xC - orrs r1, r2 - strb r1, [r0, 0x5] - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r0, [r5] - adds r4, r0, r4 - ldrh r1, [r4] - movs r5, 0 - ldr r2, _0809EF1C @ =0x00001e28 - adds r0, r2 - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r5, r0 - bcs _0809EF04 - adds r6, r3, 0 -_0809EEB2: - lsls r1, 16 - asrs r4, r1, 16 - movs r0, 0xC0 - lsls r0, 10 - adds r1, r0 - asrs r1, 16 - ldr r0, _0809EF20 @ =gUnknown_83E261C - movs r2, 0x3C - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0, 0x5] - movs r2, 0xC - orrs r1, r2 - strb r1, [r0, 0x5] - strh r5, [r0, 0x2E] - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x8 - lsls r4, 16 - lsrs r1, r4, 16 - ldr r0, _0809EF0C @ =gNamingScreenData - ldr r0, [r0] - ldr r2, _0809EF1C @ =0x00001e28 - adds r0, r2 - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r5, r0 - bcc _0809EEB2 -_0809EF04: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809EF0C: .4byte gNamingScreenData -_0809EF10: .4byte 0x00001e16 -_0809EF14: .4byte gUnknown_83E2604 -_0809EF18: .4byte gSprites -_0809EF1C: .4byte 0x00001e28 -_0809EF20: .4byte gUnknown_83E261C - thumb_func_end CreateUnderscoreSprites - - thumb_func_start CreateInputTargetIcon -CreateInputTargetIcon: @ 809EF24 - push {lr} - ldr r1, _0809EF44 @ =gUnknown_83E2394 - ldr r0, _0809EF48 @ =gNamingScreenData - ldr r0, [r0] - ldr r2, _0809EF4C @ =0x00001e28 - adds r0, r2 - ldr r0, [r0] - ldrb r0, [r0, 0x2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - pop {r0} - bx r0 - .align 2, 0 -_0809EF44: .4byte gUnknown_83E2394 -_0809EF48: .4byte gNamingScreenData -_0809EF4C: .4byte 0x00001e28 - thumb_func_end CreateInputTargetIcon - - thumb_func_start nullsub_54 -nullsub_54: @ 809EF50 - bx lr - thumb_func_end nullsub_54 - - thumb_func_start sub_809EF54 -sub_809EF54: @ 809EF54 - push {lr} - sub sp, 0x4 - ldr r0, _0809EFA0 @ =gNamingScreenData - ldr r0, [r0] - ldr r1, _0809EFA4 @ =0x00001e34 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0 - bl sub_805C7C8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0809EFA8 @ =SpriteCallbackDummy - movs r2, 0 - str r2, [sp] - movs r2, 0x38 - movs r3, 0x25 - bl AddPseudoObjectEvent - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _0809EFAC @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x5] - movs r2, 0xC - orrs r1, r2 - strb r1, [r0, 0x5] - movs r1, 0x4 - bl StartSpriteAnim - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0809EFA0: .4byte gNamingScreenData -_0809EFA4: .4byte 0x00001e34 -_0809EFA8: .4byte SpriteCallbackDummy -_0809EFAC: .4byte gSprites - thumb_func_end sub_809EF54 - - thumb_func_start sub_809EFB0 -sub_809EFB0: @ 809EFB0 - push {r4,lr} - ldr r0, _0809EFE4 @ =gUnknown_83E2634 - movs r1, 0x38 - movs r2, 0x29 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _0809EFE8 @ =gSprites - adds r4, r0 - ldr r1, _0809EFEC @ =gUnknown_83E252C - adds r0, r4, 0 - bl SetSubspriteTables - ldrb r0, [r4, 0x5] - movs r1, 0xC - orrs r0, r1 - strb r0, [r4, 0x5] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809EFE4: .4byte gUnknown_83E2634 -_0809EFE8: .4byte gSprites -_0809EFEC: .4byte gUnknown_83E252C - thumb_func_end sub_809EFB0 - - thumb_func_start sub_809EFF0 -sub_809EFF0: @ 809EFF0 - push {lr} - sub sp, 0xC - bl LoadMonIconPalettes - ldr r0, _0809F038 @ =gNamingScreenData - ldr r3, [r0] - ldr r1, _0809F03C @ =0x00001e34 - adds r0, r3, r1 - ldrh r0, [r0] - ldr r1, _0809F040 @ =SpriteCallbackDummy - movs r2, 0 - str r2, [sp] - ldr r2, _0809F044 @ =0x00001e38 - adds r3, r2 - ldr r2, [r3] - str r2, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r2, 0x38 - movs r3, 0x28 - bl CreateMonIcon - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0809F048 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x5] - movs r2, 0xC - orrs r0, r2 - strb r0, [r1, 0x5] - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_0809F038: .4byte gNamingScreenData -_0809F03C: .4byte 0x00001e34 -_0809F040: .4byte SpriteCallbackDummy -_0809F044: .4byte 0x00001e38 -_0809F048: .4byte gSprites - thumb_func_end sub_809EFF0 - - thumb_func_start sub_809F04C -sub_809F04C: @ 809F04C - push {r4,lr} - sub sp, 0x2C - ldr r0, _0809F0B8 @ =gUnknown_83E23C0 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x1C] - str r1, [sp, 0x20] - ldr r0, _0809F0BC @ =gUnknown_83E23C8 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x24] - str r1, [sp, 0x28] - ldr r1, _0809F0C0 @ =SpriteCallbackDummy - add r3, sp, 0x18 - movs r0, 0 - mov r2, sp - bl sub_805E8E8 - mov r2, sp - add r0, sp, 0x1C - ldrh r1, [r0, 0x6] - strh r1, [r2] - add r4, sp, 0x24 - ldrh r1, [r4, 0x4] - strh r1, [r2, 0x2] - ldr r1, _0809F0C4 @ =gUnknown_83E23BC - str r1, [sp, 0x8] - bl LoadSpriteSheet - adds r0, r4, 0 - bl LoadSpritePalette - mov r0, sp - movs r1, 0x38 - movs r2, 0x25 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0809F0C8 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x5] - movs r2, 0xC - orrs r0, r2 - strb r0, [r1, 0x5] - add sp, 0x2C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809F0B8: .4byte gUnknown_83E23C0 -_0809F0BC: .4byte gUnknown_83E23C8 -_0809F0C0: .4byte SpriteCallbackDummy -_0809F0C4: .4byte gUnknown_83E23BC -_0809F0C8: .4byte gSprites - thumb_func_end sub_809F04C - thumb_func_start HandleKeyboardEvent HandleKeyboardEvent: @ 809F0CC push {r4,r5,lr} diff --git a/data/naming_screen.s b/data/naming_screen.s index 366638746..4f89d013f 100644 --- a/data/naming_screen.s +++ b/data/naming_screen.s @@ -6,35 +6,6 @@ .section .rodata .align 2 -gUnknown_83E2388:: @ 83E2388 - .2byte 0x0001, 0x0003, 0x0002 - -gUnknown_83E238E:: @ 83E238E - .2byte 0x0004, 0x0006, 0x0005 - -gUnknown_83E2394:: @ 83E2394 - .4byte nullsub_54 - .4byte sub_809EF54 - .4byte sub_809EFB0 - .4byte sub_809EFF0 - .4byte sub_809F04C - -gUnknown_83E23A8:: @ 83E23A8 - obj_image_anim_frame 0, 10 - obj_image_anim_frame 24, 10 - obj_image_anim_frame 0, 10 - obj_image_anim_frame 32, 10 - obj_image_anim_jump 0 - -gUnknown_83E23BC:: @ 83E23BC - .4byte gUnknown_83E23A8 - -gUnknown_83E23C0:: @ 83E23C0 - obj_tiles gUnknown_83E1980, 0x0900, 255 - -gUnknown_83E23C8:: @ 83E23C8 - obj_pal gUnknown_8E98004, 255 - gUnknown_83E23D0:: @ 83E23D0 .4byte sub_809F11C .4byte KeyboardKeyHandler_Page @@ -119,11 +90,11 @@ gUnknown_83E2480:: @ 83E2480 .4byte gUnknown_8418E69 sNamingScreenTemplates:: @ 83E248C - .4byte gUnknown_83E245C - .4byte gUnknown_83E2468 - .4byte gUnknown_83E2474 - .4byte gUnknown_83E2474 - .4byte gUnknown_83E2480 + .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 @@ -216,7 +187,7 @@ gUnknown_83E2570:: @ 83E2570 .4byte gUnknown_83E2558 gUnknown_83E2574:: @ 83E2574 - spr_template 2, 4, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, sub_809EC54 + 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 @@ -233,10 +204,10 @@ gUnknown_83E25D4:: @ 83E25D4 gUnknown_83E25EC:: @ 83E25EC spr_template 7, 5, gUnknown_83E24A8, gUnknown_83E2568, NULL, gDummySpriteAffineAnimTable, sub_809E700 -gUnknown_83E2604:: @ 83E2604 +sSpriteTemplate_InputArrow:: @ 83E2604 spr_template 10, 3, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, sub_809E7F0 -gUnknown_83E261C:: @ 83E261C +sSpriteTemplate_Underscore:: @ 83E261C spr_template 11, 3, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, sub_809E83C gUnknown_83E2634:: @ 83E2634 diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 7828d0bcb..50d9935fc 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -128,6 +128,7 @@ void SetSpritePosToMapCoords(s16 x, s16 y, s16 *x2, s16 *y2); void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible); u8 ZCoordToPriority(u8 z); void SetObjectSubpriorityByZCoord(u8 z, struct Sprite * sprite, u8 offset); +void MakeObjectTemplateFromObjectEventGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables); // Exported data declarations diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 5565fb64b..3233c2d70 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -37,5 +37,6 @@ bool8 PartyHasMonWithSurf(void); bool8 IsPlayerSurfingNorth(void); void player_get_pos_including_state_based_drift(s16 *x, s16 *y); void sub_805CBE8(void); +u8 sub_805C7C8(u8 state, u8 gender); #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/graphics.h b/include/graphics.h index f85b95bad..a61250ea8 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4899,5 +4899,6 @@ extern const u32 gEasyChatModeIcons_Tiles[]; extern const u32 gUnknown_8E982BC[]; extern const u32 gUnknown_8E98458[]; extern const u32 gUnknown_8E98398[]; +extern const u16 gUnknown_8E98004[]; #endif //GUARD_GRAPHICS_H diff --git a/include/naming_screen.h b/include/naming_screen.h index 424d1bdba..1e8d11b3a 100644 --- a/include/naming_screen.h +++ b/include/naming_screen.h @@ -6,8 +6,8 @@ #define NAMING_SCREEN_PLAYER 0 #define NAMING_SCREEN_BOX 1 #define NAMING_SCREEN_CAUGHT_MON 2 -#define NAMING_SCREEN_3 3 -#define NAMING_SCREEN_WALDA 4 // Wrong name? +#define NAMING_SCREEN_NAME_RATER 3 +#define NAMING_SCREEN_RIVAL 4 void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGender, u32 monPersonality, MainCallback returnCallback); diff --git a/src/daycare.c b/src/daycare.c index 36fb34c79..4d1b5aa7b 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1967,7 +1967,7 @@ static void CB2_EggHatch_1(void) species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES); gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]); personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0); - DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname); + DoNamingScreen(NAMING_SCREEN_NAME_RATER, gStringVar3, species, gender, personality, EggHatchSetMonNickname); break; case 1: case -1: diff --git a/src/field_specials.c b/src/field_specials.c index e8def2c39..25d2eceb7 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1637,7 +1637,7 @@ void ChangeBoxPokemonNickname(void) species = GetBoxMonData(pokemon, MON_DATA_SPECIES, NULL); gender = GetBoxMonGender(pokemon); personality = GetBoxMonData(pokemon, MON_DATA_PERSONALITY, NULL); - DoNamingScreen(3, gStringVar2, species, gender, personality, ChangeBoxPokemonNickname_CB); + DoNamingScreen(NAMING_SCREEN_NAME_RATER, gStringVar2, species, gender, personality, ChangeBoxPokemonNickname_CB); } static void ChangeBoxPokemonNickname_CB(void) @@ -1657,7 +1657,7 @@ void ChangePokemonNickname(void) species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL); gender = GetMonGender(&gPlayerParty[gSpecialVar_0x8004]); personality = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_PERSONALITY, NULL); - DoNamingScreen(3, gStringVar2, species, gender, personality, ChangePokemonNickname_CB); + DoNamingScreen(NAMING_SCREEN_NAME_RATER, gStringVar2, species, gender, personality, ChangePokemonNickname_CB); } static void ChangePokemonNickname_CB(void) diff --git a/src/naming_screen.c b/src/naming_screen.c index a5a6b5a5b..6f506f621 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1,21 +1,23 @@ #include "global.h" #include "gflib.h" -#include "battle_message.h" #include "graphics.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 "help_system.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 "trig.h" #include "constants/help_system.h" #include "constants/flags.h" #include "constants/songs.h" +#include "constants/event_objects.h" enum { @@ -137,13 +139,19 @@ bool8 IsCursorAnimFinished(); u8 GetCurrentPageColumnCount(void); void CreatePageSwitcherSprites(void); void sub_809EC20(void); -bool8 sub_809EC7C(struct Sprite * sprite); -bool8 sub_809ECD0(struct Sprite * sprite); -bool8 sub_809ECD4(struct Sprite * sprite); -bool8 sub_809ED48(struct Sprite * sprite); +bool8 PageSwapSpritesCB_Init(struct Sprite * sprite); +bool8 PageSwapSpritesCB_Idle(struct Sprite * sprite); +bool8 PageSwapSpritesCB_SwapHide(struct Sprite * sprite); +bool8 PageSwapSpritesCB_SwapShow(struct Sprite * sprite); +void sub_809ED88(u8 a0, struct Sprite * spr1, struct Sprite * spr2); void CreateBackOkSprites(void); void CreateUnderscoreSprites(void); void CreateInputTargetIcon(void); +void NamingScreen_NoCreateIcon(void); +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); @@ -164,6 +172,8 @@ void sub_809FC34(void); extern const struct SubspriteTable gUnknown_83E2504[]; extern const struct SubspriteTable gUnknown_83E250C[]; +extern const struct SubspriteTable gUnknown_83E2524[]; +extern const struct SubspriteTable gUnknown_83E252C[]; extern const struct SpriteTemplate gUnknown_83E2574; extern const struct SpriteTemplate gUnknown_83E258C; @@ -171,8 +181,8 @@ extern const struct SpriteTemplate gUnknown_83E25A4; extern const struct SpriteTemplate gUnknown_83E25BC; extern const struct SpriteTemplate gUnknown_83E25D4; extern const struct SpriteTemplate gUnknown_83E25EC; -extern const struct SpriteTemplate gUnknown_83E2604; -extern const struct SpriteTemplate gUnknown_83E261C; +extern const struct SpriteTemplate sSpriteTemplate_InputArrow; +extern const struct SpriteTemplate sSpriteTemplate_Underscore; extern const struct SpriteTemplate gUnknown_83E2634; const u16 gUnknown_83E1800[] = INCBIN_U16("graphics/interface/naming_screen_83E1800.4bpp"); @@ -1115,15 +1125,197 @@ void sub_809EC20(void) sprite->data[1] = gNamingScreenData->currentPage; } -bool8 (*const gUnknown_83E2378[])(struct Sprite * sprite) = { - sub_809EC7C, - sub_809ECD0, - sub_809ECD4, - sub_809ED48 +bool8 (*const sPageSwapSpritesCBs[])(struct Sprite * sprite) = { + PageSwapSpritesCB_Init, + PageSwapSpritesCB_Idle, + PageSwapSpritesCB_SwapHide, + PageSwapSpritesCB_SwapShow }; -void sub_809EC54(struct Sprite *sprite) +void SpriteCB_PageSwap(struct Sprite *sprite) { - while (gUnknown_83E2378[sprite->data[0]](sprite)) + while (sPageSwapSpritesCBs[sprite->data[0]](sprite)) ; } + +bool8 PageSwapSpritesCB_Init(struct Sprite *sprite) +{ + struct Sprite *sprite1 = &gSprites[sprite->data[6]]; + struct Sprite *sprite2 = &gSprites[sprite->data[7]]; + + sub_809ED88(sub_809DE20(gNamingScreenData->currentPage), sprite1, sprite2); + sprite->data[0]++; + return FALSE; +} + +bool8 PageSwapSpritesCB_Idle(struct Sprite *sprite) +{ + struct Sprite *sprite1 = &gSprites[sprite->data[6]]; + struct Sprite *sprite2 = &gSprites[sprite->data[7]]; + + return FALSE; +} + +bool8 PageSwapSpritesCB_SwapHide(struct Sprite *sprite) +{ + struct Sprite *sprite1 = &gSprites[sprite->data[6]]; + struct Sprite *sprite2 = &gSprites[sprite->data[7]]; + u8 page; + + sprite1->pos2.y++; + if (sprite1->pos2.y > 7) + { + sprite->data[0]++; + sprite1->pos2.y = -4; + sprite1->invisible = TRUE; + page = sprite->data[1]; + sub_809ED88(sub_809DE20((page + 1) % 3), sprite1, sprite2); + } + return FALSE; +} + +bool8 PageSwapSpritesCB_SwapShow(struct Sprite *sprite) +{ + struct Sprite *sprite1 = &gSprites[sprite->data[6]]; + struct Sprite *sprite2 = &gSprites[sprite->data[7]]; + + sprite1->invisible = FALSE; + sprite1->pos2.y++; + if (sprite1->pos2.y >= 0) + { + sprite1->pos2.y = 0; + sprite->data[0] = 1; + } + return FALSE; +} + +const u16 gUnknown_83E2388[] = {1, 3, 2}; +const u16 gUnknown_83E238E[] = {4, 6, 5}; + +void sub_809ED88(u8 page, struct Sprite * sprite1, struct Sprite * sprite2) +{ + sprite2->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_83E2388[page]); + sprite1->sheetTileStart = GetSpriteTileStartByTag(gUnknown_83E238E[page]); + sprite1->subspriteTableNum = page; +} + +// + +void CreateBackOkSprites(void) +{ + u8 spriteId; + + spriteId = CreateSprite(&gUnknown_83E25BC, 0xCC, 0x74, 0); + SetSubspriteTables(&gSprites[spriteId], gUnknown_83E2524); + gSprites[spriteId].invisible = TRUE; + + spriteId = CreateSprite(&gUnknown_83E25D4, 0xCC, 0x8C, 0); + SetSubspriteTables(&gSprites[spriteId], gUnknown_83E2524); + gSprites[spriteId].invisible = TRUE; +} + +void CreateUnderscoreSprites(void) +{ + u8 spriteId; + s16 xPos; + u8 i; + + xPos = gNamingScreenData->inputCharBaseXPos - 5; + spriteId = CreateSprite(&sSpriteTemplate_InputArrow, xPos, 0x38, 0); + gSprites[spriteId].oam.priority = 3; + gSprites[spriteId].invisible = TRUE; + xPos = gNamingScreenData->inputCharBaseXPos; + for (i = 0; i < gNamingScreenData->template->maxChars; i++, xPos += 8) + { + spriteId = CreateSprite(&sSpriteTemplate_Underscore, xPos + 3, 0x3C, 0); + gSprites[spriteId].oam.priority = 3; + gSprites[spriteId].data[0] = i; + gSprites[spriteId].invisible = TRUE; + } +} + +//-------------------------------------------------- +// Icon creation (the thing you're naming or giving input to) +//-------------------------------------------------- + +void (*const sIconFunctions[])(void) = { + NamingScreen_NoCreateIcon, + NamingScreen_CreatePlayerIcon, + NamingScreen_CreatePCIcon, + NamingScreen_CreateMonIcon, + NamingScreen_CreateRivalIcon +}; + +void CreateInputTargetIcon(void) +{ + sIconFunctions[gNamingScreenData->template->iconFunction](); +} + +void NamingScreen_NoCreateIcon(void) +{ + +} + +void NamingScreen_CreatePlayerIcon(void) +{ + u8 rivalGfxId; + u8 spriteId; + + rivalGfxId = sub_805C7C8(0, gNamingScreenData->monSpecies); + spriteId = AddPseudoObjectEvent(rivalGfxId, SpriteCallbackDummy, 0x38, 0x25, 0); + gSprites[spriteId].oam.priority = 3; + StartSpriteAnim(&gSprites[spriteId], 4); +} + +void NamingScreen_CreatePCIcon(void) +{ + u8 spriteId; + + spriteId = CreateSprite(&gUnknown_83E2634, 0x38, 0x29, 0); + SetSubspriteTables(&gSprites[spriteId], gUnknown_83E252C); + gSprites[spriteId].oam.priority = 3; +} + +void NamingScreen_CreateMonIcon(void) +{ + u8 spriteId; + + LoadMonIconPalettes(); + spriteId = CreateMonIcon(gNamingScreenData->monSpecies, SpriteCallbackDummy, 0x38, 0x28, 0, gNamingScreenData->monPersonality, 1); + gSprites[spriteId].oam.priority = 3; +} + +const union AnimCmd gUnknown_83E23A8[] = { + ANIMCMD_FRAME( 0, 10), + ANIMCMD_FRAME(24, 10), + ANIMCMD_FRAME( 0, 10), + ANIMCMD_FRAME(32, 10), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd *const gUnknown_83E23BC[] = { + gUnknown_83E23A8 +}; + +void NamingScreen_CreateRivalIcon(void) +{ + const struct SpriteSheet sheet = { + gUnknown_83E1980, 0x900, 255 + }; + const struct SpritePalette palette = { + gUnknown_8E98004, 255 + }; + struct SpriteTemplate template; + const struct SubspriteTable * tables_p; + u8 spriteId; + + MakeObjectTemplateFromObjectEventGraphicsInfo(OBJ_EVENT_GFX_RED_NORMAL, SpriteCallbackDummy, &template, &tables_p); + + template.tileTag = sheet.tag; + template.paletteTag = palette.tag; + template.anims = gUnknown_83E23BC; + LoadSpriteSheet(&sheet); + LoadSpritePalette(&palette); + spriteId = CreateSprite(&template, 0x38, 0x25, 0); + gSprites[spriteId].oam.priority = 3; +} diff --git a/src/oak_speech.c b/src/oak_speech.c index 871a73783..11281da30 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -1223,13 +1223,13 @@ static void Task_OakSpeech25(u8 taskId) GetDefaultName(sOakSpeechResources->unk_0010, 0); if (sOakSpeechResources->unk_0010 == 0) { - DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnFromNamingScreen); + DoNamingScreen(NAMING_SCREEN_PLAYER, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnFromNamingScreen); } else { ClearStdWindowAndFrameToTransparent(gTasks[taskId].data[13], 1); RemoveWindow(gTasks[taskId].data[13]); - DoNamingScreen(4, gSaveBlock1Ptr->rivalName, 0, 0, 0, CB2_ReturnFromNamingScreen); + DoNamingScreen(NAMING_SCREEN_RIVAL, gSaveBlock1Ptr->rivalName, 0, 0, 0, CB2_ReturnFromNamingScreen); } DestroyLinkedPikaOrGrassPlatformSprites(taskId, 1); FreeAllWindowBuffers(); From 9aa9c22a7f73afa710c26144a0a4da50b7cdadf9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 10 Mar 2020 11:32:18 -0400 Subject: [PATCH 05/10] Finish naming_screen --- asm/naming_screen.s | 1651 ---------------------------------------- data/data_8479668.s | 24 +- data/naming_screen.s | 254 ------- include/data_8479668.h | 13 + include/graphics.h | 16 + include/strings.h | 8 + src/graphics.c | 4 +- src/naming_screen.c | 1117 ++++++++++++++++++++++++++- src/strings.c | 12 +- sym_ewram.txt | 6 +- 10 files changed, 1155 insertions(+), 1950 deletions(-) delete mode 100644 asm/naming_screen.s delete mode 100644 data/naming_screen.s 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 From b81dd6de2258f20e0a26b3ba360bebadbda8bab6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 10 Mar 2020 11:33:51 -0400 Subject: [PATCH 06/10] Static symbols in naming_screen.c --- src/naming_screen.c | 560 ++++++++++++++++++++++---------------------- 1 file changed, 281 insertions(+), 279 deletions(-) diff --git a/src/naming_screen.c b/src/naming_screen.c index b877a3cee..a353ad458 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -109,130 +109,132 @@ struct NamingScreenData { /*0x1E3C*/ MainCallback returnCallback; }; -EWRAM_DATA struct NamingScreenData * gNamingScreenData = NULL; +static EWRAM_DATA struct NamingScreenData * gNamingScreenData = NULL; -void C2_NamingScreen(void); -void NamingScreen_Init(void); -void NamingScreen_InitBGs(void); -void sub_809DD60(void); -void sub_809DD88(u8 taskId); -bool8 MainState_BeginFadeIn(void); -bool8 MainState_WaitFadeIn(void); -bool8 MainState_HandleInput(void); -bool8 MainState_MoveToOKButton(void); -bool8 pokemon_store(void); -bool8 MainState_BeginFadeInOut(void); -bool8 MainState_WaitFadeOutAndExit(void); -void pokemon_transfer_to_pc_with_message(void); -bool8 sub_809E1D4(void); -bool8 MainState_StartPageSwap(void); -bool8 MainState_WaitPageSwap(void); -void StartPageSwapAnim(void); -void Task_HandlePageSwapAnim(u8 taskId); -bool8 IsPageSwapAnimNotInProgress(void); -bool8 PageSwapAnimState_Init(struct Task * task); -bool8 PageSwapAnimState_1(struct Task * task); -bool8 PageSwapAnimState_2(struct Task * task); -bool8 PageSwapAnimState_Done(struct Task * task); -void sub_809E518(u8 a0, u8 a1, u8 a2); -void Task_809E58C(u8 taskId); -u16 sub_809E644(u8 tag); -void sub_809E6B8(u8 a0); -void sub_809E6E0(struct Task * task, u8 a1, u8 a2); -void sub_809E700(struct Sprite * sprite); -void sub_809E7F0(struct Sprite * sprite); -void sub_809E83C(struct Sprite * sprite); -void sub_809E898(void); -void CursorInit(void); -void SetCursorPos(s16 x, s16 y); -void GetCursorPos(s16 *xP, s16 *yP); -void MoveCursorToOKButton(); -void sub_809EA0C(u8 a0); -void sub_809EA64(u8 a0); -bool8 IsCursorAnimFinished(); -u8 GetCurrentPageColumnCount(void); -void CreatePageSwitcherSprites(void); -void sub_809EC20(void); -bool8 PageSwapSpritesCB_Init(struct Sprite * sprite); -bool8 PageSwapSpritesCB_Idle(struct Sprite * sprite); -bool8 PageSwapSpritesCB_SwapHide(struct Sprite * sprite); -bool8 PageSwapSpritesCB_SwapShow(struct Sprite * sprite); -void sub_809ED88(u8 a0, struct Sprite * spr1, struct Sprite * spr2); -void CreateBackOkSprites(void); -void CreateUnderscoreSprites(void); -void CreateInputTargetIcon(void); -void NamingScreen_NoCreateIcon(void); -void NamingScreen_CreatePlayerIcon(void); -void NamingScreen_CreatePCIcon(void); -void NamingScreen_CreateMonIcon(void); -void NamingScreen_CreateRivalIcon(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 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); -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 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 NamingScreen_TurnOffScreen(void); -void NamingScreen_InitDisplayMode(void); -void VBlankCB_NamingScreen(void); -void ShowAllBgs(void); -bool8 IsLetter(u8 character); +static void C2_NamingScreen(void); +static void NamingScreen_Init(void); +static void NamingScreen_InitBGs(void); +static void sub_809DD60(void); +static void sub_809DD88(u8 taskId); +static bool8 MainState_BeginFadeIn(void); +static bool8 MainState_WaitFadeIn(void); +static bool8 MainState_HandleInput(void); +static bool8 MainState_MoveToOKButton(void); +static bool8 pokemon_store(void); +static bool8 MainState_BeginFadeInOut(void); +static bool8 MainState_WaitFadeOutAndExit(void); +static void pokemon_transfer_to_pc_with_message(void); +static bool8 sub_809E1D4(void); +static bool8 MainState_StartPageSwap(void); +static bool8 MainState_WaitPageSwap(void); +static void StartPageSwapAnim(void); +static void Task_HandlePageSwapAnim(u8 taskId); +static bool8 IsPageSwapAnimNotInProgress(void); +static bool8 PageSwapAnimState_Init(struct Task * task); +static bool8 PageSwapAnimState_1(struct Task * task); +static bool8 PageSwapAnimState_2(struct Task * task); +static bool8 PageSwapAnimState_Done(struct Task * task); +static void sub_809E518(u8 a0, u8 a1, u8 a2); +static void Task_809E58C(u8 taskId); +static u16 sub_809E644(u8 tag); +static void sub_809E6B8(u8 a0); +static void sub_809E6E0(struct Task * task, u8 a1, u8 a2); +static void sub_809E700(struct Sprite * sprite); +static void sub_809E7F0(struct Sprite * sprite); +static void sub_809E83C(struct Sprite * sprite); +static void sub_809E898(void); +static void CursorInit(void); +static void SetCursorPos(s16 x, s16 y); +static void GetCursorPos(s16 *xP, s16 *yP); +static void MoveCursorToOKButton(); +static void sub_809EA0C(u8 a0); +static void sub_809EA64(u8 a0); +static bool8 IsCursorAnimFinished(); +static u8 GetCurrentPageColumnCount(void); +static void CreatePageSwitcherSprites(void); +static void sub_809EC20(void); +static bool8 PageSwapSpritesCB_Init(struct Sprite * sprite); +static bool8 PageSwapSpritesCB_Idle(struct Sprite * sprite); +static bool8 PageSwapSpritesCB_SwapHide(struct Sprite * sprite); +static bool8 PageSwapSpritesCB_SwapShow(struct Sprite * sprite); +static void sub_809ED88(u8 a0, struct Sprite * spr1, struct Sprite * spr2); +static void CreateBackOkSprites(void); +static void CreateUnderscoreSprites(void); +static void CreateInputTargetIcon(void); +static void NamingScreen_NoCreateIcon(void); +static void NamingScreen_CreatePlayerIcon(void); +static void NamingScreen_CreatePCIcon(void); +static void NamingScreen_CreateMonIcon(void); +static void NamingScreen_CreateRivalIcon(void); +static bool8 HandleKeyboardEvent(void); +static bool8 KeyboardKeyHandler_Character(u8); +static bool8 KeyboardKeyHandler_Page(u8); +static bool8 KeyboardKeyHandler_Backspace(u8); +static bool8 KeyboardKeyHandler_OK(u8); +static bool8 TriggerKeyboardChange(void); +static u8 GetInputEvent(void); +static void SetInputState(u8 state); +static void Task_HandleInput(u8 taskId); +static void InputState_Disabled(struct Task * task); +static void InputState_Enabled(struct Task * task); +static void HandleDpadMovement(struct Task * task); +static void PrintTitle(void); +static void AddGenderIconFunc_No(void); +static void AddGenderIconFunc_Yes(void); +static void DeleteTextCharacter(void); +static u8 GetTextCaretPosition(void); +static bool8 AppendCharToBuffer_CheckBufferFull(void); +static void AddTextCharacter(u8 character); +static void CopyStringToDestBuffer(void); +static void choose_name_or_words_screen_load_bg_tile_patterns(void); +static void sub_809F8C0(void); +static void choose_name_or_words_screen_apply_bg_pals(void); +static void DecompressToBgTilemapBuffer(u8 bgId, const u32 * tmap); +static void PrintBufferCharactersOnScreen(void); +static void sub_809F9E8(u8 windowId, u8 kbPage); +static void sub_809FA60(void); +static void sub_809FAE4(void); +static void sub_809FB70(void); +static void NamingScreen_TurnOffScreen(void); +static void NamingScreen_InitDisplayMode(void); +static void VBlankCB_NamingScreen(void); +static void ShowAllBgs(void); +static bool8 IsLetter(u8 character); -extern const struct SubspriteTable gUnknown_83E2504[]; -extern const struct SubspriteTable gUnknown_83E250C[]; -extern const struct SubspriteTable gUnknown_83E2524[]; -extern const struct SubspriteTable gUnknown_83E252C[]; +// Forward declarations -extern const struct SpriteTemplate gUnknown_83E2574; -extern const struct SpriteTemplate gUnknown_83E258C; -extern const struct SpriteTemplate gUnknown_83E25A4; -extern const struct SpriteTemplate gUnknown_83E25BC; -extern const struct SpriteTemplate gUnknown_83E25D4; -extern const struct SpriteTemplate gUnknown_83E25EC; -extern const struct SpriteTemplate sSpriteTemplate_InputArrow; -extern const struct SpriteTemplate sSpriteTemplate_Underscore; -extern const struct SpriteTemplate gUnknown_83E2634; +static const struct SubspriteTable gUnknown_83E2504[]; +static const struct SubspriteTable gUnknown_83E250C[]; +static const struct SubspriteTable gUnknown_83E2524[]; +static const struct SubspriteTable gUnknown_83E252C[]; -extern const u8 *const sNamingScreenKeyboardText[][KBROW_COUNT]; +static const struct SpriteTemplate gUnknown_83E2574; +static const struct SpriteTemplate gUnknown_83E258C; +static const struct SpriteTemplate gUnknown_83E25A4; +static const struct SpriteTemplate gUnknown_83E25BC; +static const struct SpriteTemplate gUnknown_83E25D4; +static const struct SpriteTemplate gUnknown_83E25EC; +static const struct SpriteTemplate sSpriteTemplate_InputArrow; +static const struct SpriteTemplate sSpriteTemplate_Underscore; +static const struct SpriteTemplate gUnknown_83E2634; -extern const struct SpriteSheet gUnknown_83E267C[]; -extern const struct SpritePalette gUnknown_83E26E4[]; +static const u8 *const sNamingScreenKeyboardText[][KBROW_COUNT]; -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"); +static const struct SpriteSheet gUnknown_83E267C[]; +static const struct SpritePalette gUnknown_83E26E4[]; -const u8 *const sTransferredToPCMessages[] = { +static const u16 gUnknown_83E1800[] = INCBIN_U16("graphics/interface/naming_screen_83E1800.4bpp"); +static const u16 gUnknown_83E18C0[] = INCBIN_U16("graphics/interface/naming_screen_83E18C0.4bpp"); +static const u16 gUnknown_83E1980[] = INCBIN_U16("graphics/interface/naming_screen_83E1980.4bpp"); + +static const u8 *const sTransferredToPCMessages[] = { Text_MonSentToBoxInSomeonesPC, Text_MonSentToBoxInBillsPC, Text_MonSentToBoxSomeonesBoxFull, Text_MonSentToBoxBillsBoxFull }; -const struct BgTemplate gUnknown_83E2290[4] = { +static const struct BgTemplate gUnknown_83E2290[4] = { { .bg = 0, .charBaseIndex = 0, @@ -268,7 +270,7 @@ const struct BgTemplate gUnknown_83E2290[4] = { } }; -const struct WindowTemplate gUnknown_83E22A0[6] = { +static const struct WindowTemplate gUnknown_83E22A0[6] = { { .bg = 1, .tilemapLeft = 3, @@ -312,7 +314,7 @@ const struct WindowTemplate gUnknown_83E22A0[6] = { }, DUMMY_WIN_TEMPLATE }; -const u8 gUnknown_83E22D0[][4][8] = { +static const u8 gUnknown_83E22D0[][4][8] = { [KBPAGE_LETTERS_LOWER] = { __("abcdef ."), __("ghijkl ,"), @@ -333,13 +335,13 @@ const u8 gUnknown_83E22D0[][4][8] = { } }; -const u8 gUnknown_83E2330[] = { +static const u8 gUnknown_83E2330[] = { [KBPAGE_LETTERS_LOWER] = 8, // lower [KBPAGE_LETTERS_UPPER] = 8, // upper [KBPAGE_SYMBOLS] = 6 }; -const u8 gUnknown_83E2333[][8] = { +static const u8 gUnknown_83E2333[][8] = { [KBPAGE_LETTERS_LOWER] = { 0, 12, @@ -370,7 +372,7 @@ const u8 gUnknown_83E2333[][8] = { } }; -extern const struct NamingScreenTemplate *const sNamingScreenTemplates[]; +static const struct NamingScreenTemplate *const sNamingScreenTemplates[]; void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGender, u32 monPersonality, MainCallback returnCallback) { @@ -395,7 +397,7 @@ void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGende } } -void C2_NamingScreen(void) +static void C2_NamingScreen(void) { switch (gMain.state) { @@ -442,7 +444,7 @@ void C2_NamingScreen(void) } } -void NamingScreen_Init(void) +static void NamingScreen_Init(void) { gNamingScreenData->state = 0; gNamingScreenData->bg1vOffset = 0; @@ -461,7 +463,7 @@ void NamingScreen_Init(void) gKeyRepeatStartDelay = 16; } -void sub_809DB70(void) +static void sub_809DB70(void) { u8 i; for (i = 0; i < MAX_SPRITES; i++) @@ -472,7 +474,7 @@ void sub_809DB70(void) sub_809EA0C(0); } -void NamingScreen_InitBGs(void) +static void NamingScreen_InitBGs(void) { u8 i; @@ -512,7 +514,7 @@ void NamingScreen_InitBGs(void) FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 0x20, 0x20); } -void sub_809DD60(void) +static void sub_809DD60(void) { CreateTask(sub_809DD88, 2); SetMainCallback2(sub_809FB70); @@ -520,7 +522,7 @@ void sub_809DD60(void) SetHelpContext(HELPCONTEXT_NAMING_SCREEN); } -void sub_809DD88(u8 taskId) +static void sub_809DD88(u8 taskId) { switch (gNamingScreenData->state) { @@ -559,40 +561,40 @@ void sub_809DD88(u8 taskId) } } -const u8 sPageOrderLowerFirst[] = { +static const u8 sPageOrderLowerFirst[] = { KBPAGE_LETTERS_LOWER, KBPAGE_SYMBOLS, KBPAGE_LETTERS_UPPER }; -const u8 sPageOrderUpperFirst[] = { +static const u8 sPageOrderUpperFirst[] = { KBPAGE_LETTERS_UPPER, KBPAGE_LETTERS_LOWER, KBPAGE_SYMBOLS }; -const u8 sPageOrderSymbolsFirst[] = { +static const u8 sPageOrderSymbolsFirst[] = { KBPAGE_SYMBOLS, KBPAGE_LETTERS_UPPER, KBPAGE_LETTERS_LOWER }; -u8 sub_809DE20(u8 a1) +static u8 sub_809DE20(u8 a1) { return sPageOrderLowerFirst[a1]; } -u8 sub_809DE30(void) +static u8 sub_809DE30(void) { return sPageOrderUpperFirst[gNamingScreenData->currentPage]; } -u8 sub_809DE50(void) +static u8 sub_809DE50(void) { return sPageOrderSymbolsFirst[gNamingScreenData->currentPage]; } -bool8 MainState_BeginFadeIn(void) +static bool8 MainState_BeginFadeIn(void) { DecompressToBgTilemapBuffer(3, gUnknown_8E982BC); gNamingScreenData->currentPage = KBPAGE_LETTERS_UPPER; @@ -612,7 +614,7 @@ bool8 MainState_BeginFadeIn(void) return FALSE; } -bool8 MainState_WaitFadeIn(void) +static bool8 MainState_WaitFadeIn(void) { if (!gPaletteFade.active) { @@ -623,12 +625,12 @@ bool8 MainState_WaitFadeIn(void) return FALSE; } -bool8 MainState_HandleInput(void) +static bool8 MainState_HandleInput(void) { return HandleKeyboardEvent(); } -bool8 MainState_MoveToOKButton(void) +static bool8 MainState_MoveToOKButton(void) { if (IsCursorAnimFinished()) { @@ -639,7 +641,7 @@ bool8 MainState_MoveToOKButton(void) return FALSE; } -bool8 pokemon_store(void) +static bool8 pokemon_store(void) { CopyStringToDestBuffer(); SetInputState(INPUT_STATE_DISABLED); @@ -659,14 +661,14 @@ bool8 pokemon_store(void) } } -bool8 MainState_BeginFadeInOut(void) +static bool8 MainState_BeginFadeInOut(void) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); gNamingScreenData->state++; return FALSE; } -bool8 MainState_WaitFadeOutAndExit(void) +static bool8 MainState_WaitFadeOutAndExit(void) { if (!gPaletteFade.active) { @@ -681,7 +683,7 @@ bool8 MainState_WaitFadeOutAndExit(void) return FALSE; } -void pokemon_transfer_to_pc_with_message(void) +static void pokemon_transfer_to_pc_with_message(void) { u8 stringToDisplay = 0; @@ -708,7 +710,7 @@ void pokemon_transfer_to_pc_with_message(void) CopyWindowToVram(0, 3); } -bool8 sub_809E1D4(void) +static bool8 sub_809E1D4(void) { RunTextPrinters(); @@ -718,7 +720,7 @@ bool8 sub_809E1D4(void) return FALSE; } -bool8 MainState_StartPageSwap(void) +static bool8 MainState_StartPageSwap(void) { SetInputState(INPUT_STATE_DISABLED); sub_809EC20(); @@ -730,7 +732,7 @@ bool8 MainState_StartPageSwap(void) return FALSE; } -bool8 MainState_WaitPageSwap(void) +static bool8 MainState_WaitPageSwap(void) { s16 cursorX; s16 cursorY; @@ -771,14 +773,14 @@ bool8 MainState_WaitPageSwap(void) #define tState data[0] #define tFrameCount data[1] -bool8 (*const sPageSwapAnimStateFuncs[])(struct Task * task) = { +static bool8 (*const sPageSwapAnimStateFuncs[])(struct Task * task) = { PageSwapAnimState_Init, PageSwapAnimState_1, PageSwapAnimState_2, PageSwapAnimState_Done }; -void StartPageSwapAnim(void) +static void StartPageSwapAnim(void) { u8 taskId; @@ -786,13 +788,13 @@ void StartPageSwapAnim(void) Task_HandlePageSwapAnim(taskId); } -void Task_HandlePageSwapAnim(u8 taskId) +static void Task_HandlePageSwapAnim(u8 taskId) { while (sPageSwapAnimStateFuncs[gTasks[taskId].tState](&gTasks[taskId])) ; } -bool8 IsPageSwapAnimNotInProgress(void) +static bool8 IsPageSwapAnimNotInProgress(void) { if (FindTaskIdByFunc(Task_HandlePageSwapAnim) == 0xFF) return TRUE; @@ -800,7 +802,7 @@ bool8 IsPageSwapAnimNotInProgress(void) return FALSE; } -bool8 PageSwapAnimState_Init(struct Task *task) +static bool8 PageSwapAnimState_Init(struct Task *task) { gNamingScreenData->bg1vOffset = 0; gNamingScreenData->bg2vOffset = 0; @@ -808,7 +810,7 @@ bool8 PageSwapAnimState_Init(struct Task *task) return 0; } -bool8 PageSwapAnimState_1(struct Task *task) +static bool8 PageSwapAnimState_1(struct Task *task) { u16 *const arr[] = { @@ -830,7 +832,7 @@ bool8 PageSwapAnimState_1(struct Task *task) return 0; } -bool8 PageSwapAnimState_2(struct Task *task) +static bool8 PageSwapAnimState_2(struct Task *task) { u16 *const arr[] = { @@ -852,7 +854,7 @@ bool8 PageSwapAnimState_2(struct Task *task) return 0; } -bool8 PageSwapAnimState_Done(struct Task *task) +static bool8 PageSwapAnimState_Done(struct Task *task) { DestroyTask(FindTaskIdByFunc(Task_HandlePageSwapAnim)); return 0; @@ -867,7 +869,7 @@ bool8 PageSwapAnimState_Done(struct Task *task) #define tIdent data[0] -void sub_809E4F0(void) +static void sub_809E4F0(void) { u8 taskId; @@ -875,7 +877,7 @@ void sub_809E4F0(void) gTasks[taskId].data[0] = 3; } -void sub_809E518(u8 a, u8 b, u8 c) +static void sub_809E518(u8 a, u8 b, u8 c) { struct Task *task = &gTasks[FindTaskIdByFunc(Task_809E58C)]; @@ -892,7 +894,7 @@ void sub_809E518(u8 a, u8 b, u8 c) sub_809E6E0(task, a, b); } -void Task_809E58C(u8 taskId) +static void Task_809E58C(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -937,7 +939,7 @@ void Task_809E58C(u8 taskId) } } -u16 sub_809E644(u8 a) +static u16 sub_809E644(u8 a) { const u16 arr[] = { @@ -950,14 +952,14 @@ u16 sub_809E644(u8 a) return arr[a]; } -void sub_809E6B8(u8 a) +static void sub_809E6B8(u8 a) { u16 index = sub_809E644(a); gPlttBufferFaded[index] = gPlttBufferUnfaded[index]; } -void sub_809E6E0(struct Task *task, u8 b, u8 c) +static void sub_809E6E0(struct Task *task, u8 b, u8 c) { task->data[0] = b; task->data[1] = c; @@ -972,7 +974,7 @@ void sub_809E6E0(struct Task *task, u8 b, u8 c) // Cursor //-------------------------------------------------- -void sub_809E700(struct Sprite *sprite) +static void sub_809E700(struct Sprite *sprite) { if (sprite->animEnded) StartSpriteAnim(sprite, 0); @@ -1004,7 +1006,7 @@ void sub_809E700(struct Sprite *sprite) } } -void sub_809E7F0(struct Sprite *sprite) +static void sub_809E7F0(struct Sprite *sprite) { const s16 arr[] = {0, -4, -2, -1}; @@ -1016,7 +1018,7 @@ void sub_809E7F0(struct Sprite *sprite) sprite->pos2.x = arr[sprite->data[1]]; } -void sub_809E83C(struct Sprite *sprite) +static void sub_809E83C(struct Sprite *sprite) { const s16 arr[] = {2, 3, 2, 1}; u8 var; @@ -1040,7 +1042,7 @@ void sub_809E83C(struct Sprite *sprite) } } -void sub_809E898(void) +static void sub_809E898(void) { CursorInit(); CreatePageSwitcherSprites(); @@ -1049,7 +1051,7 @@ void sub_809E898(void) CreateInputTargetIcon(); } -void CursorInit(void) +static void CursorInit(void) { gNamingScreenData->cursorSpriteId = CreateSprite(&gUnknown_83E25EC, 38, 88, 1); sub_809EA0C(1); @@ -1060,7 +1062,7 @@ void CursorInit(void) SetCursorPos(0, 0); } -void SetCursorPos(s16 x, s16 y) +static void SetCursorPos(s16 x, s16 y) { struct Sprite *cursorSprite = &gSprites[gNamingScreenData->cursorSpriteId]; @@ -1076,7 +1078,7 @@ void SetCursorPos(s16 x, s16 y) cursorSprite->data[1] = y; } -void GetCursorPos(s16 *x, s16 *y) +static void GetCursorPos(s16 *x, s16 *y) { struct Sprite *cursorSprite = &gSprites[gNamingScreenData->cursorSpriteId]; @@ -1084,37 +1086,37 @@ void GetCursorPos(s16 *x, s16 *y) *y = cursorSprite->data[1]; } -void MoveCursorToOKButton(void) +static void MoveCursorToOKButton(void) { SetCursorPos(GetCurrentPageColumnCount(), 2); } -void sub_809EA0C(u8 a) +static void sub_809EA0C(u8 a) { gSprites[gNamingScreenData->cursorSpriteId].data[4] &= ~0xFF; gSprites[gNamingScreenData->cursorSpriteId].data[4] |= a; StartSpriteAnim(&gSprites[gNamingScreenData->cursorSpriteId], 0); } -void sub_809EA64(u8 a) +static void sub_809EA64(u8 a) { gSprites[gNamingScreenData->cursorSpriteId].data[4] &= 0xFF; gSprites[gNamingScreenData->cursorSpriteId].data[4] |= a << 8; } -void sub_809EAA8(void) +static void sub_809EAA8(void) { StartSpriteAnim(&gSprites[gNamingScreenData->cursorSpriteId], 1); } -bool8 IsCursorAnimFinished(void) +static bool8 IsCursorAnimFinished(void) { return gSprites[gNamingScreenData->cursorSpriteId].animEnded; } -const u8 sKeyRoles[] = {KEY_ROLE_PAGE, KEY_ROLE_BACKSPACE, KEY_ROLE_OK}; +static const u8 sKeyRoles[] = {KEY_ROLE_PAGE, KEY_ROLE_BACKSPACE, KEY_ROLE_OK}; -u8 GetKeyRoleAtCursorPos(void) +static u8 GetKeyRoleAtCursorPos(void) { s16 cursorX; s16 cursorY; @@ -1126,12 +1128,12 @@ u8 GetKeyRoleAtCursorPos(void) return sKeyRoles[cursorY]; } -u8 GetCurrentPageColumnCount(void) +static u8 GetCurrentPageColumnCount(void) { return gUnknown_83E2330[sub_809DE50()]; } -void CreatePageSwitcherSprites(void) +static void CreatePageSwitcherSprites(void) { u8 spriteId1; u8 spriteId2; @@ -1153,7 +1155,7 @@ void CreatePageSwitcherSprites(void) gSprites[spriteId3].invisible = TRUE; } -void sub_809EC20(void) +static void sub_809EC20(void) { struct Sprite *sprite = &gSprites[gNamingScreenData->selectBtnFrameSpriteId]; @@ -1161,20 +1163,20 @@ void sub_809EC20(void) sprite->data[1] = gNamingScreenData->currentPage; } -bool8 (*const sPageSwapSpritesCBs[])(struct Sprite * sprite) = { +static bool8 (*const sPageSwapSpritesCBs[])(struct Sprite * sprite) = { PageSwapSpritesCB_Init, PageSwapSpritesCB_Idle, PageSwapSpritesCB_SwapHide, PageSwapSpritesCB_SwapShow }; -void SpriteCB_PageSwap(struct Sprite *sprite) +static void SpriteCB_PageSwap(struct Sprite *sprite) { while (sPageSwapSpritesCBs[sprite->data[0]](sprite)) ; } -bool8 PageSwapSpritesCB_Init(struct Sprite *sprite) +static bool8 PageSwapSpritesCB_Init(struct Sprite *sprite) { struct Sprite *sprite1 = &gSprites[sprite->data[6]]; struct Sprite *sprite2 = &gSprites[sprite->data[7]]; @@ -1184,7 +1186,7 @@ bool8 PageSwapSpritesCB_Init(struct Sprite *sprite) return FALSE; } -bool8 PageSwapSpritesCB_Idle(struct Sprite *sprite) +static bool8 PageSwapSpritesCB_Idle(struct Sprite *sprite) { struct Sprite *sprite1 = &gSprites[sprite->data[6]]; struct Sprite *sprite2 = &gSprites[sprite->data[7]]; @@ -1192,7 +1194,7 @@ bool8 PageSwapSpritesCB_Idle(struct Sprite *sprite) return FALSE; } -bool8 PageSwapSpritesCB_SwapHide(struct Sprite *sprite) +static bool8 PageSwapSpritesCB_SwapHide(struct Sprite *sprite) { struct Sprite *sprite1 = &gSprites[sprite->data[6]]; struct Sprite *sprite2 = &gSprites[sprite->data[7]]; @@ -1210,7 +1212,7 @@ bool8 PageSwapSpritesCB_SwapHide(struct Sprite *sprite) return FALSE; } -bool8 PageSwapSpritesCB_SwapShow(struct Sprite *sprite) +static bool8 PageSwapSpritesCB_SwapShow(struct Sprite *sprite) { struct Sprite *sprite1 = &gSprites[sprite->data[6]]; struct Sprite *sprite2 = &gSprites[sprite->data[7]]; @@ -1225,10 +1227,10 @@ bool8 PageSwapSpritesCB_SwapShow(struct Sprite *sprite) return FALSE; } -const u16 gUnknown_83E2388[] = {1, 3, 2}; -const u16 gUnknown_83E238E[] = {4, 6, 5}; +static const u16 gUnknown_83E2388[] = {1, 3, 2}; +static const u16 gUnknown_83E238E[] = {4, 6, 5}; -void sub_809ED88(u8 page, struct Sprite * sprite1, struct Sprite * sprite2) +static void sub_809ED88(u8 page, struct Sprite * sprite1, struct Sprite * sprite2) { sprite2->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_83E2388[page]); sprite1->sheetTileStart = GetSpriteTileStartByTag(gUnknown_83E238E[page]); @@ -1237,7 +1239,7 @@ void sub_809ED88(u8 page, struct Sprite * sprite1, struct Sprite * sprite2) // -void CreateBackOkSprites(void) +static void CreateBackOkSprites(void) { u8 spriteId; @@ -1250,7 +1252,7 @@ void CreateBackOkSprites(void) gSprites[spriteId].invisible = TRUE; } -void CreateUnderscoreSprites(void) +static void CreateUnderscoreSprites(void) { u8 spriteId; s16 xPos; @@ -1274,7 +1276,7 @@ void CreateUnderscoreSprites(void) // Icon creation (the thing you're naming or giving input to) //-------------------------------------------------- -void (*const sIconFunctions[])(void) = { +static void (*const sIconFunctions[])(void) = { NamingScreen_NoCreateIcon, NamingScreen_CreatePlayerIcon, NamingScreen_CreatePCIcon, @@ -1282,17 +1284,17 @@ void (*const sIconFunctions[])(void) = { NamingScreen_CreateRivalIcon }; -void CreateInputTargetIcon(void) +static void CreateInputTargetIcon(void) { sIconFunctions[gNamingScreenData->template->iconFunction](); } -void NamingScreen_NoCreateIcon(void) +static void NamingScreen_NoCreateIcon(void) { } -void NamingScreen_CreatePlayerIcon(void) +static void NamingScreen_CreatePlayerIcon(void) { u8 rivalGfxId; u8 spriteId; @@ -1303,7 +1305,7 @@ void NamingScreen_CreatePlayerIcon(void) StartSpriteAnim(&gSprites[spriteId], 4); } -void NamingScreen_CreatePCIcon(void) +static void NamingScreen_CreatePCIcon(void) { u8 spriteId; @@ -1312,7 +1314,7 @@ void NamingScreen_CreatePCIcon(void) gSprites[spriteId].oam.priority = 3; } -void NamingScreen_CreateMonIcon(void) +static void NamingScreen_CreateMonIcon(void) { u8 spriteId; @@ -1321,7 +1323,7 @@ void NamingScreen_CreateMonIcon(void) gSprites[spriteId].oam.priority = 3; } -const union AnimCmd gUnknown_83E23A8[] = { +static const union AnimCmd gUnknown_83E23A8[] = { ANIMCMD_FRAME( 0, 10), ANIMCMD_FRAME(24, 10), ANIMCMD_FRAME( 0, 10), @@ -1329,11 +1331,11 @@ const union AnimCmd gUnknown_83E23A8[] = { ANIMCMD_JUMP(0) }; -const union AnimCmd *const gUnknown_83E23BC[] = { +static const union AnimCmd *const gUnknown_83E23BC[] = { gUnknown_83E23A8 }; -void NamingScreen_CreateRivalIcon(void) +static void NamingScreen_CreateRivalIcon(void) { const struct SpriteSheet sheet = { gUnknown_83E1980, 0x900, 255 @@ -1356,14 +1358,14 @@ void NamingScreen_CreateRivalIcon(void) gSprites[spriteId].oam.priority = 3; } -bool8 (*const sKeyboardKeyHandlers[])(u8) = { +static bool8 (*const sKeyboardKeyHandlers[])(u8) = { KeyboardKeyHandler_Character, KeyboardKeyHandler_Page, KeyboardKeyHandler_Backspace, KeyboardKeyHandler_OK, }; -bool8 HandleKeyboardEvent(void) +static bool8 HandleKeyboardEvent(void) { u8 event = GetInputEvent(); u8 keyRole = GetKeyRoleAtCursorPos(); @@ -1388,7 +1390,7 @@ bool8 HandleKeyboardEvent(void) } } -bool8 KeyboardKeyHandler_Character(u8 event) +static bool8 KeyboardKeyHandler_Character(u8 event) { sub_809E518(3, 0, 0); if (event == KBEVENT_PRESSED_A) @@ -1405,7 +1407,7 @@ bool8 KeyboardKeyHandler_Character(u8 event) return FALSE; } -bool8 KeyboardKeyHandler_Page(u8 event) +static bool8 KeyboardKeyHandler_Page(u8 event) { sub_809E518(0, 1, 0); if (event == KBEVENT_PRESSED_A) @@ -1414,7 +1416,7 @@ bool8 KeyboardKeyHandler_Page(u8 event) return FALSE; } -bool8 KeyboardKeyHandler_Backspace(u8 event) +static bool8 KeyboardKeyHandler_Backspace(u8 event) { sub_809E518(1, 1, 0); if (event == KBEVENT_PRESSED_A) @@ -1422,7 +1424,7 @@ bool8 KeyboardKeyHandler_Backspace(u8 event) return FALSE; } -bool8 KeyboardKeyHandler_OK(u8 event) +static bool8 KeyboardKeyHandler_OK(u8 event) { sub_809E518(2, 1, 0); if (event == KBEVENT_PRESSED_A) @@ -1435,7 +1437,7 @@ bool8 KeyboardKeyHandler_OK(u8 event) return FALSE; } -bool8 TriggerKeyboardChange(void) +static bool8 TriggerKeyboardChange(void) { gNamingScreenData->state = MAIN_STATE_START_PAGE_SWAP; return TRUE; @@ -1456,41 +1458,41 @@ enum #define tKeyboardEvent data[1] #define tKbFunctionKey data[2] -void (*const sInputStateFuncs[])(struct Task *) = { +static void (*const sInputStateFuncs[])(struct Task *) = { InputState_Disabled, InputState_Enabled }; -void InputInit(void) +static void InputInit(void) { CreateTask(Task_HandleInput, 1); } -u8 GetInputEvent(void) +static u8 GetInputEvent(void) { u8 taskId = FindTaskIdByFunc(Task_HandleInput); return gTasks[taskId].tKeyboardEvent; } -void SetInputState(u8 state) +static void SetInputState(u8 state) { u8 taskId = FindTaskIdByFunc(Task_HandleInput); gTasks[taskId].tState = state; } -void Task_HandleInput(u8 taskId) +static void Task_HandleInput(u8 taskId) { sInputStateFuncs[gTasks[taskId].tState](&gTasks[taskId]); } -void InputState_Disabled(struct Task *task) +static void InputState_Disabled(struct Task *task) { task->tKeyboardEvent = 0; } -void InputState_Enabled(struct Task *task) +static void InputState_Enabled(struct Task *task) { task->tKeyboardEvent = 0; @@ -1506,7 +1508,7 @@ void InputState_Enabled(struct Task *task) HandleDpadMovement(task); } -void HandleDpadMovement(struct Task *task) +static void HandleDpadMovement(struct Task *task) { const s16 sDpadDeltaX[] = { 0, //none @@ -1599,14 +1601,14 @@ void HandleDpadMovement(struct Task *task) #undef tKeyboardEvent #undef tKbFunctionKey -void PrintTitleFunction_NoMon(void) +static 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) +static void PrintTitleFunction_WithMon(void) { u8 buffer[0x20]; @@ -1617,7 +1619,7 @@ void PrintTitleFunction_WithMon(void) PutWindowTilemap(gNamingScreenData->windows[3]); } -void (*const sPrintTitleFuncs[])(void) = { +static void (*const sPrintTitleFuncs[])(void) = { [NAMING_SCREEN_PLAYER] = PrintTitleFunction_NoMon, [NAMING_SCREEN_BOX] = PrintTitleFunction_NoMon, [NAMING_SCREEN_CAUGHT_MON] = PrintTitleFunction_WithMon, @@ -1625,32 +1627,32 @@ void (*const sPrintTitleFuncs[])(void) = { [NAMING_SCREEN_RIVAL] = PrintTitleFunction_NoMon }; -void PrintTitle(void) +static void PrintTitle(void) { sPrintTitleFuncs[gNamingScreenData->templateNum](); } -void (*const sAddGenderIconFuncs[])(void) = { +static void (*const sAddGenderIconFuncs[])(void) = { AddGenderIconFunc_No, AddGenderIconFunc_Yes }; -void CallAddGenderIconFunc(void) +static void CallAddGenderIconFunc(void) { sAddGenderIconFuncs[gNamingScreenData->template->addGenderIcon](); } -void AddGenderIconFunc_No(void) +static void AddGenderIconFunc_No(void) { } -const u8 sGenderColors[2][3] = { +static 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) +static void AddGenderIconFunc_Yes(void) { u8 genderSymbol[2]; bool8 isFemale = FALSE; @@ -1668,12 +1670,12 @@ void AddGenderIconFunc_Yes(void) } } -u8 GetCharAtKeyboardPos(s16 x, s16 y) +static u8 GetCharAtKeyboardPos(s16 x, s16 y) { return gUnknown_83E22D0[sub_809DE50()][y][x]; } -u8 GetTextCaretPosition(void) +static u8 GetTextCaretPosition(void) { u8 i; @@ -1685,7 +1687,7 @@ u8 GetTextCaretPosition(void) return gNamingScreenData->template->maxChars - 1; } -u8 GetPreviousTextCaretPosition(void) +static u8 GetPreviousTextCaretPosition(void) { s8 i; @@ -1697,7 +1699,7 @@ u8 GetPreviousTextCaretPosition(void) return 0; } -void DeleteTextCharacter(void) +static void DeleteTextCharacter(void) { u8 index; u8 var2; @@ -1714,7 +1716,7 @@ void DeleteTextCharacter(void) PlaySE(SE_BOWA); } -bool8 AppendCharToBuffer_CheckBufferFull(void) +static bool8 AppendCharToBuffer_CheckBufferFull(void) { s16 x; s16 y; @@ -1731,14 +1733,14 @@ bool8 AppendCharToBuffer_CheckBufferFull(void) return TRUE; } -void AddTextCharacter(u8 ch) +static void AddTextCharacter(u8 ch) { u8 index = GetTextCaretPosition(); gNamingScreenData->textBuffer[index] = ch; } -void CopyStringToDestBuffer(void) +static void CopyStringToDestBuffer(void) { // Copy from the first non-whitespace character u8 i; @@ -1753,7 +1755,7 @@ void CopyStringToDestBuffer(void) } } -void choose_name_or_words_screen_load_bg_tile_patterns(void) +static void choose_name_or_words_screen_load_bg_tile_patterns(void) { LZ77UnCompWram(gNamingScreenMenu_Gfx, gNamingScreenData->tileBuffer); LoadBgTiles(1, gNamingScreenData->tileBuffer, 0x600, 0); @@ -1763,25 +1765,25 @@ void choose_name_or_words_screen_load_bg_tile_patterns(void) LoadSpritePalettes(gUnknown_83E26E4); } -void sub_809F8C0(void) +static void sub_809F8C0(void) { InputInit(); sub_809E4F0(); } -void choose_name_or_words_screen_apply_bg_pals(void) +static 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) +static void DecompressToBgTilemapBuffer(u8 bg, const u32 *src) { CopyToBgTilemapBuffer(bg, src, 0, 0); } -void PrintBufferCharactersOnScreen(void) +static void PrintBufferCharactersOnScreen(void) { u8 i; u8 temp[2]; @@ -1810,7 +1812,7 @@ struct TextColor // Needed because of alignment u8 colors[3][4]; }; -const struct TextColor sTextColorStruct = { +static 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}, @@ -1818,19 +1820,19 @@ const struct TextColor sTextColorStruct = { } }; -const u8 sFillValues[KBPAGE_COUNT] = { +static 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] = { +static 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) +static void sub_809F9E8(u8 window, u8 page) { u8 i; @@ -1844,13 +1846,13 @@ void sub_809F9E8(u8 window, u8 page) PutWindowTilemap(window); } -const u32 *const gUnknown_83E244C[] = { +static const u32 *const gUnknown_83E244C[] = { gUnknown_8E98398, gUnknown_8E98458, gUnknown_8E98518 }; -void sub_809FA60(void) +static void sub_809FA60(void) { u8 bgId; u8 bgId_copy; @@ -1876,7 +1878,7 @@ void sub_809FA60(void) CopyBgTilemapBufferToVram(bgId_copy); } -void sub_809FAE4(void) +static 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); @@ -1887,7 +1889,7 @@ void sub_809FAE4(void) CopyWindowToVram(gNamingScreenData->windows[4], 3); } -void sub_809FB70(void) +static void sub_809FB70(void) { RunTasks(); AnimateSprites(); @@ -1895,18 +1897,18 @@ void sub_809FB70(void) UpdatePaletteFade(); } -void NamingScreen_TurnOffScreen(void) +static void NamingScreen_TurnOffScreen(void) { SetVBlankCallback(NULL); SetHBlankCallback(NULL); } -void NamingScreen_InitDisplayMode(void) +static void NamingScreen_InitDisplayMode(void) { SetVBlankCallback(VBlankCB_NamingScreen); } -void VBlankCB_NamingScreen(void) +static void VBlankCB_NamingScreen(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -1919,7 +1921,7 @@ void VBlankCB_NamingScreen(void) SetGpuRegBits(REG_OFFSET_BG2CNT, gNamingScreenData->bg2Priority); } -void ShowAllBgs(void) +static void ShowAllBgs(void) { ShowBg(0); ShowBg(1); @@ -1927,7 +1929,7 @@ void ShowAllBgs(void) ShowBg(3); } -bool8 IsLetter(u8 character) +static bool8 IsLetter(u8 character) { u8 i; @@ -1943,27 +1945,27 @@ bool8 IsLetter(u8 character) // Unused debug functions //-------------------------------------------------- -void Debug_DoNamingScreen_Player(void) +static void Debug_DoNamingScreen_Player(void) { DoNamingScreen(NAMING_SCREEN_PLAYER, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu); } -void Debug_DoNamingScreen_Box(void) +static void Debug_DoNamingScreen_Box(void) { DoNamingScreen(NAMING_SCREEN_BOX, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu); } -void Debug_DoNamingScreen_CaughtMon(void) +static void Debug_DoNamingScreen_CaughtMon(void) { DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu); } -void Debug_DoNamingScreen_NameRater(void) +static void Debug_DoNamingScreen_NameRater(void) { DoNamingScreen(NAMING_SCREEN_NAME_RATER, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu); } -void Debug_DoNamingScreen_Rival(void) +static void Debug_DoNamingScreen_Rival(void) { DoNamingScreen(NAMING_SCREEN_RIVAL, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu); } @@ -1972,7 +1974,7 @@ void Debug_DoNamingScreen_Rival(void) // Forward-declared variables //-------------------------------------------------- -const struct NamingScreenTemplate playerNamingScreenTemplate = { +static const struct NamingScreenTemplate playerNamingScreenTemplate = { .copyExistingString = FALSE, .maxChars = PLAYER_NAME_LENGTH, .iconFunction = 1, @@ -1981,7 +1983,7 @@ const struct NamingScreenTemplate playerNamingScreenTemplate = { .title = gText_YourName, }; -const struct NamingScreenTemplate pcBoxNamingTemplate = { +static const struct NamingScreenTemplate pcBoxNamingTemplate = { .copyExistingString = FALSE, .maxChars = 8/*BOX_NAME_LENGTH*/, .iconFunction = 2, @@ -1990,7 +1992,7 @@ const struct NamingScreenTemplate pcBoxNamingTemplate = { .title = gText_BoxName, }; -const struct NamingScreenTemplate monNamingScreenTemplate = { +static const struct NamingScreenTemplate monNamingScreenTemplate = { .copyExistingString = FALSE, .maxChars = POKEMON_NAME_LENGTH, .iconFunction = 3, @@ -1999,7 +2001,7 @@ const struct NamingScreenTemplate monNamingScreenTemplate = { .title = gText_PkmnsNickname, }; -const struct NamingScreenTemplate rivalNamingScreenTemplate = { +static const struct NamingScreenTemplate rivalNamingScreenTemplate = { .copyExistingString = FALSE, .maxChars = OT_NAME_LENGTH, .iconFunction = 4, @@ -2008,7 +2010,7 @@ const struct NamingScreenTemplate rivalNamingScreenTemplate = { .title = gText_RivalsName, }; -const struct NamingScreenTemplate *const sNamingScreenTemplates[] = { +static const struct NamingScreenTemplate *const sNamingScreenTemplates[] = { &playerNamingScreenTemplate, &pcBoxNamingTemplate, &monNamingScreenTemplate, @@ -2016,7 +2018,7 @@ const struct NamingScreenTemplate *const sNamingScreenTemplates[] = { &rivalNamingScreenTemplate, }; -const struct OamData gOamData_858BFEC = { +static const struct OamData gOamData_858BFEC = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -2029,7 +2031,7 @@ const struct OamData gOamData_858BFEC = { .paletteNum = 0, }; -const struct OamData gOamData_858BFF4 = { +static const struct OamData gOamData_858BFF4 = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -2042,7 +2044,7 @@ const struct OamData gOamData_858BFF4 = { .paletteNum = 0, }; -const struct OamData gOamData_858BFFC = { +static const struct OamData gOamData_858BFFC = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -2055,7 +2057,7 @@ const struct OamData gOamData_858BFFC = { .paletteNum = 0, }; -const struct Subsprite gUnknown_83E24B8[] = { +static const struct Subsprite gUnknown_83E24B8[] = { { .x = -20, .y = -16, @@ -2115,7 +2117,7 @@ const struct Subsprite gUnknown_83E24B8[] = { } }; -const struct Subsprite gUnknown_83E24D8[] = { +static const struct Subsprite gUnknown_83E24D8[] = { { .x = -12, .y = -4, @@ -2133,7 +2135,7 @@ const struct Subsprite gUnknown_83E24D8[] = { } }; -const struct Subsprite gUnknown_83E24E0[] = { +static const struct Subsprite gUnknown_83E24E0[] = { { .x = -20, .y = -12, @@ -2179,7 +2181,7 @@ const struct Subsprite gUnknown_83E24E0[] = { } }; -const struct Subsprite gUnknown_83E24F8[] = { +static const struct Subsprite gUnknown_83E24F8[] = { { .x = -8, .y = -12, @@ -2204,60 +2206,60 @@ const struct Subsprite gUnknown_83E24F8[] = { } }; -const struct SubspriteTable gUnknown_83E2504[] = { +static const struct SubspriteTable gUnknown_83E2504[] = { subsprite_table(gUnknown_83E24B8) }; -const struct SubspriteTable gUnknown_83E250C[] = { +static const struct SubspriteTable gUnknown_83E250C[] = { subsprite_table(gUnknown_83E24D8), subsprite_table(gUnknown_83E24D8), subsprite_table(gUnknown_83E24D8) }; -const struct SubspriteTable gUnknown_83E2524[] = { +static const struct SubspriteTable gUnknown_83E2524[] = { subsprite_table(gUnknown_83E24E0) }; -const struct SubspriteTable gUnknown_83E252C[] = { +static const struct SubspriteTable gUnknown_83E252C[] = { subsprite_table(gUnknown_83E24F8) }; -const struct SpriteFrameImage gUnknown_0858C080[] = { +static const struct SpriteFrameImage gUnknown_0858C080[] = { {gUnknown_83E1800, sizeof(gUnknown_83E1800)}, {gUnknown_83E18C0, sizeof(gUnknown_83E18C0)}, }; -const union AnimCmd gSpriteAnim_858C090[] = { +static const union AnimCmd gSpriteAnim_858C090[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_JUMP(0) }; -const union AnimCmd gSpriteAnim_858C098[] = { +static const union AnimCmd gSpriteAnim_858C098[] = { ANIMCMD_FRAME(4, 8), ANIMCMD_FRAME(8, 8), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_858C0A4[] = { +static const union AnimCmd gSpriteAnim_858C0A4[] = { ANIMCMD_FRAME(0, 2), ANIMCMD_FRAME(1, 2), ANIMCMD_JUMP(0) }; -const union AnimCmd *const gSpriteAnimTable_858C0B0[] = { +static const union AnimCmd *const gSpriteAnimTable_858C0B0[] = { gSpriteAnim_858C090 }; -const union AnimCmd *const gSpriteAnimTable_858C0B4[] = { +static const union AnimCmd *const gSpriteAnimTable_858C0B4[] = { gSpriteAnim_858C090, gSpriteAnim_858C098 }; -const union AnimCmd *const gSpriteAnimTable_858C0BC[] = { +static const union AnimCmd *const gSpriteAnimTable_858C0BC[] = { gSpriteAnim_858C0A4 }; -const struct SpriteTemplate gUnknown_83E2574 = { +static const struct SpriteTemplate gUnknown_83E2574 = { .tileTag = 0x0002, .paletteTag = 0x0004, .oam = &gOamData_858BFEC, @@ -2267,7 +2269,7 @@ const struct SpriteTemplate gUnknown_83E2574 = { .callback = SpriteCB_PageSwap }; -const struct SpriteTemplate gUnknown_83E258C = { +static const struct SpriteTemplate gUnknown_83E258C = { .tileTag = 0x0003, .paletteTag = 0x0001, .oam = &gOamData_858BFFC, @@ -2277,7 +2279,7 @@ const struct SpriteTemplate gUnknown_83E258C = { .callback = SpriteCallbackDummy }; -const struct SpriteTemplate gUnknown_83E25A4 = { +static const struct SpriteTemplate gUnknown_83E25A4 = { .tileTag = 0x0004, .paletteTag = 0x0004, .oam = &gOamData_858BFEC, @@ -2287,7 +2289,7 @@ const struct SpriteTemplate gUnknown_83E25A4 = { .callback = SpriteCallbackDummy }; -const struct SpriteTemplate gUnknown_83E25BC = { +static const struct SpriteTemplate gUnknown_83E25BC = { .tileTag = 0x0000, .paletteTag = 0x0006, .oam = &gOamData_858BFEC, @@ -2297,7 +2299,7 @@ const struct SpriteTemplate gUnknown_83E25BC = { .callback = SpriteCallbackDummy }; -const struct SpriteTemplate gUnknown_83E25D4 = { +static const struct SpriteTemplate gUnknown_83E25D4 = { .tileTag = 0x0001, .paletteTag = 0x0007, .oam = &gOamData_858BFEC, @@ -2307,7 +2309,7 @@ const struct SpriteTemplate gUnknown_83E25D4 = { .callback = SpriteCallbackDummy }; -const struct SpriteTemplate gUnknown_83E25EC = { +static const struct SpriteTemplate gUnknown_83E25EC = { .tileTag = 0x0007, .paletteTag = 0x0005, .oam = &gOamData_858BFF4, @@ -2317,7 +2319,7 @@ const struct SpriteTemplate gUnknown_83E25EC = { .callback = sub_809E700 }; -const struct SpriteTemplate sSpriteTemplate_InputArrow = { +static const struct SpriteTemplate sSpriteTemplate_InputArrow = { .tileTag = 0x000A, .paletteTag = 0x0003, .oam = &gOamData_858BFEC, @@ -2327,7 +2329,7 @@ const struct SpriteTemplate sSpriteTemplate_InputArrow = { .callback = sub_809E7F0 }; -const struct SpriteTemplate sSpriteTemplate_Underscore = { +static const struct SpriteTemplate sSpriteTemplate_Underscore = { .tileTag = 0x000B, .paletteTag = 0x0003, .oam = &gOamData_858BFEC, @@ -2337,7 +2339,7 @@ const struct SpriteTemplate sSpriteTemplate_Underscore = { .callback = sub_809E83C }; -const struct SpriteTemplate gUnknown_83E2634 = { +static const struct SpriteTemplate gUnknown_83E2634 = { .tileTag = 0xFFFF, .paletteTag = 0x0000, .oam = &gOamData_858BFEC, @@ -2347,7 +2349,7 @@ const struct SpriteTemplate gUnknown_83E2634 = { .callback = SpriteCallbackDummy }; -const u8 *const sNamingScreenKeyboardText[KBPAGE_COUNT][KBROW_COUNT] = { +static const u8 *const sNamingScreenKeyboardText[KBPAGE_COUNT][KBROW_COUNT] = { [KBPAGE_LETTERS_LOWER] = { gText_NamingScreenKeyboard_abcdef, gText_NamingScreenKeyboard_ghijkl, @@ -2369,7 +2371,7 @@ const u8 *const sNamingScreenKeyboardText[KBPAGE_COUNT][KBROW_COUNT] = { }; // FIXME: Sync with Emerald -const struct SpriteSheet gUnknown_83E267C[] = { +static const struct SpriteSheet gUnknown_83E267C[] = { {gUnknown_8E98858, 0x1E0, 0x0000}, {gUnknown_8E98A38, 0x1E0, 0x0001}, {gUnknown_8E985D8, 0x280, 0x0002}, @@ -2385,7 +2387,7 @@ const struct SpriteSheet gUnknown_83E267C[] = { {NULL} }; -const struct SpritePalette gUnknown_83E26E4[] = { +static const struct SpritePalette gUnknown_83E26E4[] = { {gNamingScreenMenu_Pal, 0x0000}, {gNamingScreenMenu_Pal + 0x10, 0x0001}, {gNamingScreenMenu_Pal + 0x20, 0x0002}, From f51170df6e51f169d85368b0205f3528f1133dfb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 10 Mar 2020 11:37:39 -0400 Subject: [PATCH 07/10] Fix ld_script.txt --- ld_script.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/ld_script.txt b/ld_script.txt index 28d187d26..4f42ce12f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -142,7 +142,6 @@ SECTIONS { src/berry.o(.text); src/script_menu.o(.text); src/naming_screen.o(.text); - asm/naming_screen.o(.text); src/money.o(.text); src/script_pokemon_util.o(.text); src/field_poison.o(.text); @@ -461,7 +460,6 @@ SECTIONS { src/berry.o(.rodata); src/script_menu.o(.rodata); src/naming_screen.o(.rodata); - data/naming_screen.o(.rodata); src/pokemon_size_record.o(.rodata); src/item_use.o(.rodata); src/battle_anim_effects_1.o(.rodata); From bbaa60ab1c9bc497937c67ebd4f3efc4a4b8484a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 10 Mar 2020 13:23:32 -0400 Subject: [PATCH 08/10] Address review comments --- data/data_8479668.s | 153 -------------------------------------------- ld_script.txt | 1 + src/keyboard_text.c | 61 ++++++++++++++++++ src/naming_screen.c | 61 +++++++++--------- 4 files changed, 93 insertions(+), 183 deletions(-) create mode 100644 src/keyboard_text.c diff --git a/data/data_8479668.s b/data/data_8479668.s index 695d98def..5c00ff639 100644 --- a/data/data_8479668.s +++ b/data/data_8479668.s @@ -13,159 +13,6 @@ .section .rodata - // easy_chat_2 - -gUnknown_847A8D8:: - .string "{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 26}others$" - -gUnknown_847A8FA:: - .string "{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L$" - -gUnknown_847A913:: - .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_847A934:: - .string "{CLEAR 11}T{CLEAR 6}U{CLEAR 6}V{CLEAR 26}W{CLEAR 6}X{CLEAR 6}Y{CLEAR 6}Z{CLEAR 26} $" - - // naming_screen - -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}.$" - -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},$" - -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} $" - -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} $" - -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}.$" - -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},$" - -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} $" - -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} $" - -gText_NamingScreenKeyboard_01234:: - .string "{CLEAR 11}0{CLEAR 16}1{CLEAR 16}2{CLEAR 16}3{CLEAR 16}4{CLEAR 16} $" - -gText_NamingScreenKeyboard_56789:: - .string "{CLEAR 11}5{CLEAR 16}6{CLEAR 16}7{CLEAR 16}8{CLEAR 16}9{CLEAR 16} $" - -gText_NamingScreenKeyboard_Symbols1:: - .string "{CLEAR 11}!{CLEAR 16}?{CLEAR 16}♂{CLEAR 16}♀{CLEAR 16}/{CLEAR 16}-$" - -gText_NamingScreenKeyboard_Symbols2:: - .string "{CLEAR 11}…{CLEAR 16}“{CLEAR 16}”{CLEAR 18}‘{CLEAR 18}'{CLEAR 18} $" - - // union_room_chat - -gText_UnionRoomChatKeyboard_ABCDE:: - .string "ABCDE$" - -gText_UnionRoomChatKeyboard_FGHIJ:: - .string "FGHIJ$" - -gText_UnionRoomChatKeyboard_KLMNO:: - .string "KLMNO$" - -gText_UnionRoomChatKeyboard_PQRST:: - .string "PQRST$" - -gText_UnionRoomChatKeyboard_UVWXY:: - .string "UVWXY$" - -gText_UnionRoomChatKeyboard_Z:: - .string "Z $" - -gText_UnionRoomChatKeyboard_01234Upper:: - .string "01234$" - -gText_UnionRoomChatKeyboard_56789Upper:: - .string "56789$" - -gText_UnionRoomChatKeyboard_PunctuationUpper:: - .string ".,!? $" - -gText_UnionRoomChatKeyboard_SymbolsUpper:: - .string "-/&… $" - -gText_UnionRoomChatKeyboard_abcde:: - .string "abcde$" - -gText_UnionRoomChatKeyboard_fghij:: - .string "fghij$" - -gText_UnionRoomChatKeyboard_klmno:: - .string "klmno$" - -gText_UnionRoomChatKeyboard_pqrst:: - .string "pqrst$" - -gText_UnionRoomChatKeyboard_uvwxy:: - .string "uvwxy$" - -gText_UnionRoomChatKeyboard_z:: - .string "z $" - -gText_UnionRoomChatKeyboard_01234Lower:: - .string "01234$" - -gText_UnionRoomChatKeyboard_56789Lower:: - .string "56789$" - -gText_UnionRoomChatKeyboard_PunctuationLower:: - .string ".,!? $" - -gText_UnionRoomChatKeyboard_SymbolsLower:: - .string "-/&… $" - - .string "$" - .string "$" - .string "$" - .string "$" - .string "$" - .string "$" - .string "$" - .string "$" - -gText_UnionRoomChatKeyboard_Emoji1:: - .string "{EXTRA 245}{EXTRA 246}{EXTRA 247}{EXTRA 248}{EXTRA 254}$" - -gText_UnionRoomChatKeyboard_Emoji2:: - .string "{EXTRA 249}{EXTRA 250}{EXTRA 252}{EXTRA 251}{EXTRA 253}$" - -gText_UnionRoomChatKeyboard_Emoji3:: - .string "{EXTRA 236}{EXTRA 237}{EXTRA 238}{EXTRA 235}{EXTRA 234}$" - -gText_UnionRoomChatKeyboard_Emoji4:: - .string "♂♀{EXTRA 212}{EXTRA 213}{EXTRA 211}$" - -gText_UnionRoomChatKeyboard_Emoji5:: - .string "{EXTRA 216}{EXTRA 217}{EXTRA 242}{EXTRA 243}{EXTRA 244}$" - -gText_UnionRoomChatKeyboard_Emoji6:: - .string "{EXTRA 218}{EXTRA 241}{EXTRA 224}{EXTRA 226}{EXTRA 227}$" - -gText_UnionRoomChatKeyboard_Emoji7:: - .string "{EXTRA 240}{EXTRA 239}{EXTRA 225}{EXTRA 214}{EXTRA 215}$" - -gText_UnionRoomChatKeyboard_Emoji8:: - .string "{EXTRA 228}{EXTRA 229}{EXTRA 230}{EXTRA 231}{EXTRA 232}$" - -gText_UnionRoomChatKeyboard_Emoji9:: - .string "{EXTRA 233}{EXTRA 220}{EXTRA 221}{EXTRA 222}{EXTRA 209}$" - -gText_UnionRoomChatKeyboard_Emoji10:: - .string "{EXTRA 210}{EXTRA 208}ょ: $" - @ 847ABAC .align 2 .include "data/trainer_tower/trainers.inc" diff --git a/ld_script.txt b/ld_script.txt index 4f42ce12f..ef3c4a997 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -591,6 +591,7 @@ SECTIONS { src/trainer_tower.o(.rodata); src/minigame_countdown.o(.rodata); src/berry_fix_program.o(.rodata); + src/keyboard_text.o(.rodata); data/data_8479668.o(.rodata); /* These should not be moved to C files */ diff --git a/src/keyboard_text.c b/src/keyboard_text.c new file mode 100644 index 000000000..cf074bd0a --- /dev/null +++ b/src/keyboard_text.c @@ -0,0 +1,61 @@ +#include "global.h" + +// easy_chat_2 +const u8 gUnknown_847A8D8[] = _("{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 26}others"); +const u8 gUnknown_847A8FA[] = _("{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L"); +const u8 gUnknown_847A913[] = _("{CLEAR 11}M{CLEAR 6}N{CLEAR 6}O{CLEAR 26}P{CLEAR 6}Q{CLEAR 6}R{CLEAR 6}S{CLEAR 26} "); +const u8 gUnknown_847A934[] = _("{CLEAR 11}T{CLEAR 6}U{CLEAR 6}V{CLEAR 26}W{CLEAR 6}X{CLEAR 6}Y{CLEAR 6}Z{CLEAR 26} "); + +// naming_screen +const u8 gText_NamingScreenKeyboard_abcdef[] = _("{CLEAR 11}a{CLEAR 6}b{CLEAR 6}c{CLEAR 26}d{CLEAR 6}e{CLEAR 6}f{CLEAR 6} {CLEAR 26}."); +const u8 gText_NamingScreenKeyboard_ghijkl[] = _("{CLEAR 11}g{CLEAR 6}h{CLEAR 7}i{CLEAR 27}j{CLEAR 6}k{CLEAR 6}l{CLEAR 7} {CLEAR 26},"); +const u8 gText_NamingScreenKeyboard_mnopqrs[] = _("{CLEAR 11}m{CLEAR 6}n{CLEAR 7}o{CLEAR 26}p{CLEAR 6}q{CLEAR 7}r{CLEAR 6}s{CLEAR 27} "); +const u8 gText_NamingScreenKeyboard_tuvwxyz[] = _("{CLEAR 12}t{CLEAR 6}u{CLEAR 6}v{CLEAR 26}w{CLEAR 6}x{CLEAR 6}y{CLEAR 6}z{CLEAR 26} "); +const u8 gText_NamingScreenKeyboard_ABCDEF[] = _("{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 6} {CLEAR 26}."); +const u8 gText_NamingScreenKeyboard_GHIJKL[] = _("{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L{CLEAR 6} {CLEAR 26},"); +const u8 gText_NamingScreenKeyboard_MNOPQRS[] = _("{CLEAR 11}M{CLEAR 6}N{CLEAR 6}O{CLEAR 26}P{CLEAR 6}Q{CLEAR 6}R{CLEAR 6}S{CLEAR 26} "); +const u8 gText_NamingScreenKeyboard_TUVWXYZ[] = _("{CLEAR 11}T{CLEAR 6}U{CLEAR 6}V{CLEAR 26}W{CLEAR 6}X{CLEAR 6}Y{CLEAR 6}Z{CLEAR 26} "); +const u8 gText_NamingScreenKeyboard_01234[] = _("{CLEAR 11}0{CLEAR 16}1{CLEAR 16}2{CLEAR 16}3{CLEAR 16}4{CLEAR 16} "); +const u8 gText_NamingScreenKeyboard_56789[] = _("{CLEAR 11}5{CLEAR 16}6{CLEAR 16}7{CLEAR 16}8{CLEAR 16}9{CLEAR 16} "); +const u8 gText_NamingScreenKeyboard_Symbols1[] = _("{CLEAR 11}!{CLEAR 16}?{CLEAR 16}♂{CLEAR 16}♀{CLEAR 16}/{CLEAR 16}-"); +const u8 gText_NamingScreenKeyboard_Symbols2[] = _("{CLEAR 11}…{CLEAR 16}“{CLEAR 16}”{CLEAR 18}‘{CLEAR 18}'{CLEAR 18} "); + +// union_room_chat +const u8 gText_UnionRoomChatKeyboard_ABCDE[] = _("ABCDE"); +const u8 gText_UnionRoomChatKeyboard_FGHIJ[] = _("FGHIJ"); +const u8 gText_UnionRoomChatKeyboard_KLMNO[] = _("KLMNO"); +const u8 gText_UnionRoomChatKeyboard_PQRST[] = _("PQRST"); +const u8 gText_UnionRoomChatKeyboard_UVWXY[] = _("UVWXY"); +const u8 gText_UnionRoomChatKeyboard_Z[] = _("Z "); +const u8 gText_UnionRoomChatKeyboard_01234Upper[] = _("01234"); +const u8 gText_UnionRoomChatKeyboard_56789Upper[] = _("56789"); +const u8 gText_UnionRoomChatKeyboard_PunctuationUpper[] = _(".,!? "); +const u8 gText_UnionRoomChatKeyboard_SymbolsUpper[] = _("-/&… "); +const u8 gText_UnionRoomChatKeyboard_abcde[] = _("abcde"); +const u8 gText_UnionRoomChatKeyboard_fghij[] = _("fghij"); +const u8 gText_UnionRoomChatKeyboard_klmno[] = _("klmno"); +const u8 gText_UnionRoomChatKeyboard_pqrst[] = _("pqrst"); +const u8 gText_UnionRoomChatKeyboard_uvwxy[] = _("uvwxy"); +const u8 gText_UnionRoomChatKeyboard_z[] = _("z "); +const u8 gText_UnionRoomChatKeyboard_01234Lower[] = _("01234"); +const u8 gText_UnionRoomChatKeyboard_56789Lower[] = _("56789"); +const u8 gText_UnionRoomChatKeyboard_PunctuationLower[] = _(".,!? "); +const u8 gText_UnionRoomChatKeyboard_SymbolsLower[] = _("-/&… "); +const u8 gText_BlankString_847AB39[] = _(""); +const u8 gText_BlankString_847AB3A[] = _(""); +const u8 gText_BlankString_847AB3B[] = _(""); +const u8 gText_BlankString_847AB3C[] = _(""); +const u8 gText_BlankString_847AB3D[] = _(""); +const u8 gText_BlankString_847AB3E[] = _(""); +const u8 gText_BlankString_847AB3F[] = _(""); +const u8 gText_BlankString_847AB40[] = _(""); +const u8 gText_UnionRoomChatKeyboard_Emoji1[] = _("{EXTRA 245}{EXTRA 246}{EXTRA 247}{EXTRA 248}{EXTRA 254}"); +const u8 gText_UnionRoomChatKeyboard_Emoji2[] = _("{EXTRA 249}{EXTRA 250}{EXTRA 252}{EXTRA 251}{EXTRA 253}"); +const u8 gText_UnionRoomChatKeyboard_Emoji3[] = _("{EXTRA 236}{EXTRA 237}{EXTRA 238}{EXTRA 235}{EXTRA 234}"); +const u8 gText_UnionRoomChatKeyboard_Emoji4[] = _("♂♀{EXTRA 212}{EXTRA 213}{EXTRA 211}"); +const u8 gText_UnionRoomChatKeyboard_Emoji5[] = _("{EXTRA 216}{EXTRA 217}{EXTRA 242}{EXTRA 243}{EXTRA 244}"); +const u8 gText_UnionRoomChatKeyboard_Emoji6[] = _("{EXTRA 218}{EXTRA 241}{EXTRA 224}{EXTRA 226}{EXTRA 227}"); +const u8 gText_UnionRoomChatKeyboard_Emoji7[] = _("{EXTRA 240}{EXTRA 239}{EXTRA 225}{EXTRA 214}{EXTRA 215}"); +const u8 gText_UnionRoomChatKeyboard_Emoji8[] = _("{EXTRA 228}{EXTRA 229}{EXTRA 230}{EXTRA 231}{EXTRA 232}"); +const u8 gText_UnionRoomChatKeyboard_Emoji9[] = _("{EXTRA 233}{EXTRA 220}{EXTRA 221}{EXTRA 222}{EXTRA 209}"); +const u8 gText_UnionRoomChatKeyboard_Emoji10[] = _("{EXTRA 210}{EXTRA 208}ょ: "); diff --git a/src/naming_screen.c b/src/naming_screen.c index a353ad458..3c58cf7c2 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -81,7 +81,8 @@ struct NamingScreenTemplate const u8 *title; }; -struct NamingScreenData { +struct NamingScreenData +{ /*0x0*/ u8 tilemapBuffer1[0x800]; /*0x800*/ u8 tilemapBuffer2[0x800]; /*0x800*/ u8 tilemapBuffer3[0x800]; @@ -111,7 +112,7 @@ struct NamingScreenData { static EWRAM_DATA struct NamingScreenData * gNamingScreenData = NULL; -static void C2_NamingScreen(void); +static void CB2_NamingScreen(void); static void NamingScreen_Init(void); static void NamingScreen_InitBGs(void); static void sub_809DD60(void); @@ -146,10 +147,10 @@ static void sub_809E898(void); static void CursorInit(void); static void SetCursorPos(s16 x, s16 y); static void GetCursorPos(s16 *xP, s16 *yP); -static void MoveCursorToOKButton(); +static void MoveCursorToOKButton(void); static void sub_809EA0C(u8 a0); static void sub_809EA64(u8 a0); -static bool8 IsCursorAnimFinished(); +static bool8 IsCursorAnimFinished(void); static u8 GetCurrentPageColumnCount(void); static void CreatePageSwitcherSprites(void); static void sub_809EC20(void); @@ -393,11 +394,11 @@ void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGende if (templateNum == 0) StartTimer1(); - SetMainCallback2(C2_NamingScreen); + SetMainCallback2(CB2_NamingScreen); } } -static void C2_NamingScreen(void) +static void CB2_NamingScreen(void) { switch (gMain.state) { @@ -1496,13 +1497,13 @@ static void InputState_Enabled(struct Task *task) { task->tKeyboardEvent = 0; - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) task->tKeyboardEvent = KBEVENT_PRESSED_A; - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) task->tKeyboardEvent = KBEVENT_PRESSED_B; - else if (gMain.newKeys & SELECT_BUTTON) + else if (JOY_NEW(SELECT_BUTTON)) task->tKeyboardEvent = KBEVENT_PRESSED_SELECT; - else if (gMain.newKeys & START_BUTTON) + else if (JOY_NEW(START_BUTTON)) task->tKeyboardEvent = KBEVENT_PRESSED_START; else HandleDpadMovement(task); @@ -1536,13 +1537,13 @@ static void HandleDpadMovement(struct Task *task) GetCursorPos(&cursorX, &cursorY); dpadDir = 0; - if (gMain.newAndRepeatedKeys & DPAD_UP) + if (JOY_REPT(DPAD_UP)) dpadDir = 1; - if (gMain.newAndRepeatedKeys & DPAD_DOWN) + if (JOY_REPT(DPAD_DOWN)) dpadDir = 2; - if (gMain.newAndRepeatedKeys & DPAD_LEFT) + if (JOY_REPT(DPAD_LEFT)) dpadDir = 3; - if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + if (JOY_REPT(DPAD_RIGHT)) dpadDir = 4; //Get new cursor position @@ -1648,14 +1649,14 @@ static void AddGenderIconFunc_No(void) } static 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} + [MALE] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_BLUE, TEXT_COLOR_BLUE}, + [FEMALE] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED} }; static void AddGenderIconFunc_Yes(void) { u8 genderSymbol[2]; - bool8 isFemale = FALSE; + bool8 gender = MALE; StringCopy(genderSymbol, gText_MaleSymbol); @@ -1664,9 +1665,9 @@ static void AddGenderIconFunc_Yes(void) if (gNamingScreenData->monGender == MON_FEMALE) { StringCopy(genderSymbol, gText_FemaleSymbol); - isFemale = TRUE; + gender = FEMALE; } - AddTextPrinterParameterized3(gNamingScreenData->windows[2], 2, 0x68, 1, sGenderColors[isFemale], TEXT_SPEED_FF, genderSymbol); + AddTextPrinterParameterized3(gNamingScreenData->windows[2], 2, 0x68, 1, sGenderColors[gender], TEXT_SPEED_FF, genderSymbol); } } @@ -1974,7 +1975,7 @@ static void Debug_DoNamingScreen_Rival(void) // Forward-declared variables //-------------------------------------------------- -static const struct NamingScreenTemplate playerNamingScreenTemplate = { +static const struct NamingScreenTemplate sPlayerNamingScreenTemplate = { .copyExistingString = FALSE, .maxChars = PLAYER_NAME_LENGTH, .iconFunction = 1, @@ -1983,7 +1984,7 @@ static const struct NamingScreenTemplate playerNamingScreenTemplate = { .title = gText_YourName, }; -static const struct NamingScreenTemplate pcBoxNamingTemplate = { +static const struct NamingScreenTemplate sPcBoxNamingScreenTemplate = { .copyExistingString = FALSE, .maxChars = 8/*BOX_NAME_LENGTH*/, .iconFunction = 2, @@ -1992,7 +1993,7 @@ static const struct NamingScreenTemplate pcBoxNamingTemplate = { .title = gText_BoxName, }; -static const struct NamingScreenTemplate monNamingScreenTemplate = { +static const struct NamingScreenTemplate sMonNamingScreenTemplate = { .copyExistingString = FALSE, .maxChars = POKEMON_NAME_LENGTH, .iconFunction = 3, @@ -2001,7 +2002,7 @@ static const struct NamingScreenTemplate monNamingScreenTemplate = { .title = gText_PkmnsNickname, }; -static const struct NamingScreenTemplate rivalNamingScreenTemplate = { +static const struct NamingScreenTemplate sRivalNamingScreenTemplate = { .copyExistingString = FALSE, .maxChars = OT_NAME_LENGTH, .iconFunction = 4, @@ -2011,11 +2012,11 @@ static const struct NamingScreenTemplate rivalNamingScreenTemplate = { }; static const struct NamingScreenTemplate *const sNamingScreenTemplates[] = { - &playerNamingScreenTemplate, - &pcBoxNamingTemplate, - &monNamingScreenTemplate, - &monNamingScreenTemplate, - &rivalNamingScreenTemplate, + &sPlayerNamingScreenTemplate, + &sPcBoxNamingScreenTemplate, + &sMonNamingScreenTemplate, + &sMonNamingScreenTemplate, + &sRivalNamingScreenTemplate, }; static const struct OamData gOamData_858BFEC = { @@ -2384,7 +2385,7 @@ static const struct SpriteSheet gUnknown_83E267C[] = { {gUnknown_8E98F38, 0x080, 0x0009}, {gUnknown_8E990D8, 0x020, 0x000A}, {gUnknown_8E990F8, 0x020, 0x000B}, - {NULL} + {} // terminator }; static const struct SpritePalette gUnknown_83E26E4[] = { @@ -2396,5 +2397,5 @@ static const struct SpritePalette gUnknown_83E26E4[] = { {gNamingScreenMenu_Pal + 0x50, 0x0005}, {gNamingScreenMenu_Pal + 0x40, 0x0006}, {gNamingScreenMenu_Pal + 0x40, 0x0007}, - {NULL} + {} // terminator }; From 0454ce25d303f1ad68db59811e66332e812bf4e7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 10 Mar 2020 13:26:31 -0400 Subject: [PATCH 09/10] Rename keyboard_text header --- include/{data_8479668.h => keyboard_text.h} | 6 +++--- src/easy_chat_3.c | 2 +- src/keyboard_text.c | 2 +- src/naming_screen.c | 2 +- src/union_room_chat.c | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) rename include/{data_8479668.h => keyboard_text.h} (96%) diff --git a/include/data_8479668.h b/include/keyboard_text.h similarity index 96% rename from include/data_8479668.h rename to include/keyboard_text.h index 7f6029808..cc436c2d3 100644 --- a/include/data_8479668.h +++ b/include/keyboard_text.h @@ -1,5 +1,5 @@ -#ifndef GUARD_DATA_8479668_H -#define GUARD_DATA_8479668_H +#ifndef GUARD_KEYBOARD_TEXT_H +#define GUARD_KEYBOARD_TEXT_H extern const u8 gText_UnionRoomChatKeyboard_ABCDE[]; extern const u8 gText_UnionRoomChatKeyboard_FGHIJ[]; @@ -50,4 +50,4 @@ extern const u8 gText_NamingScreenKeyboard_56789[]; extern const u8 gText_NamingScreenKeyboard_Symbols1[]; extern const u8 gText_NamingScreenKeyboard_Symbols2[]; -#endif //GUARD_DATA_8479668_H +#endif //GUARD_KEYBOARD_TEXT_H diff --git a/src/easy_chat_3.c b/src/easy_chat_3.c index 3d9d6c9f7..1501762bc 100644 --- a/src/easy_chat_3.c +++ b/src/easy_chat_3.c @@ -1,6 +1,6 @@ #include "global.h" #include "gflib.h" -#include "data_8479668.h" +#include "keyboard_text.h" #include "decompress.h" #include "easy_chat.h" #include "graphics.h" diff --git a/src/keyboard_text.c b/src/keyboard_text.c index cf074bd0a..5db1a6aaa 100644 --- a/src/keyboard_text.c +++ b/src/keyboard_text.c @@ -1,6 +1,6 @@ #include "global.h" -// easy_chat_2 +// easy_chat_3 const u8 gUnknown_847A8D8[] = _("{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 26}others"); const u8 gUnknown_847A8FA[] = _("{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L"); const u8 gUnknown_847A913[] = _("{CLEAR 11}M{CLEAR 6}N{CLEAR 6}O{CLEAR 26}P{CLEAR 6}Q{CLEAR 6}R{CLEAR 6}S{CLEAR 26} "); diff --git a/src/naming_screen.c b/src/naming_screen.c index 3c58cf7c2..7fe8560eb 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1,7 +1,7 @@ #include "global.h" #include "gflib.h" #include "data.h" -#include "data_8479668.h" +#include "keyboard_text.h" #include "event_data.h" #include "event_object_movement.h" #include "event_scripts.h" diff --git a/src/union_room_chat.c b/src/union_room_chat.c index 167da514a..4ac4c62cb 100644 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -14,7 +14,7 @@ #include "task.h" #include "union_room_chat.h" #include "union_room_chat_display.h" -#include "data_8479668.h" +#include "keyboard_text.h" #include "constants/songs.h" #define MESSAGE_BUFFER_NCHAR 15 From 7209db3397451f4b1424e01fb8950d4d74f8f4fa Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 10 Mar 2020 14:20:35 -0400 Subject: [PATCH 10/10] gNamingScreenData --> sNamingScreenData --- src/naming_screen.c | 280 ++++++++++++++++++++++---------------------- 1 file changed, 140 insertions(+), 140 deletions(-) diff --git a/src/naming_screen.c b/src/naming_screen.c index 7fe8560eb..364fc3fe6 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -110,7 +110,7 @@ struct NamingScreenData /*0x1E3C*/ MainCallback returnCallback; }; -static EWRAM_DATA struct NamingScreenData * gNamingScreenData = NULL; +static EWRAM_DATA struct NamingScreenData * sNamingScreenData = NULL; static void CB2_NamingScreen(void); static void NamingScreen_Init(void); @@ -377,19 +377,19 @@ static const struct NamingScreenTemplate *const sNamingScreenTemplates[]; void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGender, u32 monPersonality, MainCallback returnCallback) { - gNamingScreenData = Alloc(sizeof(struct NamingScreenData)); - if (!gNamingScreenData) + sNamingScreenData = Alloc(sizeof(struct NamingScreenData)); + if (!sNamingScreenData) { SetMainCallback2(returnCallback); } else { - gNamingScreenData->templateNum = templateNum; - gNamingScreenData->monSpecies = monSpecies; - gNamingScreenData->monGender = monGender; - gNamingScreenData->monPersonality = monPersonality; - gNamingScreenData->destBuffer = destBuffer; - gNamingScreenData->returnCallback = returnCallback; + sNamingScreenData->templateNum = templateNum; + sNamingScreenData->monSpecies = monSpecies; + sNamingScreenData->monGender = monGender; + sNamingScreenData->monPersonality = monPersonality; + sNamingScreenData->destBuffer = destBuffer; + sNamingScreenData->returnCallback = returnCallback; if (templateNum == 0) StartTimer1(); @@ -447,20 +447,20 @@ static void CB2_NamingScreen(void) static void NamingScreen_Init(void) { - gNamingScreenData->state = 0; - gNamingScreenData->bg1vOffset = 0; - gNamingScreenData->bg2vOffset = 0; - gNamingScreenData->bg1Priority = BGCNT_PRIORITY(1); - gNamingScreenData->bg2Priority = BGCNT_PRIORITY(2); - gNamingScreenData->bgToReveal = 0; - gNamingScreenData->bgToHide = 1; - gNamingScreenData->template = sNamingScreenTemplates[gNamingScreenData->templateNum]; - gNamingScreenData->currentPage = gNamingScreenData->template->initialPage; - gNamingScreenData->inputCharBaseXPos = (240 - gNamingScreenData->template->maxChars * 8) / 2 + 6; - gNamingScreenData->keyRepeatStartDelayCopy = gKeyRepeatStartDelay; - memset(gNamingScreenData->textBuffer, 0xFF, sizeof(gNamingScreenData->textBuffer)); - if (gNamingScreenData->template->copyExistingString != 0) - StringCopy(gNamingScreenData->textBuffer, gNamingScreenData->destBuffer); + sNamingScreenData->state = 0; + sNamingScreenData->bg1vOffset = 0; + sNamingScreenData->bg2vOffset = 0; + sNamingScreenData->bg1Priority = BGCNT_PRIORITY(1); + sNamingScreenData->bg2Priority = BGCNT_PRIORITY(2); + sNamingScreenData->bgToReveal = 0; + sNamingScreenData->bgToHide = 1; + sNamingScreenData->template = sNamingScreenTemplates[sNamingScreenData->templateNum]; + sNamingScreenData->currentPage = sNamingScreenData->template->initialPage; + sNamingScreenData->inputCharBaseXPos = (240 - sNamingScreenData->template->maxChars * 8) / 2 + 6; + sNamingScreenData->keyRepeatStartDelayCopy = gKeyRepeatStartDelay; + memset(sNamingScreenData->textBuffer, 0xFF, sizeof(sNamingScreenData->textBuffer)); + if (sNamingScreenData->template->copyExistingString != 0) + StringCopy(sNamingScreenData->textBuffer, sNamingScreenData->destBuffer); gKeyRepeatStartDelay = 16; } @@ -500,15 +500,15 @@ static void NamingScreen_InitBGs(void) ResetBg0(); for (i = 0; i < NELEMS(gUnknown_83E22A0) - 1; i++) - gNamingScreenData->windows[i] = AddWindow(&gUnknown_83E22A0[i]); + sNamingScreenData->windows[i] = AddWindow(&gUnknown_83E22A0[i]); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0xC, 0x8)); - SetBgTilemapBuffer(1, gNamingScreenData->tilemapBuffer1); - SetBgTilemapBuffer(2, gNamingScreenData->tilemapBuffer2); - SetBgTilemapBuffer(3, gNamingScreenData->tilemapBuffer3); + SetBgTilemapBuffer(1, sNamingScreenData->tilemapBuffer1); + SetBgTilemapBuffer(2, sNamingScreenData->tilemapBuffer2); + SetBgTilemapBuffer(3, sNamingScreenData->tilemapBuffer3); FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 0x20, 0x20); FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 0x20, 0x20); @@ -525,7 +525,7 @@ static void sub_809DD60(void) static void sub_809DD88(u8 taskId) { - switch (gNamingScreenData->state) + switch (sNamingScreenData->state) { case MAIN_STATE_BEGIN_FADE_IN: MainState_BeginFadeIn(); @@ -587,22 +587,22 @@ static u8 sub_809DE20(u8 a1) static u8 sub_809DE30(void) { - return sPageOrderUpperFirst[gNamingScreenData->currentPage]; + return sPageOrderUpperFirst[sNamingScreenData->currentPage]; } static u8 sub_809DE50(void) { - return sPageOrderSymbolsFirst[gNamingScreenData->currentPage]; + return sPageOrderSymbolsFirst[sNamingScreenData->currentPage]; } static bool8 MainState_BeginFadeIn(void) { DecompressToBgTilemapBuffer(3, gUnknown_8E982BC); - gNamingScreenData->currentPage = KBPAGE_LETTERS_UPPER; + sNamingScreenData->currentPage = KBPAGE_LETTERS_UPPER; 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_809F9E8(sNamingScreenData->windows[1], KBPAGE_LETTERS_LOWER); + sub_809F9E8(sNamingScreenData->windows[0], KBPAGE_LETTERS_UPPER); PrintBufferCharactersOnScreen(); PrintTitle(); sub_809FAE4(); @@ -611,7 +611,7 @@ static bool8 MainState_BeginFadeIn(void) CopyBgTilemapBufferToVram(3); BlendPalettes(-1, 16, RGB_BLACK); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); - gNamingScreenData->state++; + sNamingScreenData->state++; return FALSE; } @@ -621,7 +621,7 @@ static bool8 MainState_WaitFadeIn(void) { SetInputState(INPUT_STATE_ENABLED); sub_809EA64(1); - gNamingScreenData->state++; + sNamingScreenData->state++; } return FALSE; } @@ -637,7 +637,7 @@ static bool8 MainState_MoveToOKButton(void) { SetInputState(INPUT_STATE_ENABLED); MoveCursorToOKButton(); - gNamingScreenData->state = MAIN_STATE_HANDLE_INPUT; + sNamingScreenData->state = MAIN_STATE_HANDLE_INPUT; } return FALSE; } @@ -648,16 +648,16 @@ static bool8 pokemon_store(void) SetInputState(INPUT_STATE_DISABLED); sub_809EA64(0); sub_809E518(3, 0, 1); - if (gNamingScreenData->templateNum == NAMING_SCREEN_CAUGHT_MON && + if (sNamingScreenData->templateNum == NAMING_SCREEN_CAUGHT_MON && CalculatePlayerPartyCount() >= 6) { pokemon_transfer_to_pc_with_message(); - gNamingScreenData->state = MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE; + sNamingScreenData->state = MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE; return FALSE; } else { - gNamingScreenData->state = MAIN_STATE_BEGIN_FADE_OUT; + sNamingScreenData->state = MAIN_STATE_BEGIN_FADE_OUT; return TRUE; //Exit the naming screen } } @@ -665,7 +665,7 @@ static bool8 pokemon_store(void) static bool8 MainState_BeginFadeInOut(void) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - gNamingScreenData->state++; + sNamingScreenData->state++; return FALSE; } @@ -673,12 +673,12 @@ static bool8 MainState_WaitFadeOutAndExit(void) { if (!gPaletteFade.active) { - if (gNamingScreenData->templateNum == NAMING_SCREEN_PLAYER) + if (sNamingScreenData->templateNum == NAMING_SCREEN_PLAYER) SeedRngAndSetTrainerId(); - SetMainCallback2(gNamingScreenData->returnCallback); + SetMainCallback2(sNamingScreenData->returnCallback); DestroyTask(FindTaskIdByFunc(sub_809DD88)); FreeAllWindowBuffers(); - FREE_AND_SET_NULL(gNamingScreenData); + FREE_AND_SET_NULL(sNamingScreenData); RestoreHelpContext(); } return FALSE; @@ -691,12 +691,12 @@ static void pokemon_transfer_to_pc_with_message(void) if (!IsDestinationBoxFull()) { StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON))); - StringCopy(gStringVar2, gNamingScreenData->destBuffer); + StringCopy(gStringVar2, sNamingScreenData->destBuffer); } else { StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON))); - StringCopy(gStringVar2, gNamingScreenData->destBuffer); + StringCopy(gStringVar2, sNamingScreenData->destBuffer); StringCopy(gStringVar3, GetBoxNamePtr(GetPCBoxToSendMon())); stringToDisplay = 2; } @@ -716,7 +716,7 @@ static bool8 sub_809E1D4(void) RunTextPrinters(); if (!IsTextPrinterActive(0) && (JOY_NEW(A_BUTTON))) - gNamingScreenData->state = MAIN_STATE_BEGIN_FADE_OUT; + sNamingScreenData->state = MAIN_STATE_BEGIN_FADE_OUT; return FALSE; } @@ -729,7 +729,7 @@ static bool8 MainState_StartPageSwap(void) sub_809EA0C(1); sub_809E518(0, 0, 1); PlaySE(SE_WIN_OPEN); - gNamingScreenData->state = MAIN_STATE_WAIT_PAGE_SWAP; + sNamingScreenData->state = MAIN_STATE_WAIT_PAGE_SWAP; return FALSE; } @@ -745,9 +745,9 @@ static bool8 MainState_WaitPageSwap(void) GetCursorPos(&cursorX, &cursorY); var3 = (cursorX == GetCurrentPageColumnCount()); - gNamingScreenData->state = MAIN_STATE_HANDLE_INPUT; - gNamingScreenData->currentPage++; - gNamingScreenData->currentPage %= 3; + sNamingScreenData->state = MAIN_STATE_HANDLE_INPUT; + sNamingScreenData->currentPage++; + sNamingScreenData->currentPage %= 3; if (var3) { @@ -805,8 +805,8 @@ static bool8 IsPageSwapAnimNotInProgress(void) static bool8 PageSwapAnimState_Init(struct Task *task) { - gNamingScreenData->bg1vOffset = 0; - gNamingScreenData->bg2vOffset = 0; + sNamingScreenData->bg1vOffset = 0; + sNamingScreenData->bg2vOffset = 0; task->tState++; return 0; } @@ -815,19 +815,19 @@ static bool8 PageSwapAnimState_1(struct Task *task) { u16 *const arr[] = { - &gNamingScreenData->bg2vOffset, - &gNamingScreenData->bg1vOffset + &sNamingScreenData->bg2vOffset, + &sNamingScreenData->bg1vOffset }; task->tFrameCount += 4; - *arr[gNamingScreenData->bgToReveal] = Sin(task->tFrameCount, 40); - *arr[gNamingScreenData->bgToHide] = Sin((task->tFrameCount + 128) & 0xFF, 40); + *arr[sNamingScreenData->bgToReveal] = Sin(task->tFrameCount, 40); + *arr[sNamingScreenData->bgToHide] = Sin((task->tFrameCount + 128) & 0xFF, 40); if (task->tFrameCount >= 64) { - u8 temp = gNamingScreenData->bg1Priority; //Why u8 and not u16? + u8 temp = sNamingScreenData->bg1Priority; //Why u8 and not u16? - gNamingScreenData->bg1Priority = gNamingScreenData->bg2Priority; - gNamingScreenData->bg2Priority = temp; + sNamingScreenData->bg1Priority = sNamingScreenData->bg2Priority; + sNamingScreenData->bg2Priority = temp; task->tState++; } return 0; @@ -837,19 +837,19 @@ static bool8 PageSwapAnimState_2(struct Task *task) { u16 *const arr[] = { - &gNamingScreenData->bg2vOffset, - &gNamingScreenData->bg1vOffset + &sNamingScreenData->bg2vOffset, + &sNamingScreenData->bg1vOffset }; task->tFrameCount += 4; - *arr[gNamingScreenData->bgToReveal] = Sin(task->tFrameCount, 40); - *arr[gNamingScreenData->bgToHide] = Sin((task->tFrameCount + 128) & 0xFF, 40); + *arr[sNamingScreenData->bgToReveal] = Sin(task->tFrameCount, 40); + *arr[sNamingScreenData->bgToHide] = Sin((task->tFrameCount + 128) & 0xFF, 40); if (task->tFrameCount >= 128) { - u8 temp = gNamingScreenData->bgToReveal; + u8 temp = sNamingScreenData->bgToReveal; - gNamingScreenData->bgToReveal = gNamingScreenData->bgToHide; - gNamingScreenData->bgToHide = temp; + sNamingScreenData->bgToReveal = sNamingScreenData->bgToHide; + sNamingScreenData->bgToHide = temp; task->tState++; } return 0; @@ -1054,18 +1054,18 @@ static void sub_809E898(void) static void CursorInit(void) { - gNamingScreenData->cursorSpriteId = CreateSprite(&gUnknown_83E25EC, 38, 88, 1); + sNamingScreenData->cursorSpriteId = CreateSprite(&gUnknown_83E25EC, 38, 88, 1); sub_809EA0C(1); - gSprites[gNamingScreenData->cursorSpriteId].oam.priority = 1; - gSprites[gNamingScreenData->cursorSpriteId].oam.objMode = ST_OAM_OBJ_BLEND; - gSprites[gNamingScreenData->cursorSpriteId].data[6] = 1; - gSprites[gNamingScreenData->cursorSpriteId].data[6] = 2; + gSprites[sNamingScreenData->cursorSpriteId].oam.priority = 1; + gSprites[sNamingScreenData->cursorSpriteId].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[sNamingScreenData->cursorSpriteId].data[6] = 1; + gSprites[sNamingScreenData->cursorSpriteId].data[6] = 2; SetCursorPos(0, 0); } static void SetCursorPos(s16 x, s16 y) { - struct Sprite *cursorSprite = &gSprites[gNamingScreenData->cursorSpriteId]; + struct Sprite *cursorSprite = &gSprites[sNamingScreenData->cursorSpriteId]; if (x < gUnknown_83E2330[sub_809DE50()]) cursorSprite->pos1.x = gUnknown_83E2333[sub_809DE50()][x] + 38; @@ -1081,7 +1081,7 @@ static void SetCursorPos(s16 x, s16 y) static void GetCursorPos(s16 *x, s16 *y) { - struct Sprite *cursorSprite = &gSprites[gNamingScreenData->cursorSpriteId]; + struct Sprite *cursorSprite = &gSprites[sNamingScreenData->cursorSpriteId]; *x = cursorSprite->data[0]; *y = cursorSprite->data[1]; @@ -1094,25 +1094,25 @@ static void MoveCursorToOKButton(void) static void sub_809EA0C(u8 a) { - gSprites[gNamingScreenData->cursorSpriteId].data[4] &= ~0xFF; - gSprites[gNamingScreenData->cursorSpriteId].data[4] |= a; - StartSpriteAnim(&gSprites[gNamingScreenData->cursorSpriteId], 0); + gSprites[sNamingScreenData->cursorSpriteId].data[4] &= ~0xFF; + gSprites[sNamingScreenData->cursorSpriteId].data[4] |= a; + StartSpriteAnim(&gSprites[sNamingScreenData->cursorSpriteId], 0); } static void sub_809EA64(u8 a) { - gSprites[gNamingScreenData->cursorSpriteId].data[4] &= 0xFF; - gSprites[gNamingScreenData->cursorSpriteId].data[4] |= a << 8; + gSprites[sNamingScreenData->cursorSpriteId].data[4] &= 0xFF; + gSprites[sNamingScreenData->cursorSpriteId].data[4] |= a << 8; } static void sub_809EAA8(void) { - StartSpriteAnim(&gSprites[gNamingScreenData->cursorSpriteId], 1); + StartSpriteAnim(&gSprites[sNamingScreenData->cursorSpriteId], 1); } static bool8 IsCursorAnimFinished(void) { - return gSprites[gNamingScreenData->cursorSpriteId].animEnded; + return gSprites[sNamingScreenData->cursorSpriteId].animEnded; } static const u8 sKeyRoles[] = {KEY_ROLE_PAGE, KEY_ROLE_BACKSPACE, KEY_ROLE_OK}; @@ -1141,7 +1141,7 @@ static void CreatePageSwitcherSprites(void) u8 spriteId3; spriteId1 = CreateSprite(&gUnknown_83E2574, 0xCC, 0x58, 0); - gNamingScreenData->selectBtnFrameSpriteId = spriteId1; + sNamingScreenData->selectBtnFrameSpriteId = spriteId1; SetSubspriteTables(&gSprites[spriteId1], gUnknown_83E2504); gSprites[spriteId1].invisible = TRUE; @@ -1158,10 +1158,10 @@ static void CreatePageSwitcherSprites(void) static void sub_809EC20(void) { - struct Sprite *sprite = &gSprites[gNamingScreenData->selectBtnFrameSpriteId]; + struct Sprite *sprite = &gSprites[sNamingScreenData->selectBtnFrameSpriteId]; sprite->data[0] = 2; - sprite->data[1] = gNamingScreenData->currentPage; + sprite->data[1] = sNamingScreenData->currentPage; } static bool8 (*const sPageSwapSpritesCBs[])(struct Sprite * sprite) = { @@ -1182,7 +1182,7 @@ static bool8 PageSwapSpritesCB_Init(struct Sprite *sprite) struct Sprite *sprite1 = &gSprites[sprite->data[6]]; struct Sprite *sprite2 = &gSprites[sprite->data[7]]; - sub_809ED88(sub_809DE20(gNamingScreenData->currentPage), sprite1, sprite2); + sub_809ED88(sub_809DE20(sNamingScreenData->currentPage), sprite1, sprite2); sprite->data[0]++; return FALSE; } @@ -1259,12 +1259,12 @@ static void CreateUnderscoreSprites(void) s16 xPos; u8 i; - xPos = gNamingScreenData->inputCharBaseXPos - 5; + xPos = sNamingScreenData->inputCharBaseXPos - 5; spriteId = CreateSprite(&sSpriteTemplate_InputArrow, xPos, 0x38, 0); gSprites[spriteId].oam.priority = 3; gSprites[spriteId].invisible = TRUE; - xPos = gNamingScreenData->inputCharBaseXPos; - for (i = 0; i < gNamingScreenData->template->maxChars; i++, xPos += 8) + xPos = sNamingScreenData->inputCharBaseXPos; + for (i = 0; i < sNamingScreenData->template->maxChars; i++, xPos += 8) { spriteId = CreateSprite(&sSpriteTemplate_Underscore, xPos + 3, 0x3C, 0); gSprites[spriteId].oam.priority = 3; @@ -1287,7 +1287,7 @@ static void (*const sIconFunctions[])(void) = { static void CreateInputTargetIcon(void) { - sIconFunctions[gNamingScreenData->template->iconFunction](); + sIconFunctions[sNamingScreenData->template->iconFunction](); } static void NamingScreen_NoCreateIcon(void) @@ -1300,7 +1300,7 @@ static void NamingScreen_CreatePlayerIcon(void) u8 rivalGfxId; u8 spriteId; - rivalGfxId = sub_805C7C8(0, gNamingScreenData->monSpecies); + rivalGfxId = sub_805C7C8(0, sNamingScreenData->monSpecies); spriteId = AddPseudoObjectEvent(rivalGfxId, SpriteCallbackDummy, 0x38, 0x25, 0); gSprites[spriteId].oam.priority = 3; StartSpriteAnim(&gSprites[spriteId], 4); @@ -1320,7 +1320,7 @@ static void NamingScreen_CreateMonIcon(void) u8 spriteId; LoadMonIconPalettes(); - spriteId = CreateMonIcon(gNamingScreenData->monSpecies, SpriteCallbackDummy, 0x38, 0x28, 0, gNamingScreenData->monPersonality, 1); + spriteId = CreateMonIcon(sNamingScreenData->monSpecies, SpriteCallbackDummy, 0x38, 0x28, 0, sNamingScreenData->monPersonality, 1); gSprites[spriteId].oam.priority = 3; } @@ -1402,7 +1402,7 @@ static bool8 KeyboardKeyHandler_Character(u8 event) if (var) { SetInputState(INPUT_STATE_DISABLED); - gNamingScreenData->state = MAIN_STATE_MOVE_TO_OK_BUTTON; + sNamingScreenData->state = MAIN_STATE_MOVE_TO_OK_BUTTON; } } return FALSE; @@ -1431,7 +1431,7 @@ static bool8 KeyboardKeyHandler_OK(u8 event) if (event == KBEVENT_PRESSED_A) { PlaySE(SE_SELECT); - gNamingScreenData->state = MAIN_STATE_6; + sNamingScreenData->state = MAIN_STATE_6; return TRUE; } else @@ -1440,7 +1440,7 @@ static bool8 KeyboardKeyHandler_OK(u8 event) static bool8 TriggerKeyboardChange(void) { - gNamingScreenData->state = MAIN_STATE_START_PAGE_SWAP; + sNamingScreenData->state = MAIN_STATE_START_PAGE_SWAP; return TRUE; } @@ -1604,20 +1604,20 @@ static void HandleDpadMovement(struct Task *task) static 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]); + FillWindowPixelBuffer(sNamingScreenData->windows[3], PIXEL_FILL(1)); + AddTextPrinterParameterized(sNamingScreenData->windows[3], 1, sNamingScreenData->template->title, 1, 1, 0, NULL); + PutWindowTilemap(sNamingScreenData->windows[3]); } static 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]); + StringCopy(buffer, gSpeciesNames[sNamingScreenData->monSpecies]); + StringAppendN(buffer, sNamingScreenData->template->title, 15); + FillWindowPixelBuffer(sNamingScreenData->windows[3], PIXEL_FILL(1)); + AddTextPrinterParameterized(sNamingScreenData->windows[3], 1, buffer, 1, 1, 0, NULL); + PutWindowTilemap(sNamingScreenData->windows[3]); } static void (*const sPrintTitleFuncs[])(void) = { @@ -1630,7 +1630,7 @@ static void (*const sPrintTitleFuncs[])(void) = { static void PrintTitle(void) { - sPrintTitleFuncs[gNamingScreenData->templateNum](); + sPrintTitleFuncs[sNamingScreenData->templateNum](); } static void (*const sAddGenderIconFuncs[])(void) = { @@ -1640,7 +1640,7 @@ static void (*const sAddGenderIconFuncs[])(void) = { static void CallAddGenderIconFunc(void) { - sAddGenderIconFuncs[gNamingScreenData->template->addGenderIcon](); + sAddGenderIconFuncs[sNamingScreenData->template->addGenderIcon](); } static void AddGenderIconFunc_No(void) @@ -1660,14 +1660,14 @@ static void AddGenderIconFunc_Yes(void) StringCopy(genderSymbol, gText_MaleSymbol); - if (gNamingScreenData->monGender != MON_GENDERLESS) + if (sNamingScreenData->monGender != MON_GENDERLESS) { - if (gNamingScreenData->monGender == MON_FEMALE) + if (sNamingScreenData->monGender == MON_FEMALE) { StringCopy(genderSymbol, gText_FemaleSymbol); gender = FEMALE; } - AddTextPrinterParameterized3(gNamingScreenData->windows[2], 2, 0x68, 1, sGenderColors[gender], TEXT_SPEED_FF, genderSymbol); + AddTextPrinterParameterized3(sNamingScreenData->windows[2], 2, 0x68, 1, sGenderColors[gender], TEXT_SPEED_FF, genderSymbol); } } @@ -1680,21 +1680,21 @@ static u8 GetTextCaretPosition(void) { u8 i; - for (i = 0; i < gNamingScreenData->template->maxChars; i++) + for (i = 0; i < sNamingScreenData->template->maxChars; i++) { - if (gNamingScreenData->textBuffer[i] == EOS) + if (sNamingScreenData->textBuffer[i] == EOS) return i; } - return gNamingScreenData->template->maxChars - 1; + return sNamingScreenData->template->maxChars - 1; } static u8 GetPreviousTextCaretPosition(void) { s8 i; - for (i = gNamingScreenData->template->maxChars - 1; i > 0; i--) + for (i = sNamingScreenData->template->maxChars - 1; i > 0; i--) { - if (gNamingScreenData->textBuffer[i] != EOS) + if (sNamingScreenData->textBuffer[i] != EOS) return i; } return 0; @@ -1707,10 +1707,10 @@ static void DeleteTextCharacter(void) index = GetPreviousTextCaretPosition(); // Temporarily make this a space for redrawing purposes - gNamingScreenData->textBuffer[index] = CHAR_SPACE; + sNamingScreenData->textBuffer[index] = CHAR_SPACE; PrintBufferCharactersOnScreen(); CopyBgTilemapBufferToVram(3); - gNamingScreenData->textBuffer[index] = EOS; + sNamingScreenData->textBuffer[index] = EOS; var2 = GetKeyRoleAtCursorPos(); if (var2 == KEY_ROLE_CHAR || var2 == KEY_ROLE_BACKSPACE) sub_809E518(1, 0, 1); @@ -1728,7 +1728,7 @@ static bool8 AppendCharToBuffer_CheckBufferFull(void) CopyBgTilemapBufferToVram(3); PlaySE(SE_SELECT); - if (GetPreviousTextCaretPosition() != gNamingScreenData->template->maxChars - 1) + if (GetPreviousTextCaretPosition() != sNamingScreenData->template->maxChars - 1) return FALSE; else return TRUE; @@ -1738,7 +1738,7 @@ static void AddTextCharacter(u8 ch) { u8 index = GetTextCaretPosition(); - gNamingScreenData->textBuffer[index] = ch; + sNamingScreenData->textBuffer[index] = ch; } static void CopyStringToDestBuffer(void) @@ -1746,11 +1746,11 @@ static void CopyStringToDestBuffer(void) // Copy from the first non-whitespace character u8 i; - for (i = 0; i < gNamingScreenData->template->maxChars; i++) + for (i = 0; i < sNamingScreenData->template->maxChars; i++) { - if (gNamingScreenData->textBuffer[i] != CHAR_SPACE && gNamingScreenData->textBuffer[i] != EOS) + if (sNamingScreenData->textBuffer[i] != CHAR_SPACE && sNamingScreenData->textBuffer[i] != EOS) { - StringCopyN(gNamingScreenData->destBuffer, gNamingScreenData->textBuffer, gNamingScreenData->template->maxChars + 1); + StringCopyN(sNamingScreenData->destBuffer, sNamingScreenData->textBuffer, sNamingScreenData->template->maxChars + 1); break; } } @@ -1758,10 +1758,10 @@ static void CopyStringToDestBuffer(void) static 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); + LZ77UnCompWram(gNamingScreenMenu_Gfx, sNamingScreenData->tileBuffer); + LoadBgTiles(1, sNamingScreenData->tileBuffer, 0x600, 0); + LoadBgTiles(2, sNamingScreenData->tileBuffer, 0x600, 0); + LoadBgTiles(3, sNamingScreenData->tileBuffer, 0x600, 0); LoadSpriteSheets(gUnknown_83E267C); LoadSpritePalettes(gUnknown_83E26E4); } @@ -1789,23 +1789,23 @@ static void PrintBufferCharactersOnScreen(void) u8 i; u8 temp[2]; u16 xoff; - u8 maxChars = gNamingScreenData->template->maxChars; - u16 xpos = gNamingScreenData->inputCharBaseXPos - 0x40; + u8 maxChars = sNamingScreenData->template->maxChars; + u16 xpos = sNamingScreenData->inputCharBaseXPos - 0x40; - FillWindowPixelBuffer(gNamingScreenData->windows[2], PIXEL_FILL(1)); + FillWindowPixelBuffer(sNamingScreenData->windows[2], PIXEL_FILL(1)); for (i = 0; i < maxChars; i++) { - temp[0] = gNamingScreenData->textBuffer[i]; + temp[0] = sNamingScreenData->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); + AddTextPrinterParameterized(sNamingScreenData->windows[2], 2, temp, i * 8 + xpos + xoff, 1, TEXT_SPEED_FF, NULL); } CallAddGenderIconFunc(); - CopyWindowToVram(gNamingScreenData->windows[2], 2); - PutWindowTilemap(gNamingScreenData->windows[2]); + CopyWindowToVram(sNamingScreenData->windows[2], 2); + PutWindowTilemap(sNamingScreenData->windows[2]); } struct TextColor // Needed because of alignment @@ -1865,16 +1865,16 @@ static void sub_809FA60(void) { bgId = 1; bgId_copy = 1; - windowId = gNamingScreenData->windows[0]; + windowId = sNamingScreenData->windows[0]; } else { bgId = 2; bgId_copy = 2; - windowId = gNamingScreenData->windows[1]; + windowId = sNamingScreenData->windows[1]; } - DecompressToBgTilemapBuffer(bgId, gUnknown_83E244C[gNamingScreenData->currentPage]); + DecompressToBgTilemapBuffer(bgId, gUnknown_83E244C[sNamingScreenData->currentPage]); sub_809F9E8(windowId, sub_809DE30()); CopyBgTilemapBufferToVram(bgId_copy); } @@ -1884,10 +1884,10 @@ static 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); + FillWindowPixelBuffer(sNamingScreenData->windows[4], PIXEL_FILL(15)); + AddTextPrinterParameterized3(sNamingScreenData->windows[4], 0, 236 - strwidth, 0, color, 0, gText_MoveOkBack); + PutWindowTilemap(sNamingScreenData->windows[4]); + CopyWindowToVram(sNamingScreenData->windows[4], 3); } static void sub_809FB70(void) @@ -1914,12 +1914,12 @@ static void VBlankCB_NamingScreen(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - SetGpuReg(REG_OFFSET_BG1VOFS, gNamingScreenData->bg1vOffset); - SetGpuReg(REG_OFFSET_BG2VOFS, gNamingScreenData->bg2vOffset); + SetGpuReg(REG_OFFSET_BG1VOFS, sNamingScreenData->bg1vOffset); + SetGpuReg(REG_OFFSET_BG2VOFS, sNamingScreenData->bg2vOffset); SetGpuReg(REG_OFFSET_BG1CNT, GetGpuReg(REG_OFFSET_BG1CNT) & 0xFFFC); // clear priority bits - SetGpuRegBits(REG_OFFSET_BG1CNT, gNamingScreenData->bg1Priority); + SetGpuRegBits(REG_OFFSET_BG1CNT, sNamingScreenData->bg1Priority); SetGpuReg(REG_OFFSET_BG2CNT, GetGpuReg(REG_OFFSET_BG2CNT) & 0xFFFC); // clear priority bits - SetGpuRegBits(REG_OFFSET_BG2CNT, gNamingScreenData->bg2Priority); + SetGpuRegBits(REG_OFFSET_BG2CNT, sNamingScreenData->bg2Priority); } static void ShowAllBgs(void)