summaryrefslogtreecommitdiff
path: root/src/start_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/start_menu.c')
-rw-r--r--src/start_menu.c170
1 files changed, 72 insertions, 98 deletions
diff --git a/src/start_menu.c b/src/start_menu.c
index c8e77af66..31ba31766 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -1,47 +1,27 @@
#include "global.h"
+#include "start_menu.h"
+#include "asm.h"
+#include "field_player_avatar.h"
+#include "event_data.h"
+#include "load_save.h"
#include "main.h"
+#include "map_obj_lock.h"
#include "menu.h"
+#include "option_menu.h"
#include "palette.h"
+#include "pokedex.h"
+#include "rom4.h"
+#include "safari_zone.h"
+#include "save.h"
+#include "save_menu_util.h"
#include "script.h"
#include "songs.h"
#include "sound.h"
#include "sprite.h"
#include "string_util.h"
#include "task.h"
-#include "flag.h"
-
-//External functions
-extern void sub_8064E2C(void);
-extern void sub_8047A1C(void);
-extern u8 sub_8125E6C(void);
-extern void sub_8047A34(void);
-extern void sub_8125E2C(void);
-extern void remove_some_task(void);
-extern void dp12_8087EA4(void);
-extern void sav12_xor_increment(u8 index);
-extern bool8 sub_8125D44(u8); //Saving related
-extern void HandleDrawSaveWindowInfo(u8, u8);
-extern void sub_80946C8(u8, u8);
-extern void save_serialize_map(void);
-extern void PlayRainSoundEffect(void);
-extern void sub_8093130(u8, void (*)(void));
-extern void sub_805469C(void);
-extern void SafariZoneRetirePrompt(void);
-extern void CB2_InitOptionMenu(void);
-extern void sub_8093110(void (*)(void));
-extern void sub_80EBA5C(void);
-extern void sub_80A53F8(void);
-extern void sub_8089A70(void);
-extern void CB2_InitPokedex(void);
-extern u16 GetNationalPokedexCount(u8);
-extern void fade_screen(u8, u8);
-extern bool32 is_c1_link_related_active();
-extern void sub_80594C0(void);
-extern void sub_80597F4(void);
-extern void player_bitmagic(void);
-extern bool32 GetSafariZoneFlag(void);
-extern u8 *sub_8072C44(u8 *, s32, u8, u8);
-extern bool32 is_c1_link_related_active(void);
+#include "trainer_card.h"
+#include "weather.h"
//Menu actions
enum {
@@ -57,11 +37,6 @@ enum {
MENU_ACTION_PLAYER_LINK
};
-struct MenuItem {
- u8 *text;
- u8 (*callback)(void);
-};
-
static u8 (*saveDialogCallback)(void);
static u8 saveDialogTimer; //Number of frames to keep the window on screen after save was completed
static bool8 savingComplete;
@@ -71,7 +46,6 @@ extern u16 gSaveFileStatus;
extern u16 gScriptResult;
extern u8 (*gCallback_03004AE8)(void);
extern u8 gUnknown_03004860;
-extern struct MenuItem gStartMenuItems[];
extern u8 gNumSafariBalls;
EWRAM_DATA static u8 sStartMenuCursorPos = 0;
@@ -87,25 +61,41 @@ extern u8 gSaveText_ThereIsAlreadyAFile[];
extern u8 gSaveText_ThereIsADifferentFile[];
extern u8 gSaveText_WouldYouLikeToSave[];
extern u8 gOtherText_SafariStock[];
-
-//Public functions
-void CreateStartMenuTask(void (*func)(u8));
-void sub_80712B4(u8 taskId);
-void sub_8071310(void);
-u8 StartMenu_PokedexCallback(void);
-u8 StartMenu_PokemonCallback(void);
-u8 StartMenu_BagCallback(void);
-u8 StartMenu_PokenavCallback(void);
-u8 StartMenu_PlayerCallback(void);
-u8 StartMenu_SaveCallback(void);
-u8 StartMenu_OptionCallback(void);
-u8 StartMenu_ExitCallback(void);
-u8 StartMenu_RetireCallback(void);
-u8 StartMenu_PlayerLinkCallback(void);
-void InitSaveDialog(void);
-void sub_8071B28(void);
-void sub_8071C20(void);
-void AppendToList(u8 *list, u8 *pindex, u32 value);
+extern u8 SystemText_Pokedex[];
+extern u8 SystemText_Pokemon[];
+extern u8 SystemText_BAG[];
+extern u8 SystemText_Pokenav[];
+extern u8 SystemText_Player[];
+extern u8 SystemText_Save[];
+extern u8 SystemText_Option[];
+extern u8 SystemText_Exit[];
+extern u8 SystemText_Retire[];
+extern u8 SystemText_Player[];
+
+static u8 StartMenu_PokedexCallback(void);
+static u8 StartMenu_PokemonCallback(void);
+static u8 StartMenu_BagCallback(void);
+static u8 StartMenu_PokenavCallback(void);
+static u8 StartMenu_PlayerCallback(void);
+static u8 StartMenu_SaveCallback(void);
+static u8 StartMenu_OptionCallback(void);
+static u8 StartMenu_ExitCallback(void);
+static u8 StartMenu_RetireCallback(void);
+static u8 StartMenu_PlayerLinkCallback(void);
+
+static const struct MenuAction sStartMenuItems[] =
+{
+ { SystemText_Pokedex, StartMenu_PokedexCallback },
+ { SystemText_Pokemon, StartMenu_PokemonCallback },
+ { SystemText_BAG, StartMenu_BagCallback },
+ { SystemText_Pokenav, StartMenu_PokenavCallback },
+ { SystemText_Player, StartMenu_PlayerCallback },
+ { SystemText_Save, StartMenu_SaveCallback },
+ { SystemText_Option, StartMenu_OptionCallback },
+ { SystemText_Exit, StartMenu_ExitCallback },
+ { SystemText_Retire, StartMenu_RetireCallback },
+ { SystemText_Player, StartMenu_PlayerLinkCallback },
+};
//Private functions
static void BuildStartMenuActions(void);
@@ -116,7 +106,6 @@ static void BuildStartMenuActions_Link(void);
static void DisplaySafariBallsWindow(void);
static bool32 PrintStartMenuItemsMultistep(s16 *a, u32 b);
static bool32 InitStartMenuMultistep(s16 *a, s16 *b);
-static void sub_8071230(void);
static void Task_StartMenu(u8 taskId);
static u8 StartMenu_InputProcessCallback(void);
static u8 SaveCallback1(void);
@@ -220,7 +209,7 @@ static bool32 PrintStartMenuItemsMultistep(s16 *index, u32 n)
do
{
- MenuPrint(gStartMenuItems[sCurrentStartMenuActions[_index]].text, 23, 2 + _index * 2);
+ MenuPrint(sStartMenuItems[sCurrentStartMenuActions[_index]].text, 23, 2 + _index * 2);
_index++;
if(_index >= sNumStartMenuActions)
{
@@ -320,7 +309,7 @@ void sub_8071310(void)
{
if(!is_c1_link_related_active())
{
- player_bitmagic();
+ FreezeMapObjects();
sub_80594C0();
sub_80597F4();
}
@@ -343,12 +332,12 @@ static u8 StartMenu_InputProcessCallback(void)
if(gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- if(gStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].callback == StartMenu_PokedexCallback)
+ if(sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func == StartMenu_PokedexCallback)
{
if(GetNationalPokedexCount(0) == 0)
return 0;
}
- gCallback_03004AE8 = gStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].callback;
+ gCallback_03004AE8 = sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func;
if(gCallback_03004AE8 != StartMenu_SaveCallback &&
gCallback_03004AE8 != StartMenu_ExitCallback &&
gCallback_03004AE8 != StartMenu_RetireCallback)
@@ -357,18 +346,18 @@ static u8 StartMenu_InputProcessCallback(void)
}
if(gMain.newKeys & (START_BUTTON | B_BUTTON))
{
- sub_8071C20();
+ CloseMenu();
return 1;
}
return 0;
}
//When player selects POKEDEX
-u8 StartMenu_PokedexCallback(void)
+static u8 StartMenu_PokedexCallback(void)
{
if(!gPaletteFade.active)
{
- sav12_xor_increment(0x29);
+ IncrementGameStat(0x29);
PlayRainSoundEffect();
SetMainCallback2(CB2_InitPokedex);
return 1;
@@ -377,7 +366,7 @@ u8 StartMenu_PokedexCallback(void)
}
//When player selects POKEMON
-u8 StartMenu_PokemonCallback(void)
+static u8 StartMenu_PokemonCallback(void)
{
if(!gPaletteFade.active)
{
@@ -389,7 +378,7 @@ u8 StartMenu_PokemonCallback(void)
}
//When player selects BAG
-u8 StartMenu_BagCallback(void)
+static u8 StartMenu_BagCallback(void)
{
if(!gPaletteFade.active)
{
@@ -401,7 +390,7 @@ u8 StartMenu_BagCallback(void)
}
//When player selects POKENAV
-u8 StartMenu_PokenavCallback(void)
+static u8 StartMenu_PokenavCallback(void)
{
if(!gPaletteFade.active)
{
@@ -413,7 +402,7 @@ u8 StartMenu_PokenavCallback(void)
}
//When player selects his/her name
-u8 StartMenu_PlayerCallback(void)
+static u8 StartMenu_PlayerCallback(void)
{
if(!gPaletteFade.active)
{
@@ -425,7 +414,7 @@ u8 StartMenu_PlayerCallback(void)
}
//When player selects SAVE
-u8 StartMenu_SaveCallback(void)
+static u8 StartMenu_SaveCallback(void)
{
sub_8072DEC();
gCallback_03004AE8 = SaveCallback1;
@@ -433,35 +422,35 @@ u8 StartMenu_SaveCallback(void)
}
//When player selects OPTION
-u8 StartMenu_OptionCallback(void)
+static u8 StartMenu_OptionCallback(void)
{
if(!gPaletteFade.active)
{
PlayRainSoundEffect();
SetMainCallback2(CB2_InitOptionMenu);
- gMain.field_8 = sub_805469C;
+ gMain.savedCallback = sub_805469C;
return 1;
}
return 0;
}
//When player selects EXIT
-u8 StartMenu_ExitCallback(void)
+static u8 StartMenu_ExitCallback(void)
{
- sub_8071C20();
+ CloseMenu();
return 1;
}
//When player selects RETIRE
-u8 StartMenu_RetireCallback(void)
+static u8 StartMenu_RetireCallback(void)
{
- sub_8071C20();
+ CloseMenu();
SafariZoneRetirePrompt();
return 1;
}
//When player selects their name in multiplayer mode
-u8 StartMenu_PlayerLinkCallback(void)
+static u8 StartMenu_PlayerLinkCallback(void)
{
if(!gPaletteFade.active)
{
@@ -690,7 +679,7 @@ static u8 SaveDialogCB_DoSave(void)
{
u8 a;
- sav12_xor_increment(0);
+ IncrementGameStat(0);
if(gUnknown_020297EC == TRUE)
{
a = sub_8125D44(4);
@@ -851,14 +840,14 @@ static void Task_8071B64(u8 taskId)
(*step)++;
break;
case 1:
- sub_8047A1C();
+ SetSecretBase2Field_9_AndHideBG();
sub_8125E2C();
(*step)++;
break;
case 2:
if(!sub_8125E6C())
break;
- sub_8047A34();
+ ClearSecretBase2Field_9_2();
(*step)++;
break;
case 3:
@@ -866,24 +855,9 @@ static void Task_8071B64(u8 taskId)
(*step)++;
break;
case 4:
- SetMainCallback2(gMain.field_8);
+ SetMainCallback2(gMain.savedCallback);
DestroyTask(taskId);
break;
}
}
}
-
-void sub_8071C20(void)
-{
- PlaySE(SE_SELECT);
- MenuZeroFillScreen();
- sub_8064E2C();
- ScriptContext2_Disable();
- sub_8072DEC();
-}
-
-void AppendToList(u8 *list, u8 *pindex, u32 value)
-{
- list[*pindex] = value;
- (*pindex)++;
-}