diff options
Diffstat (limited to 'src/start_menu.c')
-rw-r--r-- | src/start_menu.c | 169 |
1 files changed, 81 insertions, 88 deletions
diff --git a/src/start_menu.c b/src/start_menu.c index 31ba31766..d1344ce90 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -1,8 +1,8 @@ #include "global.h" #include "start_menu.h" #include "asm.h" -#include "field_player_avatar.h" #include "event_data.h" +#include "field_player_avatar.h" #include "load_save.h" #include "main.h" #include "map_obj_lock.h" @@ -22,6 +22,7 @@ #include "task.h" #include "trainer_card.h" #include "weather.h" +#include "field_map_obj_helpers.h" //Menu actions enum { @@ -41,7 +42,7 @@ static u8 (*saveDialogCallback)(void); static u8 saveDialogTimer; //Number of frames to keep the window on screen after save was completed static bool8 savingComplete; -extern bool8 gUnknown_020297EC; +extern bool8 gDifferentSaveFile; extern u16 gSaveFileStatus; extern u16 gScriptResult; extern u8 (*gCallback_03004AE8)(void); @@ -141,11 +142,11 @@ static void Task_8071B64(u8 taskId); static void BuildStartMenuActions(void) { sNumStartMenuActions = 0; - if(is_c1_link_related_active() == TRUE) + if (is_c1_link_related_active() == TRUE) BuildStartMenuActions_Link(); else { - if(GetSafariZoneFlag() == TRUE) + if (GetSafariZoneFlag() == TRUE) BuildStartMenuActions_SafariZone(); else BuildStartMenuActions_Normal(); @@ -159,12 +160,12 @@ static void AddStartMenuAction(u8 action) static void BuildStartMenuActions_Normal(void) { - if(FlagGet(SYS_POKEDEX_GET) == TRUE) + if (FlagGet(SYS_POKEDEX_GET) == TRUE) AddStartMenuAction(MENU_ACTION_POKEDEX); - if(FlagGet(SYS_POKEMON_GET) == TRUE) + if (FlagGet(SYS_POKEMON_GET) == TRUE) AddStartMenuAction(MENU_ACTION_POKEMON); AddStartMenuAction(MENU_ACTION_BAG); - if(FlagGet(SYS_POKENAV_GET) == TRUE) + if (FlagGet(SYS_POKENAV_GET) == TRUE) AddStartMenuAction(MENU_ACTION_POKENAV); AddStartMenuAction(MENU_ACTION_PLAYER); AddStartMenuAction(MENU_ACTION_SAVE); @@ -187,11 +188,11 @@ static void BuildStartMenuActions_Link(void) { AddStartMenuAction(MENU_ACTION_POKEMON); AddStartMenuAction(MENU_ACTION_BAG); - if(FlagGet(SYS_POKENAV_GET) == TRUE) + if (FlagGet(SYS_POKENAV_GET) == TRUE) AddStartMenuAction(MENU_ACTION_POKENAV); AddStartMenuAction(MENU_ACTION_PLAYER_LINK); AddStartMenuAction(MENU_ACTION_OPTION); - AddStartMenuAction(MENU_ACTION_EXIT); + AddStartMenuAction(MENU_ACTION_EXIT); } //Show number of safari balls left @@ -206,25 +207,25 @@ static void DisplaySafariBallsWindow(void) static bool32 PrintStartMenuItemsMultistep(s16 *index, u32 n) { int _index = *index; - + do { MenuPrint(sStartMenuItems[sCurrentStartMenuActions[_index]].text, 23, 2 + _index * 2); _index++; - if(_index >= sNumStartMenuActions) + if (_index >= sNumStartMenuActions) { *index = _index; return TRUE; } } - while(--n != 0); + while (--n != 0); *index = _index; return FALSE; } static bool32 InitStartMenuMultistep(s16 *step, s16 *index) { - switch(*step) + switch (*step) { case 1: BuildStartMenuActions(); @@ -236,12 +237,12 @@ static bool32 InitStartMenuMultistep(s16 *step, s16 *index) (*step)++; break; case 3: - if(GetSafariZoneFlag()) + if (GetSafariZoneFlag()) DisplaySafariBallsWindow(); (*step)++; break; case 4: - if(PrintStartMenuItemsMultistep(index, 2)) + if (PrintStartMenuItemsMultistep(index, 2)) (*step)++; break; case 0: @@ -258,14 +259,14 @@ static void InitStartMenu(void) { s16 step = 0; s16 index = 0; - - while(InitStartMenuMultistep(&step, &index) == FALSE) + + while (InitStartMenuMultistep(&step, &index) == FALSE) ; } static void Task_StartMenu(u8 taskId) { - if(InitStartMenuMultistep(gTasks[taskId].data, gTasks[taskId].data + 1) == TRUE) + if (InitStartMenuMultistep(gTasks[taskId].data, gTasks[taskId].data + 1) == TRUE) { *gTasks[taskId].data = 0; SwitchTaskToFollowupFunc(taskId); @@ -275,31 +276,24 @@ static void Task_StartMenu(u8 taskId) void CreateStartMenuTask(void (*func)(u8)) { u8 taskId; - + InitMenuWindow(&gWindowConfig_81E6CE4); taskId = CreateTask(Task_StartMenu, 0x50); SetTaskFuncWithFollowupFunc(taskId, Task_StartMenu, func); } -struct MyTask { - TaskFunc func; - bool8 isActive; - u8 prev; - u8 next; - u8 priority; - s16 var1; -}; - void sub_80712B4(u8 taskId) { - switch(((struct MyTask *)&gTasks[taskId])->var1) + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) { case 0: gCallback_03004AE8 = StartMenu_InputProcessCallback; - ((struct MyTask *)&gTasks[taskId])->var1++; + task->data[0]++; break; case 1: - if(gCallback_03004AE8() == 1) + if (gCallback_03004AE8() == 1) DestroyTask(taskId); break; } @@ -307,7 +301,7 @@ void sub_80712B4(u8 taskId) void sub_8071310(void) { - if(!is_c1_link_related_active()) + if (!is_c1_link_related_active()) { FreezeMapObjects(); sub_80594C0(); @@ -319,32 +313,32 @@ void sub_8071310(void) static u8 StartMenu_InputProcessCallback(void) { - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); sStartMenuCursorPos = MoveMenuCursor(-1); } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); sStartMenuCursorPos = MoveMenuCursor(1); } - if(gMain.newKeys & A_BUTTON) + if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - if(sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func == StartMenu_PokedexCallback) + if (sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func == StartMenu_PokedexCallback) { - if(GetNationalPokedexCount(0) == 0) + if (GetNationalPokedexCount(0) == 0) return 0; } gCallback_03004AE8 = sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func; - if(gCallback_03004AE8 != StartMenu_SaveCallback && + if (gCallback_03004AE8 != StartMenu_SaveCallback && gCallback_03004AE8 != StartMenu_ExitCallback && gCallback_03004AE8 != StartMenu_RetireCallback) fade_screen(1, 0); return 0; } - if(gMain.newKeys & (START_BUTTON | B_BUTTON)) + if (gMain.newKeys & (START_BUTTON | B_BUTTON)) { CloseMenu(); return 1; @@ -355,7 +349,7 @@ static u8 StartMenu_InputProcessCallback(void) //When player selects POKEDEX static u8 StartMenu_PokedexCallback(void) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { IncrementGameStat(0x29); PlayRainSoundEffect(); @@ -368,7 +362,7 @@ static u8 StartMenu_PokedexCallback(void) //When player selects POKEMON static u8 StartMenu_PokemonCallback(void) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { PlayRainSoundEffect(); SetMainCallback2(sub_8089A70); @@ -380,7 +374,7 @@ static u8 StartMenu_PokemonCallback(void) //When player selects BAG static u8 StartMenu_BagCallback(void) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { PlayRainSoundEffect(); SetMainCallback2(sub_80A53F8); @@ -392,7 +386,7 @@ static u8 StartMenu_BagCallback(void) //When player selects POKENAV static u8 StartMenu_PokenavCallback(void) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { PlayRainSoundEffect(); SetMainCallback2(sub_80EBA5C); @@ -404,7 +398,7 @@ static u8 StartMenu_PokenavCallback(void) //When player selects his/her name static u8 StartMenu_PlayerCallback(void) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { PlayRainSoundEffect(); sub_8093110(sub_805469C); @@ -424,7 +418,7 @@ static u8 StartMenu_SaveCallback(void) //When player selects OPTION static u8 StartMenu_OptionCallback(void) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { PlayRainSoundEffect(); SetMainCallback2(CB2_InitOptionMenu); @@ -452,7 +446,7 @@ static u8 StartMenu_RetireCallback(void) //When player selects their name in multiplayer mode static u8 StartMenu_PlayerLinkCallback(void) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { PlayRainSoundEffect(); sub_8093130(gUnknown_03004860, sub_805469C); @@ -479,7 +473,7 @@ static u8 SaveCallback1(void) static u8 SaveCallback2(void) { - switch(RunSaveDialogCallback()) + switch (RunSaveDialogCallback()) { case SAVE_IN_PROGRESS: return FALSE; @@ -497,7 +491,7 @@ static u8 SaveCallback2(void) return TRUE; } return FALSE; -} +} static void sub_807160C(void) { @@ -508,9 +502,9 @@ static void sub_807160C(void) static u8 RunSaveDialogCallback(void) { - if(savingComplete) + if (savingComplete) { - if(!MenuUpdateWindowText()) + if (!MenuUpdateWindowText()) return 0; } savingComplete = FALSE; @@ -535,13 +529,13 @@ static void DisplaySaveMessageWithCallback(u8 *ptr, u8 (*func)(void)) static void Task_SaveDialog(u8 taskId) { u8 status = RunSaveDialogCallback(); - - switch(status) + + switch (status) { case SAVE_CANCELED: case SAVE_ERROR: gScriptResult = 0; - break; + break; case SAVE_SUCCESS: gScriptResult = status; break; @@ -554,7 +548,7 @@ static void Task_SaveDialog(u8 taskId) static void sub_8071700(void) { - sub_80946C8(0, 0); + HandleCloseSaveWindow(0, 0); } static void HideSaveDialog(void) @@ -570,21 +564,21 @@ static void SaveDialogStartTimeout(void) static bool8 SaveDialogCheckForTimeoutOrKeypress(void) { saveDialogTimer--; - if(gMain.heldKeys & A_BUTTON) + if (gMain.heldKeys & A_BUTTON) { PlaySE(SE_SELECT); return TRUE; } - else if(saveDialogTimer == 0) + else if (saveDialogTimer == 0) return TRUE; return FALSE; } static bool8 SaveDialogCheckForTimeoutAndKeypress(void) { - if(saveDialogTimer != 0) + if (saveDialogTimer != 0) saveDialogTimer--; - else if(gMain.heldKeys & A_BUTTON) + else if (gMain.heldKeys & A_BUTTON) return TRUE; return FALSE; } @@ -593,7 +587,6 @@ static u8 SaveDialogCB_DisplayConfirmMessage(void) { MenuZeroFillScreen(); HandleDrawSaveWindowInfo(0, 0); - //"Would you like to save the game?" DisplaySaveMessageWithCallback(gSaveText_WouldYouLikeToSave, SaveDialogCB_DisplayConfirmYesNoMenu); return SAVE_IN_PROGRESS; } @@ -607,15 +600,15 @@ static u8 SaveDialogCB_DisplayConfirmYesNoMenu(void) static u8 SaveDialogCB_ProcessConfirmYesNoMenu(void) { - switch(ProcessMenuInputNoWrap_()) + switch (ProcessMenuInputNoWrap_()) { case 0: //YES HideSaveDialog(); - switch(gSaveFileStatus) + switch (gSaveFileStatus) { case 0: case 2: - if(gUnknown_020297EC == FALSE) + if (gDifferentSaveFile == FALSE) { saveDialogCallback = SaveDialogCB_SaveFileExists; return SAVE_IN_PROGRESS; @@ -639,7 +632,7 @@ static u8 SaveDialogCB_ProcessConfirmYesNoMenu(void) static u8 SaveDialogCB_SaveFileExists(void) { DisplaySaveMessageWithCallback( - gUnknown_020297EC == TRUE ? gSaveText_ThereIsADifferentFile : gSaveText_ThereIsAlreadyAFile, + gDifferentSaveFile == TRUE ? gSaveText_ThereIsADifferentFile : gSaveText_ThereIsAlreadyAFile, SaveDialogCB_DisplayOverwriteYesNoMenu); return SAVE_IN_PROGRESS; } @@ -653,7 +646,7 @@ static u8 SaveDialogCB_DisplayOverwriteYesNoMenu(void) static u8 SaveDialogCB_ProcessOverwriteYesNoMenu(void) { - switch(ProcessMenuInputNoWrap_()) + switch (ProcessMenuInputNoWrap_()) { case 0: //YES HideSaveDialog(); @@ -677,20 +670,20 @@ static u8 SaveDialogCB_DisplaySavingMessage(void) static u8 SaveDialogCB_DoSave(void) { - u8 a; - + bool8 saveSucceeded; + IncrementGameStat(0); - if(gUnknown_020297EC == TRUE) + if (gDifferentSaveFile == TRUE) { - a = sub_8125D44(4); - gUnknown_020297EC = FALSE; + saveSucceeded = TrySavingData(DIFFERENT_FILE_SAVE); + gDifferentSaveFile = FALSE; } else { - a = sub_8125D44(0); + saveSucceeded = TrySavingData(NORMAL_SAVE); } - - if(a == 1) + + if (saveSucceeded == TRUE) { //"(Player) saved the game." DisplaySaveMessageWithCallback(gSaveText_PlayerSavedTheGame, SaveDialogCB_SaveSuccess); @@ -700,14 +693,14 @@ static u8 SaveDialogCB_DoSave(void) //"Save error. Please exchange the backup memory." DisplaySaveMessageWithCallback(gSystemText_SaveErrorExchangeBackup, SaveDialogCB_SaveError); } - + SaveDialogStartTimeout(); return SAVE_IN_PROGRESS; } static u8 SaveDialogCB_SaveSuccess(void) { - if(MenuUpdateWindowText()) + if (MenuUpdateWindowText()) { PlaySE(SE_SAVE); saveDialogCallback = SaveDialogCB_ReturnSuccess; @@ -717,7 +710,7 @@ static u8 SaveDialogCB_SaveSuccess(void) static u8 SaveDialogCB_ReturnSuccess(void) { - if(!IsSEPlaying() && SaveDialogCheckForTimeoutOrKeypress()) + if (!IsSEPlaying() && SaveDialogCheckForTimeoutOrKeypress()) { sub_8071700(); return SAVE_SUCCESS; @@ -728,7 +721,7 @@ static u8 SaveDialogCB_ReturnSuccess(void) static u8 SaveDialogCB_SaveError(void) { - if(MenuUpdateWindowText()) + if (MenuUpdateWindowText()) { PlaySE(SE_BOO); saveDialogCallback = SaveDialogCB_ReturnError; @@ -738,7 +731,7 @@ static u8 SaveDialogCB_SaveError(void) static u8 SaveDialogCB_ReturnError(void) { - if(!SaveDialogCheckForTimeoutAndKeypress()) + if (!SaveDialogCheckForTimeoutAndKeypress()) return SAVE_IN_PROGRESS; else { @@ -754,25 +747,25 @@ static void sub_80719F0(void) static bool32 sub_80719FC(u8 *step) { - switch(*step) + switch (*step) { case 0: { u8 *addr; u32 size; - + REG_DISPCNT = 0; SetVBlankCallback(NULL); remove_some_task(); DmaClear16(3, PLTT, PLTT_SIZE); addr = (void *)VRAM; size = 0x18000; - while(1) + while (1) { DmaFill16(3, 0, addr, 0x1000); addr += 0x1000; size -= 0x1000; - if(size <= 0x1000) + if (size <= 0x1000) { DmaFill16(3, 0, addr, size); break; @@ -794,7 +787,7 @@ static bool32 sub_80719FC(u8 *step) case 3: { u32 savedIme; - + BlendPalettes(-1, 0x10, 0); SetVBlankCallback(sub_80719F0); savedIme = REG_IME; @@ -812,7 +805,7 @@ static bool32 sub_80719FC(u8 *step) void sub_8071B28(void) { - if(sub_80719FC(&gMain.state)) + if (sub_80719FC(&gMain.state)) { CreateTask(Task_8071B64, 0x50); SetMainCallback2(sub_8071B54); @@ -828,10 +821,10 @@ static void sub_8071B54(void) static void Task_8071B64(u8 taskId) { s16 *step = gTasks[taskId].data; - - if(!gPaletteFade.active) + + if (!gPaletteFade.active) { - switch(*step) + switch (*step) { case 0: MenuDisplayMessageBox(); @@ -845,7 +838,7 @@ static void Task_8071B64(u8 taskId) (*step)++; break; case 2: - if(!sub_8125E6C()) + if (!sub_8125E6C()) break; ClearSecretBase2Field_9_2(); (*step)++; @@ -857,7 +850,7 @@ static void Task_8071B64(u8 taskId) case 4: SetMainCallback2(gMain.savedCallback); DestroyTask(taskId); - break; + break; } } } |