diff options
Diffstat (limited to 'src/start_menu.c')
-rw-r--r-- | src/start_menu.c | 170 |
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)++; -} |