diff options
-rw-r--r-- | asm/field_effect.s | 10 | ||||
-rw-r--r-- | asm/field_weather.s | 6 | ||||
-rw-r--r-- | asm/mail.s | 4 | ||||
-rw-r--r-- | asm/party_menu.s | 18 | ||||
-rw-r--r-- | asm/player_pc.s | 1919 | ||||
-rw-r--r-- | asm/pokemon_storage_system.s | 2 | ||||
-rw-r--r-- | asm/shop.s | 2 | ||||
-rw-r--r-- | data/data_83FECCC.s | 31 | ||||
-rw-r--r-- | data/maps/PalletTown_PlayersHouse_2F/scripts.inc | 2 | ||||
-rw-r--r-- | data/strings.s | 30 | ||||
-rw-r--r-- | include/event_scripts.h | 3 | ||||
-rw-r--r-- | include/field_weather.h | 2 | ||||
-rw-r--r-- | include/help_system.h | 2 | ||||
-rw-r--r-- | include/item.h | 1 | ||||
-rw-r--r-- | include/item_menu.h | 1 | ||||
-rw-r--r-- | include/mailbox_pc.h | 6 | ||||
-rw-r--r-- | include/overworld.h | 1 | ||||
-rw-r--r-- | include/party_menu.h | 1 | ||||
-rw-r--r-- | include/player_pc.h | 12 | ||||
-rw-r--r-- | include/strings.h | 20 | ||||
-rw-r--r-- | ld_script.txt | 3 | ||||
-rw-r--r-- | src/field_fadetransition.c | 2 | ||||
-rw-r--r-- | src/item_use.c | 4 | ||||
-rw-r--r-- | src/mailbox_pc.c | 10 | ||||
-rw-r--r-- | src/map_preview_screen.c | 2 | ||||
-rw-r--r-- | src/player_pc.c | 741 | ||||
-rw-r--r-- | sym_ewram.txt | 15 |
27 files changed, 832 insertions, 2018 deletions
diff --git a/asm/field_effect.s b/asm/field_effect.s index 2393df6a6..9919ccc24 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -2014,7 +2014,7 @@ task00_8084310: @ 8084310 ldrsh r6, [r4, r0] cmp r6, 0 bne _08084350 - bl sub_807AA70 + bl field_weather_is_fade_finished lsls r0, 24 cmp r0, 0 beq _08084376 @@ -2287,7 +2287,7 @@ _08084560: .4byte gSprites sub_8084564: @ 8084564 push {r4,lr} adds r4, r0, 0 - bl sub_807AA70 + bl field_weather_is_fade_finished lsls r0, 24 cmp r0, 0 beq _08084578 @@ -4002,7 +4002,7 @@ sub_8085274: @ 8085274 adds r4, r0, 0 adds r5, r1, 0 adds r6, r2, 0 - bl sub_807AA70 + bl field_weather_is_fade_finished lsls r0, 24 cmp r0, 0 beq _080852B4 @@ -5025,7 +5025,7 @@ _08085A50: .4byte gTasks sub_8085A54: @ 8085A54 push {r4,lr} adds r4, r0, 0 - bl sub_807AA70 + bl field_weather_is_fade_finished lsls r0, 24 cmp r0, 0 beq _08085A78 @@ -5492,7 +5492,7 @@ _08085E08: .4byte gTasks sub_8085E0C: @ 8085E0C push {r4-r6,lr} adds r6, r0, 0 - bl sub_807AA70 + bl field_weather_is_fade_finished lsls r0, 24 cmp r0, 0 beq _08085E82 diff --git a/asm/field_weather.s b/asm/field_weather.s index 403a365be..b65548171 100644 --- a/asm/field_weather.s +++ b/asm/field_weather.s @@ -1889,8 +1889,8 @@ _0807AA68: .4byte 0x000006ca _0807AA6C: .4byte 0x000006cb thumb_func_end FieldWeather_StartFadingOutCreditsMap - thumb_func_start sub_807AA70 -sub_807AA70: @ 807AA70 + thumb_func_start field_weather_is_fade_finished +field_weather_is_fade_finished: @ 807AA70 ldr r0, _0807AA84 @ =gUnknown_2037F34 ldr r1, _0807AA88 @ =0x000006c6 adds r0, r1 @@ -1904,7 +1904,7 @@ sub_807AA70: @ 807AA70 .align 2, 0 _0807AA84: .4byte gUnknown_2037F34 _0807AA88: .4byte 0x000006c6 - thumb_func_end sub_807AA70 + thumb_func_end field_weather_is_fade_finished thumb_func_start sub_807AA8C sub_807AA8C: @ 807AA8C diff --git a/asm/mail.s b/asm/mail.s index 23aba36f6..e5b265df2 100644 --- a/asm/mail.s +++ b/asm/mail.s @@ -204,7 +204,7 @@ _080BED8C: movs r0, 0 movs r1, 0 bl SetGpuReg - ldr r0, _080BEDB0 @ =gUnknown_203AAC4 + ldr r0, _080BEDB0 @ =gPlayerPcMenuManager ldrb r0, [r0, 0x9] cmp r0, 0 bne _080BEDB4 @@ -212,7 +212,7 @@ _080BED8C: bl HelpSystem_SetSomeVariable2 b _080BF0F4 .align 2, 0 -_080BEDB0: .4byte gUnknown_203AAC4 +_080BEDB0: .4byte gPlayerPcMenuManager _080BEDB4: movs r0, 0x1E bl HelpSystem_SetSomeVariable2 diff --git a/asm/party_menu.s b/asm/party_menu.s index 899e8e7ea..b49a09347 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -11978,7 +11978,7 @@ task_launch_hm_phase_2: @ 81248C8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_807AA70 + bl field_weather_is_fade_finished lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -17272,15 +17272,15 @@ _081273D0: bx r1 thumb_func_end sub_81273AC - thumb_func_start sub_81273D8 -sub_81273D8: @ 81273D8 + thumb_func_start PartyMenuInit_FromPlayerPc +PartyMenuInit_FromPlayerPc: @ 81273D8 push {lr} sub sp, 0xC movs r0, 0x6 str r0, [sp] ldr r0, _081273FC @ =sub_811FB28 str r0, [sp, 0x4] - ldr r0, _08127400 @ =sub_80EC500 + ldr r0, _08127400 @ =CB2_PlayerPC_ReturnFromPartyMenu str r0, [sp, 0x8] movs r0, 0 movs r1, 0 @@ -17292,8 +17292,8 @@ sub_81273D8: @ 81273D8 bx r0 .align 2, 0 _081273FC: .4byte sub_811FB28 -_08127400: .4byte sub_80EC500 - thumb_func_end sub_81273D8 +_08127400: .4byte CB2_PlayerPC_ReturnFromPartyMenu + thumb_func_end PartyMenuInit_FromPlayerPc thumb_func_start sub_8127404 sub_8127404: @ 8127404 @@ -17311,7 +17311,7 @@ sub_8127404: @ 8127404 movs r0, 0 strb r0, [r1] ldr r2, _0812745C @ =gSaveBlock1Ptr - ldr r0, _08127460 @ =gUnknown_203AAC4 + ldr r0, _08127460 @ =gPlayerPcMenuManager ldrh r1, [r0] adds r1, 0x6 ldrh r0, [r0, 0x2] @@ -17337,7 +17337,7 @@ _08127450: .4byte gUnknown_203B0A0 _08127454: .4byte gPlayerParty _08127458: .4byte gUnknown_203B0C0 _0812745C: .4byte gSaveBlock1Ptr -_08127460: .4byte gUnknown_203AAC4 +_08127460: .4byte gPlayerPcMenuManager _08127464: .4byte 0x00002cd0 _08127468: .4byte gUnknown_8416D17 _0812746C: @@ -19373,7 +19373,7 @@ task_hm_without_phase_2: @ 81283FC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_807AA70 + bl field_weather_is_fade_finished lsls r0, 24 cmp r0, 0 beq _0812841A diff --git a/asm/player_pc.s b/asm/player_pc.s deleted file mode 100644 index fa528abb9..000000000 --- a/asm/player_pc.s +++ /dev/null @@ -1,1919 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start NewGameInitPCItems -NewGameInitPCItems: @ 80EB658 - push {r4-r6,lr} - movs r4, 0 - bl ClearPCItemSlots - ldr r1, _080EB6A8 @ =gUnknown_8402220 - ldrh r0, [r1] - cmp r0, 0 - beq _080EB6A0 - ldrh r0, [r1, 0x2] - cmp r0, 0 - beq _080EB6A0 - adds r5, r1, 0 - adds r6, r5, 0x2 -_080EB672: - 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 _080EB6A0 - 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 _080EB6A0 - adds r0, r1, r6 - ldrh r0, [r0] - cmp r0, 0 - bne _080EB672 -_080EB6A0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EB6A8: .4byte gUnknown_8402220 - thumb_func_end NewGameInitPCItems - - thumb_func_start sub_80EB6AC -sub_80EB6AC: @ 80EB6AC - push {lr} - ldr r1, _080EB6E0 @ =gUnknown_203AAC4 - movs r0, 0 - strb r0, [r1, 0x9] - bl sub_812B234 - ldr r1, _080EB6E4 @ =gUnknown_203AABC - ldr r0, _080EB6E8 @ =gUnknown_8402200 - str r0, [r1] - ldr r1, _080EB6EC @ =gUnknown_203AAC0 - movs r0, 0x3 - strb r0, [r1] - ldr r0, _080EB6F0 @ =TaskDummy - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080EB6F4 @ =gUnknown_8416262 - ldr r3, _080EB6F8 @ =sub_80EB74C - movs r1, 0x2 - bl DisplayItemMessageOnField - pop {r0} - bx r0 - .align 2, 0 -_080EB6E0: .4byte gUnknown_203AAC4 -_080EB6E4: .4byte gUnknown_203AABC -_080EB6E8: .4byte gUnknown_8402200 -_080EB6EC: .4byte gUnknown_203AAC0 -_080EB6F0: .4byte TaskDummy -_080EB6F4: .4byte gUnknown_8416262 -_080EB6F8: .4byte sub_80EB74C - thumb_func_end sub_80EB6AC - - thumb_func_start sub_80EB6FC -sub_80EB6FC: @ 80EB6FC - push {lr} - ldr r1, _080EB730 @ =gUnknown_203AAC4 - movs r0, 0x1 - strb r0, [r1, 0x9] - bl sub_812B234 - ldr r1, _080EB734 @ =gUnknown_203AABC - ldr r0, _080EB738 @ =gUnknown_8402203 - str r0, [r1] - ldr r1, _080EB73C @ =gUnknown_203AAC0 - movs r0, 0x3 - strb r0, [r1] - ldr r0, _080EB740 @ =TaskDummy - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080EB744 @ =gUnknown_8416262 - ldr r3, _080EB748 @ =sub_80EB74C - movs r1, 0x2 - bl DisplayItemMessageOnField - pop {r0} - bx r0 - .align 2, 0 -_080EB730: .4byte gUnknown_203AAC4 -_080EB734: .4byte gUnknown_203AABC -_080EB738: .4byte gUnknown_8402203 -_080EB73C: .4byte gUnknown_203AAC0 -_080EB740: .4byte TaskDummy -_080EB744: .4byte gUnknown_8416262 -_080EB748: .4byte sub_80EB74C - thumb_func_end sub_80EB6FC - - thumb_func_start sub_80EB74C -sub_80EB74C: @ 80EB74C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r0, 2 - add r0, r8 - lsls r0, 3 - ldr r1, _080EB770 @ =gTasks+0x8 - adds r7, r0, r1 - ldr r0, _080EB774 @ =gUnknown_203AAC0 - ldrb r0, [r0] - cmp r0, 0x3 - bne _080EB77C - ldr r0, _080EB778 @ =gUnknown_8402248 - b _080EB77E - .align 2, 0 -_080EB770: .4byte gTasks+0x8 -_080EB774: .4byte gUnknown_203AAC0 -_080EB778: .4byte gUnknown_8402248 -_080EB77C: - ldr r0, _080EB804 @ =gUnknown_8402250 -_080EB77E: - bl AddWindow - strh r0, [r7, 0x14] - ldrb r0, [r7, 0x14] - movs r1, 0 - bl SetStdWindowBorderStyle - movs r0, 0x2 - movs r1, 0 - bl GetMenuCursorDimensionByFont - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - movs r1, 0x2 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r7, 0x14] - str r0, [sp] - movs r6, 0x10 - str r6, [sp, 0x4] - ldr r5, _080EB808 @ =gUnknown_203AAC0 - ldrb r0, [r5] - str r0, [sp, 0x8] - ldr r0, _080EB80C @ =gUnknown_84021E8 - str r0, [sp, 0xC] - ldr r0, _080EB810 @ =gUnknown_203AABC - ldr r0, [r0] - str r0, [sp, 0x10] - adds r0, r1, 0 - movs r1, 0x2 - adds r2, r4, 0 - movs r3, 0x2 - bl AddItemMenuActionTextPrinters - ldrb r0, [r7, 0x14] - str r6, [sp] - ldrb r1, [r5] - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl Menu_InitCursor - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - ldr r1, _080EB814 @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldr r1, _080EB818 @ =sub_80EB81C - str r1, [r0] - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EB804: .4byte gUnknown_8402250 -_080EB808: .4byte gUnknown_203AAC0 -_080EB80C: .4byte gUnknown_84021E8 -_080EB810: .4byte gUnknown_203AABC -_080EB814: .4byte gTasks -_080EB818: .4byte sub_80EB81C - thumb_func_end sub_80EB74C - - thumb_func_start sub_80EB81C -sub_80EB81C: @ 80EB81C - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r6, r1, 3 - ldr r7, _080EB870 @ =gTasks+0x8 - adds r4, r6, r7 - bl Menu_ProcessInputNoWrapAround - lsls r0, 24 - asrs r5, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r5, r0 - beq _080EB8AC - adds r0, 0x1 - cmp r5, r0 - bne _080EB878 - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0x14] - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - ldrb r0, [r4, 0x14] - bl ClearWindowTilemap - ldrb r0, [r4, 0x14] - bl RemoveWindow - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - adds r0, r7, 0 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _080EB874 @ =sub_80EB9B8 - str r1, [r0] - b _080EB8AC - .align 2, 0 -_080EB870: .4byte gTasks+0x8 -_080EB874: .4byte sub_80EB9B8 -_080EB878: - ldrb r0, [r4, 0x14] - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - ldrb r0, [r4, 0x14] - bl ClearWindowTilemap - ldrb r0, [r4, 0x14] - bl RemoveWindow - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - adds r2, r7, 0 - subs r2, 0x8 - adds r2, r6, r2 - ldr r1, _080EB8B4 @ =gUnknown_84021E8 - ldr r0, _080EB8B8 @ =gUnknown_203AABC - ldr r0, [r0] - adds r0, r5 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] -_080EB8AC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EB8B4: .4byte gUnknown_84021E8 -_080EB8B8: .4byte gUnknown_203AABC - thumb_func_end sub_80EB81C - - thumb_func_start sub_80EB8BC -sub_80EB8BC: @ 80EB8BC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_812B248 - ldr r2, _080EB8DC @ =gUnknown_8416262 - ldr r3, _080EB8E0 @ =sub_80EB74C - adds r0, r4, 0 - movs r1, 0x2 - bl DisplayItemMessageOnField - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EB8DC: .4byte gUnknown_8416262 -_080EB8E0: .4byte sub_80EB74C - thumb_func_end sub_80EB8BC - - thumb_func_start sub_80EB8E4 -sub_80EB8E4: @ 80EB8E4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0 - bl sub_80EB9E8 - ldr r1, _080EB908 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080EB90C @ =sub_80EBAB8 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EB908: .4byte gTasks -_080EB90C: .4byte sub_80EBAB8 - thumb_func_end sub_80EB8E4 - - thumb_func_start sub_80EB910 -sub_80EB910: @ 80EB910 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_80EBDC8 - ldr r4, _080EB934 @ =gUnknown_203AAC4 - movs r1, 0 - strb r0, [r4, 0x5] - lsls r0, 24 - cmp r0, 0 - bne _080EB940 - ldr r2, _080EB938 @ =gUnknown_84177EE - ldr r3, _080EB93C @ =sub_80EB8BC - adds r0, r5, 0 - movs r1, 0x2 - bl DisplayItemMessageOnField - b _080EB9A8 - .align 2, 0 -_080EB934: .4byte gUnknown_203AAC4 -_080EB938: .4byte gUnknown_84177EE -_080EB93C: .4byte sub_80EB8BC -_080EB940: - strh r1, [r4] - strh r1, [r4, 0x2] - bl sub_80EBE04 - adds r0, r5, 0 - bl sub_80EBD88 - ldrb r0, [r4, 0x9] - cmp r0, 0 - bne _080EB95C - movs r0, 0x22 - bl HelpSystem_SetSomeVariable2 - b _080EB962 -_080EB95C: - movs r0, 0x1E - bl HelpSystem_SetSomeVariable2 -_080EB962: - ldr r0, _080EB990 @ =gUnknown_203AAC4 - ldrb r0, [r0, 0x5] - bl MailboxPC_InitBuffers - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080EB99C - movs r0, 0 - movs r1, 0 - bl ClearDialogWindowAndFrame - adds r0, r5, 0 - bl sub_80EBEB0 - ldr r0, _080EB994 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080EB998 @ =sub_80EBF40 - str r0, [r1] - b _080EB9A8 - .align 2, 0 -_080EB990: .4byte gUnknown_203AAC4 -_080EB994: .4byte gTasks -_080EB998: .4byte sub_80EBF40 -_080EB99C: - ldr r2, _080EB9B0 @ =gUnknown_84177EE - ldr r3, _080EB9B4 @ =sub_80EB8BC - adds r0, r5, 0 - movs r1, 0x2 - bl DisplayItemMessageOnField -_080EB9A8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EB9B0: .4byte gUnknown_84177EE -_080EB9B4: .4byte sub_80EB8BC - thumb_func_end sub_80EB910 - - thumb_func_start sub_80EB9B8 -sub_80EB9B8: @ 80EB9B8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080EB9D0 @ =gUnknown_203AAC4 - ldrb r0, [r0, 0x9] - cmp r0, 0 - bne _080EB9D8 - ldr r0, _080EB9D4 @ =gUnknown_8168D17 - bl ScriptContext1_SetupScript - b _080EB9DC - .align 2, 0 -_080EB9D0: .4byte gUnknown_203AAC4 -_080EB9D4: .4byte gUnknown_8168D17 -_080EB9D8: - bl EnableBothScriptContexts -_080EB9DC: - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80EB9B8 - - thumb_func_start sub_80EB9E8 -sub_80EB9E8: @ 80EB9E8 - push {r4-r7,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080EBA10 @ =gTasks+0x8 - adds r6, r1, r0 - ldr r0, _080EBA14 @ =gUnknown_203AAC4 - ldrb r0, [r0, 0x9] - cmp r0, 0 - bne _080EBA18 - movs r0, 0x21 - bl HelpSystem_SetSomeVariable2 - b _080EBA1E - .align 2, 0 -_080EBA10: .4byte gTasks+0x8 -_080EBA14: .4byte gUnknown_203AAC4 -_080EBA18: - movs r0, 0x1D - bl HelpSystem_SetSomeVariable2 -_080EBA1E: - ldr r0, _080EBA80 @ =gUnknown_8402258 - bl AddWindow - strh r0, [r6, 0x14] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl SetStdWindowBorderStyle - movs r0, 0x2 - movs r1, 0 - bl GetMenuCursorDimensionByFont - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - ldrb r0, [r6, 0x14] - movs r5, 0x10 - str r5, [sp] - movs r4, 0x3 - str r4, [sp, 0x4] - ldr r1, _080EBA84 @ =gUnknown_8402208 - str r1, [sp, 0x8] - movs r1, 0x2 - movs r3, 0x2 - bl PrintTextArray - ldrb r0, [r6, 0x14] - str r5, [sp] - str r4, [sp, 0x4] - str r7, [sp, 0x8] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl Menu_InitCursor - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - ldr r1, _080EBA88 @ =gUnknown_84021DC - lsls r0, r7, 2 - adds r0, r1 - ldr r0, [r0] - bl sub_80EBA8C - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EBA80: .4byte gUnknown_8402258 -_080EBA84: .4byte gUnknown_8402208 -_080EBA88: .4byte gUnknown_84021DC - thumb_func_end sub_80EB9E8 - - thumb_func_start sub_80EBA8C -sub_80EBA8C: @ 80EBA8C - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - movs r0, 0 - movs r1, 0 - bl DrawDialogueFrame - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - movs r1, 0x2 - adds r2, r4, 0 - movs r3, 0 - bl AddTextPrinterParameterized - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80EBA8C - - thumb_func_start sub_80EBAB8 -sub_80EBAB8: @ 80EBAB8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, r5, 0 - ldr r2, _080EBAE4 @ =gMain - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080EBAE8 - bl Menu_GetCursorPos - lsls r0, 24 - cmp r0, 0 - beq _080EBB64 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - b _080EBB04 - .align 2, 0 -_080EBAE4: .4byte gMain -_080EBAE8: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080EBB20 - bl Menu_GetCursorPos - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _080EBB64 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 -_080EBB04: - bl Menu_MoveCursor - ldr r4, _080EBB1C @ =gUnknown_84021DC - bl Menu_GetCursorPos - lsls r0, 24 - lsrs r0, 22 - adds r0, r4 - ldr r0, [r0] - bl sub_80EBA8C - b _080EBB64 - .align 2, 0 -_080EBB1C: .4byte gUnknown_84021DC -_080EBB20: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080EBB4C - movs r0, 0x5 - bl PlaySE - ldr r4, _080EBB48 @ =gUnknown_8402208 - bl Menu_GetCursorPos - lsls r0, 24 - lsrs r0, 21 - adds r4, 0x4 - adds r0, r4 - ldr r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 - b _080EBB64 - .align 2, 0 -_080EBB48: .4byte gUnknown_8402208 -_080EBB4C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080EBB64 - movs r0, 0x5 - bl PlaySE - ldr r0, _080EBB6C @ =gUnknown_8402208 - ldr r1, [r0, 0x14] - adds r0, r4, 0 - bl _call_via_r1 -_080EBB64: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EBB6C: .4byte gUnknown_8402208 - thumb_func_end sub_80EBAB8 - - thumb_func_start sub_80EBB70 -sub_80EBB70: @ 80EBB70 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080EBBA4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080EBB9C - bl CleanupOverworldWindowsAndTilemaps - ldr r2, _080EBBA8 @ =CB2_ReturnToField - movs r0, 0x3 - movs r1, 0 - bl sub_8107DB4 - ldr r1, _080EBBAC @ =gFieldCallback - ldr r0, _080EBBB0 @ =sub_80EBC0C - str r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_080EBB9C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EBBA4: .4byte gPaletteFade -_080EBBA8: .4byte CB2_ReturnToField -_080EBBAC: .4byte gFieldCallback -_080EBBB0: .4byte sub_80EBC0C - thumb_func_end sub_80EBB70 - - thumb_func_start sub_80EBBB4 -sub_80EBBB4: @ 80EBBB4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080EBBD4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _080EBBD8 @ =sub_80EBB70 - str r0, [r1] - movs r0, 0x1 - movs r1, 0 - bl fade_screen - pop {r0} - bx r0 - .align 2, 0 -_080EBBD4: .4byte gTasks -_080EBBD8: .4byte sub_80EBB70 - thumb_func_end sub_80EBBB4 - - thumb_func_start sub_80EBBDC -sub_80EBBDC: @ 80EBBDC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_807AA70 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080EBBFC - ldr r0, _080EBC04 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080EBC08 @ =sub_80EBAB8 - str r0, [r1] -_080EBBFC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EBC04: .4byte gTasks -_080EBC08: .4byte sub_80EBAB8 - thumb_func_end sub_80EBBDC - - thumb_func_start sub_80EBC0C -sub_80EBC0C: @ 80EBC0C - push {lr} - bl sub_80F6E9C - movs r0, 0 - movs r1, 0x1 - bl DrawDialogueFrame - ldr r0, _080EBC34 @ =sub_80EBBDC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl sub_80EB9E8 - bl sub_807DC00 - pop {r0} - bx r0 - .align 2, 0 -_080EBC34: .4byte sub_80EBBDC - thumb_func_end sub_80EBC0C - - thumb_func_start sub_80EBC38 -sub_80EBC38: @ 80EBC38 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r6, r0, 3 - ldr r7, _080EBC6C @ =gTasks+0x8 - adds r4, r6, r7 - bl CountItemsInPC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x4] - cmp r0, 0 - beq _080EBC7C - movs r0, 0 - strh r0, [r4, 0xC] - adds r0, r7, 0 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _080EBC70 @ =sub_80EBD18 - str r1, [r0] - ldr r1, _080EBC74 @ =gFieldCallback - ldr r0, _080EBC78 @ =sub_80EBCAC - str r0, [r1] - b _080EBC9C - .align 2, 0 -_080EBC6C: .4byte gTasks+0x8 -_080EBC70: .4byte sub_80EBD18 -_080EBC74: .4byte gFieldCallback -_080EBC78: .4byte sub_80EBCAC -_080EBC7C: - ldrb r0, [r4, 0x14] - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - ldrb r0, [r4, 0x14] - bl ClearWindowTilemap - ldrb r0, [r4, 0x14] - bl RemoveWindow - ldr r2, _080EBCA4 @ =gUnknown_8417774 - ldr r3, _080EBCA8 @ =sub_80EB8E4 - adds r0, r5, 0 - movs r1, 0x2 - bl DisplayItemMessageOnField -_080EBC9C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EBCA4: .4byte gUnknown_8417774 -_080EBCA8: .4byte sub_80EB8E4 - thumb_func_end sub_80EBC38 - - thumb_func_start sub_80EBCAC -sub_80EBCAC: @ 80EBCAC - push {lr} - bl sub_80F6E9C - movs r0, 0 - movs r1, 0x1 - bl DrawDialogueFrame - ldr r0, _080EBCD4 @ =sub_80EBBDC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_80EB9E8 - bl sub_807DC00 - pop {r0} - bx r0 - .align 2, 0 -_080EBCD4: .4byte sub_80EBBDC - thumb_func_end sub_80EBCAC - - thumb_func_start sub_80EBCD8 -sub_80EBCD8: @ 80EBCD8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080EBD0C @ =gTasks+0x8 - adds r5, r0, r1 - ldr r0, _080EBD10 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080EBD06 - bl CleanupOverworldWindowsAndTilemaps - ldrb r0, [r5, 0xC] - ldr r1, _080EBD14 @ =CB2_ReturnToField - bl ItemPc_Init - adds r0, r4, 0 - bl DestroyTask -_080EBD06: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EBD0C: .4byte gTasks+0x8 -_080EBD10: .4byte gPaletteFade -_080EBD14: .4byte CB2_ReturnToField - thumb_func_end sub_80EBCD8 - - thumb_func_start sub_80EBD18 -sub_80EBD18: @ 80EBD18 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080EBD40 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _080EBD44 @ =sub_80EBCD8 - str r0, [r1] - movs r0, 0 - bl ItemPc_SetInitializedFlag - movs r0, 0x1 - movs r1, 0 - bl fade_screen - pop {r0} - bx r0 - .align 2, 0 -_080EBD40: .4byte gTasks -_080EBD44: .4byte sub_80EBCD8 - thumb_func_end sub_80EBD18 - - thumb_func_start sub_80EBD48 -sub_80EBD48: @ 80EBD48 - 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, _080EBD84 @ =gTasks+0x8 - adds r4, r0 - ldrb r0, [r4, 0x14] - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - ldrb r0, [r4, 0x14] - bl ClearWindowTilemap - ldrb r0, [r4, 0x14] - movs r1, 0x1 - bl CopyWindowToVram - ldrb r0, [r4, 0x14] - bl RemoveWindow - adds r0, r5, 0 - bl sub_80EB8BC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EBD84: .4byte gTasks+0x8 - thumb_func_end sub_80EBD48 - - thumb_func_start sub_80EBD88 -sub_80EBD88: @ 80EBD88 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080EBDA8 @ =gTasks+0x8 - adds r1, r0 - ldrh r2, [r1, 0x4] - movs r3, 0x4 - ldrsh r0, [r1, r3] - cmp r0, 0x7 - ble _080EBDAC - movs r0, 0x8 - b _080EBDAE - .align 2, 0 -_080EBDA8: .4byte gTasks+0x8 -_080EBDAC: - adds r0, r2, 0x1 -_080EBDAE: - strh r0, [r1, 0x8] - ldr r1, _080EBDBC @ =gUnknown_203AAC4 - ldrb r0, [r1, 0x5] - cmp r0, 0x7 - bls _080EBDC0 - movs r0, 0x8 - b _080EBDC2 - .align 2, 0 -_080EBDBC: .4byte gUnknown_203AAC4 -_080EBDC0: - adds r0, 0x1 -_080EBDC2: - strb r0, [r1, 0x4] - pop {r0} - bx r0 - thumb_func_end sub_80EBD88 - - thumb_func_start sub_80EBDC8 -sub_80EBDC8: @ 80EBDC8 - push {r4,lr} - movs r2, 0 - movs r1, 0x6 - ldr r0, _080EBDFC @ =gSaveBlock1Ptr - ldr r3, [r0] - ldr r4, _080EBE00 @ =0x00002cf0 -_080EBDD4: - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r3, r0 - adds r0, r4 - ldrh r0, [r0] - cmp r0, 0 - beq _080EBDEA - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080EBDEA: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _080EBDD4 - adds r0, r2, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080EBDFC: .4byte gSaveBlock1Ptr -_080EBE00: .4byte 0x00002cf0 - thumb_func_end sub_80EBDC8 - - thumb_func_start sub_80EBE04 -sub_80EBE04: @ 80EBE04 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - movs r2, 0x6 -_080EBE12: - adds r1, r2, 0x1 - lsls r0, r1, 24 - lsrs r4, r0, 24 - mov r8, r1 - cmp r4, 0xF - bhi _080EBE8A - ldr r0, _080EBEA4 @ =gSaveBlock1Ptr - mov r10, r0 - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - mov r12, r0 - ldr r6, _080EBEA8 @ =0x00002cd0 -_080EBE2C: - mov r1, r10 - ldr r1, [r1] - mov r9, r1 - mov r2, r9 - add r2, r12 - ldr r3, _080EBEAC @ =0x00002cf0 - adds r0, r2, r3 - ldrh r0, [r0] - cmp r0, 0 - bne _080EBE80 - 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} -_080EBE80: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080EBE2C -_080EBE8A: - mov r3, r8 - lsls r0, r3, 24 - lsrs r2, r0, 24 - cmp r2, 0xE - bls _080EBE12 - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EBEA4: .4byte gSaveBlock1Ptr -_080EBEA8: .4byte 0x00002cd0 -_080EBEAC: .4byte 0x00002cf0 - thumb_func_end sub_80EBE04 - - thumb_func_start sub_80EBEB0 -sub_80EBEB0: @ 80EBEB0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - movs r0, 0 - bl MailboxPC_GetAddWindow - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080EBF34 @ =gUnknown_84176FE - mov r8, r0 - movs r0, 0x2 - mov r1, r8 - movs r2, 0 - bl GetStringWidth - adds r5, r0, 0 - movs r0, 0x1 - bl MailboxPC_GetAddWindow - movs r3, 0x50 - subs r3, r5 - lsrs r0, r3, 31 - adds r3, r0 - asrs r3, 1 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0x2 - mov r2, r8 - bl AddTextPrinterParameterized - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - ldr r4, _080EBF38 @ =gUnknown_203AAC4 - adds r0, r4, 0 - bl MailboxPC_InitListMenu - ldr r2, _080EBF3C @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x1E] - adds r0, r4, 0 - bl MailboxPC_AddScrollIndicatorArrows - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EBF34: .4byte gUnknown_84176FE -_080EBF38: .4byte gUnknown_203AAC4 -_080EBF3C: .4byte gTasks - thumb_func_end sub_80EBEB0 - - thumb_func_start sub_80EBF40 -sub_80EBF40: @ 80EBF40 - 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, _080EBF94 @ =gTasks+0x8 - mov r10, r0 - mov r4, r9 - add r4, r10 - ldr r0, _080EBF98 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080EBFEA - ldrb r0, [r4, 0x16] - bl ListMenu_ProcessInput - adds r6, r0, 0 - ldrb r0, [r4, 0x16] - ldr r7, _080EBF9C @ =gUnknown_203AAC6 - subs r1, r7, 0x2 - mov r8, r1 - adds r1, r7, 0 - mov r2, r8 - bl ListMenuGetScrollAndRow - movs r0, 0x2 - negs r0, r0 - cmp r6, r0 - beq _080EBFA0 - adds r0, 0x1 - cmp r6, r0 - bne _080EBFB6 - b _080EBFEA - .align 2, 0 -_080EBF94: .4byte gTasks+0x8 -_080EBF98: .4byte gPaletteFade -_080EBF9C: .4byte gUnknown_203AAC6 -_080EBFA0: - movs r0, 0x5 - bl PlaySE - mov r1, r8 - ldrb r0, [r1, 0xA] - bl RemoveScrollIndicatorArrowPair - adds r0, r5, 0 - bl sub_80EC094 - b _080EBFEA -_080EBFB6: - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl MailboxPC_RemoveWindow - movs r0, 0x1 - bl MailboxPC_RemoveWindow - ldrb r0, [r4, 0x16] - adds r1, r7, 0 - mov r2, r8 - bl DestroyListMenuTask - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - mov r1, r8 - ldrb r0, [r1, 0xA] - bl RemoveScrollIndicatorArrowPair - mov r0, r10 - subs r0, 0x8 - add r0, r9 - ldr r1, _080EBFF8 @ =sub_80EBFFC - str r1, [r0] -_080EBFEA: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EBFF8: .4byte sub_80EBFFC - thumb_func_end sub_80EBF40 - - thumb_func_start sub_80EBFFC -sub_80EBFFC: @ 80EBFFC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _080EC054 @ =gStringVar1 - ldr r2, _080EC058 @ =gSaveBlock1Ptr - ldr r1, _080EC05C @ =gUnknown_203AAC4 - 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, _080EC060 @ =0x00002ce2 - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - bl StringLength - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x5 - ble _080EC064 - subs r0, r4, 0x1 - adds r1, r0 - cmp r1, r4 - bcc _080EC06C - ldrb r0, [r1] - cmp r0, 0 - bne _080EC06C - movs r3, 0xFF - adds r2, r4, 0 -_080EC044: - strb r3, [r1] - subs r1, 0x1 - cmp r1, r2 - bcc _080EC06C - ldrb r0, [r1] - cmp r0, 0 - beq _080EC044 - b _080EC06C - .align 2, 0 -_080EC054: .4byte gStringVar1 -_080EC058: .4byte gSaveBlock1Ptr -_080EC05C: .4byte gUnknown_203AAC4 -_080EC060: .4byte 0x00002ce2 -_080EC064: - adds r0, r4, 0 - movs r1, 0x1 - bl ConvertInternationalString -_080EC06C: - ldr r4, _080EC088 @ =gStringVar4 - ldr r1, _080EC08C @ =gUnknown_8417806 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r3, _080EC090 @ =sub_80EC0D8 - adds r0, r5, 0 - movs r1, 0x2 - adds r2, r4, 0 - bl DisplayItemMessageOnField - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EC088: .4byte gStringVar4 -_080EC08C: .4byte gUnknown_8417806 -_080EC090: .4byte sub_80EC0D8 - thumb_func_end sub_80EBFFC - - thumb_func_start sub_80EC094 -sub_80EC094: @ 80EC094 - 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, _080EC0D4 @ =gTasks+0x8 - adds r4, r0 - movs r0, 0 - bl MailboxPC_RemoveWindow - movs r0, 0x1 - bl MailboxPC_RemoveWindow - ldrb r0, [r4, 0x16] - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - bl MailboxPC_DestroyListMenuBuffer - adds r0, r5, 0 - bl sub_80EB8BC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EC0D4: .4byte gTasks+0x8 - thumb_func_end sub_80EC094 - - thumb_func_start sub_80EC0D8 -sub_80EC0D8: @ 80EC0D8 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x2 - bl MailboxPC_GetAddWindow - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - movs r1, 0 - bl GetMenuCursorDimensionByFont - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x10 - mov r8, r0 - str r0, [sp] - movs r6, 0x4 - str r6, [sp, 0x4] - ldr r0, _080EC150 @ =gUnknown_8402228 - str r0, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0x2 - movs r3, 0x2 - bl PrintTextArray - mov r0, r8 - str r0, [sp] - str r6, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl Menu_InitCursor - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - ldr r1, _080EC154 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080EC158 @ =sub_80EC15C - str r1, [r0] - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EC150: .4byte gUnknown_8402228 -_080EC154: .4byte gTasks -_080EC158: .4byte sub_80EC15C - thumb_func_end sub_80EC0D8 - - thumb_func_start sub_80EC15C -sub_80EC15C: @ 80EC15C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - bl Menu_ProcessInput_other - lsls r0, 24 - asrs r4, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r4, r0 - beq _080EC19E - adds r0, 0x1 - cmp r4, r0 - bne _080EC188 - movs r0, 0x5 - bl PlaySE - adds r0, r5, 0 - bl sub_80EC574 - b _080EC19E -_080EC188: - movs r0, 0x5 - bl PlaySE - ldr r0, _080EC1A4 @ =gUnknown_8402228 - lsls r1, r4, 3 - adds r0, 0x4 - adds r1, r0 - ldr r1, [r1] - adds r0, r6, 0 - bl _call_via_r1 -_080EC19E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EC1A4: .4byte gUnknown_8402228 - thumb_func_end sub_80EC15C - - thumb_func_start sub_80EC1A8 -sub_80EC1A8: @ 80EC1A8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, _080EC1CC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080EC1D0 @ =sub_80EC1D4 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EC1CC: .4byte gTasks -_080EC1D0: .4byte sub_80EC1D4 - thumb_func_end sub_80EC1A8 - - thumb_func_start sub_80EC1D4 -sub_80EC1D4: @ 80EC1D4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080EC21C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080EC216 - bl MailboxPC_DestroyListMenuBuffer - bl CleanupOverworldWindowsAndTilemaps - ldr r2, _080EC220 @ =gSaveBlock1Ptr - ldr r1, _080EC224 @ =gUnknown_203AAC4 - 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, _080EC228 @ =0x00002cd0 - adds r1, r0 - ldr r0, [r2] - adds r0, r1 - ldr r1, _080EC22C @ =sub_80EC2C0 - movs r2, 0x1 - bl sub_80BEBEC - adds r0, r4, 0 - bl DestroyTask -_080EC216: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EC21C: .4byte gPaletteFade -_080EC220: .4byte gSaveBlock1Ptr -_080EC224: .4byte gUnknown_203AAC4 -_080EC228: .4byte 0x00002cd0 -_080EC22C: .4byte sub_80EC2C0 - thumb_func_end sub_80EC1D4 - - thumb_func_start sub_80EC230 -sub_80EC230: @ 80EC230 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_807AA70 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080EC250 - ldr r0, _080EC258 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080EC25C @ =sub_80EBF40 - str r0, [r1] -_080EC250: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EC258: .4byte gTasks -_080EC25C: .4byte sub_80EBF40 - thumb_func_end sub_80EC230 - - thumb_func_start sub_80EC260 -sub_80EC260: @ 80EC260 - push {r4,lr} - ldr r0, _080EC274 @ =gUnknown_203AAC4 - ldrb r0, [r0, 0x9] - cmp r0, 0 - bne _080EC278 - movs r0, 0x22 - bl HelpSystem_SetSomeVariable2 - b _080EC27E - .align 2, 0 -_080EC274: .4byte gUnknown_203AAC4 -_080EC278: - movs r0, 0x1E - bl HelpSystem_SetSomeVariable2 -_080EC27E: - bl sub_80F6E9C - ldr r0, _080EC2A8 @ =sub_80EC230 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080EC2AC @ =gUnknown_203AAC4 - ldrb r0, [r0, 0x5] - bl MailboxPC_InitBuffers - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080EC2B0 - adds r0, r4, 0 - bl sub_80EBEB0 - b _080EC2B6 - .align 2, 0 -_080EC2A8: .4byte sub_80EC230 -_080EC2AC: .4byte gUnknown_203AAC4 -_080EC2B0: - adds r0, r4, 0 - bl DestroyTask -_080EC2B6: - bl sub_807DC00 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80EC260 - - thumb_func_start sub_80EC2C0 -sub_80EC2C0: @ 80EC2C0 - push {lr} - ldr r0, _080EC2D4 @ =gFieldCallback - ldr r1, _080EC2D8 @ =sub_80EC260 - str r1, [r0] - ldr r0, _080EC2DC @ =CB2_ReturnToField - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_080EC2D4: .4byte gFieldCallback -_080EC2D8: .4byte sub_80EC260 -_080EC2DC: .4byte CB2_ReturnToField - thumb_func_end sub_80EC2C0 - - thumb_func_start sub_80EC2E0 -sub_80EC2E0: @ 80EC2E0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080EC2F4 @ =gUnknown_8417830 - ldr r3, _080EC2F8 @ =sub_80EC2FC - movs r1, 0x2 - bl DisplayItemMessageOnField - pop {r0} - bx r0 - .align 2, 0 -_080EC2F4: .4byte gUnknown_8417830 -_080EC2F8: .4byte sub_80EC2FC - thumb_func_end sub_80EC2E0 - - thumb_func_start sub_80EC2FC -sub_80EC2FC: @ 80EC2FC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl DisplayYesNoMenuDefaultYes - ldr r1, _080EC31C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080EC320 @ =sub_80EC324 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EC31C: .4byte gTasks -_080EC320: .4byte sub_80EC324 - thumb_func_end sub_80EC2FC - - thumb_func_start sub_80EC324 -sub_80EC324: @ 80EC324 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080EC350 - cmp r0, r1 - ble _080EC35C - cmp r0, 0 - beq _080EC348 - cmp r0, 0x1 - beq _080EC356 - b _080EC35C -_080EC348: - adds r0, r4, 0 - bl sub_80EC364 - b _080EC35C -_080EC350: - movs r0, 0x5 - bl PlaySE -_080EC356: - adds r0, r4, 0 - bl sub_80EC3F8 -_080EC35C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80EC324 - - thumb_func_start sub_80EC364 -sub_80EC364: @ 80EC364 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, _080EC3A0 @ =gSaveBlock1Ptr - ldr r4, _080EC3A4 @ =gUnknown_203AAC4 - 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, _080EC3A8 @ =0x00002cd0 - 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 _080EC3B4 - ldr r2, _080EC3AC @ =gUnknown_8417858 - ldr r3, _080EC3B0 @ =sub_80EC574 - adds r0, r6, 0 - movs r1, 0x2 - bl DisplayItemMessageOnField - b _080EC3EA - .align 2, 0 -_080EC3A0: .4byte gSaveBlock1Ptr -_080EC3A4: .4byte gUnknown_203AAC4 -_080EC3A8: .4byte 0x00002cd0 -_080EC3AC: .4byte gUnknown_8417858 -_080EC3B0: .4byte sub_80EC574 -_080EC3B4: - ldr r2, _080EC3F0 @ =gUnknown_841786B - ldr r3, _080EC3F4 @ =sub_80EC574 - adds r0, r6, 0 - movs r1, 0x2 - bl DisplayItemMessageOnField - adds r0, r5, 0 - bl ClearMailStruct - bl sub_80EBE04 - 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 _080EC3E4 - cmp r2, 0 - beq _080EC3E4 - subs r0, r2, 0x1 - strh r0, [r4, 0x2] -_080EC3E4: - adds r0, r6, 0 - bl sub_80EBD88 -_080EC3EA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EC3F0: .4byte gUnknown_841786B -_080EC3F4: .4byte sub_80EC574 - thumb_func_end sub_80EC364 - - thumb_func_start sub_80EC3F8 -sub_80EC3F8: @ 80EC3F8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_80EC574 - pop {r0} - bx r0 - thumb_func_end sub_80EC3F8 - - thumb_func_start sub_80EC408 -sub_80EC408: @ 80EC408 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl CalculatePlayerPartyCount - lsls r0, 24 - cmp r0, 0 - bne _080EC420 - adds r0, r4, 0 - bl sub_80EC520 - b _080EC436 -_080EC420: - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r0, _080EC43C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080EC440 @ =sub_80EC444 - str r0, [r1] -_080EC436: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EC43C: .4byte gTasks -_080EC440: .4byte sub_80EC444 - thumb_func_end sub_80EC408 - - thumb_func_start sub_80EC444 -sub_80EC444: @ 80EC444 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080EC470 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080EC468 - bl MailboxPC_DestroyListMenuBuffer - bl CleanupOverworldWindowsAndTilemaps - bl sub_81273D8 - adds r0, r4, 0 - bl DestroyTask -_080EC468: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EC470: .4byte gPaletteFade - thumb_func_end sub_80EC444 - - thumb_func_start sub_80EC474 -sub_80EC474: @ 80EC474 - push {r4-r6,lr} - ldr r0, _080EC488 @ =gUnknown_203AAC4 - ldrb r0, [r0, 0x9] - cmp r0, 0 - bne _080EC48C - movs r0, 0x22 - bl HelpSystem_SetSomeVariable2 - b _080EC492 - .align 2, 0 -_080EC488: .4byte gUnknown_203AAC4 -_080EC48C: - movs r0, 0x1E - bl HelpSystem_SetSomeVariable2 -_080EC492: - ldr r0, _080EC4E8 @ =sub_80EC230 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _080EC4EC @ =gUnknown_203AAC4 - ldrb r4, [r5, 0x5] - bl sub_80EBDC8 - strb r0, [r5, 0x5] - bl sub_80EBE04 - ldrb r0, [r5, 0x5] - cmp r4, r0 - beq _080EC4C6 - ldrb r1, [r5, 0x5] - ldrb r0, [r5, 0x4] - ldrh r2, [r5, 0x2] - adds r0, r2 - cmp r1, r0 - bge _080EC4C6 - cmp r2, 0 - beq _080EC4C6 - subs r0, r2, 0x1 - strh r0, [r5, 0x2] -_080EC4C6: - adds r0, r6, 0 - bl sub_80EBD88 - bl sub_80F6E9C - ldr r0, _080EC4EC @ =gUnknown_203AAC4 - ldrb r0, [r0, 0x5] - bl MailboxPC_InitBuffers - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080EC4F0 - adds r0, r6, 0 - bl sub_80EBEB0 - b _080EC4F6 - .align 2, 0 -_080EC4E8: .4byte sub_80EC230 -_080EC4EC: .4byte gUnknown_203AAC4 -_080EC4F0: - adds r0, r6, 0 - bl DestroyTask -_080EC4F6: - bl sub_807DC00 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80EC474 - - thumb_func_start sub_80EC500 -sub_80EC500: @ 80EC500 - push {lr} - ldr r0, _080EC514 @ =gFieldCallback - ldr r1, _080EC518 @ =sub_80EC474 - str r1, [r0] - ldr r0, _080EC51C @ =CB2_ReturnToField - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_080EC514: .4byte gFieldCallback -_080EC518: .4byte sub_80EC474 -_080EC51C: .4byte CB2_ReturnToField - thumb_func_end sub_80EC500 - - thumb_func_start sub_80EC520 -sub_80EC520: @ 80EC520 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080EC534 @ =gText_ThereIsNoPokemon - ldr r3, _080EC538 @ =sub_80EC574 - movs r1, 0x2 - bl DisplayItemMessageOnField - pop {r0} - bx r0 - .align 2, 0 -_080EC534: .4byte gText_ThereIsNoPokemon -_080EC538: .4byte sub_80EC574 - thumb_func_end sub_80EC520 - - thumb_func_start sub_80EC53C -sub_80EC53C: @ 80EC53C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0 - bl ClearDialogWindowAndFrame - adds r0, r4, 0 - bl sub_80EBEB0 - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - ldr r1, _080EC56C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080EC570 @ =sub_80EBF40 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EC56C: .4byte gTasks -_080EC570: .4byte sub_80EBF40 - thumb_func_end sub_80EC53C - - thumb_func_start sub_80EC574 -sub_80EC574: @ 80EC574 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - bl MailboxPC_RemoveWindow - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - ldr r1, _080EC59C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080EC5A0 @ =sub_80EC53C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EC59C: .4byte gTasks -_080EC5A0: .4byte sub_80EC53C - thumb_func_end sub_80EC574 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 180ec0e5d..c6daa62ea 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1455,7 +1455,7 @@ _0808C3E0: .align 2, 0 _0808C444: .4byte gUnknown_83CDA20 _0808C448: - bl sub_807AA70 + bl field_weather_is_fade_finished lsls r0, 24 cmp r0, 0 bne _0808C454 diff --git a/asm/shop.s b/asm/shop.s index c0f4779b7..bc5eccd64 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -386,7 +386,7 @@ sub_809AD8C: @ 809AD8C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_807AA70 + bl field_weather_is_fade_finished lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 0944bf82a..ce1f5aeeb 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -139,37 +139,6 @@ gUnknown_84020E6:: @ 84020E6 gUnknown_84020F8:: @ 84020F8 .incbin "baserom.gba", 0x4020F8, 0xE4 -gUnknown_84021DC:: @ 84021DC - .incbin "baserom.gba", 0x4021DC, 0xC - -gUnknown_84021E8:: @ 84021E8 - .incbin "baserom.gba", 0x4021E8, 0x18 - -gUnknown_8402200:: @ 8402200 - .incbin "baserom.gba", 0x402200, 0x3 - -gUnknown_8402203:: @ 8402203 - .incbin "baserom.gba", 0x402203, 0x5 - -gUnknown_8402208:: @ 8402208 - .incbin "baserom.gba", 0x402208, 0x18 - -gUnknown_8402220:: @ 8402220 - .incbin "baserom.gba", 0x402220, 0x8 - -gUnknown_8402228:: @ 8402228 - .incbin "baserom.gba", 0x402228, 0x20 - -gUnknown_8402248:: @ 8402248 - .incbin "baserom.gba", 0x402248, 0x8 - -gUnknown_8402250:: @ 8402250 - .incbin "baserom.gba", 0x402250, 0x8 - -gUnknown_8402258:: @ 8402258 - .incbin "baserom.gba", 0x402258, 0x8 - - .section .rodata.battle_anim_special gUnknown_840BF3C:: @ 840BF3C diff --git a/data/maps/PalletTown_PlayersHouse_2F/scripts.inc b/data/maps/PalletTown_PlayersHouse_2F/scripts.inc index 3700d06be..77ff855e4 100644 --- a/data/maps/PalletTown_PlayersHouse_2F/scripts.inc +++ b/data/maps/PalletTown_PlayersHouse_2F/scripts.inc @@ -47,7 +47,7 @@ PalletTown_PlayersHouse_2F_EventScript_168CE4:: @ 8168CE4 releaseall end -gUnknown_8168D17:: @ 8168D17 +EventScript_PalletTown_PlayersHouse_2F_ShutDownPC:: @ 8168D17 setvar VAR_0x8004, 1 playse SE_PC_OFF special sub_80CA9A8 diff --git a/data/strings.s b/data/strings.s index 63c08bbab..4f0fefb19 100644 --- a/data/strings.s +++ b/data/strings.s @@ -475,11 +475,11 @@ gUnknown_841623D:: @ 841623D .string "YES\n" .string "NO$" -gUnknown_8416244:: +gText_GoBackToThePreviousMenu:: .string "Go back to the\n" .string "previous menu.$" -gUnknown_8416262:: @ 8416262 +gText_WhatWouldYouLikeToDo:: @ 8416262 .string "What would you like to do?$" gUnknown_841627D:: @@ -1135,37 +1135,37 @@ gUnknown_84176CE:: @ 0x84176CE gUnknown_84176CF:: @ 84176CF .string "Cancel the battle?$" -gUnknown_84176E2:: @ 0x84176E2 +gText_TurnOff:: @ 0x84176E2 .string "TURN OFF$" gUnknown_84176EB:: @ 0x84176EB .string "もようがえ$" -gUnknown_84176F1:: @ 0x84176F1 +gText_ItemStorage:: @ 0x84176F1 .string "ITEM STORAGE$" -gUnknown_84176FE:: @ 84176FE +gText_Mailbox:: @ 84176FE .string "MAILBOX$" -gUnknown_8417706:: @ 0x8417706 +gText_DepositItem2:: @ 0x8417706 .string "DEPOSIT ITEM$" -gUnknown_8417713:: @ 0x8417713 +gText_WithdrawItem2:: @ 0x8417713 .string "WITHDRAW ITEM$" gUnknown_8417721:: @ 0x8417721 .string "どうぐを すてる$" -gUnknown_841772A:: @ 0x841772A +gText_StoreItemsInThePC:: @ 0x841772A .string "Store items in the PC.$" -gUnknown_8417741:: @ 0x8417741 +gText_TakeOutItemsFromThePC:: @ 0x8417741 .string "Take out items from the PC.$" gUnknown_841775D:: @ 0x841775D .string "パソコンに あずけている\nどうぐを すてます$" -gUnknown_8417774:: @ 8417774 +gText_ThereAreNoItems:: @ 8417774 .string "There are no items.{PAUSE_UNTIL_PRESS}$" gText_NoMoreRoomInBag:: @ 841778A @@ -1189,19 +1189,19 @@ gOtherText_MoveToBag:: gOtherText_Give2:: .string "GIVE$" -gUnknown_84177EE:: @ 84177EE +gText_TheresNoMailHere:: @ 84177EE .string "There's no MAIL here.{PAUSE_UNTIL_PRESS}$" -gUnknown_8417806:: @ 8417806 +gText_WhatWouldYouLikeToDoWithPlayersMail:: @ 8417806 .string "What would you like to do with\n{STR_VAR_1}'s MAIL?$" -gUnknown_8417830:: @ 8417830 +gText_MessageWillBeLost:: @ 8417830 .string "The message will be lost.\nIs that okay?$" -gUnknown_8417858:: @ 8417858 +gText_BagIsFull:: @ 8417858 .string "The BAG is full.{PAUSE_UNTIL_PRESS}$" -gUnknown_841786B:: @ 841786B +gText_MailReturnedToBagMessageErased:: @ 841786B .string "The MAIL was returned to the BAG\nwith its message erased.{PAUSE_UNTIL_PRESS}$" gText_WithdrawItem:: @ 84178A7 diff --git a/include/event_scripts.h b/include/event_scripts.h index 41a7a7bf2..ce9d0bbf5 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1158,4 +1158,7 @@ extern const u8 EventScript_ItemfinderDigUpUnderfootItem[]; // new_game extern const u8 EventScript_ResetAllMapFlags[]; +// player_pc +extern const u8 EventScript_PalletTown_PlayersHouse_2F_ShutDownPC[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/field_weather.h b/include/field_weather.h index 78d2f2412..96c1ce7cb 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -13,7 +13,7 @@ void DoCurrentWeather(void); void SetSav1WeatherFromCurrMapHeader(void); void sub_807B0C4(u16 *, u16 *, u32); void PlayRainStoppingSoundEffect(void); -bool8 sub_807AA70(void); +bool8 field_weather_is_fade_finished(void); void SetWeatherScreenFadeOut(void); void sub_807B070(void); u8 GetCurrentWeather(void); diff --git a/include/help_system.h b/include/help_system.h index f28c168f7..ff77d01d6 100644 --- a/include/help_system.h +++ b/include/help_system.h @@ -89,5 +89,7 @@ void HelpSystem_FillPanel3(void); void PrintListMenuItems(void); void PlaceListMenuCursor(void); bool8 MoveCursor(u8 by, u8 dirn); +void sub_812B234(void); +void sub_812B248(void); #endif //GUARD_HELP_SYSTEM_H diff --git a/include/item.h b/include/item.h index 6e0af31bb..69560a0e5 100644 --- a/include/item.h +++ b/include/item.h @@ -77,5 +77,6 @@ u16 GetPcItemQuantity(u16 *); void ItemPcCompaction(void); void RemoveItemFromPC(u16 itemId, u16 quantity); void SortAndCompactBagPocket(struct BagPocket * pocket); +u8 CountItemsInPC(void); #endif // GUARD_ITEM_H diff --git a/include/item_menu.h b/include/item_menu.h index ceaf277a3..83b8d6d15 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -38,5 +38,6 @@ void sub_810A1F8(u8 taskId); void sub_8107ECC(void); void sub_8108DC8(u8 pocketId); void sub_81089F4(u8 pocketId); +void sub_8107DB4(u8 menuType, u8 pocket, MainCallback callback); #endif //GUARD_ITEM_MENU_H diff --git a/include/mailbox_pc.h b/include/mailbox_pc.h index c2d18fc4b..6d23648b3 100644 --- a/include/mailbox_pc.h +++ b/include/mailbox_pc.h @@ -1,12 +1,14 @@ #ifndef GUARD_MAILBOX_PC_H #define GUARD_MAILBOX_PC_H +#include "player_pc.h" + bool8 MailboxPC_InitBuffers(u8 num); u8 MailboxPC_GetAddWindow(u8 winIdx); void MailboxPC_RemoveWindow(u8 winIdx); u8 MailboxPC_GetWindowId(u8 winIdx); -u8 MailboxPC_InitListMenu(struct PlayerPC_Unk_203AAC4 * playerPcStruct); -void MailboxPC_AddScrollIndicatorArrows(struct PlayerPC_Unk_203AAC4 * playerPcStruct); +u8 MailboxPC_InitListMenu(struct PlayerPCItemPageStruct * playerPcStruct); +void MailboxPC_AddScrollIndicatorArrows(struct PlayerPCItemPageStruct * playerPcStruct); void MailboxPC_DestroyListMenuBuffer(void); #endif //GUARD_MAILBOX_PC_H diff --git a/include/overworld.h b/include/overworld.h index 77cacff94..54e1b601f 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -113,7 +113,6 @@ u32 sub_8054C04(void); extern u8 gDisableMapMusicChangeOnMapLoad; extern u8 gUnknown_2036E28; -extern void (*gFieldCallback)(void); extern bool8 (* gFieldCallback2)(void); void SetLastHealLocationWarp(u8 healLocaionId); diff --git a/include/party_menu.h b/include/party_menu.h index bea5dcdde..16dccb6d8 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -82,5 +82,6 @@ void OpenPartyMenuInBattle(u8 arg); void sub_8127EC4(u8 battlerId, u8 unk, u8 arrayIndex); bool8 IsMultiBattle(void); void sub_8126EDC(void); +void PartyMenuInit_FromPlayerPc(void); #endif // GUARD_PARTY_MENU_H diff --git a/include/player_pc.h b/include/player_pc.h index 06ab0cb0f..ecaf023e5 100644 --- a/include/player_pc.h +++ b/include/player_pc.h @@ -6,14 +6,16 @@ // Exported type declarations -struct PlayerPC_Unk_203AAC4 +struct PlayerPCItemPageStruct { u16 selectedRow; u16 scrollOffset; - u8 unk_4; - u8 unk_5; - u8 filler_6[4]; - u8 unk_A; + u8 pageItems; + u8 count; + u8 filler_6[3]; + u8 unk_9; + u8 scrollIndicatorId; + u8 filler_B[5]; }; // Exported RAM declarations diff --git a/include/strings.h b/include/strings.h index e7d40281d..d6608812f 100644 --- a/include/strings.h +++ b/include/strings.h @@ -426,4 +426,24 @@ extern const u8 gText_HaventReceivedGiftOkayToDiscard[]; extern const u8 gText_SendingWonderCard[]; extern const u8 gText_SendingWonderNews[]; +// player_pc +extern const u8 gText_WhatWouldYouLikeToDo[]; +extern const u8 gText_TakeOutItemsFromThePC[]; +extern const u8 gText_StoreItemsInThePC[]; +extern const u8 gText_GoBackToThePreviousMenu[]; +extern const u8 gText_ItemStorage[]; +extern const u8 gText_Mailbox[]; +extern const u8 gText_TurnOff[]; +extern const u8 gText_WithdrawItem2[]; +extern const u8 gText_DepositItem2[]; +extern const u8 gOtherText_Read[]; +extern const u8 gOtherText_MoveToBag[]; +extern const u8 gOtherText_Give2[]; +extern const u8 gText_TheresNoMailHere[]; +extern const u8 gText_ThereAreNoItems[]; +extern const u8 gText_WhatWouldYouLikeToDoWithPlayersMail[]; +extern const u8 gText_MessageWillBeLost[]; +extern const u8 gText_BagIsFull[]; +extern const u8 gText_MailReturnedToBagMessageErased[]; + #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index 0e8edea06..6407bdca5 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -208,7 +208,7 @@ SECTIONS { src/fldeff_softboiled.o(.text); asm/battle_tower.o(.text); asm/battle_controller_oak.o(.text); - asm/player_pc.o(.text); + src/player_pc.o(.text); src/intro.o(.text); asm/battle_anim_special.o(.text); asm/hall_of_fame.o(.text); @@ -434,6 +434,7 @@ SECTIONS { data/data_83FECCC.o(.rodata); src/battle_controller_safari.o(.rodata); data/data_83FECCC.o(.rodata.83FEDE4); + src/player_pc.o(.rodata); src/intro.o(.rodata); data/data_83FECCC.o(.rodata.battle_anim_special); src/credits.o(.rodata); diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 62254a559..6447ae1b2 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -522,7 +522,7 @@ static bool32 sub_807E40C(void) bool32 sub_807E418(void) { - if (sub_807AA70() == TRUE && sub_80F83B0()) + if (field_weather_is_fade_finished() == TRUE && sub_80F83B0()) return TRUE; else return FALSE; diff --git a/src/item_use.c b/src/item_use.c index f8a99cb1d..9657488f3 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -117,7 +117,7 @@ void sub_80A1084(void) void sub_80A109C(u8 taskId) { - if (sub_807AA70() == TRUE) + if (field_weather_is_fade_finished() == TRUE) { sItemUseOnFieldCB(taskId); } @@ -172,7 +172,7 @@ bool8 sub_80A1194(void) void sub_80A11C0(u8 taskId) { - if (sub_807AA70() == TRUE) + if (field_weather_is_fade_finished() == TRUE) { UnfreezeMapObjects(); ScriptContext2_Disable(); diff --git a/src/mailbox_pc.c b/src/mailbox_pc.c index 0ebffc67e..0a4535271 100644 --- a/src/mailbox_pc.c +++ b/src/mailbox_pc.c @@ -94,10 +94,10 @@ static void ItemPrintFunc(u8 windowId, s32 itemId, u8 y) } } -u8 MailboxPC_InitListMenu(struct PlayerPC_Unk_203AAC4 * playerPcStruct) +u8 MailboxPC_InitListMenu(struct PlayerPCItemPageStruct * playerPcStruct) { u16 i; - for (i = 0; i < playerPcStruct->unk_5; i++) + for (i = 0; i < playerPcStruct->count; i++) { sListMenuItems[i].label = sString_Dummy; sListMenuItems[i].index = i; @@ -106,7 +106,7 @@ u8 MailboxPC_InitListMenu(struct PlayerPC_Unk_203AAC4 * playerPcStruct) sListMenuItems[i].index = -2; gMultiuseListMenuTemplate.items = sListMenuItems; - gMultiuseListMenuTemplate.totalItems = playerPcStruct->unk_5 + 1; + gMultiuseListMenuTemplate.totalItems = playerPcStruct->count + 1; gMultiuseListMenuTemplate.windowId = sWindowIds[1]; gMultiuseListMenuTemplate.header_X = 0; gMultiuseListMenuTemplate.item_X = GetMenuCursorDimensionByFont(2, 0); @@ -132,9 +132,9 @@ static void MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list) PlaySE(SE_SELECT); } -void MailboxPC_AddScrollIndicatorArrows(struct PlayerPC_Unk_203AAC4 * playerPcStruct) +void MailboxPC_AddScrollIndicatorArrows(struct PlayerPCItemPageStruct * playerPcStruct) { - playerPcStruct->unk_A = AddScrollIndicatorArrowPairParameterized(2, 0xC2, 0xC, 0x94, playerPcStruct->unk_5 - playerPcStruct->unk_4 + 1, 110, 110, &playerPcStruct->scrollOffset); + playerPcStruct->scrollIndicatorId = AddScrollIndicatorArrowPairParameterized(2, 0xC2, 0xC, 0x94, playerPcStruct->count - playerPcStruct->pageItems + 1, 110, 110, &playerPcStruct->scrollOffset); } void MailboxPC_DestroyListMenuBuffer(void) diff --git a/src/map_preview_screen.c b/src/map_preview_screen.c index 7d9fa935e..c465a5683 100644 --- a/src/map_preview_screen.c +++ b/src/map_preview_screen.c @@ -495,7 +495,7 @@ static void sub_80F83D0(u8 taskId) } break; case 2: - if (sub_807AA70()) + if (field_weather_is_fade_finished()) { Overworld_PlaySpecialMapMusic(); data[0]++; diff --git a/src/player_pc.c b/src/player_pc.c new file mode 100644 index 000000000..cebdd765a --- /dev/null +++ b/src/player_pc.c @@ -0,0 +1,741 @@ +#include "global.h" +#include "palette.h" +#include "item.h" +#include "task.h" +#include "menu_indicators.h" +#include "new_menu_helpers.h" +#include "strings.h" +#include "menu.h" +#include "mail.h" +#include "mail_data.h" +#include "help_system.h" +#include "sound.h" +#include "overworld.h" +#include "script.h" +#include "mailbox_pc.h" +#include "player_pc.h" +#include "field_weather.h" +#include "event_scripts.h" +#include "field_fadetransition.h" +#include "string_util.h" +#include "item_menu.h" +#include "item_pc.h" +#include "party_menu.h" +#include "constants/items.h" +#include "constants/songs.h" + +#define PC_ITEM_ID 0 +#define PC_QUANTITY 1 +#define NEW_GAME_PC_ITEMS(i, type) ((u16)((u16 *)gNewGamePCItems + type)[i * 2]) + +#define tCount data[2] +#define tPageItems data[4] +#define tItemPcParam data[6] +#define tWindowId data[10] +#define tListMenuTaskId data[11] + +static EWRAM_DATA const u8 *sItemOrder = NULL; +static EWRAM_DATA u8 sTopMenuItemCount = 0; +EWRAM_DATA struct PlayerPCItemPageStruct gPlayerPcMenuManager = {}; + +#define SELECTED_MAIL (gSaveBlock1Ptr->mail[PC_MAIL_NUM(gPlayerPcMenuManager.scrollOffset) + gPlayerPcMenuManager.selectedRow]) + +static void Task_DrawPlayerPcTopMenu(u8 taskId); +static void Task_TopMenuHandleInput(u8 taskId); +static void Task_PlayerPcItemStorage(u8 taskId); +static void Task_PlayerPcMailbox(u8 taskId); +static void Task_PlayerPcTurnOff(u8 taskId); +static void Task_CreateItemStorageSubmenu(u8 taskId, u8 cursorPos); +static void PrintStringOnWindow0WithDialogueFrame(const u8 *str); +static void Task_TopMenu_ItemStorageSubmenu_HandleInput(u8 taskId); +static void Task_PlayerPcDepositItem(u8 taskId); +static void Task_DepositItem_WaitFadeAndGoToBag(u8 taskId); +static void CB2_ReturnFromDepositMenu(void); +static void Task_PlayerPcWithdrawItem(u8 taskId); +static void CB2_ReturnFromWithdrawMenu(void); +static void Task_WithdrawItemBeginFade(u8 taskId); +static void Task_PlayerPcCancel(u8 taskId); +static void Tsak_SetPageItemVars(u8 taskId); +static u8 CountPCMail(void); +static void PCMailCompaction(void); +static void Task_DrawMailboxPcMenu(u8 taskId); +static void Task_MailboxPcHandleInput(u8 taskId); +static void Task_PrintWhatToDoWithSelectedMail(u8 taskId); +static void Task_DestroyMailboxPcViewAndCancel(u8 taskId); +static void Task_DrawMailSubmenu(u8 taskId); +static void Task_MailSubmenuHandleInput(u8 taskId); +static void Task_PlayerPcReadMail(u8 taskId); +static void Task_WaitFadeAndReadSelectedMail(u8 taskId); +static void CB2_SetCbToReturnToMailbox(void); +static void Task_PlayerPcMoveMailToBag(u8 taskId); +static void Task_DrawYesNoMenuToConfirmMoveToBag(u8 taskId); +static void Task_MoveToBagYesNoMenuHandleInput(u8 taskId); +static void Task_TryPutMailInBag_DestroyMsgIfSuccessful(u8 taskId); +static void Task_DeclinedMoveMailToBag(u8 taskId); +static void Task_PlayerPcGiveMailToMon(u8 taskId); +static void Task_WaitFadeAndGoToPartyMenu(u8 taskId); +static void Task_Error_NoPokemon(u8 taskId); +static void Task_PlayerPcExitMailSubmenu(u8 taskId); + +static const u8 *const sItemStorageActionDescriptionPtrs[] = { + gText_TakeOutItemsFromThePC, + gText_StoreItemsInThePC, + gText_GoBackToThePreviousMenu +}; + +static const struct MenuAction sMenuActions_TopMenu[] = { + {gText_ItemStorage, Task_PlayerPcItemStorage}, + {gText_Mailbox, Task_PlayerPcMailbox}, + {gText_TurnOff, Task_PlayerPcTurnOff} +}; + +static const u8 gUnknown_8402200[] = { 0, 1, 2 }; +static const u8 gUnknown_8402203[] = { 0, 1, 2 }; + +static const struct MenuAction sMenuActions_ItemPc[] = { + {gText_WithdrawItem2, Task_PlayerPcWithdrawItem}, + {gText_DepositItem2, Task_PlayerPcDepositItem}, + {gFameCheckerText_Cancel, Task_PlayerPcCancel} +}; + +static const struct ItemSlot gNewGamePCItems[] = { + { ITEM_POTION, 1 }, + { ITEM_NONE, 0 } +}; + +static const struct MenuAction sMenuActions_MailSubmenu[] = { + {gOtherText_Read, Task_PlayerPcReadMail}, + {gOtherText_MoveToBag, Task_PlayerPcMoveMailToBag}, + {gOtherText_Give2, Task_PlayerPcGiveMailToMon}, + {gOtherText_Exit, Task_PlayerPcExitMailSubmenu} +}; + +static const struct WindowTemplate sWindowTemplate_TopMenu_3Items = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 13, + .height = 6, + .paletteNum = 15, + .baseBlock = 0x008 +}; + +static const struct WindowTemplate sWindowTemplate_TopMenu_4Items = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 13, + .height = 8, + .paletteNum = 15, + .baseBlock = 0x008 +}; + +static const struct WindowTemplate sWindowTemplate_ItemStorageSubmenu = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 14, + .height = 6, + .paletteNum = 15, + .baseBlock = 0x008 +}; + +void NewGameInitPCItems(void) +{ + u8 i; + + for (i = 0, ClearPCItemSlots(); NEW_GAME_PC_ITEMS(i, PC_ITEM_ID) && NEW_GAME_PC_ITEMS(i, PC_QUANTITY) && + AddPCItem(NEW_GAME_PC_ITEMS(i, PC_ITEM_ID), NEW_GAME_PC_ITEMS(i, PC_QUANTITY)) == TRUE; i++) + ; +} + +void sub_80EB6AC(void) +{ + u8 taskId; + + gPlayerPcMenuManager.unk_9 = 0; + sub_812B234(); + sItemOrder = gUnknown_8402200; + sTopMenuItemCount = 3; + taskId = CreateTask(TaskDummy, 0); + DisplayItemMessageOnField(taskId, 2, gText_WhatWouldYouLikeToDo, Task_DrawPlayerPcTopMenu); +} + +void sub_80EB6FC(void) +{ + u8 taskId; + + gPlayerPcMenuManager.unk_9 = 1; + sub_812B234(); + sItemOrder = gUnknown_8402203; + sTopMenuItemCount = 3; + taskId = CreateTask(TaskDummy, 0); + DisplayItemMessageOnField(taskId, 2, gText_WhatWouldYouLikeToDo, Task_DrawPlayerPcTopMenu); +} + +static void Task_DrawPlayerPcTopMenu(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + if (sTopMenuItemCount == 3) + tWindowId = AddWindow(&sWindowTemplate_TopMenu_3Items); + else + tWindowId = AddWindow(&sWindowTemplate_TopMenu_4Items); + SetStdWindowBorderStyle(tWindowId, 0); + AddItemMenuActionTextPrinters(tWindowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, GetFontAttribute(2, FONTATTR_LETTER_SPACING), 16, sTopMenuItemCount, sMenuActions_TopMenu, sItemOrder); + Menu_InitCursor(tWindowId, 2, 0, 2, 16, sTopMenuItemCount, 0); + ScheduleBgCopyTilemapToVram(0); + gTasks[taskId].func = Task_TopMenuHandleInput; +} + +static void Task_TopMenuHandleInput(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + s8 input = Menu_ProcessInputNoWrapAround(); + switch (input) + { + case -2: + break; + case -1: + PlaySE(SE_SELECT); + ClearStdWindowAndFrameToTransparent(tWindowId, FALSE); + ClearWindowTilemap(tWindowId); + RemoveWindow(tWindowId); + ScheduleBgCopyTilemapToVram(0); + gTasks[taskId].func = Task_PlayerPcTurnOff; + break; + default: + ClearStdWindowAndFrameToTransparent(tWindowId, FALSE); + ClearWindowTilemap(tWindowId); + RemoveWindow(tWindowId); + ScheduleBgCopyTilemapToVram(0); + gTasks[taskId].func = sMenuActions_TopMenu[sItemOrder[input]].func.void_u8; + break; + } +} + +static void Task_ReturnToTopMenu(u8 taskId) +{ + sub_812B248(); + DisplayItemMessageOnField(taskId, 2, gText_WhatWouldYouLikeToDo, Task_DrawPlayerPcTopMenu); +} + +static void Task_PlayerPcItemStorage(u8 taskId) +{ + Task_CreateItemStorageSubmenu(taskId, FALSE); + gTasks[taskId].func = Task_TopMenu_ItemStorageSubmenu_HandleInput; +} + +static void Task_PlayerPcMailbox(u8 taskId) +{ + gPlayerPcMenuManager.count = CountPCMail(); + if (gPlayerPcMenuManager.count == 0) + { + DisplayItemMessageOnField(taskId, 2, gText_TheresNoMailHere, Task_ReturnToTopMenu); + } + else + { + gPlayerPcMenuManager.selectedRow = 0; + gPlayerPcMenuManager.scrollOffset = 0; + PCMailCompaction(); + Tsak_SetPageItemVars(taskId); + if (gPlayerPcMenuManager.unk_9 == 0) + HelpSystem_SetSomeVariable2(34); + else + HelpSystem_SetSomeVariable2(30); + if (MailboxPC_InitBuffers(gPlayerPcMenuManager.count) == TRUE) + { + ClearDialogWindowAndFrame(0, FALSE); + Task_DrawMailboxPcMenu(taskId); + gTasks[taskId].func = Task_MailboxPcHandleInput; + } + else + { + DisplayItemMessageOnField(taskId, 2, gText_TheresNoMailHere, Task_ReturnToTopMenu); + } + } +} + +static void Task_PlayerPcTurnOff(u8 taskId) +{ + if (gPlayerPcMenuManager.unk_9 == 0) + ScriptContext1_SetupScript(EventScript_PalletTown_PlayersHouse_2F_ShutDownPC); + else + EnableBothScriptContexts(); + DestroyTask(taskId); +} + +static void Task_CreateItemStorageSubmenu(u8 taskId, u8 cursorPos) +{ + s16 *data = gTasks[taskId].data; + if (gPlayerPcMenuManager.unk_9 == 0) + HelpSystem_SetSomeVariable2(33); + else + HelpSystem_SetSomeVariable2(29); + tWindowId = AddWindow(&sWindowTemplate_ItemStorageSubmenu); + SetStdWindowBorderStyle(tWindowId, FALSE); + PrintTextArray(tWindowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 3, sMenuActions_ItemPc); + Menu_InitCursor(tWindowId, 2, 0, 2, 16, 3, cursorPos); + ScheduleBgCopyTilemapToVram(0); + PrintStringOnWindow0WithDialogueFrame(sItemStorageActionDescriptionPtrs[cursorPos]); +} + +static void PrintStringOnWindow0WithDialogueFrame(const u8 *str) +{ + DrawDialogueFrame(0, FALSE); + AddTextPrinterParameterized(0, 2, str, 0, 1, 0, NULL); +} + +static void Task_TopMenu_ItemStorageSubmenu_HandleInput(u8 taskId) +{ + if (JOY_REPT(DPAD_UP)) + { + if (Menu_GetCursorPos() != 0) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(-1); + PrintStringOnWindow0WithDialogueFrame(sItemStorageActionDescriptionPtrs[Menu_GetCursorPos()]); + } + } + else if (JOY_REPT(DPAD_DOWN)) + { + if (Menu_GetCursorPos() != 2) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(+1); + PrintStringOnWindow0WithDialogueFrame(sItemStorageActionDescriptionPtrs[Menu_GetCursorPos()]); + } + } + else if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + sMenuActions_ItemPc[Menu_GetCursorPos()].func.void_u8(taskId); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sMenuActions_ItemPc[2].func.void_u8(taskId); + } +} + +static void Task_DepositItem_WaitFadeAndGoToBag(u8 taskId) +{ + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + sub_8107DB4(3, POCKET_ITEMS - 1, CB2_ReturnToField); + gFieldCallback = CB2_ReturnFromDepositMenu; + DestroyTask(taskId); + } +} + +static void Task_PlayerPcDepositItem(u8 taskId) +{ + gTasks[taskId].func = Task_DepositItem_WaitFadeAndGoToBag; + fade_screen(1, 0); +} + +static void Task_ReturnToItemStorageSubmenu(u8 taskId) +{ + if (field_weather_is_fade_finished() == TRUE) + gTasks[taskId].func = Task_TopMenu_ItemStorageSubmenu_HandleInput; +} + +static void CB2_ReturnFromDepositMenu(void) +{ + u8 taskId; + sub_80F6E9C(); + DrawDialogueFrame(0, TRUE); + taskId = CreateTask(Task_ReturnToItemStorageSubmenu, 0); + Task_CreateItemStorageSubmenu(taskId, 1); + sub_807DC00(); +} + +static void Task_PlayerPcWithdrawItem(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + tCount = CountItemsInPC(); + if (tCount != 0) + { + tItemPcParam = 0; + gTasks[taskId].func = Task_WithdrawItemBeginFade; + gFieldCallback = CB2_ReturnFromWithdrawMenu; + } + else + { + ClearStdWindowAndFrameToTransparent(tWindowId, FALSE); + ClearWindowTilemap(tWindowId); + RemoveWindow(tWindowId); + DisplayItemMessageOnField(taskId, 2, gText_ThereAreNoItems, Task_PlayerPcItemStorage); + } +} + +static void CB2_ReturnFromWithdrawMenu(void) +{ + u8 taskId; + sub_80F6E9C(); + DrawDialogueFrame(0, TRUE); + taskId = CreateTask(Task_ReturnToItemStorageSubmenu, 0); + Task_CreateItemStorageSubmenu(taskId, 0); + sub_807DC00(); +} + +static void Task_WithdrawItem_WaitFadeAndGoToItemStorage(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + ItemPc_Init(tItemPcParam, CB2_ReturnToField); + DestroyTask(taskId); + } +} + +static void Task_WithdrawItemBeginFade(u8 taskId) +{ + gTasks[taskId].func = Task_WithdrawItem_WaitFadeAndGoToItemStorage; + ItemPc_SetInitializedFlag(0); + fade_screen(1, 0); +} + +static void Task_PlayerPcCancel(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + ClearStdWindowAndFrameToTransparent(tWindowId, FALSE); + ClearWindowTilemap(tWindowId); + CopyWindowToVram(tWindowId, 1); + RemoveWindow(tWindowId); + Task_ReturnToTopMenu(taskId); +} + +static void Tsak_SetPageItemVars(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + if (tCount >= 8) + tPageItems = 8; + else + tPageItems = tCount + 1; + if (gPlayerPcMenuManager.count >= 8) + gPlayerPcMenuManager.pageItems = 8; + else + gPlayerPcMenuManager.pageItems = gPlayerPcMenuManager.count + 1; +} + +static u8 CountPCMail(void) +{ + u8 count = 0; + u8 i; + + for (i = PC_MAIL_NUM(0); i < MAIL_COUNT; i++) + { + if (gSaveBlock1Ptr->mail[i].itemId != ITEM_NONE) + count++; + } + return count; +} + +static void PCMailCompaction(void) +{ + u8 i; + u8 j; + for (i = PC_MAIL_NUM(0); i < MAIL_COUNT - 1; i++) + { + for (j = i + 1; j < MAIL_COUNT; j++) + { + if (gSaveBlock1Ptr->mail[i].itemId == ITEM_NONE) + { + struct MailStruct mail = gSaveBlock1Ptr->mail[i]; + gSaveBlock1Ptr->mail[i] = gSaveBlock1Ptr->mail[j]; + gSaveBlock1Ptr->mail[j] = mail; + } + } + } +} + +static void Task_DrawMailboxPcMenu(u8 taskId) +{ + u8 windowId = MailboxPC_GetAddWindow(0); + s32 width = GetStringWidth(2, gText_Mailbox, 0); + MailboxPC_GetAddWindow(1); + AddTextPrinterParameterized(windowId, 2, gText_Mailbox, (80 - width) / 2, 2, 0, NULL); + ScheduleBgCopyTilemapToVram(0); + gTasks[taskId].tListMenuTaskId = MailboxPC_InitListMenu(&gPlayerPcMenuManager); + MailboxPC_AddScrollIndicatorArrows(&gPlayerPcMenuManager); +} + +static void Task_MailboxPcHandleInput(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + s32 input; + if (!gPaletteFade.active) + { + input = ListMenu_ProcessInput(tListMenuTaskId); + ListMenuGetScrollAndRow(tListMenuTaskId, &gPlayerPcMenuManager.scrollOffset, &gPlayerPcMenuManager.selectedRow); + switch (input) + { + case -1: + break; + case -2: + PlaySE(SE_SELECT); + RemoveScrollIndicatorArrowPair(gPlayerPcMenuManager.scrollIndicatorId); + Task_DestroyMailboxPcViewAndCancel(taskId); + break; + default: + PlaySE(SE_SELECT); + MailboxPC_RemoveWindow(0); + MailboxPC_RemoveWindow(1); + DestroyListMenuTask(tListMenuTaskId, &gPlayerPcMenuManager.scrollOffset, &gPlayerPcMenuManager.selectedRow); + ScheduleBgCopyTilemapToVram(0); + RemoveScrollIndicatorArrowPair(gPlayerPcMenuManager.scrollIndicatorId); + gTasks[taskId].func = Task_PrintWhatToDoWithSelectedMail; + break; + } + } +} + +static void Task_PrintWhatToDoWithSelectedMail(u8 taskId) +{ + s32 length; + s32 i; + u8 *ptr; + StringCopy(gStringVar1, SELECTED_MAIL.playerName); + length = StringLength(gStringVar1); + if (length > 5) + { + for (ptr = gStringVar1 + length - 1; ptr >= gStringVar1; ptr--) + { + if (*ptr) + break; + *ptr = EOS; + } + } + else + { + ConvertInternationalString(gStringVar1, LANGUAGE_JAPANESE); + } + StringExpandPlaceholders(gStringVar4, gText_WhatWouldYouLikeToDoWithPlayersMail); + DisplayItemMessageOnField(taskId, 2, gStringVar4, Task_DrawMailSubmenu); +} + +static void Task_DestroyMailboxPcViewAndCancel(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + MailboxPC_RemoveWindow(0); + MailboxPC_RemoveWindow(1); + DestroyListMenuTask(tListMenuTaskId, NULL, NULL); + ScheduleBgCopyTilemapToVram(0); + MailboxPC_DestroyListMenuBuffer(); + Task_ReturnToTopMenu(taskId); +} + +static void Task_DrawMailSubmenu(u8 taskId) +{ + u8 windowId = MailboxPC_GetAddWindow(2); + PrintTextArray(windowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 4, sMenuActions_MailSubmenu); + Menu_InitCursor(windowId, 2, 0, 2, 16, 4, 0); + ScheduleBgCopyTilemapToVram(0); + gTasks[taskId].func = Task_MailSubmenuHandleInput; +} + +static void Task_MailSubmenuHandleInput(u8 taskId) +{ + s8 input = Menu_ProcessInput_other(); + switch (input) + { + case -1: + PlaySE(SE_SELECT); + Task_PlayerPcExitMailSubmenu(taskId); + break; + case -2: + break; + default: + PlaySE(SE_SELECT); + sMenuActions_MailSubmenu[input].func.void_u8(taskId); + break; + } +} + +static void Task_PlayerPcReadMail(u8 taskId) +{ + fade_screen(1, 0); + gTasks[taskId].func = Task_WaitFadeAndReadSelectedMail; +} + +static void Task_WaitFadeAndReadSelectedMail(u8 taskId) +{ + if (!gPaletteFade.active) + { + MailboxPC_DestroyListMenuBuffer(); + CleanupOverworldWindowsAndTilemaps(); + sub_80BEBEC(&SELECTED_MAIL, CB2_SetCbToReturnToMailbox, 1); + DestroyTask(taskId); + } +} + +static void Task_WaitFadeAndReturnToMailboxPcInputHandler(u8 taskId) +{ + if (field_weather_is_fade_finished() == TRUE) + gTasks[taskId].func = Task_MailboxPcHandleInput; +} + +static void CB2_ReturnToMailbox(void) +{ + u8 taskId; + if (gPlayerPcMenuManager.unk_9 == 0) + HelpSystem_SetSomeVariable2(34); + else + HelpSystem_SetSomeVariable2(30); + sub_80F6E9C(); + taskId = CreateTask(Task_WaitFadeAndReturnToMailboxPcInputHandler, 0); + if (MailboxPC_InitBuffers(gPlayerPcMenuManager.count) == TRUE) + Task_DrawMailboxPcMenu(taskId); + else + DestroyTask(taskId); + sub_807DC00(); +} + +static void CB2_SetCbToReturnToMailbox(void) +{ + gFieldCallback = CB2_ReturnToMailbox; + SetMainCallback2(CB2_ReturnToField); +} + +static void Task_PlayerPcMoveMailToBag(u8 taskId) +{ + DisplayItemMessageOnField(taskId, 2, gText_MessageWillBeLost, Task_DrawYesNoMenuToConfirmMoveToBag); +} + +static void Task_DrawYesNoMenuToConfirmMoveToBag(u8 taskId) +{ + DisplayYesNoMenuDefaultYes(); + gTasks[taskId].func = Task_MoveToBagYesNoMenuHandleInput; +} + +static void Task_MoveToBagYesNoMenuHandleInput(u8 taskId) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case -2: + break; + case 0: + Task_TryPutMailInBag_DestroyMsgIfSuccessful(taskId); + break; + case -1: + PlaySE(SE_SELECT); + // fallthrough + case 1: + Task_DeclinedMoveMailToBag(taskId); + break; + } +} + +static void Task_TryPutMailInBag_DestroyMsgIfSuccessful(u8 taskId) +{ + struct MailStruct * mail = &SELECTED_MAIL; + if (!AddBagItem(mail->itemId, 1)) + { + DisplayItemMessageOnField(taskId, 2, gText_BagIsFull, Task_PlayerPcExitMailSubmenu); + } + else + { + DisplayItemMessageOnField(taskId, 2, gText_MailReturnedToBagMessageErased, Task_PlayerPcExitMailSubmenu); + ClearMailStruct(mail); + PCMailCompaction(); + gPlayerPcMenuManager.count--; + if (gPlayerPcMenuManager.count < gPlayerPcMenuManager.pageItems + gPlayerPcMenuManager.scrollOffset) + { + if (gPlayerPcMenuManager.scrollOffset != 0) + gPlayerPcMenuManager.scrollOffset--; + } + Tsak_SetPageItemVars(taskId); + } +} + +static void Task_DeclinedMoveMailToBag(u8 taskId) +{ + Task_PlayerPcExitMailSubmenu(taskId); +} + +static void Task_PlayerPcGiveMailToMon(u8 taskId) +{ + if (CalculatePlayerPartyCount() == 0) + { + Task_Error_NoPokemon(taskId); + } + else + { + fade_screen(1, 0); + gTasks[taskId].func = Task_WaitFadeAndGoToPartyMenu; + } +} + +static void Task_WaitFadeAndGoToPartyMenu(u8 taskId) +{ + if (!gPaletteFade.active) + { + MailboxPC_DestroyListMenuBuffer(); + CleanupOverworldWindowsAndTilemaps(); + PartyMenuInit_FromPlayerPc(); + DestroyTask(taskId); + } +} + +static void CB2_ReturnToMailboxPc_UpdateScrollVariables(void) +{ + u8 taskId; + u8 count; + if (gPlayerPcMenuManager.unk_9 == 0) + HelpSystem_SetSomeVariable2(34); + else + HelpSystem_SetSomeVariable2(30); + taskId = CreateTask(Task_WaitFadeAndReturnToMailboxPcInputHandler, 0); + count = gPlayerPcMenuManager.count; + gPlayerPcMenuManager.count = CountPCMail(); + PCMailCompaction(); + if (count != gPlayerPcMenuManager.count) + { + if (gPlayerPcMenuManager.count < gPlayerPcMenuManager.pageItems + gPlayerPcMenuManager.scrollOffset) + { + if (gPlayerPcMenuManager.scrollOffset != 0) + gPlayerPcMenuManager.scrollOffset--; + } + } + Tsak_SetPageItemVars(taskId); + sub_80F6E9C(); + if (MailboxPC_InitBuffers(gPlayerPcMenuManager.count) == TRUE) + Task_DrawMailboxPcMenu(taskId); + else + DestroyTask(taskId); + sub_807DC00(); +} + +void CB2_PlayerPC_ReturnFromPartyMenu(void) +{ + gFieldCallback = CB2_ReturnToMailboxPc_UpdateScrollVariables; + SetMainCallback2(CB2_ReturnToField); +} + +static void Task_Error_NoPokemon(u8 taskId) +{ + DisplayItemMessageOnField(taskId, 2, gText_ThereIsNoPokemon, Task_PlayerPcExitMailSubmenu); +} + +static void Task_RedrawPlayerPcMailboxAndSetUpInputHandler(u8 taskId) +{ + ClearDialogWindowAndFrame(0, FALSE); + Task_DrawMailboxPcMenu(taskId); + ScheduleBgCopyTilemapToVram(0); + gTasks[taskId].func = Task_MailboxPcHandleInput; +} + +static void Task_PlayerPcExitMailSubmenu(u8 taskId) +{ + MailboxPC_RemoveWindow(2); + ScheduleBgCopyTilemapToVram(0); + gTasks[taskId].func = Task_RedrawPlayerPcMailboxAndSetUpInputHandler; +} + +#undef tListMenuTaskId +#undef tWindowId +#undef tItemPcParam +#undef tPageItems +#undef tCount diff --git a/sym_ewram.txt b/sym_ewram.txt index f821f7170..f01e54708 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -985,18 +985,9 @@ gUnknown_203AAB4: @ 203AAB4 gUnknown_203AAB8: @ 203AAB8 .space 0x4 -gUnknown_203AABC: @ 203AABC - .space 0x4 - -gUnknown_203AAC0: @ 203AAC0 - .space 0x4 - -gUnknown_203AAC4: @ 203AAC4 - .space 0x2 - -gUnknown_203AAC6: @ 203AAC6 - .space 0xE - + .align 2 + .include "src/player_pc.o" + .align 2 .include "src/intro.o" .align 2 |