diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2019-10-13 22:04:51 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2019-10-13 22:04:51 -0400 |
commit | 8fd0bc424541cec7fc76a4f841035c2b9e793b0e (patch) | |
tree | a823c569134fda669d661dd6085dd6a2980ad931 | |
parent | 6bffe8613e2f764a03f551ad61b360dab9395eec (diff) |
Decompile start_menu
65 files changed, 1367 insertions, 2510 deletions
diff --git a/asm/berry_crush_2.s b/asm/berry_crush_2.s index fedf89c50..7495c8519 100644 --- a/asm/berry_crush_2.s +++ b/asm/berry_crush_2.s @@ -2856,7 +2856,7 @@ _0814D106: movs r0, 0 movs r1, 0 bl DrawDialogueFrame - ldr r2, _0814D148 @ =gUnknown_8419F54 + ldr r2, _0814D148 @ =gText_SavingDontTurnOffThePower2 movs r0, 0 str r0, [sp] movs r0, 0x2 @@ -2877,7 +2877,7 @@ _0814D106: bl CreateTask b _0814D178 .align 2, 0 -_0814D148: .4byte gUnknown_8419F54 +_0814D148: .4byte gText_SavingDontTurnOffThePower2 _0814D14C: .4byte sub_80DA634 _0814D150: ldr r0, _0814D160 @ =sub_80DA634 diff --git a/asm/cable_club.s b/asm/cable_club.s index d7432e2c2..76346a28c 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -1496,7 +1496,7 @@ _08081308: .4byte gReceivedRemoteLinkPlayers thumb_func_start sub_808130C sub_808130C: @ 808130C push {lr} - bl sub_806F67C + bl Field_AskSaveTheGame pop {r0} bx r0 thumb_func_end sub_808130C @@ -2001,7 +2001,7 @@ _08081724: ldr r0, _0808173C @ =c2_8056854 _08081728: str r0, [r1, 0x8] - ldr r0, _08081740 @ =sub_806FB7C + ldr r0, _08081740 @ =CB2_SetUpSaveAfterLinkBattle bl SetMainCallback2 pop {r4,r5} pop {r0} @@ -2009,7 +2009,7 @@ _08081728: .align 2, 0 _08081738: .4byte gMain _0808173C: .4byte c2_8056854 -_08081740: .4byte sub_806FB7C +_08081740: .4byte CB2_SetUpSaveAfterLinkBattle thumb_func_end sub_8081668 thumb_func_start sub_8081744 @@ -2388,7 +2388,7 @@ sp02A_crash_sound: @ 8081A1C ldr r0, _08081A2C @ =gSpecialVar_0x8006 ldrb r0, [r0] ldr r1, _08081A30 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl sub_808B700 + bl InitLinkPartnerTrainerCard pop {r0} bx r0 .align 2, 0 diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s index c9dd68e4b..8b2797dc8 100644 --- a/asm/dodrio_berry_picking.s +++ b/asm/dodrio_berry_picking.s @@ -10658,7 +10658,7 @@ _08155AA6: movs r0, 0 movs r1, 0 bl DrawDialogueFrame - ldr r2, _08155ACC @ =gUnknown_8419F54 + ldr r2, _08155ACC @ =gText_SavingDontTurnOffThePower2 str r4, [sp] movs r0, 0x2 str r0, [sp, 0x4] @@ -10672,7 +10672,7 @@ _08155AA6: bl AddTextPrinterParameterized2 b _08155B08 .align 2, 0 -_08155ACC: .4byte gUnknown_8419F54 +_08155ACC: .4byte gText_SavingDontTurnOffThePower2 _08155AD0: movs r0, 0 movs r1, 0x3 diff --git a/asm/field_message_box.s b/asm/field_message_box.s index a326e0f59..183b5a3fb 100644 --- a/asm/field_message_box.s +++ b/asm/field_message_box.s @@ -75,7 +75,7 @@ _080693C4: lsls r0, 24 cmp r0, 0 bne _080693D4 - bl sub_80F6E9C + bl LoadStdWindowFrameGfx b _080693E2 _080693D4: bl sub_80F79A4 diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s index fbb7cdc9c..36eacbf17 100644 --- a/asm/hall_of_fame.s +++ b/asm/hall_of_fame.s @@ -509,7 +509,7 @@ _080F21B2: movs r0, 0 movs r1, 0 bl DrawDialogueFrame - ldr r2, _080F2214 @ =gUnknown_8419F54 + ldr r2, _080F2214 @ =gText_SavingDontTurnOffThePower2 movs r0, 0 str r0, [sp] movs r0, 0x2 @@ -543,7 +543,7 @@ _080F21B2: _080F2208: .4byte 0x000001ff _080F220C: .4byte gDecompressionBuffer _080F2210: .4byte gUnknown_203AB38 -_080F2214: .4byte gUnknown_8419F54 +_080F2214: .4byte gText_SavingDontTurnOffThePower2 _080F2218: .4byte gTasks _080F221C: .4byte sub_80F2220 thumb_func_end Task_Hof_InitTeamSaveData diff --git a/asm/item_menu.s b/asm/item_menu.s index e58abf87f..9b1ab2492 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -138,18 +138,18 @@ _08107EB0: .4byte gUnknown_203AD10 _08107EB4: .4byte gUnknown_203ACFC thumb_func_end sub_8107DB4 - thumb_func_start ReturnToBagFromKeyItem -ReturnToBagFromKeyItem: @ 8107EB8 + thumb_func_start CB2_BagMenuFromStartMenu +CB2_BagMenuFromStartMenu: @ 8107EB8 push {lr} - ldr r2, _08107EC8 @ =sub_80568A8 + ldr r2, _08107EC8 @ =CB2_ReturnToStartMenu movs r0, 0 movs r1, 0x3 bl sub_8107DB4 pop {r0} bx r0 .align 2, 0 -_08107EC8: .4byte sub_80568A8 - thumb_func_end ReturnToBagFromKeyItem +_08107EC8: .4byte CB2_ReturnToStartMenu + thumb_func_end CB2_BagMenuFromStartMenu thumb_func_start sub_8107ECC sub_8107ECC: @ 8107ECC diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 4ddbed23a..94a07fdaf 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -3252,7 +3252,7 @@ _08117384: lsls r0, 24 lsrs r0, 24 ldr r1, _081173BC @ =CB2_ReturnToField - bl sub_808B700 + bl InitLinkPartnerTrainerCard _081173A2: bl RunTasks bl RunTextPrinters @@ -5840,7 +5840,7 @@ _08118AD4: bl sub_811BEDC bl _081198DC _08118ADE: - ldr r0, _08118B00 @ =sub_806F1F0 + ldr r0, _08118B00 @ =Task_StartMenuHandleInput bl FuncIsActiveTask lsls r0, 24 cmp r0, 0 @@ -5854,7 +5854,7 @@ _08118AEE: movs r0, 0x4 bl _081198DA .align 2, 0 -_08118B00: .4byte sub_806F1F0 +_08118B00: .4byte Task_StartMenuHandleInput _08118B04: bl sub_811A0E0 movs r3, 0x2 @@ -6975,7 +6975,7 @@ _081194DC: movs r0, 0x2F bl sub_8118664 _081194E4: - bl sub_80F7998 + bl DestroyHelpMessageWindow_ b _081198DC .align 2, 0 _081194EC: .4byte gUnknown_8458B44 @@ -7171,7 +7171,7 @@ _08119670: _0811967A: movs r0, 0x1 bl sub_811B258 - bl sub_80F7998 + bl DestroyHelpMessageWindow_ movs r0, 0x4 b _081198DA .align 2, 0 @@ -8482,7 +8482,7 @@ _0811A0B0: .4byte gTasks+0x8 sub_811A0B4: @ 811A0B4 push {r4,lr} adds r4, r0, 0 - bl sub_80F6E9C + bl LoadStdWindowFrameGfx movs r0, 0 movs r1, 0x1 bl DrawDialogueFrame @@ -8528,7 +8528,7 @@ sub_811A0F8: @ 811A0F8 beq _0811A130 b _0811A142 _0811A10A: - bl sub_80F6E9C + bl LoadStdWindowFrameGfx movs r0, 0 movs r1, 0x1 bl DrawDialogueFrame diff --git a/asm/naming_screen.s b/asm/naming_screen.s index ef692b052..09f4ca070 100644 --- a/asm/naming_screen.s +++ b/asm/naming_screen.s @@ -491,7 +491,7 @@ sub_809DD60: @ 809DD60 bl CreateTask ldr r0, _0809DD84 @ =sub_809FB70 bl SetMainCallback2 - bl sub_812B234 + bl HelpSystem_BackupSomeVariable movs r0, 0x3 bl HelpSystem_SetSomeVariable2 pop {r0} @@ -868,7 +868,7 @@ _0809E06C: ldr r0, [r4] bl Free str r5, [r4] - bl sub_812B248 + bl HelpSystem_RestoreSomeVariable _0809E096: movs r0, 0 pop {r4,r5} @@ -4490,7 +4490,7 @@ sub_809FC90: @ 809FC90 ldrb r2, [r1, 0x8] movs r0, 0 str r0, [sp] - ldr r0, _0809FCB4 @ =sub_80568A8 + ldr r0, _0809FCB4 @ =CB2_ReturnToStartMenu str r0, [sp, 0x4] movs r0, 0 movs r3, 0 @@ -4500,7 +4500,7 @@ sub_809FC90: @ 809FC90 bx r0 .align 2, 0 _0809FCB0: .4byte gSaveBlock2Ptr -_0809FCB4: .4byte sub_80568A8 +_0809FCB4: .4byte CB2_ReturnToStartMenu thumb_func_end sub_809FC90 thumb_func_start sub_809FCB8 @@ -4512,7 +4512,7 @@ sub_809FCB8: @ 809FCB8 ldrb r2, [r1, 0x8] movs r0, 0 str r0, [sp] - ldr r0, _0809FCDC @ =sub_80568A8 + ldr r0, _0809FCDC @ =CB2_ReturnToStartMenu str r0, [sp, 0x4] movs r0, 0x1 movs r3, 0 @@ -4522,7 +4522,7 @@ sub_809FCB8: @ 809FCB8 bx r0 .align 2, 0 _0809FCD8: .4byte gSaveBlock2Ptr -_0809FCDC: .4byte sub_80568A8 +_0809FCDC: .4byte CB2_ReturnToStartMenu thumb_func_end sub_809FCB8 thumb_func_start sub_809FCE0 @@ -4534,7 +4534,7 @@ sub_809FCE0: @ 809FCE0 ldrb r2, [r1, 0x8] movs r0, 0 str r0, [sp] - ldr r0, _0809FD04 @ =sub_80568A8 + ldr r0, _0809FD04 @ =CB2_ReturnToStartMenu str r0, [sp, 0x4] movs r0, 0x2 movs r3, 0 @@ -4544,7 +4544,7 @@ sub_809FCE0: @ 809FCE0 bx r0 .align 2, 0 _0809FD00: .4byte gSaveBlock2Ptr -_0809FD04: .4byte sub_80568A8 +_0809FD04: .4byte CB2_ReturnToStartMenu thumb_func_end sub_809FCE0 thumb_func_start sub_809FD08 @@ -4556,7 +4556,7 @@ sub_809FD08: @ 809FD08 ldrb r2, [r1, 0x8] movs r0, 0 str r0, [sp] - ldr r0, _0809FD2C @ =sub_80568A8 + ldr r0, _0809FD2C @ =CB2_ReturnToStartMenu str r0, [sp, 0x4] movs r0, 0x3 movs r3, 0 @@ -4566,7 +4566,7 @@ sub_809FD08: @ 809FD08 bx r0 .align 2, 0 _0809FD28: .4byte gSaveBlock2Ptr -_0809FD2C: .4byte sub_80568A8 +_0809FD2C: .4byte CB2_ReturnToStartMenu thumb_func_end sub_809FD08 thumb_func_start sub_809FD30 @@ -4578,7 +4578,7 @@ sub_809FD30: @ 809FD30 ldrb r2, [r1, 0x8] movs r0, 0 str r0, [sp] - ldr r0, _0809FD54 @ =sub_80568A8 + ldr r0, _0809FD54 @ =CB2_ReturnToStartMenu str r0, [sp, 0x4] movs r0, 0x4 movs r3, 0 @@ -4588,7 +4588,7 @@ sub_809FD30: @ 809FD30 bx r0 .align 2, 0 _0809FD50: .4byte gSaveBlock2Ptr -_0809FD54: .4byte sub_80568A8 +_0809FD54: .4byte CB2_ReturnToStartMenu thumb_func_end sub_809FD30 .align 2, 0 @ Don't pad with nop. diff --git a/asm/option_menu.s b/asm/option_menu.s index bb370f0ba..3b08810c5 100644 --- a/asm/option_menu.s +++ b/asm/option_menu.s @@ -26,14 +26,14 @@ sub_8088374: @ 8088374 bx r0 thumb_func_end sub_8088374 - thumb_func_start sub_8088388 -sub_8088388: @ 8088388 + thumb_func_start CB2_OptionsMenuFromStartMenu +CB2_OptionsMenuFromStartMenu: @ 8088388 push {r4-r6,lr} ldr r1, _08088418 @ =gMain ldr r0, [r1, 0x8] cmp r0, 0 bne _08088396 - ldr r0, _0808841C @ =sub_80568A8 + ldr r0, _0808841C @ =CB2_ReturnToStartMenu str r0, [r1, 0x8] _08088396: ldr r4, _08088420 @ =gUnknown_2039620 @@ -101,12 +101,12 @@ _080883FA: bx r0 .align 2, 0 _08088418: .4byte gMain -_0808841C: .4byte sub_80568A8 +_0808841C: .4byte CB2_ReturnToStartMenu _08088420: .4byte gUnknown_2039620 _08088424: .4byte gSaveBlock2Ptr _08088428: .4byte gUnknown_83CC304 _0808842C: .4byte sub_8088454 - thumb_func_end sub_8088388 + thumb_func_end CB2_OptionsMenuFromStartMenu thumb_func_start sub_8088430 sub_8088430: @ 8088430 diff --git a/asm/overworld.s b/asm/overworld.s index c3ff5e3c8..9bcd95eab 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -3754,20 +3754,20 @@ _080568A0: .4byte gFieldCallback _080568A4: .4byte sub_807DDD0 thumb_func_end c2_8056854 - thumb_func_start sub_80568A8 -sub_80568A8: @ 80568A8 + thumb_func_start CB2_ReturnToStartMenu +CB2_ReturnToStartMenu: @ 80568A8 push {lr} bl sub_80569BC ldr r1, _080568BC @ =gFieldCallback2 - ldr r0, _080568C0 @ =sub_807E3BC + ldr r0, _080568C0 @ =FieldCB2_ReturnToStartMenuInit str r0, [r1] bl CB2_ReturnToField pop {r0} bx r0 .align 2, 0 _080568BC: .4byte gFieldCallback2 -_080568C0: .4byte sub_807E3BC - thumb_func_end sub_80568A8 +_080568C0: .4byte FieldCB2_ReturnToStartMenuInit + thumb_func_end CB2_ReturnToStartMenu thumb_func_start sub_80568C4 sub_80568C4: @ 80568C4 diff --git a/asm/party_menu.s b/asm/party_menu.s index b49a09347..58c6e3732 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -3616,10 +3616,10 @@ sub_8120658: @ 8120658 beq _08120678 cmp r0, 0x5 beq _0812067E - ldr r1, _08120674 @ =gUnknown_8416285 + ldr r1, _08120674 @ =gStartMenuText_Bag b _08120686 .align 2, 0 -_08120674: .4byte gUnknown_8416285 +_08120674: .4byte gStartMenuText_Bag _08120678: movs r0, 0xB6 lsls r0, 1 @@ -12231,7 +12231,7 @@ sub_8124AB0: @ 8124AB0 str r0, [sp] ldr r0, _08124AD4 @ =sub_811FB28 str r0, [sp, 0x4] - ldr r0, _08124AD8 @ =sub_80568A8 + ldr r0, _08124AD8 @ =CB2_ReturnToStartMenu str r0, [sp, 0x8] movs r0, 0 movs r1, 0 @@ -12243,7 +12243,7 @@ sub_8124AB0: @ 8124AB0 bx r0 .align 2, 0 _08124AD4: .4byte sub_811FB28 -_08124AD8: .4byte sub_80568A8 +_08124AD8: .4byte CB2_ReturnToStartMenu thumb_func_end sub_8124AB0 thumb_func_start hm2_waterfall @@ -16634,7 +16634,7 @@ CB2_PartyMenuFromStartMenu: @ 8126EB0 str r0, [sp] ldr r0, _08126ED4 @ =sub_811FB28 str r0, [sp, 0x4] - ldr r0, _08126ED8 @ =sub_80568A8 + ldr r0, _08126ED8 @ =CB2_ReturnToStartMenu str r0, [sp, 0x8] movs r0, 0 movs r1, 0 @@ -16646,7 +16646,7 @@ CB2_PartyMenuFromStartMenu: @ 8126EB0 bx r0 .align 2, 0 _08126ED4: .4byte sub_811FB28 -_08126ED8: .4byte sub_80568A8 +_08126ED8: .4byte CB2_ReturnToStartMenu thumb_func_end CB2_PartyMenuFromStartMenu thumb_func_start sub_8126EDC diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index b0b53da55..8320c5809 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -289,8 +289,8 @@ _081026D0: _08102758: .4byte gUnknown_84404C8 thumb_func_end sub_810250C - thumb_func_start sub_810275C -sub_810275C: @ 810275C + thumb_func_start CB2_OpenPokedexFromStartMenu +CB2_OpenPokedexFromStartMenu: @ 810275C push {lr} bl sub_810250C movs r1, 0xC0 @@ -314,7 +314,7 @@ sub_810275C: @ 810275C bx r0 .align 2, 0 _08102794: .4byte sub_81024D4 - thumb_func_end sub_810275C + thumb_func_end CB2_OpenPokedexFromStartMenu thumb_func_start sub_8102798 sub_8102798: @ 8102798 @@ -428,13 +428,13 @@ sub_8102858: @ 8102858 lsls r1, 7 movs r0, 0 bl SetGpuRegBits - ldr r0, _08102878 @ =sub_80568A8 + ldr r0, _08102878 @ =CB2_ReturnToStartMenu bl SetMainCallback2 _08102874: pop {r0} bx r0 .align 2, 0 -_08102878: .4byte sub_80568A8 +_08102878: .4byte CB2_ReturnToStartMenu thumb_func_end sub_8102858 thumb_func_start sub_810287C diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index c6daa62ea..f1188910d 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1417,7 +1417,7 @@ _0808C3E0: adds r1, r5, 0 adds r1, 0x26 bl sub_808C72C - bl sub_80F6E9C + bl LoadStdWindowFrameGfx movs r0, 0 movs r1, 0 bl DrawDialogueFrame diff --git a/asm/save_failed_screen.s b/asm/save_failed_screen.s index 09503af6a..aa9d375a3 100644 --- a/asm/save_failed_screen.s +++ b/asm/save_failed_screen.s @@ -158,16 +158,16 @@ _080F5240: adds r1, r0, 0 cmp r1, 0x1 bne _080F5260 - ldr r0, _080F5258 @ =gUnknown_3005420 + ldr r0, _080F5258 @ =gSaveSucceeded strh r1, [r0] ldr r0, _080F525C @ =gUnknown_8418E09 bl sub_80F5404 b _080F526C .align 2, 0 -_080F5258: .4byte gUnknown_3005420 +_080F5258: .4byte gSaveSucceeded _080F525C: .4byte gUnknown_8418E09 _080F5260: - ldr r0, _080F5274 @ =gUnknown_3005420 + ldr r0, _080F5274 @ =gSaveSucceeded movs r1, 0xFF strh r1, [r0] ldr r0, _080F5278 @ =gUnknown_8418CD9 @@ -178,7 +178,7 @@ _080F526C: strb r0, [r1] b _080F52D6 .align 2, 0 -_080F5274: .4byte gUnknown_3005420 +_080F5274: .4byte gSaveSucceeded _080F5278: .4byte gUnknown_8418CD9 _080F527C: .4byte gUnknown_203AB50 _080F5280: diff --git a/asm/save_menu_util.s b/asm/save_menu_util.s index 1cb9d85a3..8ebfc3731 100644 --- a/asm/save_menu_util.s +++ b/asm/save_menu_util.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_80F7FCC -sub_80F7FCC: @ 80F7FCC + thumb_func_start SaveStatToString +SaveStatToString: @ 80F7FCC push {r4-r7,lr} lsls r0, 24 lsrs r3, r0, 24 @@ -144,6 +144,6 @@ _080F80D8: bx r0 .align 2, 0 _080F80E0: .4byte 0x00000827 - thumb_func_end sub_80F7FCC + thumb_func_end SaveStatToString .align 2, 0 @ Don't pad with nop. diff --git a/asm/script_menu.s b/asm/script_menu.s index 59af843f1..56781a953 100644 --- a/asm/script_menu.s +++ b/asm/script_menu.s @@ -1127,7 +1127,7 @@ _0809D1FA: adds r1, r4, 0 adds r2, r7, 0 movs r3, 0x12 - bl sub_812E6DC + bl Menu_PrintFormatIntlPlayerName movs r0, 0x10 str r0, [sp] mov r0, r9 diff --git a/asm/start_menu.s b/asm/start_menu.s deleted file mode 100644 index 7ab76140f..000000000 --- a/asm/start_menu.s +++ /dev/null @@ -1,2219 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_806ED54 -sub_806ED54: @ 806ED54 - push {lr} - ldr r0, _0806ED6C @ =gUnknown_20370F5 - movs r1, 0 - strb r1, [r0] - bl IsUpdateLinkStateCBActive - cmp r0, 0x1 - bne _0806ED70 - bl sub_806EE34 - b _0806ED90 - .align 2, 0 -_0806ED6C: .4byte gUnknown_20370F5 -_0806ED70: - bl InUnionRoom - cmp r0, 0x1 - bne _0806ED7E - bl sub_806EE58 - b _0806ED90 -_0806ED7E: - bl GetSafariZoneFlag - cmp r0, 0x1 - bne _0806ED8C - bl sub_806EE04 - b _0806ED90 -_0806ED8C: - bl sub_806EDB0 -_0806ED90: - pop {r0} - bx r0 - thumb_func_end sub_806ED54 - - thumb_func_start sub_806ED94 -sub_806ED94: @ 806ED94 - push {lr} - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _0806EDA8 @ =gUnknown_20370F6 - ldr r1, _0806EDAC @ =gUnknown_20370F5 - bl AppendToList - pop {r0} - bx r0 - .align 2, 0 -_0806EDA8: .4byte gUnknown_20370F6 -_0806EDAC: .4byte gUnknown_20370F5 - thumb_func_end sub_806ED94 - - thumb_func_start sub_806EDB0 -sub_806EDB0: @ 806EDB0 - push {lr} - ldr r0, _0806EDFC @ =0x00000829 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806EDC6 - movs r0, 0 - bl sub_806ED94 -_0806EDC6: - ldr r0, _0806EE00 @ =0x00000828 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806EDDA - movs r0, 0x1 - bl sub_806ED94 -_0806EDDA: - movs r0, 0x2 - bl sub_806ED94 - movs r0, 0x3 - bl sub_806ED94 - movs r0, 0x4 - bl sub_806ED94 - movs r0, 0x5 - bl sub_806ED94 - movs r0, 0x6 - bl sub_806ED94 - pop {r0} - bx r0 - .align 2, 0 -_0806EDFC: .4byte 0x00000829 -_0806EE00: .4byte 0x00000828 - thumb_func_end sub_806EDB0 - - thumb_func_start sub_806EE04 -sub_806EE04: @ 806EE04 - push {lr} - movs r0, 0x7 - bl sub_806ED94 - movs r0, 0 - bl sub_806ED94 - movs r0, 0x1 - bl sub_806ED94 - movs r0, 0x2 - bl sub_806ED94 - movs r0, 0x3 - bl sub_806ED94 - movs r0, 0x5 - bl sub_806ED94 - movs r0, 0x6 - bl sub_806ED94 - pop {r0} - bx r0 - thumb_func_end sub_806EE04 - - thumb_func_start sub_806EE34 -sub_806EE34: @ 806EE34 - push {lr} - movs r0, 0x1 - bl sub_806ED94 - movs r0, 0x2 - bl sub_806ED94 - movs r0, 0x8 - bl sub_806ED94 - movs r0, 0x5 - bl sub_806ED94 - movs r0, 0x6 - bl sub_806ED94 - pop {r0} - bx r0 - thumb_func_end sub_806EE34 - - thumb_func_start sub_806EE58 -sub_806EE58: @ 806EE58 - push {lr} - movs r0, 0x1 - bl sub_806ED94 - movs r0, 0x2 - bl sub_806ED94 - movs r0, 0x3 - bl sub_806ED94 - movs r0, 0x5 - bl sub_806ED94 - movs r0, 0x6 - bl sub_806ED94 - pop {r0} - bx r0 - thumb_func_end sub_806EE58 - - thumb_func_start sub_806EE7C -sub_806EE7C: @ 806EE7C - push {r4,r5,lr} - sub sp, 0xC - ldr r4, _0806EEF4 @ =gUnknown_2037101 - ldr r0, _0806EEF8 @ =gUnknown_83A738C - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - bl PutWindowTilemap - ldrb r0, [r4] - movs r1, 0 - bl DrawStdWindowFrame - ldr r0, _0806EEFC @ =gStringVar1 - ldr r1, _0806EF00 @ =gSafariZoneStepCounter - ldrh r1, [r1] - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r0, _0806EF04 @ =gStringVar2 - movs r1, 0x96 - lsls r1, 2 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r0, _0806EF08 @ =gStringVar3 - ldr r1, _0806EF0C @ =gNumSafariBalls - ldrb r1, [r1] - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r5, _0806EF10 @ =gStringVar4 - ldr r1, _0806EF14 @ =gUnknown_84162A9 - adds r0, r5, 0 - bl StringExpandPlaceholders - ldrb r0, [r4] - movs r1, 0x3 - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x2 - adds r2, r5, 0 - movs r3, 0x4 - bl AddTextPrinterParameterized - ldrb r0, [r4] - movs r1, 0x2 - bl CopyWindowToVram - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806EEF4: .4byte gUnknown_2037101 -_0806EEF8: .4byte gUnknown_83A738C -_0806EEFC: .4byte gStringVar1 -_0806EF00: .4byte gSafariZoneStepCounter -_0806EF04: .4byte gStringVar2 -_0806EF08: .4byte gStringVar3 -_0806EF0C: .4byte gNumSafariBalls -_0806EF10: .4byte gStringVar4 -_0806EF14: .4byte gUnknown_84162A9 - thumb_func_end sub_806EE7C - - thumb_func_start sub_806EF18 -sub_806EF18: @ 806EF18 - push {r4,lr} - bl GetSafariZoneFlag - cmp r0, 0 - beq _0806EF3A - ldr r4, _0806EF40 @ =gUnknown_2037101 - ldrb r0, [r4] - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - ldrb r0, [r4] - movs r1, 0x2 - bl CopyWindowToVram - ldrb r0, [r4] - bl RemoveWindow -_0806EF3A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806EF40: .4byte gUnknown_2037101 - thumb_func_end sub_806EF18 - - thumb_func_start sub_806EF44 -sub_806EF44: @ 806EF44 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r8, r0 - lsls r1, 24 - lsrs r6, r1, 24 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _0806EF9C @ =gUnknown_83A7344 - mov r10, r0 - ldr r1, _0806EFA0 @ =gStringVar4 - mov r9, r1 -_0806EF68: - ldr r1, _0806EFA4 @ =gUnknown_20370F6 - lsls r0, r2, 16 - asrs r5, r0, 16 - adds r4, r5, r1 - ldrb r1, [r4] - adds r7, r0, 0 - cmp r1, 0x3 - beq _0806EF7C - cmp r1, 0x8 - bne _0806EFA8 -_0806EF7C: - bl GetStartMenuWindowId - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r4] - lsls r1, 3 - add r1, r10 - ldr r1, [r1] - lsls r3, r5, 4 - subs r3, r5 - lsls r3, 16 - lsrs r3, 16 - movs r2, 0x8 - bl sub_812E6DC - b _0806EFDA - .align 2, 0 -_0806EF9C: .4byte gUnknown_83A7344 -_0806EFA0: .4byte gStringVar4 -_0806EFA4: .4byte gUnknown_20370F6 -_0806EFA8: - ldrb r0, [r4] - lsls r0, 3 - add r0, r10 - ldr r1, [r0] - mov r0, r9 - bl StringExpandPlaceholders - bl GetStartMenuWindowId - lsls r0, 24 - lsrs r0, 24 - lsls r1, r5, 4 - subs r1, r5 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x2 - mov r2, r9 - movs r3, 0x8 - bl AddTextPrinterParameterized -_0806EFDA: - movs r0, 0x80 - lsls r0, 9 - adds r1, r7, r0 - lsrs r2, r1, 16 - asrs r1, 16 - ldr r0, _0806F000 @ =gUnknown_20370F5 - ldrb r0, [r0] - cmp r1, r0 - bge _0806F004 - subs r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _0806EF68 - mov r1, r8 - strb r2, [r1] - movs r0, 0 - b _0806F00A - .align 2, 0 -_0806F000: .4byte gUnknown_20370F5 -_0806F004: - mov r0, r8 - strb r2, [r0] - movs r0, 0x1 -_0806F00A: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_806EF44 - - thumb_func_start sub_806F01C -sub_806F01C: @ 806F01C - push {r4,lr} - sub sp, 0xC - ldr r0, _0806F038 @ =gUnknown_20370FF - movs r1, 0 - ldrsb r1, [r0, r1] - adds r2, r0, 0 - cmp r1, 0x5 - bls _0806F02E - b _0806F140 -_0806F02E: - lsls r0, r1, 2 - ldr r1, _0806F03C @ =_0806F040 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806F038: .4byte gUnknown_20370FF -_0806F03C: .4byte _0806F040 - .align 2, 0 -_0806F040: - .4byte _0806F058 - .4byte _0806F060 - .4byte _0806F06C - .4byte _0806F090 - .4byte _0806F0A4 - .4byte _0806F0C4 -_0806F058: - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - b _0806F140 -_0806F060: - bl sub_806ED54 - ldr r1, _0806F068 @ =gUnknown_20370FF - b _0806F0B8 - .align 2, 0 -_0806F068: .4byte gUnknown_20370FF -_0806F06C: - bl sub_80F6E9C - ldr r0, _0806F088 @ =gUnknown_20370F5 - ldrb r0, [r0] - bl sub_80F78E0 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl DrawStdWindowFrame - ldr r1, _0806F08C @ =gUnknown_20370FF - b _0806F0B8 - .align 2, 0 -_0806F088: .4byte gUnknown_20370F5 -_0806F08C: .4byte gUnknown_20370FF -_0806F090: - bl GetSafariZoneFlag - cmp r0, 0 - beq _0806F09C - bl sub_806EE7C -_0806F09C: - ldr r1, _0806F0A0 @ =gUnknown_20370FF - b _0806F0B8 - .align 2, 0 -_0806F0A0: .4byte gUnknown_20370FF -_0806F0A4: - ldr r4, _0806F0C0 @ =gUnknown_2037100 - adds r0, r4, 0 - movs r1, 0x2 - bl sub_806EF44 - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _0806F140 - subs r1, r4, 0x1 -_0806F0B8: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0806F140 - .align 2, 0 -_0806F0C0: .4byte gUnknown_2037100 -_0806F0C4: - bl GetStartMenuWindowId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xF - str r1, [sp] - ldr r1, _0806F12C @ =gUnknown_20370F5 - ldrb r1, [r1] - str r1, [sp, 0x4] - ldr r4, _0806F130 @ =gUnknown_20370F4 - ldrb r1, [r4] - str r1, [sp, 0x8] - movs r1, 0x2 - movs r2, 0 - movs r3, 0 - bl Menu_InitCursor - strb r0, [r4] - bl MenuHelpers_LinkSomething - lsls r0, 24 - cmp r0, 0 - bne _0806F118 - bl InUnionRoom - cmp r0, 0x1 - beq _0806F118 - ldr r0, _0806F134 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0 - bne _0806F118 - ldr r2, _0806F138 @ =gUnknown_83A7394 - ldr r1, _0806F13C @ =gUnknown_20370F6 - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - bl sub_80F7974 -_0806F118: - bl GetStartMenuWindowId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl CopyWindowToVram - movs r0, 0x1 - b _0806F142 - .align 2, 0 -_0806F12C: .4byte gUnknown_20370F5 -_0806F130: .4byte gUnknown_20370F4 -_0806F134: .4byte gSaveBlock2Ptr -_0806F138: .4byte gUnknown_83A7394 -_0806F13C: .4byte gUnknown_20370F6 -_0806F140: - movs r0, 0 -_0806F142: - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806F01C - - thumb_func_start sub_806F14C -sub_806F14C: @ 806F14C - push {lr} - ldr r1, _0806F164 @ =gUnknown_20370FF - movs r0, 0 - strb r0, [r1] - strb r0, [r1, 0x1] -_0806F156: - bl sub_806F01C - lsls r0, 24 - cmp r0, 0 - beq _0806F156 - pop {r0} - bx r0 - .align 2, 0 -_0806F164: .4byte gUnknown_20370FF - thumb_func_end sub_806F14C - - thumb_func_start task50_startmenu -task50_startmenu: @ 806F168 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_806F01C - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _0806F180 - adds r0, r4, 0 - bl SwitchTaskToFollowupFunc -_0806F180: - pop {r4} - pop {r0} - bx r0 - thumb_func_end task50_startmenu - - thumb_func_start sub_806F188 -sub_806F188: @ 806F188 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _0806F1B0 @ =gUnknown_20370FF - movs r0, 0 - strb r0, [r1] - strb r0, [r1, 0x1] - ldr r4, _0806F1B4 @ =task50_startmenu - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - adds r2, r5, 0 - bl SetTaskFuncWithFollowupFunc - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806F1B0: .4byte gUnknown_20370FF -_0806F1B4: .4byte task50_startmenu - thumb_func_end sub_806F188 - - thumb_func_start sub_806F1B8 -sub_806F1B8: @ 806F1B8 - push {lr} - bl sub_806F01C - lsls r0, 24 - cmp r0, 0 - beq _0806F1CC - bl sub_807E3A0 - movs r0, 0x1 - b _0806F1CE -_0806F1CC: - movs r0, 0 -_0806F1CE: - pop {r1} - bx r1 - thumb_func_end sub_806F1B8 - - thumb_func_start sub_806F1D4 -sub_806F1D4: @ 806F1D4 - ldr r1, _0806F1E4 @ =gUnknown_20370FF - movs r0, 0 - strb r0, [r1] - strb r0, [r1, 0x1] - ldr r1, _0806F1E8 @ =gFieldCallback2 - ldr r0, _0806F1EC @ =sub_806F1B8 - str r0, [r1] - bx lr - .align 2, 0 -_0806F1E4: .4byte gUnknown_20370FF -_0806F1E8: .4byte gFieldCallback2 -_0806F1EC: .4byte sub_806F1B8 - thumb_func_end sub_806F1D4 - - thumb_func_start sub_806F1F0 -sub_806F1F0: @ 806F1F0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0806F210 @ =gTasks+0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0806F214 - cmp r0, 0x1 - beq _0806F238 - b _0806F24E - .align 2, 0 -_0806F210: .4byte gTasks+0x8 -_0806F214: - bl InUnionRoom - cmp r0, 0x1 - bne _0806F220 - bl var_800D_set_xB -_0806F220: - ldr r1, _0806F230 @ =gUnknown_20370F0 - ldr r0, _0806F234 @ =sub_806F280 - str r0, [r1] - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _0806F24E - .align 2, 0 -_0806F230: .4byte gUnknown_20370F0 -_0806F234: .4byte sub_806F280 -_0806F238: - ldr r0, _0806F254 @ =gUnknown_20370F0 - ldr r0, [r0] - bl _call_via_r0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806F24E - adds r0, r5, 0 - bl DestroyTask -_0806F24E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806F254: .4byte gUnknown_20370F0 - thumb_func_end sub_806F1F0 - - thumb_func_start ShowStartMenu -ShowStartMenu: @ 806F258 - push {lr} - bl IsUpdateLinkStateCBActive - cmp r0, 0 - bne _0806F26E - bl player_bitmagic - bl sub_805C270 - bl sub_805C780 -_0806F26E: - ldr r0, _0806F27C @ =sub_806F1F0 - bl sub_806F188 - bl ScriptContext2_Enable - pop {r0} - bx r0 - .align 2, 0 -_0806F27C: .4byte sub_806F1F0 - thumb_func_end ShowStartMenu - - thumb_func_start sub_806F280 -sub_806F280: @ 806F280 - push {r4,lr} - ldr r0, _0806F35C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0806F2D2 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - bl Menu_MoveCursor - ldr r4, _0806F360 @ =gUnknown_20370F4 - strb r0, [r4] - bl MenuHelpers_LinkSomething - lsls r0, 24 - cmp r0, 0 - bne _0806F2D2 - bl InUnionRoom - cmp r0, 0x1 - beq _0806F2D2 - ldr r0, _0806F364 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0 - bne _0806F2D2 - ldr r2, _0806F368 @ =gUnknown_83A7394 - ldr r1, _0806F36C @ =gUnknown_20370F6 - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - movs r1, 0x2 - bl sub_8113018 -_0806F2D2: - ldr r0, _0806F35C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0806F320 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl Menu_MoveCursor - ldr r4, _0806F360 @ =gUnknown_20370F4 - strb r0, [r4] - bl MenuHelpers_LinkSomething - lsls r0, 24 - cmp r0, 0 - bne _0806F320 - bl InUnionRoom - cmp r0, 0x1 - beq _0806F320 - ldr r0, _0806F364 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0 - bne _0806F320 - ldr r2, _0806F368 @ =gUnknown_83A7394 - ldr r1, _0806F36C @ =gUnknown_20370F6 - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - movs r1, 0x2 - bl sub_8113018 -_0806F320: - ldr r0, _0806F35C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806F378 - movs r0, 0x5 - bl PlaySE - bl sub_806F3CC - lsls r0, 24 - cmp r0, 0 - beq _0806F358 - ldr r3, _0806F370 @ =gUnknown_20370F0 - ldr r1, _0806F374 @ =gUnknown_83A7344 - ldr r2, _0806F36C @ =gUnknown_20370F6 - ldr r0, _0806F360 @ =gUnknown_20370F4 - ldrb r0, [r0] - adds r0, r2 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r0, [r0] - str r0, [r3] - bl sub_806F394 -_0806F358: - movs r0, 0 - b _0806F38E - .align 2, 0 -_0806F35C: .4byte gMain -_0806F360: .4byte gUnknown_20370F4 -_0806F364: .4byte gSaveBlock2Ptr -_0806F368: .4byte gUnknown_83A7394 -_0806F36C: .4byte gUnknown_20370F6 -_0806F370: .4byte gUnknown_20370F0 -_0806F374: .4byte gUnknown_83A7344 -_0806F378: - movs r0, 0xA - ands r0, r1 - cmp r0, 0 - beq _0806F358 - bl sub_806EF18 - bl sub_80F7998 - bl sub_806FEA0 - movs r0, 0x1 -_0806F38E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806F280 - - thumb_func_start sub_806F394 -sub_806F394: @ 806F394 - push {lr} - ldr r0, _0806F3BC @ =gUnknown_20370F0 - ldr r1, [r0] - ldr r0, _0806F3C0 @ =sub_806F4E8 - cmp r1, r0 - beq _0806F3B8 - ldr r0, _0806F3C4 @ =sub_806F540 - cmp r1, r0 - beq _0806F3B8 - ldr r0, _0806F3C8 @ =sub_806F554 - cmp r1, r0 - beq _0806F3B8 - bl sub_80CCB68 - movs r0, 0x1 - movs r1, 0 - bl fade_screen -_0806F3B8: - pop {r0} - bx r0 - .align 2, 0 -_0806F3BC: .4byte gUnknown_20370F0 -_0806F3C0: .4byte sub_806F4E8 -_0806F3C4: .4byte sub_806F540 -_0806F3C8: .4byte sub_806F554 - thumb_func_end sub_806F394 - - thumb_func_start sub_806F3CC -sub_806F3CC: @ 806F3CC - push {lr} - ldr r1, _0806F3F8 @ =gUnknown_83A7344 - ldr r2, _0806F3FC @ =gUnknown_20370F6 - ldr r0, _0806F400 @ =gUnknown_20370F4 - ldrb r0, [r0] - adds r0, r2 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - ldr r0, _0806F404 @ =sub_806F410 - cmp r1, r0 - bne _0806F408 - movs r0, 0 - bl GetNationalPokedexCount - lsls r0, 16 - cmp r0, 0 - bne _0806F408 - movs r0, 0 - b _0806F40A - .align 2, 0 -_0806F3F8: .4byte gUnknown_83A7344 -_0806F3FC: .4byte gUnknown_20370F6 -_0806F400: .4byte gUnknown_20370F4 -_0806F404: .4byte sub_806F410 -_0806F408: - movs r0, 0x1 -_0806F40A: - pop {r1} - bx r1 - thumb_func_end sub_806F3CC - - thumb_func_start sub_806F410 -sub_806F410: @ 806F410 - push {lr} - ldr r0, _0806F424 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0806F428 - movs r0, 0 - b _0806F442 - .align 2, 0 -_0806F424: .4byte gPaletteFade -_0806F428: - movs r0, 0x29 - bl IncrementGameStat - bl PlayRainStoppingSoundEffect - bl sub_806EF18 - bl CleanupOverworldWindowsAndTilemaps - ldr r0, _0806F448 @ =sub_810275C - bl SetMainCallback2 - movs r0, 0x1 -_0806F442: - pop {r1} - bx r1 - .align 2, 0 -_0806F448: .4byte sub_810275C - thumb_func_end sub_806F410 - - thumb_func_start sub_806F44C -sub_806F44C: @ 806F44C - push {lr} - ldr r0, _0806F460 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0806F464 - movs r0, 0 - b _0806F478 - .align 2, 0 -_0806F460: .4byte gPaletteFade -_0806F464: - bl PlayRainStoppingSoundEffect - bl sub_806EF18 - bl CleanupOverworldWindowsAndTilemaps - ldr r0, _0806F47C @ =CB2_PartyMenuFromStartMenu - bl SetMainCallback2 - movs r0, 0x1 -_0806F478: - pop {r1} - bx r1 - .align 2, 0 -_0806F47C: .4byte CB2_PartyMenuFromStartMenu - thumb_func_end sub_806F44C - - thumb_func_start sub_806F480 -sub_806F480: @ 806F480 - push {lr} - ldr r0, _0806F494 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0806F498 - movs r0, 0 - b _0806F4AC - .align 2, 0 -_0806F494: .4byte gPaletteFade -_0806F498: - bl PlayRainStoppingSoundEffect - bl sub_806EF18 - bl CleanupOverworldWindowsAndTilemaps - ldr r0, _0806F4B0 @ =ReturnToBagFromKeyItem - bl SetMainCallback2 - movs r0, 0x1 -_0806F4AC: - pop {r1} - bx r1 - .align 2, 0 -_0806F4B0: .4byte ReturnToBagFromKeyItem - thumb_func_end sub_806F480 - - thumb_func_start sub_806F4B4 -sub_806F4B4: @ 806F4B4 - push {lr} - ldr r0, _0806F4C8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0806F4CC - movs r0, 0 - b _0806F4E0 - .align 2, 0 -_0806F4C8: .4byte gPaletteFade -_0806F4CC: - bl PlayRainStoppingSoundEffect - bl sub_806EF18 - bl CleanupOverworldWindowsAndTilemaps - ldr r0, _0806F4E4 @ =sub_80568A8 - bl sub_808B698 - movs r0, 0x1 -_0806F4E0: - pop {r1} - bx r1 - .align 2, 0 -_0806F4E4: .4byte sub_80568A8 - thumb_func_end sub_806F4B4 - - thumb_func_start sub_806F4E8 -sub_806F4E8: @ 806F4E8 - ldr r1, _0806F4F4 @ =gUnknown_20370F0 - ldr r0, _0806F4F8 @ =sub_806F5A4 - str r0, [r1] - movs r0, 0 - bx lr - .align 2, 0 -_0806F4F4: .4byte gUnknown_20370F0 -_0806F4F8: .4byte sub_806F5A4 - thumb_func_end sub_806F4E8 - - thumb_func_start sub_806F4FC -sub_806F4FC: @ 806F4FC - push {lr} - ldr r0, _0806F510 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0806F514 - movs r0, 0 - b _0806F52E - .align 2, 0 -_0806F510: .4byte gPaletteFade -_0806F514: - bl PlayRainStoppingSoundEffect - bl sub_806EF18 - bl CleanupOverworldWindowsAndTilemaps - ldr r0, _0806F534 @ =sub_8088388 - bl SetMainCallback2 - ldr r1, _0806F538 @ =gMain - ldr r0, _0806F53C @ =sub_80568A8 - str r0, [r1, 0x8] - movs r0, 0x1 -_0806F52E: - pop {r1} - bx r1 - .align 2, 0 -_0806F534: .4byte sub_8088388 -_0806F538: .4byte gMain -_0806F53C: .4byte sub_80568A8 - thumb_func_end sub_806F4FC - - thumb_func_start sub_806F540 -sub_806F540: @ 806F540 - push {lr} - bl sub_806EF18 - bl sub_80F7998 - bl sub_806FEA0 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_806F540 - - thumb_func_start sub_806F554 -sub_806F554: @ 806F554 - push {lr} - bl sub_806EF18 - bl sub_80F7998 - bl sub_806FEA0 - bl SafariZoneRetirePrompt - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_806F554 - - thumb_func_start sub_806F56C -sub_806F56C: @ 806F56C - push {lr} - ldr r0, _0806F580 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0806F584 - movs r0, 0 - b _0806F598 - .align 2, 0 -_0806F580: .4byte gPaletteFade -_0806F584: - bl PlayRainStoppingSoundEffect - bl CleanupOverworldWindowsAndTilemaps - ldr r0, _0806F59C @ =gUnknown_300502C - ldrb r0, [r0] - ldr r1, _0806F5A0 @ =sub_80568A8 - bl sub_808B700 - movs r0, 0x1 -_0806F598: - pop {r1} - bx r1 - .align 2, 0 -_0806F59C: .4byte gUnknown_300502C -_0806F5A0: .4byte sub_80568A8 - thumb_func_end sub_806F56C - - thumb_func_start sub_806F5A4 -sub_806F5A4: @ 806F5A4 - push {lr} - bl sub_812B234 - movs r0, 0xC - bl HelpSystem_SetSomeVariable2 - bl sub_806F624 - ldr r1, _0806F5C0 @ =gUnknown_20370F0 - ldr r0, _0806F5C4 @ =sub_806F5C8 - str r0, [r1] - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806F5C0: .4byte gUnknown_20370F0 -_0806F5C4: .4byte sub_806F5C8 - thumb_func_end sub_806F5A4 - - thumb_func_start sub_806F5C8 -sub_806F5C8: @ 806F5C8 - push {lr} - bl sub_806F648 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806F604 - cmp r0, 0x1 - ble _0806F61C - cmp r0, 0x2 - beq _0806F5E4 - cmp r0, 0x3 - beq _0806F604 - b _0806F61C -_0806F5E4: - movs r0, 0 - movs r1, 0 - bl ClearDialogWindowAndFrameToTransparent - bl sub_806F14C - bl sub_812B248 - ldr r1, _0806F5FC @ =gUnknown_20370F0 - ldr r0, _0806F600 @ =sub_806F280 - str r0, [r1] - b _0806F61C - .align 2, 0 -_0806F5FC: .4byte gUnknown_20370F0 -_0806F600: .4byte sub_806F280 -_0806F604: - movs r0, 0 - movs r1, 0x1 - bl ClearDialogWindowAndFrameToTransparent - bl sub_80696C0 - bl ScriptContext2_Disable - bl sub_812B248 - movs r0, 0x1 - b _0806F61E -_0806F61C: - movs r0, 0 -_0806F61E: - pop {r1} - bx r1 - thumb_func_end sub_806F5C8 - - thumb_func_start sub_806F624 -sub_806F624: @ 806F624 - push {lr} - bl save_serialize_map - ldr r1, _0806F63C @ =gUnknown_3000FA4 - ldr r0, _0806F640 @ =sub_806F7A8 - str r0, [r1] - ldr r1, _0806F644 @ =gUnknown_3000FA9 - movs r0, 0 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0806F63C: .4byte gUnknown_3000FA4 -_0806F640: .4byte sub_806F7A8 -_0806F644: .4byte gUnknown_3000FA9 - thumb_func_end sub_806F624 - - thumb_func_start sub_806F648 -sub_806F648: @ 806F648 - push {lr} - bl RunTextPrinters_CheckPrinter0Active - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _0806F674 - ldr r1, _0806F66C @ =gUnknown_3000FA9 - movs r0, 0 - strb r0, [r1] - ldr r0, _0806F670 @ =gUnknown_3000FA4 - ldr r0, [r0] - bl _call_via_r0 - lsls r0, 24 - lsrs r0, 24 - b _0806F676 - .align 2, 0 -_0806F66C: .4byte gUnknown_3000FA9 -_0806F670: .4byte gUnknown_3000FA4 -_0806F674: - movs r0, 0 -_0806F676: - pop {r1} - bx r1 - thumb_func_end sub_806F648 - - thumb_func_start sub_806F67C -sub_806F67C: @ 806F67C - push {lr} - bl sub_812B234 - movs r0, 0xC - bl HelpSystem_SetSomeVariable2 - bl sub_806F624 - ldr r0, _0806F698 @ =task50_save_game - movs r1, 0x50 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0806F698: .4byte task50_save_game - thumb_func_end sub_806F67C - - thumb_func_start sub_806F69C -sub_806F69C: @ 806F69C - push {r4,lr} - adds r2, r0, 0 - adds r4, r1, 0 - ldr r0, _0806F6C8 @ =gStringVar4 - adds r1, r2, 0 - bl StringExpandPlaceholders - movs r0, 0 - movs r1, 0x1 - bl sub_80F7768 - movs r0, 0x1 - bl AddTextPrinterForMessage - ldr r1, _0806F6CC @ =gUnknown_3000FA9 - movs r0, 0x1 - strb r0, [r1] - ldr r0, _0806F6D0 @ =gUnknown_3000FA4 - str r4, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806F6C8: .4byte gStringVar4 -_0806F6CC: .4byte gUnknown_3000FA9 -_0806F6D0: .4byte gUnknown_3000FA4 - thumb_func_end sub_806F69C - - thumb_func_start task50_save_game -task50_save_game: @ 806F6D4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_806F648 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x1 - beq _0806F700 - cmp r1, 0x1 - bgt _0806F6F0 - cmp r1, 0 - beq _0806F712 - b _0806F704 -_0806F6F0: - cmp r1, 0x3 - bgt _0806F704 - ldr r1, _0806F6FC @ =gSpecialVar_Result - movs r0, 0 - strh r0, [r1] - b _0806F704 - .align 2, 0 -_0806F6FC: .4byte gSpecialVar_Result -_0806F700: - ldr r0, _0806F718 @ =gSpecialVar_Result - strh r1, [r0] -_0806F704: - adds r0, r4, 0 - bl DestroyTask - bl EnableBothScriptContexts - bl sub_812B248 -_0806F712: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806F718: .4byte gSpecialVar_Result - thumb_func_end task50_save_game - - thumb_func_start sub_806F71C -sub_806F71C: @ 806F71C - push {lr} - movs r0, 0 - movs r1, 0x1 - bl ClearDialogWindowAndFrame - pop {r0} - bx r0 - thumb_func_end sub_806F71C - - thumb_func_start sub_806F72C -sub_806F72C: @ 806F72C - push {lr} - bl sub_806FE84 - pop {r0} - bx r0 - thumb_func_end sub_806F72C - - thumb_func_start sub_806F738 -sub_806F738: @ 806F738 - ldr r1, _0806F740 @ =gUnknown_3000FA8 - movs r0, 0x3C - strb r0, [r1] - bx lr - .align 2, 0 -_0806F740: .4byte gUnknown_3000FA8 - thumb_func_end sub_806F738 - - thumb_func_start sub_806F744 -sub_806F744: @ 806F744 - push {lr} - ldr r1, _0806F764 @ =gUnknown_3000FA8 - ldrb r0, [r1] - subs r2, r0, 0x1 - strb r2, [r1] - ldr r0, _0806F768 @ =gMain - ldrh r1, [r0, 0x2C] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0806F76C - lsls r0, r2, 24 - cmp r0, 0 - beq _0806F772 - movs r0, 0 - b _0806F774 - .align 2, 0 -_0806F764: .4byte gUnknown_3000FA8 -_0806F768: .4byte gMain -_0806F76C: - movs r0, 0x5 - bl PlaySE -_0806F772: - movs r0, 0x1 -_0806F774: - pop {r1} - bx r1 - thumb_func_end sub_806F744 - - thumb_func_start sub_806F778 -sub_806F778: @ 806F778 - push {lr} - ldr r1, _0806F794 @ =gUnknown_3000FA8 - ldrb r0, [r1] - cmp r0, 0 - bne _0806F79C - ldr r0, _0806F798 @ =gMain - ldrh r1, [r0, 0x2C] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806F7A0 - movs r0, 0x1 - b _0806F7A2 - .align 2, 0 -_0806F794: .4byte gUnknown_3000FA8 -_0806F798: .4byte gMain -_0806F79C: - subs r0, 0x1 - strb r0, [r1] -_0806F7A0: - movs r0, 0 -_0806F7A2: - pop {r1} - bx r1 - thumb_func_end sub_806F778 - - thumb_func_start sub_806F7A8 -sub_806F7A8: @ 806F7A8 - push {lr} - bl GetStartMenuWindowId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl ClearStdWindowAndFrame - bl RemoveStartMenuWindow - movs r0, 0 - bl sub_8112EDC - bl sub_806FCF4 - ldr r0, _0806F7D4 @ =gUnknown_81C55C9 - ldr r1, _0806F7D8 @ =sub_806F7DC - bl sub_806F69C - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806F7D4: .4byte gUnknown_81C55C9 -_0806F7D8: .4byte sub_806F7DC - thumb_func_end sub_806F7A8 - - thumb_func_start sub_806F7DC -sub_806F7DC: @ 806F7DC - push {lr} - bl DisplayYesNoMenuDefaultYes - ldr r1, _0806F7F0 @ =gUnknown_3000FA4 - ldr r0, _0806F7F4 @ =sub_806F7F8 - str r0, [r1] - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806F7F0: .4byte gUnknown_3000FA4 -_0806F7F4: .4byte sub_806F7F8 - thumb_func_end sub_806F7DC - - thumb_func_start sub_806F7F8 -sub_806F7F8: @ 806F7F8 - push {lr} - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0806F81A - cmp r1, 0 - bgt _0806F814 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0806F858 - b _0806F864 -_0806F814: - cmp r1, 0x1 - beq _0806F858 - b _0806F864 -_0806F81A: - ldr r0, _0806F838 @ =gSaveFileStatus - ldrh r0, [r0] - cmp r0, 0 - beq _0806F826 - cmp r0, 0x2 - bne _0806F82E -_0806F826: - ldr r0, _0806F83C @ =gDifferentSaveFile - ldrb r0, [r0] - cmp r0, 0 - bne _0806F848 -_0806F82E: - ldr r1, _0806F840 @ =gUnknown_3000FA4 - ldr r0, _0806F844 @ =sub_806F86C - str r0, [r1] - b _0806F864 - .align 2, 0 -_0806F838: .4byte gSaveFileStatus -_0806F83C: .4byte gDifferentSaveFile -_0806F840: .4byte gUnknown_3000FA4 -_0806F844: .4byte sub_806F86C -_0806F848: - ldr r1, _0806F850 @ =gUnknown_3000FA4 - ldr r0, _0806F854 @ =sub_806F924 - str r0, [r1] - b _0806F864 - .align 2, 0 -_0806F850: .4byte gUnknown_3000FA4 -_0806F854: .4byte sub_806F924 -_0806F858: - bl sub_806F72C - bl sub_806F71C - movs r0, 0x2 - b _0806F866 -_0806F864: - movs r0, 0 -_0806F866: - pop {r1} - bx r1 - thumb_func_end sub_806F7F8 - - thumb_func_start sub_806F86C -sub_806F86C: @ 806F86C - push {lr} - ldr r0, _0806F880 @ =gDifferentSaveFile - ldrb r0, [r0] - cmp r0, 0x1 - bne _0806F88C - ldr r0, _0806F884 @ =gUnknown_81C566A - ldr r1, _0806F888 @ =sub_806F8C0 - bl sub_806F69C - b _0806F894 - .align 2, 0 -_0806F880: .4byte gDifferentSaveFile -_0806F884: .4byte gUnknown_81C566A -_0806F888: .4byte sub_806F8C0 -_0806F88C: - ldr r0, _0806F89C @ =gUnknown_81C55EA - ldr r1, _0806F8A0 @ =sub_806F8A4 - bl sub_806F69C -_0806F894: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806F89C: .4byte gUnknown_81C55EA -_0806F8A0: .4byte sub_806F8A4 - thumb_func_end sub_806F86C - - thumb_func_start sub_806F8A4 -sub_806F8A4: @ 806F8A4 - push {lr} - bl DisplayYesNoMenuDefaultYes - ldr r1, _0806F8B8 @ =gUnknown_3000FA4 - ldr r0, _0806F8BC @ =sub_806F8DC - str r0, [r1] - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806F8B8: .4byte gUnknown_3000FA4 -_0806F8BC: .4byte sub_806F8DC - thumb_func_end sub_806F8A4 - - thumb_func_start sub_806F8C0 -sub_806F8C0: @ 806F8C0 - push {lr} - bl DisplayYesNoMenuDefaultNo - ldr r1, _0806F8D4 @ =gUnknown_3000FA4 - ldr r0, _0806F8D8 @ =sub_806F8DC - str r0, [r1] - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806F8D4: .4byte gUnknown_3000FA4 -_0806F8D8: .4byte sub_806F8DC - thumb_func_end sub_806F8C0 - - thumb_func_start sub_806F8DC -sub_806F8DC: @ 806F8DC - push {lr} - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0806F8FE - cmp r1, 0 - bgt _0806F8F8 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0806F910 - b _0806F91C -_0806F8F8: - cmp r1, 0x1 - beq _0806F910 - b _0806F91C -_0806F8FE: - ldr r1, _0806F908 @ =gUnknown_3000FA4 - ldr r0, _0806F90C @ =sub_806F924 - str r0, [r1] - b _0806F91C - .align 2, 0 -_0806F908: .4byte gUnknown_3000FA4 -_0806F90C: .4byte sub_806F924 -_0806F910: - bl sub_806F72C - bl sub_806F71C - movs r0, 0x2 - b _0806F91E -_0806F91C: - movs r0, 0 -_0806F91E: - pop {r1} - bx r1 - thumb_func_end sub_806F8DC - - thumb_func_start sub_806F924 -sub_806F924: @ 806F924 - push {lr} - bl sub_8112450 - ldr r0, _0806F938 @ =gUnknown_81C5625 - ldr r1, _0806F93C @ =sub_806F940 - bl sub_806F69C - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806F938: .4byte gUnknown_81C5625 -_0806F93C: .4byte sub_806F940 - thumb_func_end sub_806F924 - - thumb_func_start sub_806F940 -sub_806F940: @ 806F940 - push {r4,lr} - movs r0, 0 - bl IncrementGameStat - ldr r4, _0806F95C @ =gDifferentSaveFile - ldrb r0, [r4] - cmp r0, 0x1 - bne _0806F960 - movs r0, 0x4 - bl TrySavingData - movs r0, 0 - strb r0, [r4] - b _0806F966 - .align 2, 0 -_0806F95C: .4byte gDifferentSaveFile -_0806F960: - movs r0, 0 - bl TrySavingData -_0806F966: - ldr r1, _0806F974 @ =gUnknown_3000FA4 - ldr r0, _0806F978 @ =sub_806F97C - str r0, [r1] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806F974: .4byte gUnknown_3000FA4 -_0806F978: .4byte sub_806F97C - thumb_func_end sub_806F940 - - thumb_func_start sub_806F97C -sub_806F97C: @ 806F97C - push {lr} - ldr r0, _0806F990 @ =gUnknown_3005420 - ldrh r0, [r0] - cmp r0, 0x1 - bne _0806F99C - ldr r0, _0806F994 @ =gUnknown_81C5647 - ldr r1, _0806F998 @ =sub_806F9B8 - bl sub_806F69C - b _0806F9A4 - .align 2, 0 -_0806F990: .4byte gUnknown_3005420 -_0806F994: .4byte gUnknown_81C5647 -_0806F998: .4byte sub_806F9B8 -_0806F99C: - ldr r0, _0806F9B0 @ =gUnknown_841614B - ldr r1, _0806F9B4 @ =sub_806FA04 - bl sub_806F69C -_0806F9A4: - bl sub_806F738 - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806F9B0: .4byte gUnknown_841614B -_0806F9B4: .4byte sub_806FA04 - thumb_func_end sub_806F97C - - thumb_func_start sub_806F9B8 -sub_806F9B8: @ 806F9B8 - push {lr} - bl RunTextPrinters_CheckPrinter0Active - lsls r0, 16 - cmp r0, 0 - bne _0806F9D0 - movs r0, 0x30 - bl PlaySE - ldr r1, _0806F9D8 @ =gUnknown_3000FA4 - ldr r0, _0806F9DC @ =SaveDialogCB_ReturnSuccess - str r0, [r1] -_0806F9D0: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806F9D8: .4byte gUnknown_3000FA4 -_0806F9DC: .4byte SaveDialogCB_ReturnSuccess - thumb_func_end sub_806F9B8 - - thumb_func_start SaveDialogCB_ReturnSuccess -SaveDialogCB_ReturnSuccess: @ 806F9E0 - push {lr} - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _0806F9FE - bl sub_806F744 - lsls r0, 24 - cmp r0, 0 - beq _0806F9FE - bl sub_806F72C - movs r0, 0x1 - b _0806FA00 -_0806F9FE: - movs r0, 0 -_0806FA00: - pop {r1} - bx r1 - thumb_func_end SaveDialogCB_ReturnSuccess - - thumb_func_start sub_806FA04 -sub_806FA04: @ 806FA04 - push {lr} - bl RunTextPrinters_CheckPrinter0Active - lsls r0, 16 - cmp r0, 0 - bne _0806FA1C - movs r0, 0x16 - bl PlaySE - ldr r1, _0806FA24 @ =gUnknown_3000FA4 - ldr r0, _0806FA28 @ =SaveDialogCB_ReturnError - str r0, [r1] -_0806FA1C: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806FA24: .4byte gUnknown_3000FA4 -_0806FA28: .4byte SaveDialogCB_ReturnError - thumb_func_end sub_806FA04 - - thumb_func_start SaveDialogCB_ReturnError -SaveDialogCB_ReturnError: @ 806FA2C - push {lr} - bl sub_806F778 - lsls r0, 24 - cmp r0, 0 - beq _0806FA40 - bl sub_806F72C - movs r0, 0x3 - b _0806FA42 -_0806FA40: - movs r0, 0 -_0806FA42: - pop {r1} - bx r1 - thumb_func_end SaveDialogCB_ReturnError - - thumb_func_start sub_806FA48 -sub_806FA48: @ 806FA48 - push {lr} - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_806FA48 - - thumb_func_start sub_806FA54 -sub_806FA54: @ 806FA54 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r8, r0 - ldrb r0, [r0] - cmp r0, 0x4 - bls _0806FA66 - b _0806FB64 -_0806FA66: - lsls r0, 2 - ldr r1, _0806FA70 @ =_0806FA74 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806FA70: .4byte _0806FA74 - .align 2, 0 -_0806FA74: - .4byte _0806FA88 - .4byte _0806FB00 - .4byte _0806FB12 - .4byte _0806FB3C - .4byte _0806FB60 -_0806FA88: - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl SetVBlankCallback - bl ScanlineEffect_Stop - movs r2, 0xA0 - lsls r2, 19 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r1, _0806FAF4 @ =0x040000d4 - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _0806FAF8 @ =0x81000200 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r2, 0xC0 - lsls r2, 19 - movs r3, 0xC0 - lsls r3, 9 - mov r4, sp - movs r6, 0 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _0806FAFC @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_0806FACA: - strh r6, [r4] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r5 - subs r3, r5 - cmp r3, r5 - bhi _0806FACA - strh r6, [r4] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - b _0806FB64 - .align 2, 0 -_0806FAF4: .4byte 0x040000d4 -_0806FAF8: .4byte 0x81000200 -_0806FAFC: .4byte 0x81000800 -_0806FB00: - bl ResetSpriteData - bl ResetTasks - bl ResetPaletteFade - bl ScanlineEffect_Clear - b _0806FB64 -_0806FB12: - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0806FB34 @ =gUnknown_83A73B8 - movs r0, 0 - movs r2, 0x1 - bl InitBgsFromTemplates - ldr r0, _0806FB38 @ =gUnknown_83A73BC - bl InitWindows - movs r0, 0 - movs r1, 0x8 - movs r2, 0xF0 - bl TextWindow_SetStdFrame0_WithPal - b _0806FB64 - .align 2, 0 -_0806FB34: .4byte gUnknown_83A73B8 -_0806FB38: .4byte gUnknown_83A73BC -_0806FB3C: - movs r0, 0 - bl ShowBg - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - ldr r0, _0806FB5C @ =sub_806FA48 - bl SetVBlankCallback - movs r0, 0x1 - bl EnableInterrupts - b _0806FB64 - .align 2, 0 -_0806FB5C: .4byte sub_806FA48 -_0806FB60: - movs r0, 0x1 - b _0806FB6E -_0806FB64: - mov r1, r8 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 -_0806FB6E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_806FA54 - - thumb_func_start sub_806FB7C -sub_806FB7C: @ 806FB7C - push {lr} - ldr r0, _0806FB9C @ =gMain + 0x438 - bl sub_806FA54 - cmp r0, 0 - beq _0806FB96 - ldr r0, _0806FBA0 @ =sub_806FBB8 - movs r1, 0x50 - bl CreateTask - ldr r0, _0806FBA4 @ =sub_806FBA8 - bl SetMainCallback2 -_0806FB96: - pop {r0} - bx r0 - .align 2, 0 -_0806FB9C: .4byte gMain + 0x438 -_0806FBA0: .4byte sub_806FBB8 -_0806FBA4: .4byte sub_806FBA8 - thumb_func_end sub_806FB7C - - thumb_func_start sub_806FBA8 -sub_806FBA8: @ 806FBA8 - push {lr} - bl RunTasks - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_806FBA8 - - thumb_func_start sub_806FBB8 -sub_806FBB8: @ 806FBB8 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0806FBEC @ =gTasks+0x8 - adds r5, r0, r1 - ldr r0, _0806FBF0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0806FBD8 - b _0806FCE8 -_0806FBD8: - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0x6 - bls _0806FBE2 - b _0806FCE8 -_0806FBE2: - lsls r0, 2 - ldr r1, _0806FBF4 @ =_0806FBF8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806FBEC: .4byte gTasks+0x8 -_0806FBF0: .4byte gPaletteFade -_0806FBF4: .4byte _0806FBF8 - .align 2, 0 -_0806FBF8: - .4byte _0806FC14 - .4byte _0806FC80 - .4byte _0806FC8C - .4byte _0806FC9C - .4byte _0806FCB0 - .4byte _0806FCC8 - .4byte _0806FCD8 -_0806FC14: - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r2, _0806FC74 @ =gUnknown_8419F54 - movs r4, 0 - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x2 - movs r3, 0xFF - bl AddTextPrinterParameterized2 - movs r0, 0 - movs r1, 0x8 - movs r2, 0xF - bl DrawTextBorderOuter - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _0806FC78 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _0806FC7C - bl InUnionRoom - cmp r0, 0 - beq _0806FC7C - movs r0, 0x5 - b _0806FCE6 - .align 2, 0 -_0806FC74: .4byte gUnknown_8419F54 -_0806FC78: .4byte gWirelessCommType -_0806FC7C: - movs r0, 0x1 - b _0806FCE6 -_0806FC80: - bl sub_804C1C0 - bl sub_80DA45C - movs r0, 0x2 - b _0806FCE6 -_0806FC8C: - bl sub_80DA4A0 - lsls r0, 24 - cmp r0, 0 - beq _0806FCE8 - bl sav2_gender2_inplace_and_xFE - b _0806FCE4 -_0806FC9C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - movs r0, 0x4 - b _0806FCE6 -_0806FCB0: - bl FreeAllWindowBuffers - ldr r0, _0806FCC4 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask - b _0806FCE8 - .align 2, 0 -_0806FCC4: .4byte gMain -_0806FCC8: - ldr r0, _0806FCD4 @ =sub_80DA634 - movs r1, 0x5 - bl CreateTask - movs r0, 0x6 - b _0806FCE6 - .align 2, 0 -_0806FCD4: .4byte sub_80DA634 -_0806FCD8: - ldr r0, _0806FCF0 @ =sub_80DA634 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _0806FCE8 -_0806FCE4: - movs r0, 0x3 -_0806FCE6: - strh r0, [r5] -_0806FCE8: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806FCF0: .4byte sub_80DA634 - thumb_func_end sub_806FBB8 - - thumb_func_start sub_806FCF4 -sub_806FCF4: @ 806FCF4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - ldr r5, _0806FE54 @ =gUnknown_2037104 - ldr r0, _0806FE58 @ =gUnknown_83A73CC - bl AddWindow - strb r0, [r5] - ldrb r0, [r5] - ldr r4, _0806FE5C @ =0x0000021d - adds r1, r4, 0 - movs r2, 0xD0 - bl TextWindow_SetStdFrame0_WithPal - ldrb r0, [r5] - movs r1, 0 - adds r2, r4, 0 - movs r3, 0xD - bl DrawStdFrameWithCustomTileAndPalette - ldr r4, _0806FE60 @ =gStringVar4 - movs r0, 0x3 - adds r1, r4, 0 - movs r2, 0x8 - bl sub_80F7FCC - movs r6, 0x1 - negs r6, r6 - movs r0, 0x2 - adds r1, r4, 0 - adds r2, r6, 0 - bl GetStringWidth - movs r2, 0x70 - subs r2, r0 - lsrs r2, 1 - lsls r2, 24 - lsrs r2, 24 - ldrb r0, [r5] - ldr r1, _0806FE64 @ =gUnknown_83A73DC - str r1, [sp] - str r6, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x2 - movs r3, 0 - bl AddTextPrinterParameterized3 - movs r0, 0x2 - adds r1, r4, 0 - adds r2, r6, 0 - bl GetStringWidth - ldrb r0, [r5] - ldr r1, _0806FE68 @ =gUnknown_83A73D4 - mov r9, r1 - str r1, [sp] - str r6, [sp, 0x4] - ldr r1, _0806FE6C @ =gUnknown_841617A - str r1, [sp, 0x8] - movs r1, 0 - movs r2, 0x2 - movs r3, 0xE - bl AddTextPrinterParameterized3 - movs r0, 0 - adds r1, r4, 0 - movs r2, 0x2 - bl sub_80F7FCC - ldrb r0, [r5] - adds r1, r4, 0 - movs r2, 0x3C - movs r3, 0xE - bl sub_812E6DC - ldrb r0, [r5] - mov r1, r9 - str r1, [sp] - str r6, [sp, 0x4] - ldr r1, _0806FE70 @ =gUnknown_8416181 - str r1, [sp, 0x8] - movs r1, 0 - movs r2, 0x2 - movs r3, 0x1C - bl AddTextPrinterParameterized3 - movs r0, 0x4 - adds r1, r4, 0 - movs r2, 0x2 - bl sub_80F7FCC - ldrb r0, [r5] - ldr r1, _0806FE74 @ =gUnknown_83A73D8 - mov r8, r1 - str r1, [sp] - str r6, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0 - movs r2, 0x3C - movs r3, 0x1C - bl AddTextPrinterParameterized3 - movs r7, 0x2A - ldr r0, _0806FE78 @ =0x00000829 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806FE0A - ldrb r0, [r5] - mov r1, r9 - str r1, [sp] - str r6, [sp, 0x4] - ldr r1, _0806FE7C @ =gUnknown_8416188 - str r1, [sp, 0x8] - movs r1, 0 - movs r2, 0x2 - movs r3, 0x2A - bl AddTextPrinterParameterized3 - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0x2 - bl sub_80F7FCC - ldrb r0, [r5] - mov r1, r8 - str r1, [sp] - str r6, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0 - movs r2, 0x3C - movs r3, 0x2A - bl AddTextPrinterParameterized3 - movs r7, 0x38 -_0806FE0A: - ldrb r0, [r5] - mov r1, r9 - str r1, [sp] - str r6, [sp, 0x4] - ldr r1, _0806FE80 @ =gUnknown_8416190 - str r1, [sp, 0x8] - movs r1, 0 - movs r2, 0x2 - adds r3, r7, 0 - bl AddTextPrinterParameterized3 - movs r0, 0x2 - adds r1, r4, 0 - movs r2, 0x2 - bl sub_80F7FCC - ldrb r0, [r5] - mov r1, r8 - str r1, [sp] - str r6, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0 - movs r2, 0x3C - adds r3, r7, 0 - bl AddTextPrinterParameterized3 - ldrb r0, [r5] - movs r1, 0x2 - bl CopyWindowToVram - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806FE54: .4byte gUnknown_2037104 -_0806FE58: .4byte gUnknown_83A73CC -_0806FE5C: .4byte 0x0000021d -_0806FE60: .4byte gStringVar4 -_0806FE64: .4byte gUnknown_83A73DC -_0806FE68: .4byte gUnknown_83A73D4 -_0806FE6C: .4byte gUnknown_841617A -_0806FE70: .4byte gUnknown_8416181 -_0806FE74: .4byte gUnknown_83A73D8 -_0806FE78: .4byte 0x00000829 -_0806FE7C: .4byte gUnknown_8416188 -_0806FE80: .4byte gUnknown_8416190 - thumb_func_end sub_806FCF4 - - thumb_func_start sub_806FE84 -sub_806FE84: @ 806FE84 - push {r4,lr} - ldr r4, _0806FE9C @ =gUnknown_2037104 - ldrb r0, [r4] - movs r1, 0 - bl ClearStdWindowAndFrame - ldrb r0, [r4] - bl RemoveWindow - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806FE9C: .4byte gUnknown_2037104 - thumb_func_end sub_806FE84 - - thumb_func_start sub_806FEA0 -sub_806FEA0: @ 806FEA0 - push {lr} - movs r0, 0x5 - bl PlaySE - bl GetStartMenuWindowId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl ClearStdWindowAndFrame - bl RemoveStartMenuWindow - bl sub_80696C0 - bl ScriptContext2_Disable - pop {r0} - bx r0 - thumb_func_end sub_806FEA0 - - thumb_func_start AppendToList -AppendToList: @ 806FEC8 - ldrb r3, [r1] - adds r0, r3 - strb r2, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bx lr - thumb_func_end AppendToList - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/trade.s b/asm/trade.s index bd98dd698..3573dcfaf 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -14443,7 +14443,7 @@ _080540DC: movs r0, 0x32 strb r0, [r1] ldr r4, _080540FC @ =gStringVar4 - ldr r1, _08054100 @ =gUnknown_8419F54 + ldr r1, _08054100 @ =gText_SavingDontTurnOffThePower2 _080540EA: adds r0, r4, 0 bl StringExpandPlaceholders @@ -14454,7 +14454,7 @@ _080540EA: b _08054396 .align 2, 0 _080540FC: .4byte gStringVar4 -_08054100: .4byte gUnknown_8419F54 +_08054100: .4byte gText_SavingDontTurnOffThePower2 _08054104: bl InUnionRoom cmp r0, 0 diff --git a/asm/trainer_card.s b/asm/trainer_card.s index 9a28cbc5e..1ebda42ab 100644 --- a/asm/trainer_card.s +++ b/asm/trainer_card.s @@ -785,7 +785,7 @@ _0808967C: .align 2, 0 _0808968C: .4byte gMain _08089690: - bl sub_80F6E9C + bl LoadStdWindowFrameGfx ldr r1, _080896A0 @ =gMain movs r0, 0x87 lsls r0, 3 @@ -4723,8 +4723,8 @@ sub_808B66C: @ 808B66C _0808B694: .4byte sub_808B21C thumb_func_end sub_808B66C - thumb_func_start sub_808B698 -sub_808B698: @ 808B698 + thumb_func_start InitTrainerCard +InitTrainerCard: @ 808B698 push {r4,r5,lr} adds r4, r0, 0 ldr r5, _0808B6C0 @ =gUnknown_20397A4 @@ -4770,10 +4770,10 @@ _0808B6F0: .4byte gUnknown_20397A4 _0808B6F4: .4byte 0x00007bcf _0808B6F8: .4byte 0x0000045c _0808B6FC: .4byte sub_80895B8 - thumb_func_end sub_808B698 + thumb_func_end InitTrainerCard - thumb_func_start sub_808B700 -sub_808B700: @ 808B700 + thumb_func_start InitLinkPartnerTrainerCard +InitLinkPartnerTrainerCard: @ 808B700 push {r4-r6,lr} adds r4, r0, 0 adds r6, r1, 0 @@ -4822,7 +4822,7 @@ _0808B764: .4byte gTrainerCards _0808B768: .4byte gLinkPlayers _0808B76C: .4byte 0x00007bcf _0808B770: .4byte sub_80895B8 - thumb_func_end sub_808B700 + thumb_func_end InitLinkPartnerTrainerCard thumb_func_start sub_808B774 sub_808B774: @ 808B774 @@ -5057,7 +5057,7 @@ _0808B948: .4byte 0x00000457 thumb_func_start sub_808B94C sub_808B94C: @ 808B94C push {lr} - bl sub_808B698 + bl InitTrainerCard ldr r0, _0808B95C @ =sub_80895B8 bl SetMainCallback2 pop {r0} @@ -5076,7 +5076,7 @@ sub_808B960: @ 808B960 bl memcpy movs r0, 0 adds r1, r4, 0 - bl sub_808B700 + bl InitLinkPartnerTrainerCard ldr r0, _0808B98C @ =sub_80895B8 bl SetMainCallback2 pop {r4} @@ -5098,7 +5098,7 @@ sub_808B990: @ 808B990 bl memcpy movs r0, 0 adds r1, r4, 0 - bl sub_808B700 + bl InitLinkPartnerTrainerCard ldr r0, _0808B9BC @ =sub_80895B8 bl SetMainCallback2 pop {r4} diff --git a/common_syms/help_system_812B1E0.txt b/common_syms/help_system_812B1E0.txt index 7986bedb5..5e56cc230 100644 --- a/common_syms/help_system_812B1E0.txt +++ b/common_syms/help_system_812B1E0.txt @@ -1,2 +1,2 @@ gUnknown_3005E9C -gUnknown_3005EA0 +gSomeVariableBackup diff --git a/common_syms/save.txt b/common_syms/save.txt index 9b77840e0..a0106f6fa 100644 --- a/common_syms/save.txt +++ b/common_syms/save.txt @@ -9,4 +9,4 @@ gSaveUnusedVar gSaveFileStatus gGameContinueCallback gRamSaveSectionLocations -gUnknown_3005420 +gSaveSucceeded diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc index abfd0d550..62a34d33c 100644 --- a/data/map_event_scripts.inc +++ b/data/map_event_scripts.inc @@ -774,7 +774,7 @@ EventScript_1A4EAE:: @ 81A4EAE return EventScript_1A4EAF:: @ 81A4EAF - special sub_806F67C + special Field_AskSaveTheGame waitstate return @@ -4447,21 +4447,33 @@ SevenIsland_TrainerTower_1F_EventScript_1C54EA:: @ 81C54EA gUnknown_81C555B:: @ 81C555B .incbin "baserom.gba", 0x1C555B, 0x6E -gUnknown_81C55C9:: @ 81C55C9 - .incbin "baserom.gba", 0x1C55C9, 0x21 +gText_WouldYouLikeToSaveTheGame:: @ 81C55C9 + .string "Would you like to save the game?$" -gUnknown_81C55EA:: @ 81C55EA - .incbin "baserom.gba", 0x1C55EA, 0x3B +gText_AlreadySaveFile_WouldLikeToOverwrite:: @ 81C55EA + .string "There is already a saved file.\n" + .string "Is it okay to overwrite it?$" -gUnknown_81C5625:: @ 81C5625 - .incbin "baserom.gba", 0x1C5625, 0x22 +gText_SavingDontTurnOffThePower:: @ 81C5625 + .string "SAVING…\n" + .string "DON'T TURN OFF THE POWER.$" -gUnknown_81C5647:: @ 81C5647 - .incbin "baserom.gba", 0x1C5647, 0x23 +gText_PlayerSavedTheGame:: @ 81C5647 + .string "{PLAYER} saved the game.$" + +gUnknown_81C565A:: + .string "セーブに しっぱい しました‥$" @ 0xE5 -gUnknown_81C566A:: @ 81C566A - .incbin "baserom.gba", 0x1C566A, 0xE5 +gText_DifferentGameFile:: @ 81C566A + .string "WARNING!\p" + .string "There is a different game file that\n" + .string "is already saved.\p" + .string "If you save now, the other file's\n" + .string "adventure, including items and\l" + .string "POKéMON, will be entirely lost.\p" + .string "Are you sure you want to save now\n" + .string "and overwrite the other save file?$" gOtherText_NewName:: @ 81C574F .string "NEW NAME$" diff --git a/data/maps/PalletTown_PlayersHouse_2F/scripts.inc b/data/maps/PalletTown_PlayersHouse_2F/scripts.inc index 77ff855e4..51865301c 100644 --- a/data/maps/PalletTown_PlayersHouse_2F/scripts.inc +++ b/data/maps/PalletTown_PlayersHouse_2F/scripts.inc @@ -36,7 +36,7 @@ PalletTown_PlayersHouse_2F_EventScript_168CE4:: @ 8168CE4 goto_if_eq EventScript_1A7AE0 lockall setvar VAR_0x8004, 32 - special sub_812B220 + special Special_SetSomeVariable setvar VAR_0x8004, 1 special sub_80CA86C playse SE_PC_ON diff --git a/data/specials.inc b/data/specials.inc index 6111e4836..d8d208d43 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -102,7 +102,7 @@ gSpecials:: @ 815FD60 def_special nullsub_75 def_special nullsub_75 def_special sub_8081128 - def_special sub_806F67C + def_special Field_AskSaveTheGame def_special nullsub_56 def_special sub_80FEE44 def_special sub_80BDA7C @@ -390,9 +390,9 @@ gSpecials:: @ 815FD60 def_special TakePokemonFromRoute5Daycare def_special ScrSpecial_SeaGallopFerry def_special sub_80CC48C - def_special sub_812B220 - def_special sub_812B234 - def_special sub_812B248 + def_special Special_SetSomeVariable + def_special HelpSystem_BackupSomeVariable + def_special HelpSystem_RestoreSomeVariable def_special ValidateReceivedWonderCard def_special sub_810B810 def_special sub_811999C diff --git a/data/start_menu.s b/data/start_menu.s deleted file mode 100644 index e004a6628..000000000 --- a/data/start_menu.s +++ /dev/null @@ -1,28 +0,0 @@ - .section .rodata - .align 2 -gUnknown_83A7344:: @ 83A7344 - .incbin "baserom.gba", 0x3A7344, 0x48 - -gUnknown_83A738C:: @ 83A738C - .incbin "baserom.gba", 0x3A738C, 0x8 - -gUnknown_83A7394:: @ 83A7394 - .incbin "baserom.gba", 0x3A7394, 0x24 - -gUnknown_83A73B8:: @ 83A73B8 - .incbin "baserom.gba", 0x3A73B8, 0x4 - -gUnknown_83A73BC:: @ 83A73BC - .incbin "baserom.gba", 0x3A73BC, 0x10 - -gUnknown_83A73CC:: @ 83A73CC - .incbin "baserom.gba", 0x3A73CC, 0x8 - -gUnknown_83A73D4:: @ 83A73D4 - .incbin "baserom.gba", 0x3A73D4, 0x4 - -gUnknown_83A73D8:: @ 83A73D8 - .incbin "baserom.gba", 0x3A73D8, 0x4 - -gUnknown_83A73DC:: @ 83A73DC - .incbin "baserom.gba", 0x3A73DC, 0x284 diff --git a/data/strings.s b/data/strings.s index 4f0fefb19..6efa519e6 100644 --- a/data/strings.s +++ b/data/strings.s @@ -45,7 +45,7 @@ gExpandedPlaceholder_Green:: @ 8415A5C gText_EggNickname:: @ 8415A62 .string "EGG$" -gText_Pokemon:: @ 8415A66 +gStartMenuText_Pokemon:: @ 8415A66 .string "POKéMON$" gText_NewGame:: @ 8415A6E @@ -351,19 +351,19 @@ gUnknown_8416133:: @ 0x8416133 gUnknown_8416146:: @ 0x8416146 .string "ポケモン$" -gUnknown_841614B:: @ 841614B +gText_SaveError_PleaseExchangeBackupMemory:: @ 841614B .string "Save error.\pPlease exchange the\nbackup memory.$" -gUnknown_841617A:: @ 841617A +gSaveStatName_Player:: @ 841617A .string "PLAYER$" -gUnknown_8416181:: @ 8416181 +gSaveStatName_Badges:: @ 8416181 .string "BADGES$" -gUnknown_8416188:: @ 8416188 +gSaveStatName_Pokedex:: @ 8416188 .string "POKéDEX$" -gUnknown_8416190:: @ 8416190 +gSaveStatName_Time:: @ 8416190 .string "TIME$" gUnknown_8416195:: @@ -482,28 +482,28 @@ gText_GoBackToThePreviousMenu:: gText_WhatWouldYouLikeToDo:: @ 8416262 .string "What would you like to do?$" -gUnknown_841627D:: +gStartMenuText_Pokedex:: .string "POKéDEX$" -gUnknown_8416285:: @ 8416285 +gStartMenuText_Bag:: @ 8416285 .string "BAG$" gUnknown_8416289:: .string "ポケナビ$" -gUnknown_841628E:: +gStartMenuText_Player:: .string "{PLAYER}$" -gUnknown_8416291:: +gStartMenuText_Save:: .string "SAVE$" -gUnknown_8416296:: +gStartMenuText_Option:: .string "OPTION$" -gUnknown_841629D:: +gStartMenuText_Exit:: .string "EXIT$" -gUnknown_84162A2:: +gStartMenuText_Retire:: .string "RETIRE$" gUnknown_84162A9:: @ 84162A9 @@ -2820,38 +2820,38 @@ gUnknown_8419F10:: @ 0x8419F10 gUnknown_8419F2D:: @ 0x8419F2D .string "ゲ-ムない じかんの しゅうせい システムが\nつかえる ように なりました!$" -gUnknown_8419F54:: @ 8419F54 +gText_SavingDontTurnOffThePower2:: @ 8419F54 .string "SAVING…\n" .string "DON'T TURN OFF THE POWER.$" // Start menu option descriptions -gUnknown_8419F76:: @ 8419F76 // Pokedex +gStartMenuDesc_Pokedex:: @ 8419F76 // Pokedex .string "A device that records POKéMON secrets\n" .string "upon meeting or catching them.$" -gUnknown_8419FBB:: @ 8419FBB // Pokemon +gStartMenuDesc_Pokemon:: @ 8419FBB // Pokemon .string "Check and organize POKéMON that are\n" .string "traveling with you in your party.$" -gUnknown_841A001:: @ 841A001 // Bag +gStartMenuDesc_Bag:: @ 841A001 // Bag .string "Equipped with pockets for storing items\n" .string "you bought, received, or found.$" -gUnknown_841A049:: @ 841A049 // {PLAYER} +gStartMenuDesc_Player:: @ 841A049 // {PLAYER} .string "Check your money and other game data.$" -gUnknown_841A06F:: @ 841A06F // Save +gStartMenuDesc_Save:: @ 841A06F // Save .string "Save your game with a complete record\n" .string "of your progress to take a break.$" -gUnknown_841A0B7:: @ 841A0B7 // Options +gStartMenuDesc_Option:: @ 841A0B7 // Options .string "Adjust various game settings such as text\n" .string "speed, game rules, etc.$" -gUnknown_841A0F9:: @ 841A0F9 // Quit +gStartMenuDesc_Exit:: @ 841A0F9 // Quit .string "Close this MENU window.$" -gUnknown_841A111:: @ 841A111 // Retire +gStartMenuDesc_Retire:: @ 841A111 // Retire .string "Retire from the SAFARI GAME and return to\n" .string "the registration counter.$" diff --git a/data/tileset_anims.s b/data/tileset_anims.s index 9881cdd3f..5f2320fd3 100644 --- a/data/tileset_anims.s +++ b/data/tileset_anims.s @@ -1,5 +1,8 @@ .section .rodata .align 2 +gUnknown_83A73E0:: @ 83A73E0 + .incbin "baserom.gba", 0x3A73E0, 0x280 + gUnknown_83A7660:: @ 83A7660 .incbin "baserom.gba", 0x3A7660, 0x2FF4 diff --git a/include/event_scripts.h b/include/event_scripts.h index ce9d0bbf5..99b453c85 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1161,4 +1161,11 @@ extern const u8 EventScript_ResetAllMapFlags[]; // player_pc extern const u8 EventScript_PalletTown_PlayersHouse_2F_ShutDownPC[]; +// start_menu +extern const u8 gText_WouldYouLikeToSaveTheGame[]; +extern const u8 gText_AlreadySaveFile_WouldLikeToOverwrite[]; +extern const u8 gText_SavingDontTurnOffThePower[]; +extern const u8 gText_PlayerSavedTheGame[]; +extern const u8 gText_DifferentGameFile[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h index fe67fec30..22849a37d 100644 --- a/include/field_fadetransition.h +++ b/include/field_fadetransition.h @@ -15,6 +15,7 @@ void sub_807DF64(void); void sub_807DC18(void); void FieldCallback_ReturnToEventScript2(void); void sub_807DC00(void); +void FadeTransition_FadeInOnReturnToStartMenu(void); bool32 sub_807E418(void); diff --git a/include/fieldmap.h b/include/fieldmap.h index 7bedb1d94..dde05b7ed 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -26,4 +26,6 @@ u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection); struct MapConnection * GetMapConnectionAtPos(s16 x, s16 y); +void save_serialize_map(void); + #endif //GUARD_FIELDMAP_H diff --git a/include/gba/macro.h b/include/gba/macro.h index c0a4e481b..01bb85b7a 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -121,10 +121,31 @@ } \ } +#define DmaFillLarge(dmaNum, value, dest, size, block, bit) \ +{ \ + void *_dest = (void *)dest; \ + u32 _size = size; \ + while (1) \ + { \ + DmaFill##bit(dmaNum, value, _dest, (block)); \ + _dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaFill##bit(dmaNum, value, _dest, _size); \ + break; \ + } \ + } \ +} + #define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16) #define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32) +#define DmaFillLarge16(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 16) + +#define DmaFillLarge32(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 32) + #define DmaClearLarge16(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 16) #define DmaClearLarge32(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 32) @@ -139,4 +160,14 @@ #define DmaCopy16Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 16) #define DmaCopy32Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 32) +#define DmaFillDefvars(dmaNum, value, dest, size, bit) \ +{ \ + void *_dest = (void *)dest; \ + u32 _size = size; \ + DmaFill##bit(dmaNum, value, _dest, _size); \ +} + +#define DmaFill16Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 16) +#define DmaFill32Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 32) + #endif // GUARD_GBA_MACRO_H diff --git a/include/help_system.h b/include/help_system.h index ff77d01d6..53dc45014 100644 --- a/include/help_system.h +++ b/include/help_system.h @@ -29,7 +29,7 @@ extern bool8 gHelpSystemEnabled; extern u8 gUnknown_203F175; // help_system_812B1E0 -void sub_812B1E0(u8); +void HelpSystem_SetSomeVariable(u8); void HelpSystem_SetSomeVariable2(u8); bool8 sub_812B40C(void); bool8 sub_812B45C(void); @@ -89,7 +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); +void HelpSystem_BackupSomeVariable(void); +void HelpSystem_RestoreSomeVariable(void); #endif //GUARD_HELP_SYSTEM_H diff --git a/include/item_menu.h b/include/item_menu.h index 83b8d6d15..166906ebe 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -28,7 +28,7 @@ void sub_81AAC70(void); void sub_8108CF0(void); void sub_81089BC(void); void sub_810B108(u8); -void ReturnToBagFromKeyItem(void); +void CB2_BagMenuFromStartMenu(void); void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1, int pos2); void ItemMenu_StartFadeToExitCallback(u8 taskId); void sub_8108CB4(void); diff --git a/include/link_rfu.h b/include/link_rfu.h index 2757e5296..2be9dd3c9 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -39,5 +39,6 @@ bool32 sub_80FAEF0(void); bool32 IsRfuRecvQueueEmpty(void); u32 GetRfuRecvQueueLength(void); void sub_80F8DC0(void); +void var_800D_set_xB(void); #endif //GUARD_LINK_RFU_H diff --git a/include/load_save.h b/include/load_save.h index bd33f89c8..2406b5f03 100644 --- a/include/load_save.h +++ b/include/load_save.h @@ -26,5 +26,7 @@ void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey); void ApplyNewEncryptionKeyToBagItems(u32 encryptionKey); void ApplyNewEncryptionKeyToWord(u32 * word, u32 encryptionKey); void ApplyNewEncryptionKeyToHword(u16 * hword, u32 encryptionKey); +void sav2_gender2_inplace_and_xFE(void); +void sub_804C1C0(void); #endif // GUARD_LOAD_SAVE_H diff --git a/include/menu.h b/include/menu.h index 6f358d34e..b6d757f85 100644 --- a/include/menu.h +++ b/include/menu.h @@ -21,7 +21,7 @@ struct MenuAction void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const u8 * color, s8 speed, const u8 * str); void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str); void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing); -void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y); +void Menu_PrintFormatIntlPlayerName(u8 windowId, const u8 * src, u16 x, u16 y); void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority); bool8 IsBlendTaskActive(void); u8 sub_812EA78(u16 species, u32 personality, u8 a2); diff --git a/include/new_game.h b/include/new_game.h index ed40546ba..bf048718a 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -3,6 +3,8 @@ #include "global.h" +extern bool8 gDifferentSaveFile; + void SetTrainerId(u32 trainerId, u8 *dst); void CopyTrainerId(u8 *dst, u8 *src); void NewGameInitData(void); diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index a7555c505..644e65289 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -26,7 +26,7 @@ u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed void AddTextPrinterDiffStyle(bool8 allowSkippingDelayWithButtonPress); void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress); void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed); -void sub_80F6E9C(void); +void LoadStdWindowFrameGfx(void); void DrawDialogueFrame(u8 windowId, bool8 transfer); void DrawStdWindowFrame(u8 windowId, bool8 copyNow); void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram); @@ -41,12 +41,12 @@ void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *src, TaskFunc callb void DisplayYesNoMenuDefaultYes(void); void DisplayYesNoMenuDefaultNo(void); u8 GetTextSpeedSetting(void); -u8 sub_80F78E0(u8 height); +u8 CreateStartMenuWindow(u8 height); u8 GetStartMenuWindowId(void); void RemoveStartMenuWindow(void); u16 GetStdWindowBaseTileNum(void); -void sub_80F7974(const u8 * text); -void sub_80F7998(void); +void DrawHelpMessageWindowWithText(const u8 * text); +void DestroyHelpMessageWindow_(void); void sub_80F79A4(void); void SetDefaultFontsPointer(void); diff --git a/include/option_menu.h b/include/option_menu.h new file mode 100644 index 000000000..21a508973 --- /dev/null +++ b/include/option_menu.h @@ -0,0 +1,6 @@ +#ifndef GUARD_OPTION_MENU_H +#define GUARD_OPTION_MENU_H + +void CB2_OptionsMenuFromStartMenu(void); + +#endif //GUARD_OPTION_MENU_H diff --git a/include/overworld.h b/include/overworld.h index d221e88d1..38c213707 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -38,6 +38,7 @@ extern MainCallback gFieldCallback; extern struct WarpData gUnknown_2031DBC; extern u8 gUnknown_2031DE0; +extern u8 gUnknown_300502C; void IncrementGameStat(u8 index); @@ -138,4 +139,6 @@ bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd bool32 sub_8058318(void); +void CB2_ReturnToStartMenu(void); + #endif //GUARD_OVERWORLD_H diff --git a/include/party_menu.h b/include/party_menu.h index 16dccb6d8..5b9b6e1c4 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -83,5 +83,6 @@ void sub_8127EC4(u8 battlerId, u8 unk, u8 arrayIndex); bool8 IsMultiBattle(void); void sub_8126EDC(void); void PartyMenuInit_FromPlayerPc(void); +void CB2_PartyMenuFromStartMenu(void); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokedex_screen.h b/include/pokedex_screen.h new file mode 100644 index 000000000..8855a47fc --- /dev/null +++ b/include/pokedex_screen.h @@ -0,0 +1,6 @@ +#ifndef GUARD_POKEDEX_SCREEN_H +#define GUARD_POKEDEX_SCREEN_H + +void CB2_OpenPokedexFromStartMenu(void); + +#endif //GUARD_POKEDEX_SCREEN_H diff --git a/include/quest_log.h b/include/quest_log.h index 8a2816c74..d12675f18 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -28,14 +28,15 @@ u8 sub_8112CAC(void); bool8 sub_81119D4(void (*func)(void)); void sub_8111F38(u16, u16); void sub_8111134(void); -void sub_8112EDC(u8 a0); -u8 sub_8112EB4(void); -void sub_8113018(const u8 * text, u8 mode); +void DestroyHelpMessageWindow(u8 a0); +u8 CreateHelpMessageWindow(void); +void PrintTextOnHelpMessageWindow(const u8 * text, u8 mode); void MapNamePopupWindowIdSetDummy(void); void sub_8111CF0(void); void sub_811089C(void); void sub_8113044(void); void TrySetUpQuestLogScenes_ElseContinueFromSave(u8 taskId); +void sub_8112450(void); extern u8 gUnknown_203ADFA; diff --git a/include/save.h b/include/save.h index 7a74373c8..41d2ec666 100644 --- a/include/save.h +++ b/include/save.h @@ -84,7 +84,7 @@ extern u16 gSaveUnusedVar; extern u16 gSaveFileStatus; extern void (*gGameContinueCallback)(void); extern struct SaveBlockChunk gRamSaveSectionLocations[0xE]; -extern u16 gUnknown_3005420; +extern u16 gSaveSucceeded; extern struct SaveSection gSaveDataBuffer; diff --git a/include/save_menu_util.h b/include/save_menu_util.h new file mode 100644 index 000000000..f2a18a777 --- /dev/null +++ b/include/save_menu_util.h @@ -0,0 +1,15 @@ +#ifndef GUARD_SAVE_MENU_UTIL_H +#define GUARD_SAVE_MENU_UTIL_H + +enum SaveStat +{ + SAVE_STAT_NAME = 0, + SAVE_STAT_POKEDEX, + SAVE_STAT_TIME, + SAVE_STAT_LOCATION, + SAVE_STAT_BADGES +}; + +void SaveStatToString(u8 a0, u8 *a1, u8 a2); + +#endif //GUARD_SAVE_MENU_UTIL_H diff --git a/include/start_menu.h b/include/start_menu.h index c4a3ce19d..7d39734a4 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -4,7 +4,7 @@ #include "global.h" void AppendToList(u8* list, u8* pos, u8 newEntry); -void sub_806F1F0(u8 taskId); -void sub_806F1D4(void); +void Task_StartMenuHandleInput(u8 taskId); +void SetUpReturnToStartMenu(void); #endif // GUARD_START_MENU_H diff --git a/include/strings.h b/include/strings.h index d6608812f..2c2756eb5 100644 --- a/include/strings.h +++ b/include/strings.h @@ -77,8 +77,8 @@ extern const u8 gText_Ferry[]; extern const u8 gText_SecretBase[]; extern const u8 gText_Hideout[]; extern const u8 gText_FlyToWhere[]; -extern const u8 gText_PokemonLeague[]; -extern const u8 gText_PokemonCenter[]; +extern const u8 gStartMenuText_PokemonLeague[]; +extern const u8 gStartMenuText_PokemonCenter[]; extern const u8 gText_ApostropheSBase[]; extern const u8 gText_NoRegistry[]; extern const u8 gText_OkayToDeleteFromRegistry[]; @@ -90,7 +90,7 @@ extern const u8 gText_IsThisTheCorrectTime[]; extern const u8 gText_PkmnFainted3[]; extern const u8 gText_Coins[]; extern const u8 gText_EggNickname[]; -extern const u8 gText_Pokemon[]; +extern const u8 gStartMenuText_Pokemon[]; extern const u8 gText_PkmnFainted3[]; extern const u8 gOtherText_Use[]; @@ -446,4 +446,30 @@ extern const u8 gText_MessageWillBeLost[]; extern const u8 gText_BagIsFull[]; extern const u8 gText_MailReturnedToBagMessageErased[]; +// start_menu +extern const u8 gStartMenuText_Pokedex[]; +extern const u8 gStartMenuText_Pokemon[]; +extern const u8 gStartMenuText_Bag[]; +extern const u8 gStartMenuText_Player[]; +extern const u8 gStartMenuText_Save[]; +extern const u8 gStartMenuText_Option[]; +extern const u8 gStartMenuText_Exit[]; +extern const u8 gStartMenuText_Retire[]; +extern const u8 gUnknown_84162A9[]; +extern const u8 gStartMenuDesc_Pokedex[]; +extern const u8 gStartMenuDesc_Pokemon[]; +extern const u8 gStartMenuDesc_Bag[]; +extern const u8 gStartMenuDesc_Player[]; +extern const u8 gStartMenuDesc_Save[]; +extern const u8 gStartMenuDesc_Option[]; +extern const u8 gStartMenuDesc_Exit[]; +extern const u8 gStartMenuDesc_Retire[]; +extern const u8 gStartMenuDesc_Player[]; +extern const u8 gText_SaveError_PleaseExchangeBackupMemory[]; +extern const u8 gText_SavingDontTurnOffThePower2[]; +extern const u8 gSaveStatName_Player[]; +extern const u8 gSaveStatName_Badges[]; +extern const u8 gSaveStatName_Pokedex[]; +extern const u8 gSaveStatName_Time[]; + #endif //GUARD_STRINGS_H diff --git a/include/trainer_card.h b/include/trainer_card.h index e8531cef5..b38754988 100644 --- a/include/trainer_card.h +++ b/include/trainer_card.h @@ -40,4 +40,7 @@ struct TrainerCard extern struct TrainerCard gTrainerCards[4]; +void InitTrainerCard(MainCallback callback); +void InitLinkPartnerTrainerCard(u8 whoseCard, MainCallback callback); + #endif //GUARD_TRAINER_CARD_H diff --git a/ld_script.txt b/ld_script.txt index 2369e255f..9a8731e17 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -106,7 +106,7 @@ SECTIONS { asm/event_data.o(.text); src/coord_event_weather.o(.text); asm/field_tasks.o(.text); - asm/start_menu.o(.text); + src/start_menu.o(.text); src/tileset_anims.o(.text); src/palette.o(.text); src/sound.o(.text); @@ -408,7 +408,7 @@ SECTIONS { src/scrcmd.o(.rodata); src/coord_event_weather.o(.rodata); data/field_tasks.o(.rodata); - data/start_menu.o(.rodata); + src/start_menu.o(.rodata); data/tileset_anims.o(.rodata); src/palette.o(.rodata); src/sound.o(.rodata); diff --git a/src/fame_checker.c b/src/fame_checker.c index 0278fda18..e803a9700 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -552,7 +552,7 @@ static void Task_TopMenuHandleInput(u8 taskId) if (FindTaskIdByFunc(Task_FCOpenOrCloseInfoBox) == 0xFF) { RunTextPrinters(); - if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != ReturnToBagFromKeyItem) + if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != CB2_BagMenuFromStartMenu) task->func = Task_StartToCloseFameChecker; else if (JOY_NEW(START_BUTTON)) { @@ -802,7 +802,7 @@ static void WipeMsgBoxAndTransfer(void) static void Setup_DrawMsgAndListBoxes(void) { - sub_80F6E9C(); + LoadStdWindowFrameGfx(); DrawDialogueFrame(FCWINDOWID_MSGBOX, TRUE); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_LIST); diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 6447ae1b2..6a539b60e 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -475,25 +475,25 @@ static void sub_807E31C(u8 taskId) } } -static void sub_807E378(u8 taskId) +static void Task_WaitFadeAndCreateStartMenuTask(u8 taskId) { if (sub_807E418() == TRUE) { DestroyTask(taskId); - CreateTask(sub_806F1F0, 80); + CreateTask(Task_StartMenuHandleInput, 80); } } -void sub_807E3A0(void) +void FadeTransition_FadeInOnReturnToStartMenu(void) { sub_807DC00(); - CreateTask(sub_807E378, 80); + CreateTask(Task_WaitFadeAndCreateStartMenuTask, 80); ScriptContext2_Enable(); } -bool32 sub_807E3BC(void) +bool8 FieldCB2_ReturnToStartMenuInit(void) { - sub_806F1D4(); + SetUpReturnToStartMenu(); return FALSE; } diff --git a/src/help_system_812B1E0.c b/src/help_system_812B1E0.c index a527525f8..afb792072 100644 --- a/src/help_system_812B1E0.c +++ b/src/help_system_812B1E0.c @@ -16,13 +16,13 @@ #include "constants/maps.h" #include "constants/songs.h" -static EWRAM_DATA u16 gUnknown_203B0EC = 0; +static EWRAM_DATA u16 sSomeVariable = 0; static EWRAM_DATA u8 gUnknown_203B0EE = 0; u8 gUnknown_3005E9C[4]; -u16 gUnknown_3005EA0; +u16 gSomeVariableBackup; -static bool32 sub_812B27C(const u16 * mapIdxs); +static bool32 IsCurrentMapInArray(const u16 * mapIdxs); static void sub_812B520(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); static void sub_812B614(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); static bool8 sub_812B754(void); @@ -824,7 +824,7 @@ static const u8 gUnknown_845C4B6[][6] = { {0, 0, 0, 0, 0, 0} }; -static const u16 gUnknown_845C594[] = { +static const u16 sMartMaps[] = { MAP_VIRIDIAN_CITY_MART, MAP_PEWTER_CITY_MART, MAP_CERULEAN_CITY_MART, @@ -847,7 +847,7 @@ static const u16 gUnknown_845C594[] = { MAP_UNDEFINED }; -static const u16 gUnknown_845C5BC[] = { +static const u16 sGymMaps[] = { MAP_PEWTER_CITY_GYM, MAP_CERULEAN_CITY_GYM, MAP_VERMILION_CITY_GYM, @@ -859,7 +859,7 @@ static const u16 gUnknown_845C5BC[] = { MAP_UNDEFINED }; -static const u8 gUnknown_845C5CE[][3] = { +static const u8 sDungeonMaps[][3] = { { MAP_GROUP(VIRIDIAN_FOREST), MAP_NUM(VIRIDIAN_FOREST), 1 }, { MAP_GROUP(MT_MOON_1F), MAP_NUM(MT_MOON_1F), 3 }, { MAP_GROUP(ROCK_TUNNEL_1F), MAP_NUM(ROCK_TUNNEL_1F), 2 }, @@ -878,14 +878,14 @@ static const u8 gUnknown_845C5CE[][3] = { { MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER), MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER), 7 } }; -void sub_812B1E0(u8 a0) +void HelpSystem_SetSomeVariable(u8 a0) { - gUnknown_203B0EC = a0; + sSomeVariable = a0; } void HelpSystem_SetSomeVariable2(u8 a0) { - switch (gUnknown_203B0EC) + switch (sSomeVariable) { case 23: case 24: @@ -895,37 +895,37 @@ void HelpSystem_SetSomeVariable2(u8 a0) break; // fallthrough default: - gUnknown_203B0EC = a0; + sSomeVariable = a0; break; } } -void sub_812B220(void) +void Special_SetSomeVariable(void) { - gUnknown_203B0EC = gSpecialVar_0x8004; + sSomeVariable = gSpecialVar_0x8004; } -void sub_812B234(void) +void HelpSystem_BackupSomeVariable(void) { - gUnknown_3005EA0 = gUnknown_203B0EC; + gSomeVariableBackup = sSomeVariable; } -void sub_812B248(void) +void HelpSystem_RestoreSomeVariable(void) { - gUnknown_203B0EC = gUnknown_3005EA0; + sSomeVariable = gSomeVariableBackup; } -static bool32 sub_812B25C(void) +static bool32 IsInMartMap(void) { - return sub_812B27C(gUnknown_845C594); + return IsCurrentMapInArray(sMartMaps); } -static bool32 sub_812B26C(void) +static bool32 IsInGymMap(void) { - return sub_812B27C(gUnknown_845C5BC); + return IsCurrentMapInArray(sGymMaps); } -static bool32 sub_812B27C(const u16 * mapIdxs) +static bool32 IsCurrentMapInArray(const u16 * mapIdxs) { u16 mapIdx = (gSaveBlock1Ptr->location.mapGroup << 8) + gSaveBlock1Ptr->location.mapNum; s32 i; @@ -939,18 +939,18 @@ static bool32 sub_812B27C(const u16 * mapIdxs) return FALSE; } -static bool8 sub_812B2C4(void) +static bool8 IsInDungeonMap(void) { u8 i, j; for (i = 0; i < 16; i++) { - for (j = 0; j < gUnknown_845C5CE[i][2]; j++) + for (j = 0; j < sDungeonMaps[i][2]; j++) { if ( - gUnknown_845C5CE[i][0] == gSaveBlock1Ptr->location.mapGroup - && gUnknown_845C5CE[i][1] + j == gSaveBlock1Ptr->location.mapNum - && (i != 15 || FlagGet(FLAG_0x849) == TRUE) + sDungeonMaps[i][0] == gSaveBlock1Ptr->location.mapGroup + && sDungeonMaps[i][1] + j == gSaveBlock1Ptr->location.mapNum + && (i != 15 /* TANOBY */ || FlagGet(FLAG_0x849) == TRUE) ) return TRUE; } @@ -964,7 +964,7 @@ void sub_812B35C(void) sub_812B4B8(); if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) HelpSystem_SetSomeVariable2(0x16); - else if (sub_812B2C4()) + else if (IsInDungeonMap()) HelpSystem_SetSomeVariable2(0x15); else if (is_light_level_8_or_9(gMapHeader.mapType)) { @@ -974,9 +974,9 @@ void sub_812B35C(void) HelpSystem_SetSomeVariable2(0x0F); else if (IsCurMapPokeCenter() == TRUE) HelpSystem_SetSomeVariable2(0x10); - else if (sub_812B25C() == TRUE) + else if (IsInMartMap() == TRUE) HelpSystem_SetSomeVariable2(0x11); - else if (sub_812B26C() == TRUE) + else if (IsInGymMap() == TRUE) HelpSystem_SetSomeVariable2(0x12); else HelpSystem_SetSomeVariable2(0x13); @@ -1055,7 +1055,7 @@ static void sub_812B520(struct HelpSystemListMenu * a0, struct ListMenuItem * a1 u8 r4 = 0; for (i = 0; i < 6; i++) { - if (gUnknown_845C4B6[gUnknown_203B0EC][gUnknown_845C4B0[i]] == 1) + if (gUnknown_845C4B6[sSomeVariable][gUnknown_845C4B0[i]] == 1) { a1[r4].label = gUnknown_845B080[gUnknown_845C4B0[i]]; a1[r4].index = gUnknown_845C4B0[i]; @@ -1085,7 +1085,7 @@ static void sub_812B5A8(struct HelpSystemListMenu * a0, struct ListMenuItem * a1 static void sub_812B614(struct HelpSystemListMenu * a0, struct ListMenuItem * a1) { u8 r6 = 0; - const u8 * r3 = gUnknown_845B9E0[gUnknown_203B0EC * 5 + gUnknown_3005E9C[1]]; + const u8 * r3 = gUnknown_845B9E0[sSomeVariable * 5 + gUnknown_3005E9C[1]]; u8 i; for (i = 0; r3[i] != 0xFF; i++) { diff --git a/src/item_use.c b/src/item_use.c index 9657488f3..3a189d84a 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -191,7 +191,7 @@ void sub_80A1208(void) struct MailStruct mail; mail.itemId = gSpecialVar_ItemId; - sub_80BEBEC(&mail, ReturnToBagFromKeyItem, 0); + sub_80BEBEC(&mail, CB2_BagMenuFromStartMenu, 0); } void FieldUseFunc_MachBike(u8 taskId) @@ -404,7 +404,7 @@ void FieldUseFunc_TmCase(u8 taskId) void InitTMCaseFromBag(void) { - InitTMCase(0, ReturnToBagFromKeyItem, 0); + InitTMCase(0, CB2_BagMenuFromStartMenu, 0); } void Task_InitTMCaseFromField(u8 taskId) @@ -435,7 +435,7 @@ void FieldUseFunc_BerryPouch(u8 taskId) void InitBerryPouchFromBag(void) { - InitBerryPouch(BERRYPOUCH_FROMFIELD, ReturnToBagFromKeyItem, 0); + InitBerryPouch(BERRYPOUCH_FROMFIELD, CB2_BagMenuFromStartMenu, 0); } void Task_InitBerryPouchFromField(u8 taskId) @@ -478,7 +478,7 @@ void FieldUseFunc_TeachyTv(u8 taskId) void InitTeachyTvFromBag(void) { - InitTeachyTvController(0, ReturnToBagFromKeyItem); + InitTeachyTvController(0, CB2_BagMenuFromStartMenu); } void Task_InitTeachyTvFromField(u8 taskId) @@ -608,7 +608,7 @@ void FieldUseFunc_TownMap(u8 taskId) void sub_80A1CAC(void) { - sub_80BFF50(0, ReturnToBagFromKeyItem); + sub_80BFF50(0, CB2_BagMenuFromStartMenu); } void sub_80A1CC0(u8 taskId) @@ -640,7 +640,7 @@ void FieldUseFunc_FameChecker(u8 taskId) void sub_80A1D58(void) { - UseFameChecker(ReturnToBagFromKeyItem); + UseFameChecker(CB2_BagMenuFromStartMenu); } void sub_80A1D68(u8 taskId) diff --git a/src/menu2.c b/src/menu2.c index c6d5ab094..221f84318 100644 --- a/src/menu2.c +++ b/src/menu2.c @@ -485,7 +485,7 @@ void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u AddTextPrinter(&printer, speed, callback); } -void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y) +void Menu_PrintFormatIntlPlayerName(u8 windowId, const u8 * src, u16 x, u16 y) { s32 i; diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 89df1ee34..26cbdb145 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -247,7 +247,7 @@ bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx) if (species == SPECIES_EGG) StringCopyN(gStringVar1, gText_EggNickname, POKEMON_NAME_LENGTH + 1); else - StringCopyN(gStringVar1, gText_Pokemon, POKEMON_NAME_LENGTH + 1); + StringCopyN(gStringVar1, gStartMenuText_Pokemon, POKEMON_NAME_LENGTH + 1); if (gPlayerPartyCount == PARTY_SIZE) { diff --git a/src/new_menu_helpers.c b/src/new_menu_helpers.c index 9d2a5c883..f82dbe9c6 100644 --- a/src/new_menu_helpers.c +++ b/src/new_menu_helpers.c @@ -395,7 +395,7 @@ void ResetBg0(void) ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); DeactivateAllTextPrinters(); - sub_80F6E9C(); + LoadStdWindowFrameGfx(); } u16 RunTextPrinters_CheckPrinter0Active(void) @@ -452,7 +452,7 @@ void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonP AddTextPrinterParameterized2(0, 2, gStringVar4, speed, NULL, 2, 1, 3); } -void sub_80F6E9C(void) +void LoadStdWindowFrameGfx(void) { if (gUnknown_203ADFA == 2) { @@ -644,7 +644,7 @@ static u16 GetStdPalColor(u8 colorNum) void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *string, TaskFunc callback) { - sub_80F6E9C(); + LoadStdWindowFrameGfx(); DisplayMessageAndContinueTask(taskId, 0, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM, bgId, GetTextSpeedSetting(), string, callback); CopyWindowToVram(0, 3); } @@ -667,7 +667,7 @@ u8 GetTextSpeedSetting(void) return gUnknown_841F428[gSaveBlock2Ptr->optionsTextSpeed]; } -u8 sub_80F78E0(u8 height) +u8 CreateStartMenuWindow(u8 height) { if (sStartMenuWindowId == 0xFF) { @@ -702,15 +702,15 @@ u16 GetStdWindowBaseTileNum(void) return STD_WINDOW_BASE_TILE_NUM; } -void sub_80F7974(const u8 * text) +void DrawHelpMessageWindowWithText(const u8 * text) { - sub_814FE6C(sub_8112EB4(), DLG_WINDOW_BASE_TILE_NUM, 0x10 * DLG_WINDOW_PALETTE_NUM); - sub_8113018(text, 2); + sub_814FE6C(CreateHelpMessageWindow(), DLG_WINDOW_BASE_TILE_NUM, 0x10 * DLG_WINDOW_PALETTE_NUM); + PrintTextOnHelpMessageWindow(text, 2); } -void sub_80F7998(void) +void DestroyHelpMessageWindow_(void) { - sub_8112EDC(2); + DestroyHelpMessageWindow(2); } void sub_80F79A4(void) diff --git a/src/player_pc.c b/src/player_pc.c index 7197f65f1..b1929b9ed 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -154,7 +154,7 @@ void sub_80EB6AC(void) u8 taskId; gPlayerPcMenuManager.unk_9 = 0; - sub_812B234(); + HelpSystem_BackupSomeVariable(); sItemOrder = gUnknown_8402200; sTopMenuItemCount = 3; taskId = CreateTask(TaskDummy, 0); @@ -166,7 +166,7 @@ void sub_80EB6FC(void) u8 taskId; gPlayerPcMenuManager.unk_9 = 1; - sub_812B234(); + HelpSystem_BackupSomeVariable(); sItemOrder = gUnknown_8402203; sTopMenuItemCount = 3; taskId = CreateTask(TaskDummy, 0); @@ -215,7 +215,7 @@ static void Task_TopMenuHandleInput(u8 taskId) static void Task_ReturnToTopMenu(u8 taskId) { - sub_812B248(); + HelpSystem_RestoreSomeVariable(); DisplayItemMessageOnField(taskId, 2, gText_WhatWouldYouLikeToDo, Task_DrawPlayerPcTopMenu); } @@ -343,7 +343,7 @@ static void Task_ReturnToItemStorageSubmenu(u8 taskId) static void CB2_ReturnFromDepositMenu(void) { u8 taskId; - sub_80F6E9C(); + LoadStdWindowFrameGfx(); DrawDialogueFrame(0, TRUE); taskId = CreateTask(Task_ReturnToItemStorageSubmenu, 0); Task_CreateItemStorageSubmenu(taskId, 1); @@ -372,7 +372,7 @@ static void Task_PlayerPcWithdrawItem(u8 taskId) static void CB2_ReturnFromWithdrawMenu(void) { u8 taskId; - sub_80F6E9C(); + LoadStdWindowFrameGfx(); DrawDialogueFrame(0, TRUE); taskId = CreateTask(Task_ReturnToItemStorageSubmenu, 0); Task_CreateItemStorageSubmenu(taskId, 0); @@ -584,7 +584,7 @@ static void CB2_ReturnToMailbox(void) HelpSystem_SetSomeVariable2(34); else HelpSystem_SetSomeVariable2(30); - sub_80F6E9C(); + LoadStdWindowFrameGfx(); taskId = CreateTask(Task_WaitFadeAndReturnToMailboxPcInputHandler, 0); if (MailboxPC_InitBuffers(gPlayerPcMenuManager.count) == TRUE) Task_DrawMailboxPcMenu(taskId); @@ -700,7 +700,7 @@ static void CB2_ReturnToMailboxPc_UpdateScrollVariables(void) } } Task_SetPageItemVars(taskId); - sub_80F6E9C(); + LoadStdWindowFrameGfx(); if (MailboxPC_InitBuffers(gPlayerPcMenuManager.count) == TRUE) Task_DrawMailboxPcMenu(taskId); else diff --git a/src/quest_log.c b/src/quest_log.c index c8bd19174..ff99bbe30 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -109,7 +109,7 @@ EWRAM_DATA u8 gUnknown_203AF9A[64][2] = {{0}}; EWRAM_DATA u16 gUnknown_203B01A = 0; EWRAM_DATA u16 gUnknown_203B01C = 0; EWRAM_DATA u16 gUnknown_203B01E = 0; -EWRAM_DATA u8 gUnknown_203B020 = 0; +EWRAM_DATA u8 sHelpMessageWindowId = 0; EWRAM_DATA struct UnkStruct_203B024 gUnknown_203B024 = {0}; EWRAM_DATA struct UnkStruct_203B044 gUnknown_203B044 = {0}; EWRAM_DATA u8 gUnknown_203B048 = 0; @@ -2294,37 +2294,37 @@ void sub_8112E3C(u8 a0, struct UnkStruct_300201C * a1, u16 a2) const u16 gUnknown_84566A8[] = INCBIN_U16("data/graphics/unknown_84566a8.bin"); -const struct WindowTemplate gUnknown_8456928 = { +const struct WindowTemplate sHelpMessageWindowTemplate = { 0x00, 0, 15, 30, 5, 15, 0x008F }; void MapNamePopupWindowIdSetDummy(void) { - gUnknown_203B020 = 0xFF; + sHelpMessageWindowId = 0xFF; } -u8 sub_8112EB4(void) +u8 CreateHelpMessageWindow(void) { - if (gUnknown_203B020 == 0xFF) + if (sHelpMessageWindowId == 0xFF) { - gUnknown_203B020 = AddWindow(&gUnknown_8456928); - PutWindowTilemap(gUnknown_203B020); + sHelpMessageWindowId = AddWindow(&sHelpMessageWindowTemplate); + PutWindowTilemap(sHelpMessageWindowId); } - return gUnknown_203B020; + return sHelpMessageWindowId; } -void sub_8112EDC(u8 a0) +void DestroyHelpMessageWindow(u8 a0) { - if (gUnknown_203B020 != 0xFF) + if (sHelpMessageWindowId != 0xFF) { - FillWindowPixelBuffer(gUnknown_203B020, 0x00); - ClearWindowTilemap(gUnknown_203B020); + FillWindowPixelBuffer(sHelpMessageWindowId, PIXEL_FILL(0)); + ClearWindowTilemap(sHelpMessageWindowId); if (a0) - CopyWindowToVram(gUnknown_203B020, a0); + CopyWindowToVram(sHelpMessageWindowId, a0); - RemoveWindow(gUnknown_203B020); - gUnknown_203B020 = 0xFF; + RemoveWindow(sHelpMessageWindowId); + sHelpMessageWindowId = 0xFF; } } @@ -2460,7 +2460,7 @@ void sub_8112F18(u8 a0) void sub_8112FD0(void) { - sub_8112F18(gUnknown_203B020); + sub_8112F18(sHelpMessageWindowId); } const u8 gUnknown_8456930[3] = { @@ -2469,15 +2469,15 @@ const u8 gUnknown_8456930[3] = { void sub_8112FE4(const u8 * a0) { - AddTextPrinterParameterized4(gUnknown_203B020, 0x02, 2, 5, 1, 1, gUnknown_8456930, -1, a0); + AddTextPrinterParameterized4(sHelpMessageWindowId, 0x02, 2, 5, 1, 1, gUnknown_8456930, -1, a0); } -void sub_8113018(const u8 * text, u8 mode) +void PrintTextOnHelpMessageWindow(const u8 * text, u8 mode) { sub_8112FD0(); sub_8112FE4(text); if (mode) - CopyWindowToVram(gUnknown_203B020, mode); + CopyWindowToVram(sHelpMessageWindowId, mode); } void sub_8113044(void) diff --git a/src/save.c b/src/save.c index 9f580477b..45f5fc6f0 100644 --- a/src/save.c +++ b/src/save.c @@ -85,7 +85,7 @@ u16 gSaveUnusedVar; u16 gSaveFileStatus; void (*gGameContinueCallback)(void); struct SaveBlockChunk gRamSaveSectionLocations[0xE]; -u16 gUnknown_3005420; +u16 gSaveSucceeded; EWRAM_DATA struct SaveSection gSaveDataBuffer = {0}; EWRAM_DATA u32 gSaveUnusedVar2 = 0; @@ -702,11 +702,11 @@ u8 TrySavingData(u8 saveType) else goto OK; // really? } - gUnknown_3005420 = 0xFF; + gSaveSucceeded = 0xFF; return 0xFF; OK: - gUnknown_3005420 = 1; + gSaveSucceeded = 1; return 1; } diff --git a/src/scrcmd.c b/src/scrcmd.c index 85059691f..ae994fceb 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1284,14 +1284,14 @@ bool8 ScrCmd_loadhelp(struct ScriptContext *ctx) if (msg == NULL) msg = (const u8 *)ctx->data[0]; - sub_80F7974(msg); + DrawHelpMessageWindowWithText(msg); CopyWindowToVram(GetStartMenuWindowId(), 1); return FALSE; } bool8 ScrCmd_unloadhelp(struct ScriptContext *ctx) { - sub_80F7998(); + DestroyHelpMessageWindow_(); return FALSE; } @@ -1566,7 +1566,7 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) if (ptr == NULL) ptr = (u8 *)ctx->data[0]; - sub_80F6E9C(); + LoadStdWindowFrameGfx(); DrawDialogueFrame(0, 1); AddTextPrinterParameterized(0, 6, ptr, 0, 1, 0, NULL); return FALSE; diff --git a/src/start_menu.c b/src/start_menu.c new file mode 100644 index 000000000..1bfca6761 --- /dev/null +++ b/src/start_menu.c @@ -0,0 +1,1008 @@ +#include "global.h" +#include "palette.h" +#include "bg.h" +#include "gpu_regs.h" +#include "scanline_effect.h" +#include "overworld.h" +#include "link.h" +#include "pokedex.h" +#include "item_menu.h" +#include "party_menu.h" +#include "save.h" +#include "link_rfu.h" +#include "event_data.h" +#include "fieldmap.h" +#include "safari_zone.h" +#include "start_menu.h" +#include "menu.h" +#include "load_save.h" +#include "strings.h" +#include "string_util.h" +#include "menu_helpers.h" +#include "text_window.h" +#include "field_fadetransition.h" +#include "field_player_avatar.h" +#include "new_menu_helpers.h" +#include "map_obj_80688E4.h" +#include "map_obj_lock.h" +#include "script.h" +#include "sound.h" +#include "quest_log.h" +#include "new_game.h" +#include "event_scripts.h" +#include "field_weather.h" +#include "field_specials.h" +#include "pokedex_screen.h" +#include "trainer_card.h" +#include "option_menu.h" +#include "save_menu_util.h" +#include "help_system.h" +#include "constants/songs.h" +#include "constants/flags.h" + +enum StartMenuOption +{ + STARTMENU_POKEDEX = 0, + STARTMENU_POKEMON, + STARTMENU_BAG, + STARTMENU_PLAYER, + STARTMENU_SAVE, + STARTMENU_OPTION, + STARTMENU_EXIT, + STARTMENU_RETIRE, + STARTMENU_PLAYER2, + MAX_STARTMENU_ITEMS +}; + +enum SaveCBReturn +{ + SAVECB_RETURN_CONTINUE = 0, + SAVECB_RETURN_OKAY, + SAVECB_RETURN_CANCEL, + SAVECB_RETURN_ERROR +}; + +static EWRAM_DATA bool8 (*sStartMenuCallback)(void) = NULL; +static EWRAM_DATA u8 sStartMenuCursorPos = 0; +static EWRAM_DATA u8 sNumStartMenuItems = 0; +static EWRAM_DATA u8 sStartMenuOrder[MAX_STARTMENU_ITEMS] = {}; +static EWRAM_DATA s8 sDrawStartMenuState[2] = {}; +static EWRAM_DATA u8 sSafariZoneStatsWindowId = 0; +static ALIGNED(4) EWRAM_DATA u8 sSaveStatsWindowId = 0; + +static u8 (*sSaveDialogCB)(void); +static u8 sSaveDialogDelay; +static u8 sSaveDialogIsPrinting; + +static void SetUpStartMenu_Link(void); +static void SetUpStartMenu_UnionRoom(void); +static void SetUpStartMenu_SafariZone(void); +static void SetUpStartMenu_NormalField(void); +static bool8 StartCB_HandleInput(void); +static void StartMenu_FadeScreenIfLeavingOverworld(void); +static bool8 StartMenuPokedexSanityCheck(void); +static bool8 StartMenuPokedexCallback(void); +static bool8 StartMenuPokemonCallback(void); +static bool8 StartMenuBagCallback(void); +static bool8 StartMenuPlayerCallback(void); +static bool8 StartMenuSaveCallback(void); +static bool8 StartMenuOptionCallback(void); +static bool8 StartMenuExitCallback(void); +static bool8 StartMenuSafariZoneRetireCallback(void); +static bool8 StartMenuLinkPlayerCallback(void); +static bool8 StartCB_Save1(void); +static bool8 StartCB_Save2(void); +static void StartMenu_PrepareForSave(void); +static u8 RunSaveDialogCB(void); +static void task50_save_game(u8 taskId); +static u8 SaveDialogCB_PrintAskSaveText(void); +static u8 SaveDialogCB_AskSavePrintYesNoMenu(void); +static u8 SaveDialogCB_AskSaveHandleInput(void); +static u8 SaveDialogCB_PrintAskOverwriteText(void); +static u8 SaveDialogCB_AskOverwritePrintYesNoMenu(void); +static u8 SaveDialogCB_AskReplacePreviousFilePrintYesNoMenu(void); +static u8 SaveDialogCB_AskOverwriteOrReplacePreviousFileHandleInput(void); +static u8 SaveDialogCB_PrintSavingDontTurnOffPower(void); +static u8 SaveDialogCB_DoSave(void); +static u8 SaveDialogCB_PrintSaveResult(void); +static u8 SaveDialogCB_WaitPrintSuccessAndPlaySE(void); +static u8 SaveDialogCB_ReturnSuccess(void); +static u8 SaveDialogCB_WaitPrintErrorAndPlaySE(void); +static u8 SaveDialogCB_ReturnError(void); +static void CB2_WhileSavingAfterLinkBattle(void); +static void task50_after_link_battle_save(u8 taskId); +static void PrintSaveStats(void); +static void CloseSaveStatsWindow(void); +static void CloseStartMenu(void); + +static const struct MenuAction sStartMenuActionTable[] = { + { gStartMenuText_Pokedex, {.u8_void = StartMenuPokedexCallback} }, + { gStartMenuText_Pokemon, {.u8_void = StartMenuPokemonCallback} }, + { gStartMenuText_Bag, {.u8_void = StartMenuBagCallback} }, + { gStartMenuText_Player, {.u8_void = StartMenuPlayerCallback} }, + { gStartMenuText_Save, {.u8_void = StartMenuSaveCallback} }, + { gStartMenuText_Option, {.u8_void = StartMenuOptionCallback} }, + { gStartMenuText_Exit, {.u8_void = StartMenuExitCallback} }, + { gStartMenuText_Retire, {.u8_void = StartMenuSafariZoneRetireCallback} }, + { gStartMenuText_Player, {.u8_void = StartMenuLinkPlayerCallback} } +}; + +static const struct WindowTemplate sSafariZoneStatsWindowTemplate = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 10, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x008 +}; + +static const u8 *const sStartMenuDescPointers[] = { + gStartMenuDesc_Pokedex, + gStartMenuDesc_Pokemon, + gStartMenuDesc_Bag, + gStartMenuDesc_Player, + gStartMenuDesc_Save, + gStartMenuDesc_Option, + gStartMenuDesc_Exit, + gStartMenuDesc_Retire, + gStartMenuDesc_Player +}; + +static const struct BgTemplate sBGTemplates_AfterLinkSaveMessage[] = { + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + } +}; + +static const struct WindowTemplate sWindowTemplates_AfterLinkSaveMessage[] = { + { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 26, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x198 + }, DUMMY_WIN_TEMPLATE +}; + +static const struct WindowTemplate sSaveStatsWindowTemplate = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 14, + .height = 9, + .paletteNum = 13, + .baseBlock = 0x008 +}; + +static ALIGNED(2) const u8 sTextColor_StatName[] = { 1, 2, 3 }; +static ALIGNED(2) const u8 sTextColor_StatValue[] = { 1, 4, 5 }; +static ALIGNED(2) const u8 sTextColor_LocationHeader[] = { 1, 6, 7 }; + +static void SetUpStartMenu(void) +{ + sNumStartMenuItems = 0; + if (IsUpdateLinkStateCBActive() == TRUE) + SetUpStartMenu_Link(); + else if (InUnionRoom() == TRUE) + SetUpStartMenu_UnionRoom(); + else if (GetSafariZoneFlag() == TRUE) + SetUpStartMenu_SafariZone(); + else + SetUpStartMenu_NormalField(); +} + +static void AppendToStartMenuItems(u8 newEntry) +{ + AppendToList(sStartMenuOrder, &sNumStartMenuItems, newEntry); +} + +static void SetUpStartMenu_NormalField(void) +{ + if (FlagGet(FLAG_0x829) == TRUE) + AppendToStartMenuItems(STARTMENU_POKEDEX); + if (FlagGet(FLAG_0x828) == TRUE) + AppendToStartMenuItems(STARTMENU_POKEMON); + AppendToStartMenuItems(STARTMENU_BAG); + AppendToStartMenuItems(STARTMENU_PLAYER); + AppendToStartMenuItems(STARTMENU_SAVE); + AppendToStartMenuItems(STARTMENU_OPTION); + AppendToStartMenuItems(STARTMENU_EXIT); +} + +static void SetUpStartMenu_SafariZone(void) +{ + AppendToStartMenuItems(STARTMENU_RETIRE); + AppendToStartMenuItems(STARTMENU_POKEDEX); + AppendToStartMenuItems(STARTMENU_POKEMON); + AppendToStartMenuItems(STARTMENU_BAG); + AppendToStartMenuItems(STARTMENU_PLAYER); + AppendToStartMenuItems(STARTMENU_OPTION); + AppendToStartMenuItems(STARTMENU_EXIT); +} + +static void SetUpStartMenu_Link(void) +{ + AppendToStartMenuItems(STARTMENU_POKEMON); + AppendToStartMenuItems(STARTMENU_BAG); + AppendToStartMenuItems(STARTMENU_PLAYER2); + AppendToStartMenuItems(STARTMENU_OPTION); + AppendToStartMenuItems(STARTMENU_EXIT); +} + +static void SetUpStartMenu_UnionRoom(void) +{ + AppendToStartMenuItems(STARTMENU_POKEMON); + AppendToStartMenuItems(STARTMENU_BAG); + AppendToStartMenuItems(STARTMENU_PLAYER); + AppendToStartMenuItems(STARTMENU_OPTION); + AppendToStartMenuItems(STARTMENU_EXIT); +} + +static void DrawSafariZoneStatsWindow(void) +{ + sSafariZoneStatsWindowId = AddWindow(&sSafariZoneStatsWindowTemplate); + PutWindowTilemap(sSafariZoneStatsWindowId); + DrawStdWindowFrame(sSafariZoneStatsWindowId, FALSE); + ConvertIntToDecimalStringN(gStringVar1, gSafariZoneStepCounter, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar2, 600, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar3, gNumSafariBalls, STR_CONV_MODE_RIGHT_ALIGN, 2); + StringExpandPlaceholders(gStringVar4, gUnknown_84162A9); + AddTextPrinterParameterized(sSafariZoneStatsWindowId,2, gStringVar4, 4, 3, 0xFF, NULL); + CopyWindowToVram(sSafariZoneStatsWindowId, 2); +} + +static void DestroySafariZoneStatsWindow(void) +{ + if (GetSafariZoneFlag()) + { + ClearStdWindowAndFrameToTransparent(sSafariZoneStatsWindowId, FALSE); + CopyWindowToVram(sSafariZoneStatsWindowId, 2); + RemoveWindow(sSafariZoneStatsWindowId); + } +} + +static s8 PrintStartMenuItems(s8 *cursor_p, u8 nitems) +{ + s16 i = *cursor_p; + do + { + if (sStartMenuOrder[i] == STARTMENU_PLAYER || sStartMenuOrder[i] == STARTMENU_PLAYER2) + { + Menu_PrintFormatIntlPlayerName(GetStartMenuWindowId(), sStartMenuActionTable[sStartMenuOrder[i]].text, 8, i * 15); + } + else + { + StringExpandPlaceholders(gStringVar4, sStartMenuActionTable[sStartMenuOrder[i]].text); + AddTextPrinterParameterized(GetStartMenuWindowId(), 2, gStringVar4, 8, i * 15, 0xFF, NULL); + } + i++; + if (i >= sNumStartMenuItems) + { + *cursor_p = i; + return TRUE; + } + } while (--nitems); + *cursor_p = i; + return FALSE; +} + +static s8 DoDrawStartMenu(void) +{ + switch (sDrawStartMenuState[0]) + { + case 0: + sDrawStartMenuState[0]++; + break; + case 1: + SetUpStartMenu(); + sDrawStartMenuState[0]++; + break; + case 2: + LoadStdWindowFrameGfx(); + DrawStdWindowFrame(CreateStartMenuWindow(sNumStartMenuItems), FALSE); + sDrawStartMenuState[0]++; + break; + case 3: + if (GetSafariZoneFlag()) + DrawSafariZoneStatsWindow(); + sDrawStartMenuState[0]++; + break; + case 4: + if (PrintStartMenuItems(&sDrawStartMenuState[1], 2) == TRUE) + sDrawStartMenuState[0]++; + break; + case 5: + sStartMenuCursorPos = Menu_InitCursor(GetStartMenuWindowId(), 2, 0, 0, 15, sNumStartMenuItems, sStartMenuCursorPos); + if (!MenuHelpers_LinkSomething() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP) + { + DrawHelpMessageWindowWithText(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]]); + } + CopyWindowToVram(GetStartMenuWindowId(), 1); + return TRUE; + } + return FALSE; +} + +void DrawStartMenuInOneGo(void) +{ + sDrawStartMenuState[0] = 0; + sDrawStartMenuState[1] = 0; + while (!DoDrawStartMenu()) + ; +} + +static void task50_startmenu(u8 taskId) +{ + if (DoDrawStartMenu() == TRUE) + SwitchTaskToFollowupFunc(taskId); +} + +static void OpenStartMenuWithFollowupFunc(TaskFunc func) +{ + u8 taskId; + sDrawStartMenuState[0] = 0; + sDrawStartMenuState[1] = 0; + taskId = CreateTask(task50_startmenu, 80); + SetTaskFuncWithFollowupFunc(taskId, task50_startmenu, func); +} + +static bool8 FieldCB2_DrawStartMenu(void) +{ + if (!DoDrawStartMenu()) + return FALSE; + FadeTransition_FadeInOnReturnToStartMenu(); + return TRUE; +} + +void SetUpReturnToStartMenu(void) +{ + sDrawStartMenuState[0] = 0; + sDrawStartMenuState[1] = 0; + gFieldCallback2 = FieldCB2_DrawStartMenu; +} + +void Task_StartMenuHandleInput(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + switch (data[0]) + { + case 0: + if (InUnionRoom() == TRUE) + var_800D_set_xB(); + sStartMenuCallback = StartCB_HandleInput; + data[0]++; + break; + case 1: + if (sStartMenuCallback() == TRUE) + DestroyTask(taskId); + break; + } +} + +void ShowStartMenu(void) +{ + if (!IsUpdateLinkStateCBActive()) + { + player_bitmagic(); + sub_805C270(); + sub_805C780(); + } + OpenStartMenuWithFollowupFunc(Task_StartMenuHandleInput); + ScriptContext2_Enable(); +} + +static bool8 StartCB_HandleInput(void) +{ + if (JOY_NEW(DPAD_UP)) + { + PlaySE(SE_SELECT); + sStartMenuCursorPos = Menu_MoveCursor(-1); + if (!MenuHelpers_LinkSomething() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP) + { + PrintTextOnHelpMessageWindow(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]], 2); + } + } + if (JOY_NEW(DPAD_DOWN)) + { + PlaySE(SE_SELECT); + sStartMenuCursorPos = Menu_MoveCursor(+1); + if (!MenuHelpers_LinkSomething() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP) + { + PrintTextOnHelpMessageWindow(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]], 2); + } + } + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + if (!StartMenuPokedexSanityCheck()) + return FALSE; + sStartMenuCallback = sStartMenuActionTable[sStartMenuOrder[sStartMenuCursorPos]].func.u8_void; + StartMenu_FadeScreenIfLeavingOverworld(); + return FALSE; + } + if (JOY_NEW(B_BUTTON | START_BUTTON)) + { + DestroySafariZoneStatsWindow(); + DestroyHelpMessageWindow_(); + CloseStartMenu(); + return TRUE; + } + return FALSE; +} + +static void StartMenu_FadeScreenIfLeavingOverworld(void) +{ + if (sStartMenuCallback != StartMenuSaveCallback + && sStartMenuCallback != StartMenuExitCallback + && sStartMenuCallback != StartMenuSafariZoneRetireCallback) + { + sub_80CCB68(); + fade_screen(1, 0); + } +} + +static bool8 StartMenuPokedexSanityCheck(void) +{ + if (sStartMenuActionTable[sStartMenuOrder[sStartMenuCursorPos]].func.u8_void == StartMenuPokedexCallback && GetNationalPokedexCount(0) == 0) + return FALSE; + return TRUE; +} + +static bool8 StartMenuPokedexCallback(void) +{ + if (!gPaletteFade.active) + { + IncrementGameStat(GAME_STAT_CHECKED_POKEDEX); + PlayRainStoppingSoundEffect(); + DestroySafariZoneStatsWindow(); + CleanupOverworldWindowsAndTilemaps(); + SetMainCallback2(CB2_OpenPokedexFromStartMenu); + return TRUE; + } + return FALSE; +} + +static bool8 StartMenuPokemonCallback(void) +{ + if (!gPaletteFade.active) + { + PlayRainStoppingSoundEffect(); + DestroySafariZoneStatsWindow(); + CleanupOverworldWindowsAndTilemaps(); + SetMainCallback2(CB2_PartyMenuFromStartMenu); + return TRUE; + } + return FALSE; +} + +static bool8 StartMenuBagCallback(void) +{ + if (!gPaletteFade.active) + { + PlayRainStoppingSoundEffect(); + DestroySafariZoneStatsWindow(); + CleanupOverworldWindowsAndTilemaps(); + SetMainCallback2(CB2_BagMenuFromStartMenu); + return TRUE; + } + return FALSE; +} + +static bool8 StartMenuPlayerCallback(void) +{ + if (!gPaletteFade.active) + { + PlayRainStoppingSoundEffect(); + DestroySafariZoneStatsWindow(); + CleanupOverworldWindowsAndTilemaps(); + InitTrainerCard(CB2_ReturnToStartMenu); + return TRUE; + } + return FALSE; +} + +static bool8 StartMenuSaveCallback(void) +{ + sStartMenuCallback = StartCB_Save1; + return FALSE; +} + +static bool8 StartMenuOptionCallback(void) +{ + if (!gPaletteFade.active) + { + PlayRainStoppingSoundEffect(); + DestroySafariZoneStatsWindow(); + CleanupOverworldWindowsAndTilemaps(); + SetMainCallback2(CB2_OptionsMenuFromStartMenu); + gMain.savedCallback = CB2_ReturnToStartMenu; + return TRUE; + } + return FALSE; +} + +static bool8 StartMenuExitCallback(void) +{ + DestroySafariZoneStatsWindow(); + DestroyHelpMessageWindow_(); + CloseStartMenu(); + return TRUE; +} + +static bool8 StartMenuSafariZoneRetireCallback(void) +{ + DestroySafariZoneStatsWindow(); + DestroyHelpMessageWindow_(); + CloseStartMenu(); + SafariZoneRetirePrompt(); + return TRUE; +} + + +static bool8 StartMenuLinkPlayerCallback(void) +{ + if (!gPaletteFade.active) + { + PlayRainStoppingSoundEffect(); + CleanupOverworldWindowsAndTilemaps(); + InitLinkPartnerTrainerCard(gUnknown_300502C, CB2_ReturnToStartMenu); + return TRUE; + } + return FALSE; +} + +static bool8 StartCB_Save1(void) +{ + HelpSystem_BackupSomeVariable(); + HelpSystem_SetSomeVariable2(12); + StartMenu_PrepareForSave(); + sStartMenuCallback = StartCB_Save2; + return FALSE; +} + +static bool8 StartCB_Save2(void) +{ + switch (RunSaveDialogCB()) + { + case SAVECB_RETURN_CONTINUE: + break; + case SAVECB_RETURN_OKAY: + ClearDialogWindowAndFrameToTransparent(0, TRUE); + sub_80696C0(); + ScriptContext2_Disable(); + HelpSystem_RestoreSomeVariable(); + return TRUE; + case SAVECB_RETURN_CANCEL: + ClearDialogWindowAndFrameToTransparent(0, FALSE); + DrawStartMenuInOneGo(); + HelpSystem_RestoreSomeVariable(); + sStartMenuCallback = StartCB_HandleInput; + break; + case SAVECB_RETURN_ERROR: + ClearDialogWindowAndFrameToTransparent(0, TRUE); + sub_80696C0(); + ScriptContext2_Disable(); + HelpSystem_RestoreSomeVariable(); + return TRUE; + } + return FALSE; +} + +static void StartMenu_PrepareForSave(void) +{ + save_serialize_map(); + sSaveDialogCB = SaveDialogCB_PrintAskSaveText; + sSaveDialogIsPrinting = 0; +} + +static u8 RunSaveDialogCB(void) +{ + if (RunTextPrinters_CheckPrinter0Active() == TRUE) + return 0; + sSaveDialogIsPrinting = 0; + return sSaveDialogCB(); +} + +void Field_AskSaveTheGame(void) +{ + HelpSystem_BackupSomeVariable(); + HelpSystem_SetSomeVariable2(12); + StartMenu_PrepareForSave(); + CreateTask(task50_save_game, 80); +} + +void PrintSaveTextWithFollowupFunc(const u8 *str, bool8 (*savecb)(void)) +{ + StringExpandPlaceholders(gStringVar4, str); + sub_80F7768(0, TRUE); + AddTextPrinterForMessage(TRUE); + sSaveDialogIsPrinting = 1; + sSaveDialogCB = savecb; +} + +void task50_save_game(u8 taskId) +{ + switch (RunSaveDialogCB()) + { + case 0: + return; + case 2: + case 3: + gSpecialVar_Result = FALSE; + break; + case 1: + gSpecialVar_Result = TRUE; + break; + } + DestroyTask(taskId); + EnableBothScriptContexts(); + HelpSystem_RestoreSomeVariable(); +} + +static void CloseSaveMessageWindow(void) +{ + ClearDialogWindowAndFrame(0, TRUE); +} + +static void CloseSaveStatsWindow_(void) +{ + CloseSaveStatsWindow(); +} + +static void SetSaveDialogDelayTo60Frames(void) +{ + sSaveDialogDelay = 60; +} + +static bool8 SaveDialog_Wait60FramesOrAButtonHeld(void) +{ + sSaveDialogDelay--; + if (JOY_HELD(A_BUTTON)) + { + PlaySE(SE_SELECT); + return TRUE; + } + else if (sSaveDialogDelay == 0) + { + return TRUE; + } + else + { + return FALSE; + } +} + +bool8 SaveDialog_Wait60FramesThenCheckAButtonHeld(void) +{ + if (sSaveDialogDelay == 0) + { + if (JOY_HELD(A_BUTTON)) + { + return TRUE; + } + else + { + return FALSE; + } + } + else + { + sSaveDialogDelay--; + return FALSE; + } +} + +static u8 SaveDialogCB_PrintAskSaveText(void) +{ + ClearStdWindowAndFrame(GetStartMenuWindowId(), FALSE); + RemoveStartMenuWindow(); + DestroyHelpMessageWindow(0); + PrintSaveStats(); + PrintSaveTextWithFollowupFunc(gText_WouldYouLikeToSaveTheGame, SaveDialogCB_AskSavePrintYesNoMenu); + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_AskSavePrintYesNoMenu(void) +{ + DisplayYesNoMenuDefaultYes(); + sSaveDialogCB = SaveDialogCB_AskSaveHandleInput; + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_AskSaveHandleInput(void) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + if ((gSaveFileStatus != SAVE_STATUS_EMPTY && gSaveFileStatus != SAVE_STATUS_INVALID) || !gDifferentSaveFile) + sSaveDialogCB = SaveDialogCB_PrintAskOverwriteText; + else + sSaveDialogCB = SaveDialogCB_PrintSavingDontTurnOffPower; + break; + case 1: + case -1: + CloseSaveStatsWindow_(); + CloseSaveMessageWindow(); + return SAVECB_RETURN_CANCEL; + } + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_PrintAskOverwriteText(void) +{ + if (gDifferentSaveFile == TRUE) + PrintSaveTextWithFollowupFunc(gText_DifferentGameFile, SaveDialogCB_AskReplacePreviousFilePrintYesNoMenu); + else + PrintSaveTextWithFollowupFunc(gText_AlreadySaveFile_WouldLikeToOverwrite, SaveDialogCB_AskOverwritePrintYesNoMenu); + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_AskOverwritePrintYesNoMenu(void) +{ + DisplayYesNoMenuDefaultYes(); + sSaveDialogCB = SaveDialogCB_AskOverwriteOrReplacePreviousFileHandleInput; + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_AskReplacePreviousFilePrintYesNoMenu(void) +{ + DisplayYesNoMenuDefaultNo(); + sSaveDialogCB = SaveDialogCB_AskOverwriteOrReplacePreviousFileHandleInput; + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_AskOverwriteOrReplacePreviousFileHandleInput(void) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + sSaveDialogCB = SaveDialogCB_PrintSavingDontTurnOffPower; + break; + case 1: + case -1: + CloseSaveStatsWindow_(); + CloseSaveMessageWindow(); + return SAVECB_RETURN_CANCEL; + } + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_PrintSavingDontTurnOffPower(void) +{ + sub_8112450(); + PrintSaveTextWithFollowupFunc(gText_SavingDontTurnOffThePower, SaveDialogCB_DoSave); + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_DoSave(void) +{ + IncrementGameStat(GAME_STAT_SAVED_GAME); + if (gDifferentSaveFile == TRUE) + { + TrySavingData(SAVE_OVERWRITE_DIFFERENT_FILE); + gDifferentSaveFile = FALSE; + } + else + { + TrySavingData(SAVE_NORMAL); + } + sSaveDialogCB = SaveDialogCB_PrintSaveResult; + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_PrintSaveResult(void) +{ + if (gSaveSucceeded == TRUE) + PrintSaveTextWithFollowupFunc(gText_PlayerSavedTheGame, SaveDialogCB_WaitPrintSuccessAndPlaySE); + else + PrintSaveTextWithFollowupFunc(gText_SaveError_PleaseExchangeBackupMemory, SaveDialogCB_WaitPrintErrorAndPlaySE); + SetSaveDialogDelayTo60Frames(); + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_WaitPrintSuccessAndPlaySE(void) +{ + if (!RunTextPrinters_CheckPrinter0Active()) + { + PlaySE(SE_SAVE); + sSaveDialogCB = SaveDialogCB_ReturnSuccess; + } + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_ReturnSuccess(void) +{ + if (!IsSEPlaying() && SaveDialog_Wait60FramesOrAButtonHeld()) + { + CloseSaveStatsWindow_(); + return SAVECB_RETURN_OKAY; + } + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_WaitPrintErrorAndPlaySE(void) +{ + if (!RunTextPrinters_CheckPrinter0Active()) + { + PlaySE(SE_BOO); + sSaveDialogCB = SaveDialogCB_ReturnError; + } + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_ReturnError(void) +{ + if (!SaveDialog_Wait60FramesThenCheckAButtonHeld()) + return SAVECB_RETURN_CONTINUE; + CloseSaveStatsWindow_(); + return SAVECB_RETURN_ERROR; +} + +static void VBlankCB_WhileSavingAfterLinkBattle(void) +{ + TransferPlttBuffer(); +} + +bool32 DoSetUpSaveAfterLinkBattle(u8 *state) +{ + switch (*state) + { + case 0: + SetGpuReg(REG_OFFSET_DISPCNT, 0); + SetVBlankCallback(NULL); + ScanlineEffect_Stop(); + DmaFill16Defvars(3, 0, (void *)PLTT, PLTT_SIZE); + DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000); + break; + case 1: + ResetSpriteData(); + ResetTasks(); + ResetPaletteFade(); + ScanlineEffect_Clear(); + break; + case 2: + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, sBGTemplates_AfterLinkSaveMessage, NELEMS(sBGTemplates_AfterLinkSaveMessage)); + InitWindows(sWindowTemplates_AfterLinkSaveMessage); + TextWindow_SetStdFrame0_WithPal(0, 0x008, 0xF0); + break; + case 3: + ShowBg(0); + BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + SetVBlankCallback(VBlankCB_WhileSavingAfterLinkBattle); + EnableInterrupts(INTR_FLAG_VBLANK); + break; + case 4: + return TRUE; + } + (*state)++; + return FALSE; +} + +void CB2_SetUpSaveAfterLinkBattle(void) +{ + if (DoSetUpSaveAfterLinkBattle(&gMain.state)) + { + CreateTask(task50_after_link_battle_save, 80); + SetMainCallback2(CB2_WhileSavingAfterLinkBattle); + } +} + +static void CB2_WhileSavingAfterLinkBattle(void) +{ + RunTasks(); + UpdatePaletteFade(); +} + +static void task50_after_link_battle_save(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + if (!gPaletteFade.active) + { + switch (data[0]) + { + case 0: + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + AddTextPrinterParameterized2(0, 2, gText_SavingDontTurnOffThePower2, 0xFF, NULL, 2, 1, 3); + DrawTextBorderOuter(0, 0x008, 0x0F); + PutWindowTilemap(0); + CopyWindowToVram(0, 3); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + if (gWirelessCommType != 0 && InUnionRoom()) + data[0] = 5; + else + data[0] = 1; + break; + case 1: + sub_804C1C0(); + sub_80DA45C(); + data[0] = 2; + break; + case 2: + if (sub_80DA4A0()) + { + sav2_gender2_inplace_and_xFE(); + data[0] = 3; + } + break; + case 3: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + data[0] = 4; + break; + case 4: + FreeAllWindowBuffers(); + SetMainCallback2(gMain.savedCallback); + DestroyTask(taskId); + break; + case 5: + CreateTask(sub_80DA634, 5); + data[0] = 6; + break; + case 6: + if (!FuncIsActiveTask(sub_80DA634)) + data[0] = 3; + break; + } + } +} + +static void PrintSaveStats(void) +{ + u8 y; + u8 x; + sSaveStatsWindowId = AddWindow(&sSaveStatsWindowTemplate); + TextWindow_SetStdFrame0_WithPal(sSaveStatsWindowId, 0x21D, 0xD0); + DrawStdFrameWithCustomTileAndPalette(sSaveStatsWindowId, FALSE, 0x21D, 0x0D); + SaveStatToString(SAVE_STAT_LOCATION, gStringVar4, 8); + x = (u32)(112 - GetStringWidth(2, gStringVar4, -1)) / 2; + AddTextPrinterParameterized3(sSaveStatsWindowId, 2, x, 0, sTextColor_LocationHeader, -1, gStringVar4); + x = (u32)(112 - GetStringWidth(2, gStringVar4, -1)) / 2; + AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 2, 14, sTextColor_StatName, -1, gSaveStatName_Player); + SaveStatToString(SAVE_STAT_NAME, gStringVar4, 2); + Menu_PrintFormatIntlPlayerName(sSaveStatsWindowId, gStringVar4, 60, 14); + AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 2, 28, sTextColor_StatName, -1, gSaveStatName_Badges); + SaveStatToString(SAVE_STAT_BADGES, gStringVar4, 2); + AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 60, 28, sTextColor_StatValue, -1, gStringVar4); + y = 42; + if (FlagGet(FLAG_0x829) == TRUE) + { + AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 2, 42, sTextColor_StatName, -1, gSaveStatName_Pokedex); + SaveStatToString(SAVE_STAT_POKEDEX, gStringVar4, 2); + AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 60, 42, sTextColor_StatValue, -1, gStringVar4); + y = 56; + } + AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 2, y, sTextColor_StatName, -1, gSaveStatName_Time); + SaveStatToString(SAVE_STAT_TIME, gStringVar4, 2); + AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 60, y, sTextColor_StatValue, -1, gStringVar4); + CopyWindowToVram(sSaveStatsWindowId, 2); +} + +static void CloseSaveStatsWindow(void) +{ + ClearStdWindowAndFrame(sSaveStatsWindowId, FALSE); + RemoveWindow(sSaveStatsWindowId); +} + +static void CloseStartMenu(void) +{ + PlaySE(SE_SELECT); + ClearStdWindowAndFrame(GetStartMenuWindowId(), TRUE); + RemoveStartMenuWindow(); + sub_80696C0(); + ScriptContext2_Disable(); +} + +void AppendToList(u8 *list, u8 *cursor, u8 newEntry) +{ + list[*cursor] = newEntry; + (*cursor)++; +} diff --git a/src/teachy_tv.c b/src/teachy_tv.c index 18da0997c..aa273073b 100644 --- a/src/teachy_tv.c +++ b/src/teachy_tv.c @@ -510,7 +510,7 @@ static void TeachyTvMainCallback(void) ScheduleBgCopyTilemapToVram(1); ScheduleBgCopyTilemapToVram(2); ScheduleBgCopyTilemapToVram(3); - sub_812B1E0(9); // help system something + HelpSystem_SetSomeVariable(9); // help system something BlendPalettes(0xFFFFFFFF, 0x10, 0); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); SetVBlankCallback(TeachyTvVblankHandler); @@ -736,7 +736,7 @@ static void TeachyTvOptionListController(u8 taskId) { input = ListMenu_ProcessInput(data[0]); ListMenuGetScrollAndRow(data[0], &sStaticResources.scrollOffset, &sStaticResources.selectedRow); - if ((JOY_NEW(SELECT_BUTTON) && sStaticResources.callback != ReturnToBagFromKeyItem)) + if ((JOY_NEW(SELECT_BUTTON) && sStaticResources.callback != CB2_BagMenuFromStartMenu)) { PlaySE(SE_SELECT); TeachyTvQuitBeginFade(taskId); diff --git a/src/trainer_tower.c b/src/trainer_tower.c index 17f6b9e09..9512e73d1 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -1278,7 +1278,7 @@ void sub_815E720(void) sub_815EC0C(); windowId = AddWindow(gUnknown_847A218); - sub_80F6E9C(); + LoadStdWindowFrameGfx(); DrawStdWindowFrame(windowId, FALSE); AddTextPrinterParameterized(windowId, 2, gUnknown_83FE982, 0x4A, 0, 0xFF, NULL); diff --git a/sym_bss.txt b/sym_bss.txt index a2cf9ccd8..c68826ad9 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -53,19 +53,13 @@ gUnknown_3000E9C: @ 3000E9C gUnknown_3000EA0: @ 3000EA0 .space 0x8 + .align 2 .include "src/script.o" - .align 2 -gUnknown_3000FA4: @ 3000FA4 - .space 0x4 - -gUnknown_3000FA8: @ 3000FA8 - .space 0x1 - -gUnknown_3000FA9: @ 3000FA9 - .space 0x3 - + .include "src/start_menu.o" + .align 2 .include "src/tileset_anims.o" + .align 2 .include "src/sound.o" .align 2 diff --git a/sym_ewram.txt b/sym_ewram.txt index 2abc3b9b5..c709745d5 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -576,33 +576,13 @@ gUnknown_20370DE: @ 20370DE gUnknown_20370E0: @ 20370E0 .space 0x10 -gUnknown_20370F0: @ 20370F0 - .space 0x4 - -gUnknown_20370F4: @ 20370F4 - .space 0x1 - -gUnknown_20370F5: @ 20370F5 - .space 0x1 - -gUnknown_20370F6: @ 20370F6 - .space 0x9 - -gUnknown_20370FF: @ 20370FF - .space 0x1 - -gUnknown_2037100: @ 2037100 - .space 0x1 - -gUnknown_2037101: @ 2037101 - .space 0x3 - -gUnknown_2037104: @ 2037104 - .space 0x4 - + .align 2 + .include "src/start_menu.o" + .align 2 .include "src/tileset_anims.o" + .align 2 .include "src/palette.o" - + .align 2 .include "src/sound.o" .align 2 |