diff options
-rw-r--r-- | asm/naming_screen.s | 1098 | ||||
-rw-r--r-- | include/asm.inc.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/main_menu.c | 2 | ||||
-rw-r--r-- | src/naming_screen.c | 559 |
5 files changed, 562 insertions, 1100 deletions
diff --git a/asm/naming_screen.s b/asm/naming_screen.s index aeec1b4bc..35dd88475 100644 --- a/asm/naming_screen.s +++ b/asm/naming_screen.s @@ -6,1104 +6,6 @@ .text - thumb_func_start DoNamingScreen -DoNamingScreen: @ 80B59CC - push {r4,r5,lr} - sub sp, 0x8 - ldr r4, [sp, 0x14] - ldr r5, [sp, 0x18] - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 16 - lsrs r3, 16 - str r4, [sp] - str r5, [sp, 0x4] - bl AddNamingScreenTask - ldr r0, _080B59F8 @ =C2_NamingScreen - bl SetMainCallback2 - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B59F8: .4byte C2_NamingScreen - thumb_func_end DoNamingScreen - - thumb_func_start C2_NamingScreen -C2_NamingScreen: @ 80B59FC - push {lr} - ldr r0, _080B5A14 @ =gMain - ldr r1, _080B5A18 @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x7 - bhi _080B5A96 - lsls r0, 2 - ldr r1, _080B5A1C @ =_080B5A20 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B5A14: .4byte gMain -_080B5A18: .4byte 0x0000043c -_080B5A1C: .4byte _080B5A20 - .align 2, 0 -_080B5A20: - .4byte _080B5A40 - .4byte _080B5A4A - .4byte _080B5A50 - .4byte _080B5A56 - .4byte _080B5A5C - .4byte _080B5A62 - .4byte _080B5A68 - .4byte _080B5A84 -_080B5A40: - bl NamingScreen_TurnOffScreen - bl NamingScreen_Init - b _080B5A6C -_080B5A4A: - bl NamingScreen_ClearVram - b _080B5A6C -_080B5A50: - bl NamingScreen_ClearOam - b _080B5A6C -_080B5A56: - bl NamingScreen_SetUpVideoRegs - b _080B5A6C -_080B5A5C: - bl sub_80B5DC8 - b _080B5A6C -_080B5A62: - bl NamingScreen_ResetObjects - b _080B5A6C -_080B5A68: - bl sub_80B5DFC -_080B5A6C: - ldr r1, _080B5A7C @ =gMain - ldr r0, _080B5A80 @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080B5A96 - .align 2, 0 -_080B5A7C: .4byte gMain -_080B5A80: .4byte 0x0000043c -_080B5A84: - bl sub_80B5E20 - bl sub_80B5E3C - bl sub_80B5C04 - ldr r0, _080B5A9C @ =sub_80B5AA0 - bl SetMainCallback2 -_080B5A96: - pop {r0} - bx r0 - .align 2, 0 -_080B5A9C: .4byte sub_80B5AA0 - thumb_func_end C2_NamingScreen - - thumb_func_start sub_80B5AA0 -sub_80B5AA0: @ 80B5AA0 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_80B5AA0 - - thumb_func_start sub_80B5AB8 -sub_80B5AB8: @ 80B5AB8 - push {r4,lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - ldr r1, _080B5B00 @ =REG_BG1VOFS - ldr r4, _080B5B04 @ =0x02000000 - ldrh r0, [r4, 0x4] - strh r0, [r1] - adds r1, 0x4 - ldrh r0, [r4, 0x6] - strh r0, [r1] - ldr r2, _080B5B08 @ =REG_BG1CNT - ldrh r1, [r2] - ldr r3, _080B5B0C @ =0x0000fffc - adds r0, r3, 0 - ands r0, r1 - strh r0, [r2] - ldrh r0, [r2] - ldrh r1, [r4, 0x8] - orrs r0, r1 - strh r0, [r2] - adds r2, 0x2 - ldrh r0, [r2] - ands r3, r0 - strh r3, [r2] - ldrh r0, [r2] - ldrh r1, [r4, 0xA] - orrs r0, r1 - strh r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B5B00: .4byte REG_BG1VOFS -_080B5B04: .4byte 0x02000000 -_080B5B08: .4byte REG_BG1CNT -_080B5B0C: .4byte 0x0000fffc - thumb_func_end sub_80B5AB8 - - thumb_func_start AddNamingScreenTask -AddNamingScreenTask: @ 80B5B10 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - mov r9, r1 - adds r5, r2, 0 - adds r6, r3, 0 - ldr r7, [sp, 0x1C] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r5, 16 - lsrs r5, 16 - lsls r6, 16 - lsrs r6, 16 - ldr r0, _080B5B74 @ =NamingScreenDummyTask - movs r1, 0xFF - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080B5B78 @ =gTasks - adds r4, r0 - mov r0, r8 - strh r0, [r4, 0x8] - strh r5, [r4, 0xA] - strh r6, [r4, 0xC] - lsrs r0, r7, 16 - strh r0, [r4, 0xE] - strh r7, [r4, 0x10] - adds r0, r4, 0 - adds r0, 0x12 - mov r1, r9 - bl StoreWordInTwoHalfwords - adds r4, 0x16 - adds r0, r4, 0 - ldr r1, [sp, 0x20] - bl StoreWordInTwoHalfwords - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B5B74: .4byte NamingScreenDummyTask -_080B5B78: .4byte gTasks - thumb_func_end AddNamingScreenTask - - thumb_func_start GetNamingScreenParameters -GetNamingScreenParameters: @ 80B5B7C - push {r4-r6,lr} - ldr r0, _080B5BD8 @ =NamingScreenDummyTask - bl FindTaskIdByFunc - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _080B5BDC @ =gTasks - adds r4, r0 - ldr r6, _080B5BE0 @ =0x02000000 - ldrh r0, [r4, 0x8] - strb r0, [r6, 0x1] - ldrh r0, [r4, 0xA] - strh r0, [r6, 0x3E] - ldrh r1, [r4, 0xC] - adds r0, r6, 0 - adds r0, 0x40 - strh r1, [r0] - movs r1, 0xE - ldrsh r0, [r4, r1] - lsls r0, 16 - ldrh r1, [r4, 0x10] - orrs r0, r1 - str r0, [r6, 0x44] - adds r0, r4, 0 - adds r0, 0x12 - adds r1, r6, 0 - adds r1, 0x38 - bl LoadWordFromTwoHalfwords - adds r4, 0x16 - adds r1, r6, 0 - adds r1, 0x48 - adds r0, r4, 0 - bl LoadWordFromTwoHalfwords - adds r0, r5, 0 - bl DestroyTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B5BD8: .4byte NamingScreenDummyTask -_080B5BDC: .4byte gTasks -_080B5BE0: .4byte 0x02000000 - thumb_func_end GetNamingScreenParameters - - thumb_func_start NamingScreenDummyTask -NamingScreenDummyTask: @ 80B5BE4 - bx lr - thumb_func_end NamingScreenDummyTask - - thumb_func_start NamingScreen_TurnOffScreen -NamingScreen_TurnOffScreen: @ 80B5BE8 - push {lr} - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - pop {r0} - bx r0 - thumb_func_end NamingScreen_TurnOffScreen - - thumb_func_start sub_80B5C04 -sub_80B5C04: @ 80B5C04 - push {r4,lr} - ldr r0, _080B5C3C @ =sub_80B5AB8 - bl SetVBlankCallback - ldr r3, _080B5C40 @ =0x04000208 - ldrh r2, [r3] - movs r0, 0 - strh r0, [r3] - ldr r4, _080B5C44 @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r2, _080B5C48 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strh r0, [r2] - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xFA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B5C3C: .4byte sub_80B5AB8 -_080B5C40: .4byte 0x04000208 -_080B5C44: .4byte 0x04000200 -_080B5C48: .4byte REG_DISPSTAT - thumb_func_end sub_80B5C04 - - thumb_func_start NamingScreen_ClearVram -NamingScreen_ClearVram: @ 80B5C4C - push {r4-r7,lr} - sub sp, 0x4 - movs r2, 0xC0 - lsls r2, 19 - movs r3, 0x80 - lsls r3, 9 - mov r4, sp - movs r6, 0 - ldr r1, _080B5C98 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _080B5C9C @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_080B5C6A: - strh r6, [r4] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r5 - subs r3, r5 - cmp r3, r5 - bhi _080B5C6A - strh r6, [r4] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B5C98: .4byte 0x040000d4 -_080B5C9C: .4byte 0x81000800 - thumb_func_end NamingScreen_ClearVram - - thumb_func_start NamingScreen_ClearOam -NamingScreen_ClearOam: @ 80B5CA0 - sub sp, 0x4 - movs r2, 0xE0 - lsls r2, 19 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r0, _080B5CBC @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _080B5CC0 @ =0x81000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - add sp, 0x4 - bx lr - .align 2, 0 -_080B5CBC: .4byte 0x040000d4 -_080B5CC0: .4byte 0x81000200 - thumb_func_end NamingScreen_ClearOam - - thumb_func_start NamingScreen_SetUpVideoRegs -NamingScreen_SetUpVideoRegs: @ 80B5CC4 - push {r4,r5,lr} - ldr r5, _080B5D2C @ =REG_BG0CNT - movs r1, 0 - strh r1, [r5] - ldr r2, _080B5D30 @ =REG_BG1CNT - strh r1, [r2] - ldr r3, _080B5D34 @ =REG_BG2CNT - strh r1, [r3] - ldr r4, _080B5D38 @ =REG_BG3CNT - strh r1, [r4] - ldr r0, _080B5D3C @ =REG_BG0HOFS - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - movs r1, 0xF8 - lsls r1, 5 - adds r0, r1, 0 - strh r0, [r5] - ldr r1, _080B5D40 @ =0x00001c01 - adds r0, r1, 0 - strh r0, [r2] - ldr r2, _080B5D44 @ =0x00001d0a - adds r0, r2, 0 - strh r0, [r3] - ldr r1, _080B5D48 @ =0x00001e03 - adds r0, r1, 0 - strh r0, [r4] - ldr r1, _080B5D4C @ =REG_BLDCNT - movs r2, 0xC8 - lsls r2, 3 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _080B5D50 @ =0x0000080c - adds r0, r2, 0 - strh r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B5D2C: .4byte REG_BG0CNT -_080B5D30: .4byte REG_BG1CNT -_080B5D34: .4byte REG_BG2CNT -_080B5D38: .4byte REG_BG3CNT -_080B5D3C: .4byte REG_BG0HOFS -_080B5D40: .4byte 0x00001c01 -_080B5D44: .4byte 0x00001d0a -_080B5D48: .4byte 0x00001e03 -_080B5D4C: .4byte REG_BLDCNT -_080B5D50: .4byte 0x0000080c - thumb_func_end NamingScreen_SetUpVideoRegs - - thumb_func_start NamingScreen_Init -NamingScreen_Init: @ 80B5D54 - push {r4-r6,lr} - bl GetNamingScreenParameters - ldr r4, _080B5DBC @ =0x02000000 - movs r0, 0 - strb r0, [r4] - movs r2, 0 - strh r0, [r4, 0x4] - strh r0, [r4, 0x6] - movs r1, 0x1 - movs r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x2 - strh r0, [r4, 0xA] - strb r2, [r4, 0xC] - strb r1, [r4, 0xD] - ldr r1, _080B5DC0 @ =gUnknown_083CE398 - ldrb r0, [r4, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r4, 0x34] - ldrb r1, [r0, 0x4] - strb r1, [r4, 0xE] - ldrb r1, [r0, 0x1] - lsrs r1, 1 - movs r0, 0xE - subs r0, r1 - strh r0, [r4, 0x2] - ldr r6, _080B5DC4 @ =gKeyRepeatStartDelay - ldrh r0, [r6] - strh r0, [r4, 0x3C] - adds r5, r4, 0 - adds r5, 0x11 - adds r0, r5, 0 - movs r1, 0xFF - movs r2, 0x10 - bl memset - ldr r0, [r4, 0x34] - ldrb r0, [r0] - cmp r0, 0 - beq _080B5DB2 - ldr r1, [r4, 0x38] - adds r0, r5, 0 - bl StringCopy -_080B5DB2: - movs r0, 0x10 - strh r0, [r6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B5DBC: .4byte 0x02000000 -_080B5DC0: .4byte gUnknown_083CE398 -_080B5DC4: .4byte gKeyRepeatStartDelay - thumb_func_end NamingScreen_Init - - thumb_func_start sub_80B5DC8 -sub_80B5DC8: @ 80B5DC8 - push {r4,lr} - ldr r4, _080B5DE0 @ =gWindowConfig_81E6E88 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B5DE0: .4byte gWindowConfig_81E6E88 - thumb_func_end sub_80B5DC8 - - thumb_func_start NamingScreen_ResetObjects -NamingScreen_ResetObjects: @ 80B5DE4 - push {lr} - bl ResetPaletteFade - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - pop {r0} - bx r0 - thumb_func_end NamingScreen_ResetObjects - - thumb_func_start sub_80B5DFC -sub_80B5DFC: @ 80B5DFC - push {lr} - bl sub_80B7558 - bl sub_80B753C - bl sub_80B7680 - bl sub_80B75C4 - bl sub_80B7794 - bl sub_80B78A8 - bl sub_80B7960 - pop {r0} - bx r0 - thumb_func_end sub_80B5DFC - - thumb_func_start sub_80B5E20 -sub_80B5E20: @ 80B5E20 - push {lr} - bl sub_80B6774 - bl sub_80B6A80 - bl sub_80B6CA8 - bl sub_80B6D04 - bl sub_80B6E44 - pop {r0} - bx r0 - thumb_func_end sub_80B5E20 - - thumb_func_start sub_80B5E3C -sub_80B5E3C: @ 80B5E3C - push {lr} - bl sub_80B61D8 - bl sub_80B6438 - bl sub_80B5E50 - pop {r0} - bx r0 - thumb_func_end sub_80B5E3C - - thumb_func_start sub_80B5E50 -sub_80B5E50: @ 80B5E50 - push {r4,lr} - ldr r4, _080B5E6C @ =sub_80B5E70 - adds r0, r4, 0 - movs r1, 0x2 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B5E6C: .4byte sub_80B5E70 - thumb_func_end sub_80B5E50 - - thumb_func_start sub_80B5E70 -sub_80B5E70: @ 80B5E70 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r7, _080B5E9C @ =gUnknown_083CE218 - lsls r1, r0, 2 - adds r1, r0 - lsls r4, r1, 3 - ldr r6, _080B5EA0 @ =0x02000000 - ldr r5, _080B5EA4 @ =gTasks -_080B5E82: - ldrb r0, [r6] - lsls r0, 2 - adds r0, r7 - ldr r1, [r0] - adds r0, r4, r5 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080B5E82 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B5E9C: .4byte gUnknown_083CE218 -_080B5EA0: .4byte 0x02000000 -_080B5EA4: .4byte gTasks - thumb_func_end sub_80B5E70 - - thumb_func_start sub_80B5EA8 -sub_80B5EA8: @ 80B5EA8 - push {lr} - sub sp, 0x4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, _080B5ECC @ =0x02000000 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 - add sp, 0x4 - pop {r1} - bx r1 - .align 2, 0 -_080B5ECC: .4byte 0x02000000 - thumb_func_end sub_80B5EA8 - - thumb_func_start sub_80B5ED0 -sub_80B5ED0: @ 80B5ED0 - push {lr} - ldr r0, _080B5EF8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080B5EF2 - movs r0, 0x1 - bl sub_80B6210 - movs r0, 0x1 - bl sub_80B68D8 - ldr r1, _080B5EFC @ =0x02000000 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080B5EF2: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080B5EF8: .4byte gPaletteFade -_080B5EFC: .4byte 0x02000000 - thumb_func_end sub_80B5ED0 - - thumb_func_start sub_80B5F00 -sub_80B5F00: @ 80B5F00 - push {lr} - bl sub_80B60B8 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80B5F00 - - thumb_func_start sub_80B5F10 -sub_80B5F10: @ 80B5F10 - push {lr} - bl sub_80B6938 - lsls r0, 24 - cmp r0, 0 - beq _080B5F2C - movs r0, 0x1 - bl sub_80B6210 - bl sub_80B6878 - ldr r1, _080B5F34 @ =0x02000000 - movs r0, 0x2 - strb r0, [r1] -_080B5F2C: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080B5F34: .4byte 0x02000000 - thumb_func_end sub_80B5F10 - - thumb_func_start sub_80B5F38 -sub_80B5F38: @ 80B5F38 - push {lr} - movs r0, 0 - bl sub_80B6210 - bl sub_80B6B14 - bl sub_80B65F0 - movs r0, 0x1 - bl sub_80B6888 - movs r0, 0 - movs r1, 0 - movs r2, 0x1 - bl sub_80B6460 - movs r0, 0x6 - bl PlaySE - ldr r1, _080B5F6C @ =0x02000000 - movs r0, 0x5 - strb r0, [r1] - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080B5F6C: .4byte 0x02000000 - thumb_func_end sub_80B5F38 - - thumb_func_start sub_80B5F70 -sub_80B5F70: @ 80B5F70 - push {r4,r5,lr} - sub sp, 0x4 - bl sub_80B6610 - lsls r0, 24 - cmp r0, 0 - beq _080B5FDC - ldr r4, _080B5FE8 @ =0x02000000 - movs r0, 0x2 - strb r0, [r4] - ldrb r0, [r4, 0xE] - adds r0, 0x1 - strb r0, [r4, 0xE] - ldrb r0, [r4, 0xE] - movs r1, 0x3 - bl __umodsi3 - strb r0, [r4, 0xE] - bl sub_80B7614 - bl sub_80B77F8 - movs r0, 0x1 - bl sub_80B6210 - mov r5, sp - adds r5, 0x2 - mov r0, sp - adds r1, r5, 0 - bl sub_80B6858 - ldrb r0, [r4, 0xE] - cmp r0, 0x2 - bne _080B5FC8 - mov r0, sp - ldrh r0, [r0] - subs r0, 0x6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080B5FC8 - mov r1, sp - movs r0, 0x5 - strh r0, [r1] -_080B5FC8: - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - bl sub_80B680C - movs r0, 0 - bl sub_80B6888 -_080B5FDC: - movs r0, 0 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080B5FE8: .4byte 0x02000000 - thumb_func_end sub_80B5F70 - - thumb_func_start pokemon_store -pokemon_store: @ 80B5FEC - push {r4,lr} - bl sub_80B74B0 - movs r0, 0 - bl sub_80B6210 - movs r0, 0 - bl sub_80B68D8 - movs r0, 0x3 - movs r1, 0 - movs r2, 0x1 - bl sub_80B6460 - ldr r0, _080B6030 @ =gKeyRepeatStartDelay - ldr r4, _080B6034 @ =0x02000000 - ldrh r1, [r4, 0x3C] - strh r1, [r0] - ldrb r0, [r4, 0x1] - cmp r0, 0x2 - bne _080B6038 - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _080B6038 - bl sub_80B74FC - movs r0, 0x7 - strb r0, [r4] - movs r0, 0 - b _080B6040 - .align 2, 0 -_080B6030: .4byte gKeyRepeatStartDelay -_080B6034: .4byte 0x02000000 -_080B6038: - ldr r1, _080B6048 @ =0x02000000 - movs r0, 0x8 - strb r0, [r1] - movs r0, 0x1 -_080B6040: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080B6048: .4byte 0x02000000 - thumb_func_end pokemon_store - - thumb_func_start sub_80B604C -sub_80B604C: @ 80B604C - push {lr} - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _080B6060 - ldr r1, _080B6068 @ =0x02000000 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080B6060: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080B6068: .4byte 0x02000000 - thumb_func_end sub_80B604C - - thumb_func_start sub_80B606C -sub_80B606C: @ 80B606C - 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 r1, _080B6090 @ =0x02000000 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 - add sp, 0x4 - pop {r1} - bx r1 - .align 2, 0 -_080B6090: .4byte 0x02000000 - thumb_func_end sub_80B606C - - thumb_func_start sub_80B6094 -sub_80B6094: @ 80B6094 - push {lr} - ldr r0, _080B60B0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080B60AA - ldr r0, _080B60B4 @ =0x02000000 - ldr r0, [r0, 0x48] - bl SetMainCallback2 -_080B60AA: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080B60B0: .4byte gPaletteFade -_080B60B4: .4byte 0x02000000 - thumb_func_end sub_80B6094 - - thumb_func_start sub_80B60B8 -sub_80B60B8: @ 80B60B8 - push {r4,r5,lr} - bl sub_80B61EC - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl sub_80B6958 - lsls r0, 24 - lsrs r0, 24 - cmp r4, 0x8 - bne _080B60D6 - bl sub_80B61C8 - b _080B60F2 -_080B60D6: - cmp r4, 0x6 - bne _080B60E0 - bl sub_80B6FBC - b _080B6100 -_080B60E0: - cmp r5, 0x7 - beq _080B60FC - ldr r1, _080B60F8 @ =gUnknown_083CE240 - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 -_080B60F2: - lsls r0, 24 - lsrs r0, 24 - b _080B6102 - .align 2, 0 -_080B60F8: .4byte gUnknown_083CE240 -_080B60FC: - bl sub_80B7090 -_080B6100: - movs r0, 0 -_080B6102: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80B60B8 - - thumb_func_start sub_80B6108 -sub_80B6108: @ 80B6108 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl sub_80B6460 - cmp r4, 0x5 - bne _080B613C - bl sub_80B7004 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_80B6914 - cmp r4, 0 - beq _080B613C - movs r0, 0 - bl sub_80B6210 - ldr r1, _080B6144 @ =0x02000000 - movs r0, 0x3 - strb r0, [r1] -_080B613C: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080B6144: .4byte 0x02000000 - thumb_func_end sub_80B6108 - - thumb_func_start sub_80B6148 -sub_80B6148: @ 80B6148 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_80B6460 - cmp r4, 0x5 - beq _080B6162 - movs r0, 0 - b _080B616A -_080B6162: - bl sub_80B61C8 - lsls r0, 24 - lsrs r0, 24 -_080B616A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80B6148 - - thumb_func_start sub_80B6170 -sub_80B6170: @ 80B6170 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl sub_80B6460 - cmp r4, 0x5 - bne _080B618A - bl sub_80B6FBC -_080B618A: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80B6170 - - thumb_func_start sub_80B6194 -sub_80B6194: @ 80B6194 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl sub_80B6460 - cmp r4, 0x5 - beq _080B61AE - movs r0, 0 - b _080B61BC -_080B61AE: - movs r0, 0x5 - bl PlaySE - ldr r1, _080B61C4 @ =0x02000000 - movs r0, 0x6 - strb r0, [r1] - movs r0, 0x1 -_080B61BC: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080B61C4: .4byte 0x02000000 - thumb_func_end sub_80B6194 - - thumb_func_start sub_80B61C8 -sub_80B61C8: @ 80B61C8 - ldr r1, _080B61D4 @ =0x02000000 - movs r0, 0x4 - strb r0, [r1] - movs r0, 0x1 - bx lr - .align 2, 0 -_080B61D4: .4byte 0x02000000 - thumb_func_end sub_80B61C8 - - thumb_func_start sub_80B61D8 -sub_80B61D8: @ 80B61D8 - push {lr} - ldr r0, _080B61E8 @ =sub_80B623C - movs r1, 0x1 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_080B61E8: .4byte sub_80B623C - thumb_func_end sub_80B61D8 - - thumb_func_start sub_80B61EC -sub_80B61EC: @ 80B61EC - push {lr} - ldr r0, _080B6208 @ =sub_80B623C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B620C @ =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 -_080B6208: .4byte sub_80B623C -_080B620C: .4byte gTasks - thumb_func_end sub_80B61EC - - thumb_func_start sub_80B6210 -sub_80B6210: @ 80B6210 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080B6234 @ =sub_80B623C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B6238 @ =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 -_080B6234: .4byte sub_80B623C -_080B6238: .4byte gTasks - thumb_func_end sub_80B6210 - thumb_func_start sub_80B623C sub_80B623C: @ 80B623C push {lr} diff --git a/include/asm.inc.h b/include/asm.inc.h index 482f4d91f..50d983852 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -288,7 +288,7 @@ bool8 sub_80B58C4(u16, u8, u8); void *picbox_close(void); // asm/naming_screen.o -void DoNamingScreen(u8 r0, struct SaveBlock2 *r1, u16 r2, u16 r3, u8 s0, MainCallback s4); +void DoNamingScreen(u8 r0, u8 *r1, u16 r2, u16 r3, u32 s0, MainCallback s4); // asm/secret_base.o void sub_80BB5B4(void); diff --git a/ld_script.txt b/ld_script.txt index 1af54ea2b..9f5f9970d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -150,6 +150,7 @@ SECTIONS { asm/shop.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); asm/contest_effect.o(.text); diff --git a/src/main_menu.c b/src/main_menu.c index dee9af852..c586e2b08 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1081,7 +1081,7 @@ static void Task_NewGameSpeech22(u8 taskId) if (!gPaletteFade.active) { SetPresetPlayerName(1); - DoNamingScreen(0, &gSaveBlock2, gSaveBlock2.playerGender, 0, 0, CB_ContinueNewGameSpeechPart2); + DoNamingScreen(0, gSaveBlock2.playerName, gSaveBlock2.playerGender, 0, 0, CB_ContinueNewGameSpeechPart2); } } diff --git a/src/naming_screen.c b/src/naming_screen.c new file mode 100644 index 000000000..91860b604 --- /dev/null +++ b/src/naming_screen.c @@ -0,0 +1,559 @@ +#include "global.h" +#include "asm.h" +#include "main.h" +#include "menu.h" +#include "palette.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "task.h" +#include "text.h" + +struct UnknownStruct2 +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + const u8 *title; +}; + +struct UnknownStruct1 +{ + u8 unk0; //state + u8 unk1; + u16 unk2; + u16 unk4; + u16 unk6; + u16 unk8; + u16 unkA; + u8 unkC; + u8 unkD; + u8 unkE; + u8 fillerF[2]; + u8 unk11[0x10]; + u8 filler21[0x13]; + /*0x34*/ const struct UnknownStruct2 *unk34; + /*0x38*/ u8 *nameBuffer; + u16 unk3C; //savedKeyRepeatStartDelay + u16 unk3E; + u16 unk40; + u32 unk44; + /*0x48*/ MainCallback returnCallback; +}; + +extern u16 gKeyRepeatStartDelay; + +extern u8 unk_2000000[]; + +#define EWRAM_000000 (*(struct UnknownStruct1 *)(unk_2000000)) + +extern const struct UnknownStruct2 *const gUnknown_083CE398[]; +extern u8 (*const gUnknown_083CE218[])(struct Task *); +extern u8 (*const gUnknown_083CE240[])(u8); + +void C2_NamingScreen(void); +void sub_80B5AA0(void); +//void AddNamingScreenTask(); +void AddNamingScreenTask(u8, u8 *, u16, u16, u32, MainCallback); +void NamingScreen_TurnOffScreen(void); +void NamingScreen_Init(void); +void NamingScreen_ClearVram(void); +void NamingScreen_ClearOam(void); +void NamingScreen_SetUpVideoRegs(void); +void sub_80B5DC8(void); +void NamingScreen_ResetObjects(void); +void sub_80B5DFC(void); +void sub_80B5E20(void); +void sub_80B5E3C(void); +void sub_80B5C04(void); +void NamingScreenDummyTask(u8); +void sub_80B7558(void); +void sub_80B753C(void); +void sub_80B7680(void); +void sub_80B75C4(void); +void sub_80B7794(void); +void sub_80B78A8(void); +void sub_80B7960(void); +void sub_80B6774(void); +void sub_80B6A80(void); +void sub_80B6CA8(void); +void sub_80B6D04(void); +void sub_80B6E44(void); +void sub_80B61D8(void); +void sub_80B6438(void); +void sub_80B5E50(void); +void sub_80B5E70(u8); +void sub_80B6210(u8); +void sub_80B68D8(); +u8 sub_80B60B8(void); +u8 sub_80B6938(void); +void sub_80B6878(void); +void sub_80B6B14(void); +void sub_80B65F0(void); +void sub_80B6888(); +void sub_80B6460(); +u8 sub_80B6610(void); +void sub_80B7614(void); +void sub_80B6858(); +void sub_80B680C(); +void sub_80B77F8(void); +void sub_80B74B0(void); +void sub_80B74FC(void); +u8 sub_80B6958(void); +u8 sub_80B61C8(void); +void sub_80B6FBC(void); +void sub_80B7090(void); +u8 sub_80B61EC(void); +u8 sub_80B7004(void); +void sub_80B6914(void); +void sub_80B623C(u8); + +void DoNamingScreen(u8 a, u8 *nameBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback) +{ + AddNamingScreenTask(a, nameBuffer, c, d, e, returnCallback); + SetMainCallback2(C2_NamingScreen); +} + +void C2_NamingScreen(void) +{ + switch (gMain.state) + { + case 0: + NamingScreen_TurnOffScreen(); + NamingScreen_Init(); + gMain.state++; + break; + case 1: + NamingScreen_ClearVram(); + gMain.state++; + break; + case 2: + NamingScreen_ClearOam(); + gMain.state++; + break; + case 3: + NamingScreen_SetUpVideoRegs(); + gMain.state++; + break; + case 4: + sub_80B5DC8(); + gMain.state++; + break; + case 5: + NamingScreen_ResetObjects(); + gMain.state++; + break; + case 6: + sub_80B5DFC(); + gMain.state++; + break; + case 7: + sub_80B5E20(); + sub_80B5E3C(); + sub_80B5C04(); + SetMainCallback2(sub_80B5AA0); + break; + } +} + +void sub_80B5AA0(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_80B5AB8(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + REG_BG1VOFS = EWRAM_000000.unk4; + REG_BG2VOFS = EWRAM_000000.unk6; + REG_BG1CNT &= 0xFFFC; + REG_BG1CNT |= EWRAM_000000.unk8; + REG_BG2CNT &= 0xFFFC; + REG_BG2CNT |= EWRAM_000000.unkA; +} + +void AddNamingScreenTask(u8 a, u8 *nameBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback) +{ + struct Task *task; + + task = &gTasks[CreateTask(NamingScreenDummyTask, 0xFF)]; + task->data[0] = a; + task->data[1] = c; + task->data[2] = d; + task->data[3] = e >> 16; + task->data[4] = e; + StoreWordInTwoHalfwords(&task->data[5], (u32)nameBuffer); + StoreWordInTwoHalfwords(&task->data[7], (u32)returnCallback); +} + +void GetNamingScreenParameters(void) +{ + u8 taskId; + struct Task *task; + + taskId = FindTaskIdByFunc(NamingScreenDummyTask); + task = &gTasks[taskId]; + EWRAM_000000.unk1 = task->data[0]; + EWRAM_000000.unk3E = task->data[1]; + EWRAM_000000.unk40 = task->data[2]; + EWRAM_000000.unk44 = (task->data[3] << 16) | (u16)task->data[4]; + LoadWordFromTwoHalfwords(&task->data[5], (u32 *)&EWRAM_000000.nameBuffer); + LoadWordFromTwoHalfwords(&task->data[7], (u32 *)&EWRAM_000000.returnCallback); + DestroyTask(taskId); +} + +void NamingScreenDummyTask(u8 taskId) +{ +} + +void NamingScreen_TurnOffScreen(void) +{ + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); + REG_DISPCNT = 0; +} + +void sub_80B5C04(void) +{ + u16 savedIme; + + SetVBlankCallback(sub_80B5AB8); + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = savedIme; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; +} + +void NamingScreen_ClearVram(void) +{ + u8 *addr = (void *)VRAM; + u32 size = 0x10000; + + while (1) + { + DmaFill16(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill16(3, 0, addr, size); + break; + } + } +} + +void NamingScreen_ClearOam(void) +{ + DmaClear16(3, (void *)OAM, 0x400); +} + +void NamingScreen_SetUpVideoRegs(void) +{ + REG_BG0CNT = 0; + REG_BG1CNT = 0; + REG_BG2CNT = 0; + REG_BG3CNT = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_BG0CNT = 0x1F00; + REG_BG1CNT = 0x1C01; + REG_BG2CNT = 0x1D0A; + REG_BG3CNT = 0x1E03; + REG_BLDCNT = 0x640; + REG_BLDALPHA = 0x80C; +} + +void NamingScreen_Init(void) +{ + GetNamingScreenParameters(); + EWRAM_000000.unk0 = 0; + EWRAM_000000.unk4 = 0; + EWRAM_000000.unk6 = 0; + EWRAM_000000.unk8 = 1; + EWRAM_000000.unkA = 2; + EWRAM_000000.unkC = 0; + EWRAM_000000.unkD = 1; + EWRAM_000000.unk34 = gUnknown_083CE398[EWRAM_000000.unk1]; + EWRAM_000000.unkE = EWRAM_000000.unk34->unk4; + EWRAM_000000.unk2 = 14 - EWRAM_000000.unk34->unk1 / 2; + EWRAM_000000.unk3C = gKeyRepeatStartDelay; + memset(EWRAM_000000.unk11, 0xFF, 0x10); + if (EWRAM_000000.unk34->unk0 != 0) + StringCopy(EWRAM_000000.unk11, EWRAM_000000.nameBuffer); + gKeyRepeatStartDelay = 16; +} + +void sub_80B5DC8(void) +{ + SetUpWindowConfig(&gWindowConfig_81E6E88); + InitMenuWindow(&gWindowConfig_81E6E88); +} + +void NamingScreen_ResetObjects(void) +{ + ResetPaletteFade(); + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); +} + +void sub_80B5DFC(void) +{ + sub_80B7558(); + sub_80B753C(); + sub_80B7680(); + sub_80B75C4(); + sub_80B7794(); + sub_80B78A8(); + sub_80B7960(); +} + +void sub_80B5E20(void) +{ + sub_80B6774(); + sub_80B6A80(); + sub_80B6CA8(); + sub_80B6D04(); + sub_80B6E44(); +} + +void sub_80B5E3C(void) +{ + sub_80B61D8(); + sub_80B6438(); + sub_80B5E50(); +} + +void sub_80B5E50(void) +{ + u8 taskId; + + taskId = CreateTask(sub_80B5E70, 2); + sub_80B5E70(taskId); +} + +void sub_80B5E70(u8 taskId) +{ + while (gUnknown_083CE218[EWRAM_000000.unk0](&gTasks[taskId]) != 0) + ; +} + +u8 sub_80B5EA8(struct Task *task) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + EWRAM_000000.unk0++; + return 0; +} + +u8 sub_80B5ED0(struct Task *task) +{ + if (!gPaletteFade.active) + { + sub_80B6210(1); + sub_80B68D8(1); + EWRAM_000000.unk0++; + } + return 0; +} + +u8 sub_80B5F00(struct Task *task) +{ + return sub_80B60B8(); +} + +u8 sub_80B5F10(struct Task *task) +{ + if (sub_80B6938() != 0) + { + sub_80B6210(1); + sub_80B6878(); + EWRAM_000000.unk0 = 2; + } + return 0; +} + +u8 sub_80B5F38(struct Task *task) +{ + sub_80B6210(0); + sub_80B6B14(); + sub_80B65F0(); + sub_80B6888(1); + sub_80B6460(0, 0, 1); + PlaySE(SE_WIN_OPEN); + EWRAM_000000.unk0 = 5; + return 0; +} + +u8 sub_80B5F70(struct Task *task) +{ + s16 var1; + s16 var2; + + if (sub_80B6610() != 0) + { + EWRAM_000000.unk0 = 2; + EWRAM_000000.unkE++; + EWRAM_000000.unkE %= 3; + sub_80B7614(); + sub_80B77F8(); + sub_80B6210(1); + sub_80B6858(&var1, &var2); + if (EWRAM_000000.unkE == 2 && (u16)(var1 - 6) <= 1) + var1 = 5; + sub_80B680C(var1, var2); + sub_80B6888(0); + } + return 0; +} + +u8 pokemon_store(struct Task *task) +{ + sub_80B74B0(); + sub_80B6210(0); + sub_80B68D8(0); + sub_80B6460(3, 0, 1); + gKeyRepeatStartDelay = EWRAM_000000.unk3C; + if (EWRAM_000000.unk1 == 2 && CalculatePlayerPartyCount() > 5) + { + sub_80B74FC(); + EWRAM_000000.unk0 = 7; + return 0; + } + else + { + EWRAM_000000.unk0 = 8; + return 1; + } +} + +u8 sub_80B604C(struct Task *task) +{ + if (MenuUpdateWindowText()) + EWRAM_000000.unk0++; + return 0; +} + +u8 sub_80B606C(struct Task *task) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + EWRAM_000000.unk0++; + return 0; +} + +u8 sub_80B6094(struct Task *task) +{ + if (!gPaletteFade.active) + SetMainCallback2(EWRAM_000000.returnCallback); + return 0; +} + +u8 sub_80B60B8(void) +{ + u8 var = sub_80B61EC(); + u8 r0 = sub_80B6958(); + + if (var == 8) + return sub_80B61C8(); + else if (var == 6) + { + sub_80B6FBC(); + return 0; + } + else if (var == 7) + { + sub_80B7090(); + return 0; + } + return gUnknown_083CE240[r0](var); +} + +u8 sub_80B6108(u8 a) +{ + sub_80B6460(3, 0, 0); + if (a == 5) + { + u8 var = sub_80B7004(); + + sub_80B6914(); + if (var != 0) + { + sub_80B6210(0); + EWRAM_000000.unk0 = 3; + } + } + return 0; +} + +u8 sub_80B6148(u8 a) +{ + sub_80B6460(0, 1, 0); + if (a == 5) + return sub_80B61C8(); + else + return 0; +} + +u8 sub_80B6170(u8 a) +{ + sub_80B6460(1, 1, 0); + if (a == 5) + sub_80B6FBC(); + return 0; +} + +u8 sub_80B6194(u8 a) +{ + sub_80B6460(2, 1, 0); + if (a == 5) + { + PlaySE(SE_SELECT); + EWRAM_000000.unk0 = 6; + return 1; + } + else + return 0; +} + +u8 sub_80B61C8(void) +{ + EWRAM_000000.unk0 = 4; + return 1; +} + +void sub_80B61D8(void) +{ + CreateTask(sub_80B623C, 1); +} + +u8 sub_80B61EC(void) +{ + u8 taskId = FindTaskIdByFunc(sub_80B623C); + + return gTasks[taskId].data[1]; +} + +void sub_80B6210(u8 a) +{ + u8 taskId = FindTaskIdByFunc(sub_80B623C); + + gTasks[taskId].data[0] = a; +} |