summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/party_menu.s2
-rw-r--r--asm/player_pc.s1906
-rw-r--r--asm/pokenav.s2
-rw-r--r--data/player_pc.s10
-rw-r--r--src/player_pc.c510
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);
+ }
+}