summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/naming_screen.s921
-rw-r--r--include/field_effect.h1
-rw-r--r--include/field_specials.h1
-rw-r--r--include/pokemon_storage_system.h3
-rw-r--r--src/naming_screen.c348
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;
+}