summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/field_effect.s10
-rw-r--r--asm/field_weather.s6
-rw-r--r--asm/mail.s4
-rw-r--r--asm/party_menu.s18
-rw-r--r--asm/player_pc.s1919
-rw-r--r--asm/pokemon_storage_system.s2
-rw-r--r--asm/shop.s2
-rw-r--r--data/data_83FECCC.s31
-rw-r--r--data/maps/PalletTown_PlayersHouse_2F/scripts.inc2
-rw-r--r--data/strings.s30
-rw-r--r--include/event_scripts.h3
-rw-r--r--include/field_weather.h2
-rw-r--r--include/help_system.h2
-rw-r--r--include/item.h1
-rw-r--r--include/item_menu.h1
-rw-r--r--include/mailbox_pc.h6
-rw-r--r--include/overworld.h1
-rw-r--r--include/party_menu.h1
-rw-r--r--include/player_pc.h12
-rw-r--r--include/strings.h20
-rw-r--r--ld_script.txt3
-rw-r--r--src/field_fadetransition.c2
-rw-r--r--src/item_use.c4
-rw-r--r--src/mailbox_pc.c10
-rw-r--r--src/map_preview_screen.c2
-rw-r--r--src/player_pc.c741
-rw-r--r--sym_ewram.txt15
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