diff options
-rw-r--r-- | asm/party_menu.s | 2 | ||||
-rw-r--r-- | asm/player_pc.s | 1906 | ||||
-rw-r--r-- | asm/pokenav.s | 2 | ||||
-rw-r--r-- | data/player_pc.s | 10 | ||||
-rw-r--r-- | src/player_pc.c | 510 |
5 files changed, 326 insertions, 2104 deletions
diff --git a/asm/party_menu.s b/asm/party_menu.s index b71804617..1ee1fb8d1 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -15413,7 +15413,7 @@ sub_81B8448: @ 81B8448 str r0, [sp] ldr r0, =sub_81B1370 str r0, [sp, 0x4] - ldr r0, =sub_816BB28 + ldr r0, =Mailbox_ReturnToMailListAfterDeposit str r0, [sp, 0x8] movs r0, 0 movs r1, 0 diff --git a/asm/player_pc.s b/asm/player_pc.s index 8c8bde42d..47e56d5f2 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -5,1906 +5,6 @@ .text - .equ gPcItemMenuOptionOrder, 0x0203BCB0 - .equ gPcItemMenuOptionsNum, 0x0203BCB4 - -// thumb_func_start NewGameInitPCItems -//NewGameInitPCItems: @ 816ADF4 -// push {r4-r6,lr} -// movs r4, 0 -// ldr r0, =gSaveBlock1Ptr -// ldr r0, [r0] -// movs r1, 0x93 -// lsls r1, 3 -// adds r0, r1 -// movs r1, 0x32 -// bl ClearItemSlots -// ldr r1, =gUnknown_085DFEFC -// ldrh r0, [r1] -// cmp r0, 0 -// beq _0816AE48 -// ldrh r0, [r1, 0x2] -// cmp r0, 0 -// beq _0816AE48 -// adds r5, r1, 0 -// adds r6, r5, 0x2 -//_0816AE1A: -// lsls r1, r4, 2 -// adds r0, r1, r5 -// ldrh r0, [r0] -// adds r1, r6 -// ldrh r1, [r1] -// bl AddPCItem -// lsls r0, 24 -// lsrs r0, 24 -// cmp r0, 0x1 -// bne _0816AE48 -// adds r0, r4, 0x1 -// lsls r0, 24 -// lsrs r4, r0, 24 -// lsls r1, r4, 2 -// adds r0, r1, r5 -// ldrh r0, [r0] -// cmp r0, 0 -// beq _0816AE48 -// adds r0, r1, r6 -// ldrh r0, [r0] -// cmp r0, 0 -// bne _0816AE1A -//_0816AE48: -// pop {r4-r6} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end NewGameInitPCItems - -// thumb_func_start sub_816AE58 -//sub_816AE58: @ 816AE58 -// push {lr} -// ldr r1, =gPcItemMenuOptionOrder -// ldr r0, =gUnknown_085DFED4 -// str r0, [r1] -// ldr r1, =gPcItemMenuOptionsNum -// movs r0, 0x4 -// strb r0, [r1] -// ldr r0, =TaskDummy -// movs r1, 0 -// bl CreateTask -// lsls r0, 24 -// lsrs r0, 24 -// ldr r1, =gText_WhatWouldYouLike -// ldr r2, =InitPlayerPCMenu -// bl DisplayItemMessageOnField -// pop {r0} -// bx r0 -// .pool -// thumb_func_end sub_816AE58 - -// thumb_func_start sub_816AE98 -//sub_816AE98: @ 816AE98 -// push {lr} -// ldr r1, =gPcItemMenuOptionOrder -// ldr r0, =gUnknown_085DFED8 -// str r0, [r1] -// ldr r1, =gPcItemMenuOptionsNum -// movs r0, 0x3 -// strb r0, [r1] -// ldr r0, =TaskDummy -// movs r1, 0 -// bl CreateTask -// lsls r0, 24 -// lsrs r0, 24 -// ldr r1, =gText_WhatWouldYouLike -// ldr r2, =InitPlayerPCMenu -// bl DisplayItemMessageOnField -// pop {r0} -// bx r0 -// .pool -// thumb_func_end sub_816AE98 - -// thumb_func_start InitPlayerPCMenu -//InitPlayerPCMenu: @ 816AED8 -// push {r4-r7,lr} -// mov r7, r8 -// push {r7} -// sub sp, 0x8 -// lsls r0, 24 -// lsrs r7, r0, 24 -// lsls r0, r7, 2 -// adds r0, r7 -// lsls r0, 3 -// ldr r1, =gTasks + 0x8 -// adds r6, r0, r1 -// ldr r0, =gPcItemMenuOptionsNum -// ldrb r1, [r0] -// mov r8, r0 -// cmp r1, 0x3 -// bne _0816AF0C -// ldr r0, =gUnknown_085DFF24 -// ldr r1, [r0, 0x4] -// ldr r0, [r0] -// b _0816AF12 -// .pool -//_0816AF0C: -// ldr r0, =gUnknown_085DFF24 -// ldr r1, [r0, 0xC] -// ldr r0, [r0, 0x8] -//_0816AF12: -// str r0, [sp] -// str r1, [sp, 0x4] -// ldr r5, =gUnknown_085DFEB4 -// ldr r4, =gPcItemMenuOptionOrder -// ldr r1, [r4] -// mov r0, r8 -// ldrb r2, [r0] -// adds r0, r5, 0 -// bl sub_81DB3D8 -// lsls r0, 24 -// ldr r2, =0x00ffffff -// ldr r1, [sp] -// ands r1, r2 -// orrs r1, r0 -// str r1, [sp] -// mov r0, sp -// bl AddWindow -// strh r0, [r6, 0x8] -// lsls r0, 24 -// lsrs r0, 24 -// movs r1, 0 -// bl SetStandardWindowBorderStyle -// ldrb r0, [r6, 0x8] -// mov r2, r8 -// ldrb r1, [r2] -// ldr r3, [r4] -// adds r2, r5, 0 -// bl sub_81995E4 -// ldrb r0, [r6, 0x8] -// mov r2, r8 -// ldrb r1, [r2] -// movs r2, 0 -// bl InitMenuInUpperLeftCornerPlaySoundWhenAPressed -// movs r0, 0 -// bl schedule_bg_copy_tilemap_to_vram -// ldr r1, =gTasks -// lsls r0, r7, 2 -// adds r0, r7 -// lsls r0, 3 -// adds r0, r1 -// ldr r1, =sub_816AF98 -// str r1, [r0] -// add sp, 0x8 -// pop {r3} -// mov r8, r3 -// pop {r4-r7} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end InitPlayerPCMenu - -// thumb_func_start PlayerPCProcessMenuInput -//PlayerPCProcessMenuInput: @ 816AF98 -// push {r4-r6,lr} -// lsls r0, 24 -// lsrs r6, r0, 24 -// lsls r0, r6, 2 -// adds r0, r6 -// lsls r0, 3 -// ldr r1, =gTasks + 0x8 -// adds r4, r0, r1 -// ldr r0, =gPcItemMenuOptionsNum -// ldrb r0, [r0] -// cmp r0, 0x3 -// bls _0816AFC0 -// bl ProcessMenuInput -// b _0816AFC4 -// .pool -//_0816AFC0: -// bl ProcessMenuInputNoWrapAround -//_0816AFC4: -// lsls r0, 24 -// lsrs r0, 24 -// lsls r0, 24 -// asrs r5, r0, 24 -// movs r0, 0x2 -// negs r0, r0 -// cmp r5, r0 -// beq _0816B04C -// adds r0, 0x1 -// cmp r5, r0 -// bne _0816B014 -// movs r0, 0x5 -// bl PlaySE -// ldrb r0, [r4, 0x8] -// movs r1, 0 -// bl sub_8198070 -// ldrb r0, [r4, 0x8] -// bl ClearWindowTilemap -// ldrb r0, [r4, 0x8] -// bl RemoveWindow -// movs r0, 0 -// bl schedule_bg_copy_tilemap_to_vram -// ldr r1, =gTasks -// lsls r0, r6, 2 -// adds r0, r6 -// lsls r0, 3 -// adds r0, r1 -// ldr r1, =PlayerPC_TurnOff -// str r1, [r0] -// b _0816B04C -// .pool -//_0816B014: -// ldrb r0, [r4, 0x8] -// movs r1, 0 -// bl sub_8198070 -// ldrb r0, [r4, 0x8] -// bl ClearWindowTilemap -// ldrb r0, [r4, 0x8] -// bl RemoveWindow -// movs r0, 0 -// bl schedule_bg_copy_tilemap_to_vram -// ldr r0, =gTasks -// lsls r1, r6, 2 -// adds r1, r6 -// lsls r1, 3 -// adds r1, r0 -// ldr r2, =sPlayerPCMenuActions -// ldr r0, =gPcItemMenuOptionOrder -// ldr r0, [r0] -// adds r0, r5 -// ldrb r0, [r0] -// lsls r0, 3 -// adds r2, 0x4 -// adds r0, r2 -// ldr r0, [r0] -// str r0, [r1] -//_0816B04C: -// pop {r4-r6} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end PlayerPCProcessMenuInput - -// thumb_func_start ReshowPlayerPC -//ReshowPlayerPC: @ 816B060 -// push {lr} -// lsls r0, 24 -// lsrs r0, 24 -// ldr r1, =gText_WhatWouldYouLike -// ldr r2, =InitPlayerPCMenu -// bl DisplayItemMessageOnField -// pop {r0} -// bx r0 -// .pool -// thumb_func_end ReshowPlayerPC - -// thumb_func_start PlayerPC_ItemStorage -//PlayerPC_ItemStorage: @ 816B07C -// push {r4,lr} -// adds r4, r0, 0 -// lsls r4, 24 -// lsrs r4, 24 -// adds r0, r4, 0 -// movs r1, 0 -// bl InitItemStorageMenu -// ldr r1, =gTasks -// lsls r0, r4, 2 -// adds r0, r4 -// lsls r0, 3 -// adds r0, r1 -// ldr r1, =ItemStorageMenuProcessInput -// str r1, [r0] -// pop {r4} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end PlayerPC_ItemStorage - -// thumb_func_start PlayerPC_Mailbox -//PlayerPC_Mailbox: @ 816B0A8 -// push {r4-r6,lr} -// lsls r0, 24 -// lsrs r4, r0, 24 -// adds r6, r4, 0 -// bl GetMailboxMailCount -// ldr r5, =gUnknown_0203BCB8 -// movs r1, 0 -// strb r0, [r5, 0x5] -// lsls r0, 24 -// cmp r0, 0 -// bne _0816B0D8 -// ldr r1, =gText_NoMailHere -// ldr r2, =ReshowPlayerPC -// adds r0, r4, 0 -// bl DisplayItemMessageOnField -// b _0816B12A -// .pool -//_0816B0D8: -// strh r1, [r5] -// strh r1, [r5, 0x2] -// movs r0, 0xFF -// strb r0, [r5, 0x9] -// bl Mailbox_UpdateMailList -// adds r0, r4, 0 -// bl ItemStorage_SetItemAndMailCount -// ldrb r0, [r5, 0x5] -// bl sub_81D1C44 -// lsls r0, 24 -// lsrs r0, 24 -// cmp r0, 0x1 -// bne _0816B120 -// movs r0, 0 -// movs r1, 0 -// bl sub_8197434 -// adds r0, r4, 0 -// bl Mailbox_DrawMailboxMenu -// ldr r0, =gTasks -// lsls r1, r4, 2 -// adds r1, r4 -// lsls r1, 3 -// adds r1, r0 -// ldr r0, =Mailbox_ProcessInput -// str r0, [r1] -// b _0816B12A -// .pool -//_0816B120: -// ldr r1, =gText_NoMailHere -// ldr r2, =ReshowPlayerPC -// adds r0, r6, 0 -// bl DisplayItemMessageOnField -//_0816B12A: -// pop {r4-r6} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end PlayerPC_Mailbox - -// thumb_func_start PlayerPC_Decoration -//PlayerPC_Decoration: @ 816B138 -// push {lr} -// lsls r0, 24 -// lsrs r0, 24 -// bl sub_8126B2C -// pop {r0} -// bx r0 -// thumb_func_end PlayerPC_Decoration - -// thumb_func_start PlayerPC_TurnOff -//PlayerPC_TurnOff: @ 816B148 -// push {r4,lr} -// lsls r0, 24 -// lsrs r4, r0, 24 -// ldr r0, =gPcItemMenuOptionsNum -// ldrb r0, [r0] -// cmp r0, 0x4 -// bne _0816B180 -// ldr r0, =gSaveBlock2Ptr -// ldr r0, [r0] -// ldrb r0, [r0, 0x8] -// cmp r0, 0 -// bne _0816B174 -// ldr r0, =LittlerootTown_BrendansHouse_2F_EventScript_1F863F -// bl ScriptContext1_SetupScript -// b _0816B184 -// .pool -//_0816B174: -// ldr r0, =LittlerootTown_MaysHouse_2F_EventScript_1F958F -// bl ScriptContext1_SetupScript -// b _0816B184 -// .pool -//_0816B180: -// bl EnableBothScriptContexts -//_0816B184: -// adds r0, r4, 0 -// bl DestroyTask -// pop {r4} -// pop {r0} -// bx r0 -// thumb_func_end PlayerPC_TurnOff - -// thumb_func_start InitItemStorageMenu -//InitItemStorageMenu: @ 816B190 -// push {r4-r6,lr} -// sub sp, 0x8 -// adds r5, r1, 0 -// lsls r0, 24 -// lsrs r0, 24 -// lsls r5, 24 -// lsrs r5, 24 -// lsls r4, r0, 2 -// adds r4, r0 -// lsls r4, 3 -// ldr r0, =gTasks + 0x8 -// adds r4, r0 -// ldr r0, =gUnknown_085DFF24 -// ldr r1, [r0, 0x14] -// ldr r0, [r0, 0x10] -// str r0, [sp] -// str r1, [sp, 0x4] -// ldr r6, =gPCText_ItemPCOptionsText -// adds r0, r6, 0 -// movs r1, 0x4 -// bl GetMaxWidthInMenuTable -// lsls r0, 24 -// ldr r2, =0x00ffffff -// ldr r1, [sp] -// ands r1, r2 -// orrs r1, r0 -// str r1, [sp] -// mov r0, sp -// bl AddWindow -// strh r0, [r4, 0x8] -// lsls r0, 24 -// lsrs r0, 24 -// movs r1, 0 -// bl SetStandardWindowBorderStyle -// ldrb r0, [r4, 0x8] -// movs r1, 0x4 -// adds r2, r6, 0 -// bl PrintMenuTable -// ldrb r0, [r4, 0x8] -// movs r1, 0x4 -// adds r2, r5, 0 -// bl InitMenuInUpperLeftCornerPlaySoundWhenAPressed -// movs r0, 0 -// bl schedule_bg_copy_tilemap_to_vram -// ldr r0, =gPCText_OptionDescList -// lsls r5, 2 -// adds r5, r0 -// ldr r0, [r5] -// bl sub_816B21C -// add sp, 0x8 -// pop {r4-r6} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end InitItemStorageMenu - -// thumb_func_start sub_816B21C -//sub_816B21C: @ 816B21C -// push {r4,lr} -// sub sp, 0xC -// adds r4, r0, 0 -// movs r0, 0 -// movs r1, 0 -// bl NewMenuHelpers_DrawDialogueFrame -// movs r0, 0x1 -// str r0, [sp] -// movs r0, 0 -// str r0, [sp, 0x4] -// str r0, [sp, 0x8] -// movs r1, 0x1 -// adds r2, r4, 0 -// movs r3, 0 -// bl PrintTextOnWindow -// add sp, 0xC -// pop {r4} -// pop {r0} -// bx r0 -// thumb_func_end sub_816B21C - -// thumb_func_start ItemStorageMenuProcessInput -//ItemStorageMenuProcessInput: @ 816B248 -// push {r4-r6,lr} -// lsls r0, 24 -// lsrs r6, r0, 24 -// bl GetMenuCursorPos -// lsls r0, 24 -// lsrs r5, r0, 24 -// bl ProcessMenuInput -// adds r4, r0, 0 -// lsls r4, 24 -// lsrs r4, 24 -// bl GetMenuCursorPos -// lsls r0, 24 -// lsrs r2, r0, 24 -// lsls r4, 24 -// asrs r4, 24 -// movs r0, 0x2 -// negs r0, r0 -// cmp r4, r0 -// beq _0816B298 -// adds r0, 0x1 -// cmp r4, r0 -// beq _0816B2B4 -// movs r0, 0x5 -// bl PlaySE -// ldr r0, =gPCText_ItemPCOptionsText -// lsls r1, r4, 3 -// adds r0, 0x4 -// adds r1, r0 -// ldr r1, [r1] -// adds r0, r6, 0 -// bl _call_via_r1 -// b _0816B2C0 -// .pool -//_0816B298: -// lsls r1, r5, 24 -// lsls r0, r2, 24 -// asrs r2, r0, 24 -// cmp r1, r0 -// beq _0816B2C0 -// ldr r0, =gPCText_OptionDescList -// lsls r1, r2, 2 -// adds r1, r0 -// ldr r0, [r1] -// bl ItemStorageMenuPrint -// b _0816B2C0 -// .pool -//_0816B2B4: -// movs r0, 0x5 -// bl PlaySE -// adds r0, r6, 0 -// bl ItemStorage_Exit -//_0816B2C0: -// pop {r4-r6} -// pop {r0} -// bx r0 -// thumb_func_end ItemStorageMenuProcessInput - -// thumb_func_start ItemStorage_Deposit -//ItemStorage_Deposit: @ 816B2C8 -// push {lr} -// lsls r0, 24 -// lsrs r0, 24 -// ldr r2, =gTasks -// lsls r1, r0, 2 -// adds r1, r0 -// lsls r1, 3 -// adds r1, r2 -// ldr r0, =sub_816B2F0 -// str r0, [r1] -// movs r0, 0x1 -// movs r1, 0 -// bl FadeScreen -// pop {r0} -// bx r0 -// .pool -// thumb_func_end ItemStorage_Deposit -// -// thumb_func_start sub_816B2F0 -//sub_816B2F0: @ 816B2F0 -// push {r4,lr} -// lsls r0, 24 -// lsrs r4, r0, 24 -// ldr r0, =gPaletteFade -// ldrb r1, [r0, 0x7] -// movs r0, 0x80 -// ands r0, r1 -// cmp r0, 0 -// bne _0816B310 -// bl overworld_free_bg_tilemaps -// bl sub_81AAC14 -// adds r0, r4, 0 -// bl DestroyTask -//_0816B310: -// pop {r4} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end sub_816B2F0 - -// thumb_func_start sub_816B31C -//sub_816B31C: @ 816B31C -// push {lr} -// ldr r0, =gFieldCallback -// ldr r1, =mapldr_080EBC0C -// str r1, [r0] -// ldr r0, =CB2_ReturnToField -// bl SetMainCallback2 -// pop {r0} -// bx r0 -// .pool -// thumb_func_end sub_816B31C -// -// thumb_func_start mapldr_080EBC0C -//mapldr_080EBC0C: @ 816B33C -// push {lr} -// bl sub_81973A4 -// movs r0, 0 -// movs r1, 0x1 -// bl NewMenuHelpers_DrawDialogueFrame -// ldr r0, =ItemStorage_HandleReturnToProcessInput -// movs r1, 0 -// bl CreateTask -// lsls r0, 24 -// lsrs r0, 24 -// movs r1, 0x1 -// bl InitItemStorageMenu -// bl pal_fill_black -// pop {r0} -// bx r0 -// .pool -// thumb_func_end mapldr_080EBC0C -// -// thumb_func_start ItemStorage_HandleReturnToProcessInput -//ItemStorage_HandleReturnToProcessInput: @ 816B368 -// push {r4,lr} -// lsls r0, 24 -// lsrs r4, r0, 24 -// bl sub_80ABDFC -// lsls r0, 24 -// lsrs r0, 24 -// cmp r0, 0x1 -// bne _0816B388 -// ldr r0, =gTasks -// lsls r1, r4, 2 -// adds r1, r4 -// lsls r1, 3 -// adds r1, r0 -// ldr r0, =ItemStorageMenuProcessInput -// str r0, [r1] -//_0816B388: -// pop {r4} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end ItemStorage_HandleReturnToProcessInput - -// thumb_func_start ItemStorage_Withdraw -//ItemStorage_Withdraw: @ 816B398 -// push {r4,r5,lr} -// lsls r0, 24 -// lsrs r5, r0, 24 -// lsls r4, r5, 2 -// adds r4, r5 -// lsls r4, 3 -// ldr r0, =gTasks + 0x8 -// adds r4, r0 -// bl sub_80D6CE4 -// lsls r0, 24 -// lsrs r0, 24 -// strh r0, [r4, 0x2] -// cmp r0, 0 -// beq _0816B3C4 -// adds r0, r5, 0 -// movs r1, 0 -// bl sub_816B430 -// b _0816B3D4 -// .pool -//_0816B3C4: -// adds r0, r5, 0 -// bl sub_816B4DC -// ldr r1, =gText_NoItems -// ldr r2, =PlayerPC_ItemStorage -// adds r0, r5, 0 -// bl DisplayItemMessageOnField -//_0816B3D4: -// pop {r4,r5} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end ItemStorage_Withdraw -// -// thumb_func_start ItemStorage_Toss -//ItemStorage_Toss: @ 816B3E4 -// push {r4,r5,lr} -// lsls r0, 24 -// lsrs r5, r0, 24 -// lsls r4, r5, 2 -// adds r4, r5 -// lsls r4, 3 -// ldr r0, =gTasks + 0x8 -// adds r4, r0 -// bl sub_80D6CE4 -// lsls r0, 24 -// lsrs r0, 24 -// strh r0, [r4, 0x2] -// cmp r0, 0 -// beq _0816B410 -// adds r0, r5, 0 -// movs r1, 0x1 -// bl sub_816B430 -// b _0816B420 -// .pool -//_0816B410: -// adds r0, r5, 0 -// bl sub_816B4DC -// ldr r1, =gText_NoItems -// ldr r2, =PlayerPC_ItemStorage -// adds r0, r5, 0 -// bl DisplayItemMessageOnField -//_0816B420: -// pop {r4,r5} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end ItemStorage_Toss - -// thumb_func_start sub_816B430 -//sub_816B430: @ 816B430 -// push {r4-r6,lr} -// adds r4, r0, 0 -// lsls r4, 24 -// lsrs r4, 24 -// lsls r1, 24 -// lsrs r1, 24 -// lsls r5, r4, 2 -// adds r5, r4 -// lsls r5, 3 -// ldr r6, =gTasks + 0x8 -// adds r0, r5, r6 -// strh r1, [r0, 0x6] -// adds r0, r4, 0 -// bl sub_816B4DC -// ldr r1, =gUnknown_0203BCB8 -// movs r0, 0 -// strh r0, [r1] -// strh r0, [r1, 0x2] -// movs r0, 0xFF -// strb r0, [r1, 0x9] -// adds r0, r4, 0 -// bl ItemStorage_SetItemAndMailCount -// bl sub_816BC14 -// bl gpu_pal_allocator_reset__manage_upper_four -// bl LoadListMenuArrowsGfx -// ldr r0, =gUnknown_0203BCC4 -// ldr r0, [r0] -// movs r1, 0xCD -// lsls r1, 3 -// adds r0, r1 -// movs r1, 0x7 -// bl sub_8122344 -// movs r0, 0 -// movs r1, 0 -// bl sub_8197434 -// subs r6, 0x8 -// adds r5, r6 -// ldr r0, =sub_816C158 -// str r0, [r5] -// pop {r4-r6} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end sub_816B430 - -// thumb_func_start ItemStorage_Exit -//ItemStorage_Exit: @ 816B4A4 -// push {r4,lr} -// adds r4, r0, 0 -// lsls r4, 24 -// lsrs r4, 24 -// adds r0, r4, 0 -// bl sub_816B4DC -// adds r0, r4, 0 -// bl ReshowPlayerPC -// pop {r4} -// pop {r0} -// bx r0 -// thumb_func_end ItemStorage_Exit - -// thumb_func_start ItemStorage_SetItemAndMailCount -//ItemStorage_SetItemAndMailCount: @ 816B4C0 -// push {lr} -// ldr r1, =gUnknown_0203BCB8 -// ldrb r0, [r1, 0x5] -// cmp r0, 0x7 -// bls _0816B4D4 -// movs r0, 0x8 -// b _0816B4D6 -// .pool -//_0816B4D4: -// adds r0, 0x1 -//_0816B4D6: -// strb r0, [r1, 0x4] -// pop {r0} -// bx r0 -// thumb_func_end ItemStorage_SetItemAndMailCount - -// thumb_func_start sub_816B4DC -//sub_816B4DC: @ 816B4DC -// push {r4,lr} -// lsls r0, 24 -// lsrs r0, 24 -// lsls r4, r0, 2 -// adds r4, r0 -// lsls r4, 3 -// ldr r0, =gTasks + 0x8 -// adds r4, r0 -// ldrb r0, [r4, 0x8] -// movs r1, 0 -// bl sub_8198070 -// ldrb r0, [r4, 0x8] -// bl ClearWindowTilemap -// ldrb r0, [r4, 0x8] -// bl RemoveWindow -// movs r0, 0 -// bl schedule_bg_copy_tilemap_to_vram -// pop {r4} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end sub_816B4DC - -// thumb_func_start GetMailboxMailCount -//GetMailboxMailCount: @ 816B510 -// push {r4,lr} -// movs r2, 0 -// movs r1, 0x6 -// ldr r0, =gSaveBlock1Ptr -// ldr r3, [r0] -// movs r4, 0xB0 -// lsls r4, 6 -//_0816B51E: -// lsls r0, r1, 3 -// adds r0, r1 -// lsls r0, 2 -// adds r0, r3, r0 -// adds r0, r4 -// ldrh r0, [r0] -// cmp r0, 0 -// beq _0816B534 -// adds r0, r2, 0x1 -// lsls r0, 24 -// lsrs r2, r0, 24 -//_0816B534: -// adds r0, r1, 0x1 -// lsls r0, 24 -// lsrs r1, r0, 24 -// cmp r1, 0xF -// bls _0816B51E -// adds r0, r2, 0 -// pop {r4} -// pop {r1} -// bx r1 -// .pool -// thumb_func_end GetMailboxMailCount - -// thumb_func_start Mailbox_UpdateMailList -//Mailbox_UpdateMailList: @ 816B54C -// push {r4-r7,lr} -// mov r7, r10 -// mov r6, r9 -// mov r5, r8 -// push {r5-r7} -// sub sp, 0x24 -// movs r2, 0x6 -//_0816B55A: -// adds r1, r2, 0x1 -// lsls r0, r1, 24 -// lsrs r4, r0, 24 -// mov r8, r1 -// cmp r4, 0xF -// bhi _0816B5D4 -// ldr r0, =gSaveBlock1Ptr -// mov r10, r0 -// lsls r0, r2, 3 -// adds r0, r2 -// lsls r0, 2 -// mov r12, r0 -// ldr r6, =0x00002be0 -//_0816B574: -// mov r1, r10 -// ldr r1, [r1] -// mov r9, r1 -// mov r2, r9 -// add r2, r12 -// movs r3, 0xB0 -// lsls r3, 6 -// adds r0, r2, r3 -// ldrh r0, [r0] -// cmp r0, 0 -// bne _0816B5CA -// adds r2, r6 -// mov r1, sp -// adds r0, r2, 0 -// ldm r0!, {r3,r5,r7} -// stm r1!, {r3,r5,r7} -// ldm r0!, {r3,r5,r7} -// stm r1!, {r3,r5,r7} -// ldm r0!, {r3,r5,r7} -// stm r1!, {r3,r5,r7} -// lsls r3, r4, 3 -// adds r3, r4 -// lsls r3, 2 -// mov r5, r9 -// adds r0, r5, r3 -// adds r0, r6 -// ldm r0!, {r1,r5,r7} -// stm r2!, {r1,r5,r7} -// ldm r0!, {r1,r5,r7} -// stm r2!, {r1,r5,r7} -// ldm r0!, {r1,r5,r7} -// stm r2!, {r1,r5,r7} -// mov r7, r10 -// ldr r1, [r7] -// adds r1, r3 -// adds r1, r6 -// mov r0, sp -// ldm r0!, {r2,r3,r5} -// stm r1!, {r2,r3,r5} -// ldm r0!, {r2,r3,r7} -// stm r1!, {r2,r3,r7} -// ldm r0!, {r2,r5,r7} -// stm r1!, {r2,r5,r7} -//_0816B5CA: -// adds r0, r4, 0x1 -// lsls r0, 24 -// lsrs r4, r0, 24 -// cmp r4, 0xF -// bls _0816B574 -//_0816B5D4: -// mov r3, r8 -// lsls r0, r3, 24 -// lsrs r2, r0, 24 -// cmp r2, 0xE -// bls _0816B55A -// add sp, 0x24 -// pop {r3-r5} -// mov r8, r3 -// mov r9, r4 -// mov r10, r5 -// pop {r4-r7} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end Mailbox_UpdateMailList - -// thumb_func_start Mailbox_DrawMailboxMenu -//Mailbox_DrawMailboxMenu: @ 816B5F8 -// push {r4-r6,lr} -// sub sp, 0xC -// adds r5, r0, 0 -// lsls r5, 24 -// lsrs r5, 24 -// movs r0, 0 -// bl sub_81D1C84 -// adds r4, r0, 0 -// lsls r4, 24 -// lsrs r4, 24 -// movs r0, 0x1 -// bl sub_81D1C84 -// ldr r6, =gText_Mailbox -// movs r0, 0x1 -// adds r1, r6, 0 -// movs r2, 0x40 -// bl GetStringCenterAlignXOffset -// adds r3, r0, 0 -// lsls r3, 24 -// lsrs r3, 24 -// movs r0, 0x1 -// str r0, [sp] -// movs r0, 0 -// str r0, [sp, 0x4] -// str r0, [sp, 0x8] -// adds r0, r4, 0 -// movs r1, 0x1 -// adds r2, r6, 0 -// bl PrintTextOnWindow -// movs r0, 0 -// bl schedule_bg_copy_tilemap_to_vram -// ldr r4, =gUnknown_0203BCB8 -// adds r0, r4, 0 -// bl sub_81D1DC0 -// ldr r2, =gTasks -// lsls r1, r5, 2 -// adds r1, r5 -// lsls r1, 3 -// adds r1, r2 -// lsls r0, 24 -// lsrs r0, 24 -// strh r0, [r1, 0x12] -// adds r0, r4, 0 -// bl sub_81D1E90 -// add sp, 0xC -// pop {r4-r6} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end Mailbox_DrawMailboxMenu - -// thumb_func_start Mailbox_ProcessInput -//Mailbox_ProcessInput: @ 816B674 -// push {r4-r7,lr} -// mov r7, r10 -// mov r6, r9 -// mov r5, r8 -// push {r5-r7} -// lsls r0, 24 -// lsrs r5, r0, 24 -// lsls r0, r5, 2 -// adds r0, r5 -// lsls r0, 3 -// mov r9, r0 -// ldr r0, =gTasks + 0x8 -// mov r10, r0 -// mov r4, r9 -// add r4, r10 -// ldr r0, =gPaletteFade -// ldrb r1, [r0, 0x7] -// movs r0, 0x80 -// ands r0, r1 -// cmp r0, 0 -// bne _0816B71E -// ldrb r0, [r4, 0xA] -// bl ListMenuHandleInputGetItemId -// adds r6, r0, 0 -// ldrb r0, [r4, 0xA] -// ldr r7, =gUnknown_0203BCBA -// subs r1, r7, 0x2 -// mov r8, r1 -// adds r1, r7, 0 -// mov r2, r8 -// bl sub_81AE860 -// movs r0, 0x2 -// negs r0, r0 -// cmp r6, r0 -// beq _0816B6D4 -// adds r0, 0x1 -// cmp r6, r0 -// bne _0816B6EA -// b _0816B71E -// .pool -//_0816B6D4: -// movs r0, 0x5 -// bl PlaySE -// mov r1, r8 -// ldrb r0, [r1, 0x9] -// bl RemoveScrollIndicatorArrowPair -// adds r0, r5, 0 -// bl sub_816B798 -// b _0816B71E -//_0816B6EA: -// movs r0, 0x5 -// bl PlaySE -// movs r0, 0 -// bl sub_81D1D04 -// movs r0, 0x1 -// bl sub_81D1D04 -// ldrb r0, [r4, 0xA] -// adds r1, r7, 0 -// mov r2, r8 -// bl sub_81AE6C8 -// movs r0, 0 -// bl schedule_bg_copy_tilemap_to_vram -// mov r1, r8 -// ldrb r0, [r1, 0x9] -// bl RemoveScrollIndicatorArrowPair -// mov r0, r10 -// subs r0, 0x8 -// add r0, r9 -// ldr r1, =sub_816B730 -// str r1, [r0] -//_0816B71E: -// pop {r3-r5} -// mov r8, r3 -// mov r9, r4 -// mov r10, r5 -// pop {r4-r7} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end Mailbox_ProcessInput - -// thumb_func_start sub_816B730 -//sub_816B730: @ 816B730 -// push {r4,r5,lr} -// adds r4, r0, 0 -// lsls r4, 24 -// lsrs r4, 24 -// ldr r5, =gStringVar1 -// ldr r2, =gSaveBlock1Ptr -// ldr r1, =gUnknown_0203BCB8 -// ldrh r0, [r1] -// adds r0, 0x6 -// ldrh r1, [r1, 0x2] -// adds r0, r1 -// lsls r1, r0, 3 -// adds r1, r0 -// lsls r1, 2 -// ldr r0, [r2] -// adds r1, r0 -// ldr r0, =0x00002bf2 -// adds r1, r0 -// adds r0, r5, 0 -// bl StringCopy -// adds r0, r5, 0 -// movs r1, 0 -// bl sub_81DB554 -// ldr r5, =gStringVar4 -// ldr r1, =gText_WhatToDoWithVar1sMail -// adds r0, r5, 0 -// bl StringExpandPlaceholders -// ldr r2, =sub_816B7DC -// adds r0, r4, 0 -// adds r1, r5, 0 -// bl DisplayItemMessageOnField -// pop {r4,r5} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end sub_816B730 - -// thumb_func_start sub_816B798 -//sub_816B798: @ 816B798 -// push {r4,r5,lr} -// adds r5, r0, 0 -// lsls r5, 24 -// lsrs r5, 24 -// lsls r4, r5, 2 -// adds r4, r5 -// lsls r4, 3 -// ldr r0, =gTasks + 0x8 -// adds r4, r0 -// movs r0, 0 -// bl sub_81D1D04 -// movs r0, 0x1 -// bl sub_81D1D04 -// ldrb r0, [r4, 0xA] -// movs r1, 0 -// movs r2, 0 -// bl sub_81AE6C8 -// movs r0, 0 -// bl schedule_bg_copy_tilemap_to_vram -// bl sub_81D1EC0 -// adds r0, r5, 0 -// bl ReshowPlayerPC -// pop {r4,r5} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end sub_816B798 - -// thumb_func_start sub_816B7DC -//sub_816B7DC: @ 816B7DC -// push {r4,r5,lr} -// adds r5, r0, 0 -// lsls r5, 24 -// lsrs r5, 24 -// movs r0, 0x2 -// bl sub_81D1C84 -// adds r4, r0, 0 -// lsls r4, 24 -// lsrs r4, 24 -// ldr r2, =gUnknown_085DFF04 -// adds r0, r4, 0 -// movs r1, 0x4 -// bl PrintMenuTable -// adds r0, r4, 0 -// movs r1, 0x4 -// movs r2, 0 -// bl InitMenuInUpperLeftCornerPlaySoundWhenAPressed -// movs r0, 0 -// bl schedule_bg_copy_tilemap_to_vram -// ldr r1, =gTasks -// lsls r0, r5, 2 -// adds r0, r5 -// lsls r0, 3 -// adds r0, r1 -// ldr r1, =sub_816B82C -// str r1, [r0] -// pop {r4,r5} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end sub_816B7DC - -// thumb_func_start sub_816B82C -//sub_816B82C: @ 816B82C -// push {r4-r6,lr} -// lsls r0, 24 -// lsrs r5, r0, 24 -// adds r6, r5, 0 -// bl ProcessMenuInput_other -// lsls r0, 24 -// asrs r4, r0, 24 -// movs r0, 0x2 -// negs r0, r0 -// cmp r4, r0 -// beq _0816B86E -// adds r0, 0x1 -// cmp r4, r0 -// bne _0816B858 -// movs r0, 0x5 -// bl PlaySE -// adds r0, r5, 0 -// bl sub_816BBD4 -// b _0816B86E -//_0816B858: -// movs r0, 0x5 -// bl PlaySE -// ldr r0, =gUnknown_085DFF04 -// lsls r1, r4, 3 -// adds r0, 0x4 -// adds r1, r0 -// ldr r1, [r1] -// adds r0, r6, 0 -// bl _call_via_r1 -//_0816B86E: -// pop {r4-r6} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end sub_816B82C - -// thumb_func_start sub_816B878 -//sub_816B878: @ 816B878 -// push {r4,lr} -// adds r4, r0, 0 -// lsls r4, 24 -// lsrs r4, 24 -// movs r0, 0x1 -// movs r1, 0 -// bl FadeScreen -// ldr r1, =gTasks -// lsls r0, r4, 2 -// adds r0, r4 -// lsls r0, 3 -// adds r0, r1 -// ldr r1, =sub_816B8A4 -// str r1, [r0] -// pop {r4} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end sub_816B878 -// -// thumb_func_start sub_816B8A4 -//sub_816B8A4: @ 816B8A4 -// push {r4,lr} -// lsls r0, 24 -// lsrs r4, r0, 24 -// ldr r0, =gPaletteFade -// ldrb r1, [r0, 0x7] -// movs r0, 0x80 -// ands r0, r1 -// cmp r0, 0 -// bne _0816B8E6 -// bl sub_81D1EC0 -// bl overworld_free_bg_tilemaps -// ldr r2, =gSaveBlock1Ptr -// ldr r1, =gUnknown_0203BCB8 -// ldrh r0, [r1] -// adds r0, 0x6 -// ldrh r1, [r1, 0x2] -// adds r0, r1 -// lsls r1, r0, 3 -// adds r1, r0 -// lsls r1, 2 -// ldr r0, =0x00002be0 -// adds r1, r0 -// ldr r0, [r2] -// adds r0, r1 -// ldr r1, =sub_816B900 -// movs r2, 0x1 -// bl ReadMail -// adds r0, r4, 0 -// bl DestroyTask -//_0816B8E6: -// pop {r4} -// pop {r0} -// bx r0 -// .pool -// thumb_func_end sub_816B8A4 - -// thumb_func_start sub_816B900 -//sub_816B900: @ 816B900 -// push {lr} -// ldr r0, =gFieldCallback -// ldr r1, =pal_fill_for_maplights_or_black -// str r1, [r0] -// ldr r0, =CB2_ReturnToField -// bl SetMainCallback2 -// pop {r0} -// bx r0 -// .pool -// thumb_func_end sub_816B900 - - thumb_func_start pal_fill_for_maplights_or_black -pal_fill_for_maplights_or_black: @ 816B920 - push {r4,lr} - bl sub_81973A4 - ldr r0, =task00_080EBBDC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gUnknown_0203BCB8 - ldrb r0, [r0, 0x5] - bl sub_81D1C44 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0816B954 - adds r0, r4, 0 - bl Mailbox_DrawMailboxMenu - b _0816B95A - .pool -_0816B954: - adds r0, r4, 0 - bl DestroyTask -_0816B95A: - bl pal_fill_black - pop {r4} - pop {r0} - bx r0 - thumb_func_end pal_fill_for_maplights_or_black - - thumb_func_start task00_080EBBDC -task00_080EBBDC: @ 816B964 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_80ABDFC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0816B984 - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, =Mailbox_ProcessInput - str r0, [r1] -_0816B984: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end task00_080EBBDC - - thumb_func_start sub_816B994 -sub_816B994: @ 816B994 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gText_MessageWillBeLost - ldr r2, =sub_816B9B0 - bl DisplayItemMessageOnField - pop {r0} - bx r0 - .pool - thumb_func_end sub_816B994 - - thumb_func_start sub_816B9B0 -sub_816B9B0: @ 816B9B0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8197930 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_816B9D8 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_816B9B0 - - thumb_func_start sub_816B9D8 -sub_816B9D8: @ 816B9D8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _0816BA04 - cmp r0, r1 - ble _0816BA10 - cmp r0, 0 - beq _0816B9FC - cmp r0, 0x1 - beq _0816BA0A - b _0816BA10 -_0816B9FC: - adds r0, r4, 0 - bl sub_816BA18 - b _0816BA10 -_0816BA04: - movs r0, 0x5 - bl PlaySE -_0816BA0A: - adds r0, r4, 0 - bl sub_816BAAC -_0816BA10: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_816B9D8 - - thumb_func_start sub_816BA18 -sub_816BA18: @ 816BA18 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, =gSaveBlock1Ptr - ldr r4, =gUnknown_0203BCB8 - ldrh r1, [r4] - adds r1, 0x6 - ldrh r0, [r4, 0x2] - adds r1, r0 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x00002be0 - adds r0, r1 - ldr r1, [r2] - adds r5, r1, r0 - ldrh r0, [r5, 0x20] - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - cmp r0, 0 - bne _0816BA68 - ldr r1, =gText_BagIsFull - ldr r2, =sub_816BBD4 - adds r0, r6, 0 - bl DisplayItemMessageOnField - b _0816BA9C - .pool -_0816BA68: - ldr r1, =gText_MailToBagMessageErased - ldr r2, =sub_816BBD4 - adds r0, r6, 0 - bl DisplayItemMessageOnField - adds r0, r5, 0 - bl ClearMailStruct - bl Mailbox_UpdateMailList - ldrb r0, [r4, 0x5] - subs r0, 0x1 - strb r0, [r4, 0x5] - ldrb r1, [r4, 0x5] - ldrb r0, [r4, 0x4] - ldrh r2, [r4, 0x2] - adds r0, r2 - cmp r1, r0 - bge _0816BA96 - cmp r2, 0 - beq _0816BA96 - subs r0, r2, 0x1 - strh r0, [r4, 0x2] -_0816BA96: - adds r0, r6, 0 - bl ItemStorage_SetItemAndMailCount -_0816BA9C: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_816BA18 - - thumb_func_start sub_816BAAC -sub_816BAAC: @ 816BAAC - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_816BBD4 - pop {r0} - bx r0 - thumb_func_end sub_816BAAC - - thumb_func_start sub_816BABC -sub_816BABC: @ 816BABC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl CalculatePlayerPartyCount - lsls r0, 24 - cmp r0, 0 - bne _0816BAD4 - adds r0, r4, 0 - bl sub_816BBB8 - b _0816BAEA -_0816BAD4: - movs r0, 0x1 - movs r1, 0 - bl FadeScreen - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_816BAF8 - str r0, [r1] -_0816BAEA: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_816BABC - - thumb_func_start sub_816BAF8 -sub_816BAF8: @ 816BAF8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0816BB1C - bl sub_81D1EC0 - bl overworld_free_bg_tilemaps - bl sub_81B8448 - adds r0, r4, 0 - bl DestroyTask -_0816BB1C: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_816BAF8 - - thumb_func_start sub_816BB28 -sub_816BB28: @ 816BB28 - push {lr} - ldr r0, =gFieldCallback - ldr r1, =sub_816BB48 - str r1, [r0] - ldr r0, =CB2_ReturnToField - bl SetMainCallback2 - pop {r0} - bx r0 - .pool - thumb_func_end sub_816BB28 - - thumb_func_start sub_816BB48 -sub_816BB48: @ 816BB48 - push {r4-r6,lr} - ldr r0, =task00_080EBBDC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, =gUnknown_0203BCB8 - ldrb r4, [r5, 0x5] - bl GetMailboxMailCount - strb r0, [r5, 0x5] - bl Mailbox_UpdateMailList - ldrb r0, [r5, 0x5] - cmp r4, r0 - beq _0816BB7E - ldrb r1, [r5, 0x5] - ldrb r0, [r5, 0x4] - ldrh r2, [r5, 0x2] - adds r0, r2 - cmp r1, r0 - bge _0816BB7E - cmp r2, 0 - beq _0816BB7E - subs r0, r2, 0x1 - strh r0, [r5, 0x2] -_0816BB7E: - adds r0, r6, 0 - bl ItemStorage_SetItemAndMailCount - bl sub_81973A4 - ldr r0, =gUnknown_0203BCB8 - ldrb r0, [r0, 0x5] - bl sub_81D1C44 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0816BBA8 - adds r0, r6, 0 - bl Mailbox_DrawMailboxMenu - b _0816BBAE - .pool -_0816BBA8: - adds r0, r6, 0 - bl DestroyTask -_0816BBAE: - bl pal_fill_black - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_816BB48 - - thumb_func_start sub_816BBB8 -sub_816BBB8: @ 816BBB8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gText_NoPokemon - ldr r2, =sub_816BBD4 - bl DisplayItemMessageOnField - pop {r0} - bx r0 - .pool - thumb_func_end sub_816BBB8 - - thumb_func_start sub_816BBD4 -sub_816BBD4: @ 816BBD4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - bl sub_81D1D04 - movs r0, 0 - movs r1, 0 - bl sub_8197434 - adds r0, r4, 0 - bl Mailbox_DrawMailboxMenu - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =Mailbox_ProcessInput - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_816BBD4 - - thumb_func_start sub_816BC14 -sub_816BC14: @ 816BC14 - push {r4,lr} - ldr r4, =gUnknown_0203BCC4 - movs r0, 0xCE - lsls r0, 3 - bl AllocZeroed - str r0, [r4] - movs r1, 0xCC - lsls r1, 3 - adds r0, r1 - movs r1, 0xFF - movs r2, 0x6 - bl memset - ldr r0, [r4] - ldr r1, =0x00000666 - adds r0, r1 - movs r1, 0xFF - strb r1, [r0] - ldr r0, [r4] - ldr r1, =0x00000667 - adds r0, r1 - movs r1, 0x1 - negs r1, r1 - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_816BC14 - - thumb_func_start sub_816BC58 -sub_816BC58: @ 816BC58 - push {r4,lr} - movs r4, 0 -_0816BC5C: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_816BCC4 - adds r4, 0x1 - cmp r4, 0x5 - bls _0816BC5C - ldr r0, =gUnknown_0203BCC4 - ldr r0, [r0] - bl Free - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_816BC58 - - thumb_func_start sub_816BC7C -sub_816BC7C: @ 816BC7C - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gUnknown_0203BCC4 - movs r3, 0xCC - lsls r3, 3 - adds r1, r2, r3 - ldr r0, [r0] - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0xFF - bne _0816BCB4 - lsls r0, r2, 3 - ldr r1, =gUnknown_085DFF5C - adds r0, r1 - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - movs r2, 0x85 - lsls r2, 2 - movs r1, 0 - movs r3, 0xE - bl SetWindowBorderStyle - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram -_0816BCB4: - ldrb r0, [r4] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_816BC7C - - thumb_func_start sub_816BCC4 -sub_816BCC4: @ 816BCC4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gUnknown_0203BCC4 - movs r2, 0xCC - lsls r2, 3 - adds r0, r2 - ldr r1, [r1] - adds r4, r1, r0 - ldrb r0, [r4] - cmp r0, 0xFF - beq _0816BCF8 - movs r1, 0 - bl sub_8198070 - ldrb r0, [r4] - bl ClearWindowTilemap - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - ldrb r0, [r4] - bl RemoveWindow - movs r0, 0xFF - strb r0, [r4] -_0816BCF8: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_816BCC4 - - thumb_func_start sub_816BD04 -sub_816BD04: @ 816BD04 - push {r4-r6,lr} - movs r6, 0 - ldr r0, =gUnknown_0203BCB8 - ldrb r0, [r0, 0x5] - subs r0, 0x1 - cmp r6, r0 - bge _0816BD58 - ldr r5, =gUnknown_0203BCC4 -_0816BD14: - lsls r4, r6, 1 - adds r4, r6 - lsls r4, 3 - movs r0, 0xCC - lsls r0, 1 - adds r4, r0 - ldr r0, [r5] - adds r0, r4 - ldr r1, =gSaveBlock1Ptr - ldr r1, [r1] - lsls r2, r6, 2 - adds r1, r2 - movs r2, 0x93 - lsls r2, 3 - adds r1, r2 - ldrh r1, [r1] - bl sub_816BDC8 - ldr r0, [r5] - lsls r2, r6, 3 - adds r1, r0, r2 - adds r4, r0, r4 - str r4, [r1] - adds r0, 0x4 - adds r0, r2 - str r6, [r0] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, =gUnknown_0203BCB8 - ldrb r0, [r0, 0x5] - subs r0, 0x1 - cmp r6, r0 - blt _0816BD14 -_0816BD58: - ldr r5, =gUnknown_0203BCC4 - lsls r4, r6, 1 - adds r4, r6 - lsls r4, 3 - movs r3, 0xCC - lsls r3, 1 - adds r4, r3 - ldr r0, [r5] - adds r0, r4 - ldr r1, =gText_Cancel2 - bl StringCopy - ldr r0, [r5] - lsls r2, r6, 3 - adds r1, r0, r2 - adds r4, r0, r4 - str r4, [r1] - adds r0, 0x4 - adds r0, r2 - movs r1, 0x2 - negs r1, r1 - str r1, [r0] - ldr r4, =gMultiuseListMenuTemplate - adds r1, r4, 0 - ldr r0, =gUnknown_085DFF44 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - movs r0, 0 - bl sub_816BC7C - strb r0, [r4, 0x10] - ldr r1, =gUnknown_0203BCB8 - ldrb r0, [r1, 0x5] - strh r0, [r4, 0xC] - ldr r0, [r5] - str r0, [r4] - ldrb r0, [r1, 0x4] - strh r0, [r4, 0xE] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_816BD04 - - thumb_func_start sub_816BDC8 -sub_816BDC8: @ 816BDC8 - push {lr} - adds r2, r0, 0 - lsls r0, r1, 16 - lsrs r0, 16 - adds r1, r2, 0 - bl CopyItemName - pop {r0} - bx r0 - thumb_func_end sub_816BDC8 - - thumb_func_start sub_816BDDC -sub_816BDDC: @ 816BDDC - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x1 - beq _0816BDEE - movs r0, 0x5 - bl PlaySE -_0816BDEE: - ldr r0, =gUnknown_0203BCC4 - ldr r0, [r0] - ldr r1, =0x00000666 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _0816BE38 - bl sub_816C0C8 - movs r0, 0x2 - negs r0, r0 - cmp r4, r0 - beq _0816BE2C - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - lsls r1, r4, 2 - adds r0, r1 - movs r1, 0x93 - lsls r1, 3 - adds r0, r1 - ldrh r0, [r0] - bl sub_816C060 - b _0816BE32 - .pool -_0816BE2C: - ldr r0, =0x0000ffff - bl sub_816C060 -_0816BE32: - adds r0, r4, 0 - bl sub_816BEF0 -_0816BE38: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_816BDDC - thumb_func_start fish4_goto_x5_or_x6 fish4_goto_x5_or_x6: @ 816BE44 push {r4-r6,lr} @@ -2275,8 +375,8 @@ sub_816C140: @ 816C140 .pool thumb_func_end sub_816C140 - thumb_func_start sub_816C158 -sub_816C158: @ 816C158 + thumb_func_start ItemStorage_ProcessInput +ItemStorage_ProcessInput: @ 816C158 push {r4-r7,lr} sub sp, 0xC lsls r0, 24 @@ -2353,7 +453,7 @@ _0816C186: pop {r0} bx r0 .pool - thumb_func_end sub_816C158 + thumb_func_end ItemStorage_ProcessInput thumb_func_start sub_816C228 sub_816C228: @ 816C228 diff --git a/asm/pokenav.s b/asm/pokenav.s index 56bf3d41f..4e54d63d0 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -21780,7 +21780,7 @@ sub_81D1C84: @ 81D1C84 ldr r0, [r0, 0x10] str r0, [sp] str r1, [sp, 0x4] - ldr r0, =gUnknown_085DFF04 + ldr r0, =gMailboxMailOptions movs r1, 0x4 bl GetMaxWidthInMenuTable lsls r0, 24 diff --git a/data/player_pc.s b/data/player_pc.s index ef8a2ba9c..69eacb69b 100644 --- a/data/player_pc.s +++ b/data/player_pc.s @@ -39,11 +39,11 @@ gNewGamePCItems:: @ 85DFEFC .2byte 0x0000, 0x0000 .align 2 -gUnknown_085DFF04:: @ 85DFF04 - .4byte gText_Read, sub_816B878 - .4byte gText_MoveToBag, sub_816B994 - .4byte gText_Give2, sub_816BABC - .4byte gText_Cancel2, sub_816BBD4 +gMailboxMailOptions:: @ 85DFF04 + .4byte gText_Read, Mailbox_DoMailRead + .4byte gText_MoveToBag, Mailbox_MoveToBag + .4byte gText_Give2, Mailbox_Give + .4byte gText_Cancel2, Mailbox_Cancel .align 2 gUnknown_085DFF24:: @ 85DFF24 diff --git a/src/player_pc.c b/src/player_pc.c index aa58f2e32..538556efd 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -9,8 +9,10 @@ #include "item.h" #include "item_menu.h" #include "constants/items.h" +#include "list_menu.h" #include "mail.h" #include "main.h" +#include "malloc.h" #include "menu.h" #include "menu_helpers.h" #include "overworld.h" @@ -23,6 +25,21 @@ #include "task.h" #include "window.h" +struct Struct203BCC4 +{ + struct ListMenuItem unk0[51]; + //u8 filler[0x118]; + u8 unk198[51][0x18]; + //u8 filler2[0x348]; + u8 unk660[6]; + u8 unk666; + s8 unk667; + u32 unk668; + u8 filler3[4]; + +}; + +extern struct Struct203BCC4 *gUnknown_0203BCC4; static EWRAM_DATA u8 *gPcItemMenuOptionOrder = NULL; @@ -32,185 +49,45 @@ extern struct MailboxStruct gUnknown_0203BCB8; #define eMailboxInfo gUnknown_0203BCB8 -struct Struct203BCC4 -{ - u8 filler[0x668]; - u32 unk668; - u8 filler2[4]; - -}; - -extern struct Struct203BCC4 *gUnknown_0203BCC4; - -/*static*/void InitPlayerPCMenu(u8 taskId); -/*static*/void PlayerPCProcessMenuInput(u8 taskId); -/*static*/void InitItemStorageMenu(u8 taskId, u8 var); +/*static*/ void InitPlayerPCMenu(u8 taskId); +/*static*/ void PlayerPCProcessMenuInput(u8 taskId); +/*static*/ void InitItemStorageMenu(u8 taskId, u8 var); /*static*/ void ItemStorageMenuPrint(const u8 *); /*static*/ void ItemStorageMenuProcessInput(u8 taskId); -/* -static void ItemStorage_ProcessInput(u8); -*/ +/*static*/ void ItemStorage_ProcessInput(u8 taskId); /*static*/ void ItemStorage_SetItemAndMailCount(u8); -/* -static void ItemStorage_DoItemAction(u8); -static void ItemStorage_GoBackToPlayerPCMenu(u8); -static void ItemStorage_HandleQuantityRolling(u8); -static void ItemStorage_DoItemWithdraw(u8); -static void ItemStorage_DoItemToss(u8); -static void ItemStorage_HandleRemoveItem(u8); -static void ItemStorage_WaitPressHandleResumeProcessInput(u8); -*/ +/*static*/ void ItemStorage_DoItemWithdraw(u8); +/*static*/ void ItemStorage_DoItemToss(u8); +/*static*/ void ItemStorage_WithdrawToss_Helper(u8 taskId, bool8 toss); + /*static*/ void ItemStorage_HandleReturnToProcessInput(u8); -/* -static void ItemStorage_HandleResumeProcessInput(u8); -static void ItemStorage_DoItemSwap(u8, bool8); -static void ItemStorage_DrawItemList(u8); -static void ItemStorage_PrintItemPcResponse(u16); -static void ItemStorage_DrawBothListAndDescription(u8); -static void ItemStorage_GoBackToItemPCMenu(u8, u8); -static void ItemStorage_LoadPalette(void); -*/ + /*static*/ u8 GetMailboxMailCount(void); /*static*/ void Mailbox_UpdateMailList(void); /*static*/ void Mailbox_DrawMailboxMenu(u8); /*static*/ void Mailbox_ProcessInput(u8); -/* -static void Mailbox_CloseScrollIndicators(void); -static void Mailbox_PrintWhatToDoWithPlayerMailText(u8); -static void Mailbox_TurnOff(u8); -static void Mailbox_PrintMailOptions(u8); -static void Mailbox_MailOptionsProcessInput(u8); -static void Mailbox_FadeAndReadMail(u8); -static void Mailbox_ReturnToFieldFromReadMail(void); -static void Mailbox_DrawYesNoBeforeMove(u8); -static void Mailbox_DoGiveMailPokeMenu(u8); -static void Mailbox_NoPokemonForMail(u8); -static void Mailbox_Cancel(u8); -static void Mailbox_DrawMailMenuAndDoProcessInput(u8); -*/ +/*static*/ void Mailbox_PrintWhatToDoWithPlayerMailText(u8); + /*static*/ void PlayerPC_ItemStorage(u8 taskId); /*static*/ void PlayerPC_Mailbox(u8 taskId); /*static*/ void PlayerPC_Decoration(u8 var); /*static*/ void PlayerPC_TurnOff(u8 taskId); -/* -static void ItemStorage_Withdraw(u8); -static void ItemStorage_Deposit(u8); -static void ItemStorage_Toss(u8); -*/ -/*static*/ void ItemStorage_Exit(u8); -/* -static void ItemStorage_ResumeInputFromYesToss(u8); -static void ItemStorage_ResumeInputFromNoToss(u8); -static void Mailbox_DoMailMoveToBag(u8); -static void Mailbox_ReturnToInputAfterNo(u8); -static void Mailbox_DoMailRead(u8); -static void Mailbox_MoveToBag(u8); -static void Mailbox_Give(u8); -static void Mailbox_Cancel(u8); -*/ -extern const u8 *const gPCText_OptionDescList[]; -/* -static const u8 *const gPCText_OptionDescList[] = -{ - PCText_TakeOutItems, - PCText_StoreItems, - PCText_ThrowAwayItems, - gMenuText_GoBackToPrev -}; -*/ -/*static*/ extern const struct MenuAction sPlayerPCMenuActions[];/* = -{ - { SecretBaseText_ItemStorage, PlayerPC_ItemStorage }, - { gPCText_Mailbox, PlayerPC_Mailbox }, - { SecretBaseText_Decoration, PlayerPC_Decoration }, - { SecretBaseText_TurnOff, PlayerPC_TurnOff } -}; -*/ -/*static*/ extern u8 gBedroomPC_OptionOrder[];/* = -{ - PLAYERPC_MENU_ITEMSTORAGE, - PLAYERPC_MENU_MAILBOX, - PLAYERPC_MENU_DECORATION, - PLAYERPC_MENU_TURNOFF -}; -*/ -/*static*/ extern u8 gPlayerPC_OptionOrder[];/* = -{ - PLAYERPC_MENU_ITEMSTORAGE, - PLAYERPC_MENU_MAILBOX, - PLAYERPC_MENU_TURNOFF -}; -*/ -extern const struct MenuAction gPCText_ItemPCOptionsText[]; -/* -static const struct MenuAction2 gPCText_ItemPCOptionsText[] = -{ - { PCText_WithdrawItem, ItemStorage_Withdraw }, - { PCText_DepositItem, ItemStorage_Deposit }, - { PCText_TossItem, ItemStorage_Toss }, - { gUnknownText_Exit, ItemStorage_Exit } -}; - -static const struct YesNoFuncTable ResumeFromTossYesNoFuncList[] = // ResumeFromTossYesNoFuncList -{ - ItemStorage_ResumeInputFromYesToss, - ItemStorage_ResumeInputFromNoToss -}; - -static const struct YesNoFuncTable ResumeFromWithdrawYesNoFuncList[] = // ResumeFromWithdrawYesNoFuncList -{ - Mailbox_DoMailMoveToBag, - Mailbox_ReturnToInputAfterNo -}; -*/ -// the use of this struct is meant to be an ItemSlot struct, but NewGameInitPCItems refuses to match without a weird pointer access. -/*static*/ extern const struct ItemSlot gNewGamePCItems[];/* = -{ - { ITEM_POTION, 1 }, - { ITEM_NONE, 0 } -}; +/*static*/ void ItemStorage_Exit(u8); -static const struct MenuAction2 gMailboxMailOptions[] = -{ - { OtherText_Read, Mailbox_DoMailRead }, - { gOtherText_MoveToBag, Mailbox_MoveToBag }, - { OtherText_Give, Mailbox_Give }, - { gOtherText_CancelNoTerminator, Mailbox_Cancel } -}; -static const u8 gNonSelectedItemFormattedText[] = _("{STR_VAR_1}{CLEAR_TO 80}"); -static const u8 gSelectedItemFormattedText[] = _("{COLOR RED}{STR_VAR_1}{CLEAR_TO 80}"); -static const u8 gNonSelectedItemQuantityFormatText[] = _("{STR_VAR_1}"); -static const u8 gSelectedItemQuantityFormatText[] = _("{COLOR RED}{STR_VAR_1}"); -static const u8 gUnknown_08406330[] = _("{CLEAR_TO 32}"); -*/ +extern const u8 *const gPCText_OptionDescList[]; +/*static*/ extern const struct ItemSlot gNewGamePCItems[]; +/*static*/ extern const struct MenuAction gPCText_ItemPCOptionsText[]; +/*static*/ extern const struct MenuAction gMailboxMailOptions[]; +/*static*/ extern const struct MenuAction sPlayerPCMenuActions[]; +/*static*/ extern u8 gBedroomPC_OptionOrder[]; +/*static*/ extern u8 gPlayerPC_OptionOrder[]; extern const struct WindowTemplate gUnknown_085DFF24[3]; -/* -extern u8 *gUnknown_02039314; -extern struct MenuAction gUnknown_08406298[]; - -extern u8 gUnknown_084062B8[]; -extern u8 gUnknown_084062BC[]; -extern u8 gUnknown_0840632A[]; -extern u8 gUnknown_08406327[]; -extern u8 gUnknown_0840631E[]; -extern u8 gUnknown_08406318[]; - -extern u8 gUnknown_030007B4; -extern u8 unk_201FE00[]; - -extern u8 gUnknown_08152850; -extern u8 gUnknown_08152C75; - -extern u32 gUnknown_08406288[]; -extern const struct MenuAction gUnknown_084062C0[]; -extern const struct YesNoFuncTable gUnknown_084062E0; -*/ void NewGameInitPCItems(void) @@ -441,7 +318,7 @@ void mapldr_080EBC0C(void) u8 sub_80D6CE4(); //count of items void sub_816B4DC(u8 taskId); -void sub_816B430(u8 taskId, bool8 toss); + extern const u8 gText_NoItems[]; /*static*/ void ItemStorage_Withdraw(u8 taskId) @@ -451,7 +328,7 @@ extern const u8 gText_NoItems[]; NUM_ITEMS = sub_80D6CE4(); if (NUM_ITEMS != 0) - sub_816B430(taskId, FALSE); + ItemStorage_WithdrawToss_Helper(taskId, FALSE); else { sub_816B4DC(taskId); @@ -466,7 +343,7 @@ extern const u8 gText_NoItems[]; NUM_ITEMS = sub_80D6CE4(); if (NUM_ITEMS != 0) - sub_816B430(taskId, TRUE); + ItemStorage_WithdrawToss_Helper(taskId, TRUE); else { sub_816B4DC(taskId); @@ -476,9 +353,9 @@ extern const u8 gText_NoItems[]; void sub_816BC14(void); void gpu_pal_allocator_reset__manage_upper_four(void); -void sub_816C158(u8 taskId); -/*static*/ void sub_816B430(u8 taskId, bool8 toss) + +/*static*/ void ItemStorage_WithdrawToss_Helper(u8 taskId, bool8 toss) { u16 *data = gTasks[taskId].data; @@ -493,7 +370,7 @@ void sub_816C158(u8 taskId); LoadListMenuArrowsGfx(); sub_8122344(&(gUnknown_0203BCC4->unk668), 7); sub_8197434(0,0); - gTasks[taskId].func = sub_816C158; + gTasks[taskId].func = ItemStorage_ProcessInput; } @@ -571,13 +448,11 @@ void sub_81D1E90(struct MailboxStruct *); sub_81D1E90(&eMailboxInfo); } -u32 ListMenuHandleInputGetItemId(u8); -void sub_81AE860(u8, void *, void *); -void sub_81AE6C8(u8, void *, void *); -void sub_816B798(u8); + +void Mailbox_ReturnToPlayerPC(u8); void RemoveScrollIndicatorArrowPair(u8); void sub_81D1D04(u8); -void sub_816B730(u8); + /*static*/ void Mailbox_ProcessInput(u8 taskId) { @@ -587,7 +462,7 @@ void sub_816B730(u8); if(!gPaletteFade.active) { inputOptionId = ListMenuHandleInputGetItemId(data[5]); - sub_81AE860(data[5], &(eMailboxInfo.itemsAbove), &eMailboxInfo); + sub_81AE860(data[5], &(eMailboxInfo.itemsAbove), &(eMailboxInfo.cursorPos)); switch(inputOptionId) { @@ -596,36 +471,36 @@ void sub_816B730(u8); case -2: PlaySE(SE_SELECT); RemoveScrollIndicatorArrowPair(eMailboxInfo.unk6[3]); - sub_816B798(taskId); + Mailbox_ReturnToPlayerPC(taskId); break; default: PlaySE(SE_SELECT); sub_81D1D04(0); sub_81D1D04(1); - sub_81AE6C8(data[5], &(eMailboxInfo.itemsAbove), &eMailboxInfo); + sub_81AE6C8(data[5], &(eMailboxInfo.itemsAbove), &(eMailboxInfo.cursorPos)); schedule_bg_copy_tilemap_to_vram(0); RemoveScrollIndicatorArrowPair(eMailboxInfo.unk6[3]); - gTasks[taskId].func = sub_816B730; + gTasks[taskId].func = Mailbox_PrintWhatToDoWithPlayerMailText; break; } } } void sub_81DB554(u8 *, u8); -void sub_816B7DC(u8); +void Mailbox_PrintMailOptions(u8); extern const u8 gText_WhatToDoWithVar1sMail[]; -/*static*/ void sub_816B730(u8 taskId)//Mailbox_PrintWhatToDoWithPlayerMailText(u8 taskId) +/*static*/ void Mailbox_PrintWhatToDoWithPlayerMailText(u8 taskId)//Mailbox_PrintWhatToDoWithPlayerMailText(u8 taskId) { StringCopy(gStringVar1, gSaveBlock1Ptr->mail[eMailboxInfo.itemsAbove + 6 + eMailboxInfo.cursorPos].playerName); sub_81DB554(gStringVar1, 0); StringExpandPlaceholders(gStringVar4, gText_WhatToDoWithVar1sMail); - DisplayItemMessageOnField(taskId, gStringVar4, sub_816B7DC); + DisplayItemMessageOnField(taskId, gStringVar4, Mailbox_PrintMailOptions); } void sub_81D1EC0(void); -/*static*/ void sub_816B798(u8 taskId)//Mailbox_ReturnToPlayerPC(u8 taskId) +/*static*/ void Mailbox_ReturnToPlayerPC(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -637,22 +512,22 @@ void sub_81D1EC0(void); ReshowPlayerPC(taskId); } -extern const struct MenuAction gUnknown_085DFF04[]; +extern const struct MenuAction gMailboxMailOptions[]; -void sub_816B82C(u8 taskId); +void Mailbox_MailOptionsProcessInput(u8 taskId); -void sub_816B7DC(u8 taskId) +void Mailbox_PrintMailOptions(u8 taskId) { u8 r4 = sub_81D1C84(2); - PrintMenuTable(r4, 4, gUnknown_085DFF04); + PrintMenuTable(r4, 4, gMailboxMailOptions); InitMenuInUpperLeftCornerPlaySoundWhenAPressed(r4, 4, 0); schedule_bg_copy_tilemap_to_vram(0); - gTasks[taskId].func = sub_816B82C; + gTasks[taskId].func = Mailbox_MailOptionsProcessInput; } -void sub_816BBD4(u8 taskId); +void Mailbox_Cancel(u8 taskId); -void sub_816B82C(u8 taskId) +void Mailbox_MailOptionsProcessInput(u8 taskId) { s8 inputOptionId = ProcessMenuInput_other(); @@ -662,41 +537,288 @@ void sub_816B82C(u8 taskId) break; case -1: PlaySE(SE_SELECT); - sub_816BBD4(taskId); + Mailbox_Cancel(taskId); break; default: PlaySE(SE_SELECT); - gUnknown_085DFF04[inputOptionId].func.void_u8(taskId); + gMailboxMailOptions[inputOptionId].func.void_u8(taskId); break; } } -void sub_816B8A4(u8 taskId); +void Mailbox_FadeAndReadMail(u8 taskId); -void sub_816B878(u8 taskId) +void Mailbox_DoMailRead(u8 taskId) { FadeScreen(1, 0); - gTasks[taskId].func = sub_816B8A4; + gTasks[taskId].func = Mailbox_FadeAndReadMail; } -void sub_816B900(); +void Mailbox_ReturnToFieldFromReadMail(); -void sub_816B8A4(u8 taskId) +void Mailbox_FadeAndReadMail(u8 taskId) { if(!gPaletteFade.active) { sub_81D1EC0(); overworld_free_bg_tilemaps(); - ReadMail(&(gSaveBlock1Ptr->mail[eMailboxInfo.itemsAbove + 6 + eMailboxInfo.cursorPos]), sub_816B900, TRUE); + ReadMail(&(gSaveBlock1Ptr->mail[eMailboxInfo.itemsAbove + 6 + eMailboxInfo.cursorPos]), Mailbox_ReturnToFieldFromReadMail, TRUE); DestroyTask(taskId); } } void pal_fill_for_maplights_or_black(); -void sub_816B900() +void Mailbox_ReturnToFieldFromReadMail() { gFieldCallback = pal_fill_for_maplights_or_black; SetMainCallback2(CB2_ReturnToField); } +void Mailbox_HandleReturnToProcessInput(u8 taskId); + +void pal_fill_for_maplights_or_black() +{ + u8 taskId; + + sub_81973A4(); + taskId = CreateTask(Mailbox_HandleReturnToProcessInput, 0); + if(sub_81D1C44(eMailboxInfo.count) == TRUE) + Mailbox_DrawMailboxMenu(taskId); + else + DestroyTask(taskId); + pal_fill_black(); +} + +void Mailbox_HandleReturnToProcessInput(u8 taskId) +{ + if(sub_80ABDFC() == TRUE) + gTasks[taskId].func = Mailbox_ProcessInput; +} + +extern const u8 gText_MessageWillBeLost[]; + +void Mailbox_DrawYesNoBeforeMove(u8 taskId); + +void Mailbox_MoveToBag(u8 taskId) +{ + DisplayItemMessageOnField(taskId, gText_MessageWillBeLost, Mailbox_DrawYesNoBeforeMove); +} + +void Mailbox_DoMailMoveToBag(u8 taskId); +void Mailbox_CancelMoveToBag(u8 taskId); +void Mailbox_MoveToBagYesNoPrompt(u8 taskId); + +void Mailbox_DrawYesNoBeforeMove(u8 taskId) +{ + sub_8197930(); + gTasks[taskId].func = Mailbox_MoveToBagYesNoPrompt; +} + +void Mailbox_MoveToBagYesNoPrompt(u8 taskId) +{ + switch(ProcessMenuInputNoWrap_()) + { + case 0: + Mailbox_DoMailMoveToBag(taskId); + break; + case -1: + PlaySE(SE_SELECT); + case 1: + Mailbox_CancelMoveToBag(taskId); + break; + case -2: + default: + break; + } +} + +extern const u8 gText_BagIsFull[]; +extern const u8 gText_MailToBagMessageErased[]; + +void Mailbox_DoMailMoveToBag(u8 taskId) +{ + struct MailStruct *mailStruct = &(gSaveBlock1Ptr->mail[eMailboxInfo.itemsAbove + 6 + eMailboxInfo.cursorPos]); + if(!AddBagItem(mailStruct->itemId, 1)) + { + DisplayItemMessageOnField(taskId, gText_BagIsFull, Mailbox_Cancel); + } + else + { + DisplayItemMessageOnField(taskId, gText_MailToBagMessageErased, Mailbox_Cancel); + ClearMailStruct(mailStruct); + Mailbox_UpdateMailList(); + eMailboxInfo.count--; + if(eMailboxInfo.count < (eMailboxInfo.pageItems + eMailboxInfo.itemsAbove) && eMailboxInfo.itemsAbove != 0) + eMailboxInfo.itemsAbove--; + ItemStorage_SetItemAndMailCount(taskId); + } +} + +void Mailbox_CancelMoveToBag(u8 taskId) +{ + Mailbox_Cancel(taskId); +} + +void Mailbox_DoGiveMailPokeMenu(u8 taskId); +void Mailbox_NoPokemonForMail(u8 taskId); + +void Mailbox_Give(u8 taskId) +{ + if(CalculatePlayerPartyCount() == 0) + Mailbox_NoPokemonForMail(taskId); + else + { + FadeScreen(1, 0); + gTasks[taskId].func = Mailbox_DoGiveMailPokeMenu; + } +} + +void sub_81B8448(); + +void Mailbox_DoGiveMailPokeMenu(u8 taskId) +{ + if(!gPaletteFade.active) + { + sub_81D1EC0(); + overworld_free_bg_tilemaps(); + sub_81B8448(); + DestroyTask(taskId); + } +} + +void Mailbox_UpdateMailListAfterDeposit(void); + +void Mailbox_ReturnToMailListAfterDeposit(void) +{ + gFieldCallback = Mailbox_UpdateMailListAfterDeposit; + SetMainCallback2(CB2_ReturnToField); +} + +void Mailbox_UpdateMailListAfterDeposit(void) +{ + u8 taskId; + u8 prevCount; + taskId = CreateTask(Mailbox_HandleReturnToProcessInput, 0); + prevCount = eMailboxInfo.count; + eMailboxInfo.count = GetMailboxMailCount(); + Mailbox_UpdateMailList(); + if(prevCount != eMailboxInfo.count && (eMailboxInfo.count < (eMailboxInfo.pageItems + eMailboxInfo.itemsAbove)) + && eMailboxInfo.itemsAbove != 0) + eMailboxInfo.itemsAbove--; + ItemStorage_SetItemAndMailCount(taskId); + sub_81973A4(); + if(sub_81D1C44(eMailboxInfo.count) == TRUE) + Mailbox_DrawMailboxMenu(taskId); + else + DestroyTask(taskId); + pal_fill_black(); +} + +void Mailbox_NoPokemonForMail(u8 taskId) +{ + DisplayItemMessageOnField(taskId, gText_NoPokemon, Mailbox_Cancel); +} + +void Mailbox_Cancel(u8 taskId) +{ + sub_81D1D04(2); + sub_8197434(0, 0); + Mailbox_DrawMailboxMenu(taskId); + schedule_bg_copy_tilemap_to_vram(0); + gTasks[taskId].func = Mailbox_ProcessInput; +} + +void sub_816BC14(void) +{ + gUnknown_0203BCC4 = AllocZeroed(sizeof(struct Struct203BCC4)); + memset(gUnknown_0203BCC4->unk660, 0xFF, 0x6); + gUnknown_0203BCC4->unk666 = 0xFF; + gUnknown_0203BCC4->unk667 = -1; +} + +void sub_816BCC4(u8); + +void sub_816BC58(void) +{ + u32 i; + + for(i = 0; i < 6; i++) + sub_816BCC4(i); + Free(gUnknown_0203BCC4); +} + +extern const struct WindowTemplate gUnknown_085DFF5C[6]; + +u8 sub_816BC7C(u8 a) +{ + u8 *windowIdLoc = &(gUnknown_0203BCC4->unk660[a]); + if(*windowIdLoc == 0xFF) + { + *windowIdLoc = AddWindow(&gUnknown_085DFF5C[a]); + SetWindowBorderStyle(*windowIdLoc, FALSE, 0x214, 0xE); + schedule_bg_copy_tilemap_to_vram(0); + } + return *windowIdLoc; +} + +void sub_816BCC4(u8 a) +{ + u8 *windowIdLoc = &(gUnknown_0203BCC4->unk660[a]); + if(*windowIdLoc != 0xFF) + { + sub_8198070(*windowIdLoc, FALSE); + ClearWindowTilemap(*windowIdLoc); + schedule_bg_copy_tilemap_to_vram(0); + RemoveWindow(*windowIdLoc); + *windowIdLoc = 0xFF; + } +} + +void sub_816BDC8(u8 *string, u16 itemId); + +extern struct ListMenuTemplate gUnknown_085DFF44; + +void sub_816BD04(void) +{ + u16 i; + + for(i = 0; i < eMailboxInfo.count - 1; i++) + { + sub_816BDC8(&(gUnknown_0203BCC4->unk198[i][0]), gSaveBlock1Ptr->pcItems[i].itemId); + gUnknown_0203BCC4->unk0[i].name = &(gUnknown_0203BCC4->unk198[i][0]); + gUnknown_0203BCC4->unk0[i].id = i; + } + StringCopy(&(gUnknown_0203BCC4->unk198[i][0]) ,gText_Cancel2); + gUnknown_0203BCC4->unk0[i].name = &(gUnknown_0203BCC4->unk198[i][0]); + gUnknown_0203BCC4->unk0[i].id = -2; + gMultiuseListMenuTemplate = gUnknown_085DFF44; + gMultiuseListMenuTemplate.unk_10 = sub_816BC7C(0); + gMultiuseListMenuTemplate.totalItems = eMailboxInfo.count; + gMultiuseListMenuTemplate.items = gUnknown_0203BCC4->unk0; + gMultiuseListMenuTemplate.maxShowed = eMailboxInfo.pageItems; +} + +void sub_816BDC8(u8 *string, u16 itemId) +{ + CopyItemName(itemId, string); +} + +void sub_816C0C8(); +void sub_816C060(u16 itemId); +void sub_816BEF0(s32 id); + +void sub_816BDDC(s32 id, bool8 b) +{ + if(b != TRUE) + PlaySE(SE_SELECT); + if(gUnknown_0203BCC4->unk666 == 0xFF) + { + sub_816C0C8(); + if(id != -2) + sub_816C060(gSaveBlock1Ptr->pcItems[id].itemId); + else + sub_816C060(0xFFFF); + sub_816BEF0(id); + } +} |