summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/naming_screen.s1098
-rw-r--r--include/asm.inc.h2
-rw-r--r--ld_script.txt1
-rw-r--r--src/main_menu.c2
-rw-r--r--src/naming_screen.c559
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;
+}