summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2019-10-13 22:04:51 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2019-10-13 22:04:51 -0400
commit8fd0bc424541cec7fc76a4f841035c2b9e793b0e (patch)
treea823c569134fda669d661dd6085dd6a2980ad931
parent6bffe8613e2f764a03f551ad61b360dab9395eec (diff)
Decompile start_menu
-rw-r--r--asm/berry_crush_2.s4
-rw-r--r--asm/cable_club.s8
-rw-r--r--asm/dodrio_berry_picking.s4
-rw-r--r--asm/field_message_box.s2
-rw-r--r--asm/hall_of_fame.s4
-rw-r--r--asm/item_menu.s10
-rw-r--r--asm/link_rfu_3.s14
-rw-r--r--asm/naming_screen.s24
-rw-r--r--asm/option_menu.s10
-rw-r--r--asm/overworld.s10
-rw-r--r--asm/party_menu.s12
-rw-r--r--asm/pokedex_screen.s10
-rw-r--r--asm/pokemon_storage_system.s2
-rw-r--r--asm/save_failed_screen.s8
-rw-r--r--asm/save_menu_util.s6
-rw-r--r--asm/script_menu.s2
-rw-r--r--asm/start_menu.s2219
-rw-r--r--asm/trade.s4
-rw-r--r--asm/trainer_card.s20
-rw-r--r--common_syms/help_system_812B1E0.txt2
-rw-r--r--common_syms/save.txt2
-rw-r--r--data/map_event_scripts.inc34
-rw-r--r--data/maps/PalletTown_PlayersHouse_2F/scripts.inc2
-rw-r--r--data/specials.inc8
-rw-r--r--data/start_menu.s28
-rw-r--r--data/strings.s44
-rw-r--r--data/tileset_anims.s3
-rw-r--r--include/event_scripts.h7
-rw-r--r--include/field_fadetransition.h1
-rw-r--r--include/fieldmap.h2
-rw-r--r--include/gba/macro.h31
-rw-r--r--include/help_system.h6
-rw-r--r--include/item_menu.h2
-rw-r--r--include/link_rfu.h1
-rw-r--r--include/load_save.h2
-rw-r--r--include/menu.h2
-rw-r--r--include/new_game.h2
-rw-r--r--include/new_menu_helpers.h8
-rw-r--r--include/option_menu.h6
-rw-r--r--include/overworld.h3
-rw-r--r--include/party_menu.h1
-rw-r--r--include/pokedex_screen.h6
-rw-r--r--include/quest_log.h7
-rw-r--r--include/save.h2
-rw-r--r--include/save_menu_util.h15
-rw-r--r--include/start_menu.h4
-rw-r--r--include/strings.h32
-rw-r--r--include/trainer_card.h3
-rw-r--r--ld_script.txt4
-rw-r--r--src/fame_checker.c4
-rw-r--r--src/field_fadetransition.c12
-rw-r--r--src/help_system_812B1E0.c62
-rw-r--r--src/item_use.c12
-rw-r--r--src/menu2.c2
-rw-r--r--src/mystery_event_script.c2
-rw-r--r--src/new_menu_helpers.c18
-rw-r--r--src/player_pc.c14
-rw-r--r--src/quest_log.c38
-rw-r--r--src/save.c6
-rw-r--r--src/scrcmd.c6
-rw-r--r--src/start_menu.c1008
-rw-r--r--src/teachy_tv.c4
-rw-r--r--src/trainer_tower.c2
-rw-r--r--sym_bss.txt14
-rw-r--r--sym_ewram.txt30
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