diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main_menu.c | 390 |
1 files changed, 250 insertions, 140 deletions
diff --git a/src/main_menu.c b/src/main_menu.c index a4db5b1f5..4307e9696 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -25,6 +25,30 @@ #include "text_window_graphics.h" #include "constants/songs.h" +enum MainMenuType +{ + MAIN_MENU_NEWGAME = 0, + MAIN_MENU_CONTINUE, + MAIN_MENU_MYSTERYGIFT +}; + +enum MainMenuWindow +{ + MAIN_MENU_WINDOW_NEWGAME_ONLY = 0, + MAIN_MENU_WINDOW_CONTINUE, + MAIN_MENU_WINDOW_NEWGAME, + MAIN_MENU_WINDOW_MYSTERYGIFT, + MAIN_MENU_WINDOW_ERROR, + MAIN_MENU_WINDOW_COUNT +}; + +#define tMenuType data[0] +#define tCursorPos data[1] + +#define tUnused8 data[8] +#define tMGErrorMsgState data[9] +#define tMGErrorType data[10] + static bool32 MainMenuGpuInit(u8 a0); static void Task_SetWin0BldRegsAndCheckSaveFile(u8 taskId); static void PrintSaveErrorStatus(u8 taskId, const u8 *str); @@ -48,14 +72,14 @@ static void PrintDexCount(void); static void PrintBadgeCount(void); static void LoadUserFrameToBg(u8 bgId); static void SetStdFrame0OnBg(u8 bgId); -static void DrawBubbleBorder(const struct WindowTemplate * template); -static void DestroyWindowBubbleFrame(const struct WindowTemplate * template); +static void MainMenu_DrawWindow(const struct WindowTemplate * template); +static void MainMenu_EraseWindow(const struct WindowTemplate * template); static const u8 sString_Dummy[] = _(""); static const u8 sString_Newline[] = _("\n"); static const struct WindowTemplate sWindowTemplate[] = { - { + [MAIN_MENU_WINDOW_NEWGAME_ONLY] = { .bg = 0, .tilemapLeft = 3, .tilemapTop = 1, @@ -63,7 +87,8 @@ static const struct WindowTemplate sWindowTemplate[] = { .height = 2, .paletteNum = 15, .baseBlock = 0x001 - }, { + }, + [MAIN_MENU_WINDOW_CONTINUE] = { .bg = 0, .tilemapLeft = 3, .tilemapTop = 1, @@ -71,7 +96,8 @@ static const struct WindowTemplate sWindowTemplate[] = { .height = 10, .paletteNum = 15, .baseBlock = 0x001 - }, { + }, + [MAIN_MENU_WINDOW_NEWGAME] = { .bg = 0, .tilemapLeft = 3, .tilemapTop = 13, @@ -79,7 +105,8 @@ static const struct WindowTemplate sWindowTemplate[] = { .height = 2, .paletteNum = 15, .baseBlock = 0x0f1 - }, { + }, + [MAIN_MENU_WINDOW_MYSTERYGIFT] = { .bg = 0, .tilemapLeft = 3, .tilemapTop = 17, @@ -87,7 +114,8 @@ static const struct WindowTemplate sWindowTemplate[] = { .height = 2, .paletteNum = 15, .baseBlock = 0x121 - }, { + }, + [MAIN_MENU_WINDOW_ERROR] = { .bg = 0, .tilemapLeft = 3, .tilemapTop = 15, @@ -95,7 +123,8 @@ static const struct WindowTemplate sWindowTemplate[] = { .height = 4, .paletteNum = 15, .baseBlock = 0x001 - }, DUMMY_WIN_TEMPLATE + }, + [MAIN_MENU_WINDOW_COUNT] = DUMMY_WIN_TEMPLATE }; static const u16 sBgPal00[] = INCBIN_U16("data/main_menu/unk_8234648.gbapal"); @@ -114,7 +143,7 @@ static const struct BgTemplate sBgTemplate[] = { } }; -static const u8 gUnknown_8234694[] = { 0, 1, 2 }; +static const u8 sMenuCursorYMax[] = { 0, 1, 2 }; static void CB2_MainMenu(void) { @@ -186,11 +215,16 @@ static bool32 MainMenuGpuInit(u8 a0) SetMainCallback2(CB2_MainMenu); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON); taskId = CreateTask(Task_SetWin0BldRegsAndCheckSaveFile, 0); - gTasks[taskId].data[1] = 0; - gTasks[taskId].data[8] = a0; + gTasks[taskId].tCursorPos = 0; + gTasks[taskId].tUnused8 = a0; return FALSE; } +/* + * The entire screen is darkened slightly except at WIN0 to indicate + * the player cursor position. + */ + static void Task_SetWin0BldRegsAndCheckSaveFile(u8 taskId) { if (!gPaletteFade.active) @@ -204,45 +238,45 @@ static void Task_SetWin0BldRegsAndCheckSaveFile(u8 taskId) SetGpuReg(REG_OFFSET_BLDY, 7); switch (gSaveFileStatus) { - case 1: + case SAVE_STATUS_OK: LoadUserFrameToBg(0); if (Flag_0x839_IsSet() == TRUE) { - gTasks[taskId].data[0] = 2; + gTasks[taskId].tMenuType = MAIN_MENU_MYSTERYGIFT; } else { - gTasks[taskId].data[0] = 1; + gTasks[taskId].tMenuType = MAIN_MENU_CONTINUE; } gTasks[taskId].func = Task_SetWin0BldRegsNoSaveFileCheck; break; - case 2: + case SAVE_STATUS_INVALID: SetStdFrame0OnBg(0); - gTasks[taskId].data[0] = 0; + gTasks[taskId].tMenuType = MAIN_MENU_NEWGAME; PrintSaveErrorStatus(taskId, gText_SaveFileHasBeenDeleted); break; - case 0xFF: + case SAVE_STATUS_ERROR: SetStdFrame0OnBg(0); - gTasks[taskId].data[0] = 1; + gTasks[taskId].tMenuType = MAIN_MENU_CONTINUE; PrintSaveErrorStatus(taskId, gText_SaveFileCorruptedPrevWillBeLoaded); if (Flag_0x839_IsSet() == TRUE) { - gTasks[taskId].data[0] = 2; + gTasks[taskId].tMenuType = MAIN_MENU_MYSTERYGIFT; } else { - gTasks[taskId].data[0] = 1; + gTasks[taskId].tMenuType = MAIN_MENU_CONTINUE; } break; - case 0: + case SAVE_STATUS_EMPTY: default: LoadUserFrameToBg(0); - gTasks[taskId].data[0] = 0; + gTasks[taskId].tMenuType = MAIN_MENU_NEWGAME; gTasks[taskId].func = Task_SetWin0BldRegsNoSaveFileCheck; break; - case 4: + case SAVE_STATUS_NO_FLASH: SetStdFrame0OnBg(0); - gTasks[taskId].data[0] = 0; + gTasks[taskId].tMenuType = MAIN_MENU_NEWGAME; PrintSaveErrorStatus(taskId, gText_1MSubCircuitBoardNotInstalled); break; } @@ -263,12 +297,12 @@ static void Task_SaveErrorStatus_RunPrinterThenWaitButton(u8 taskId) if (!gPaletteFade.active) { RunTextPrinters(); - if (!IsTextPrinterActive(4) && JOY_NEW(A_BUTTON)) + if (!IsTextPrinterActive(MAIN_MENU_WINDOW_ERROR) && JOY_NEW(A_BUTTON)) { - ClearWindowTilemap(4); - DestroyWindowBubbleFrame(&sWindowTemplate[4]); + ClearWindowTilemap(MAIN_MENU_WINDOW_ERROR); + MainMenu_EraseWindow(&sWindowTemplate[MAIN_MENU_WINDOW_ERROR]); LoadUserFrameToBg(0); - if (gTasks[taskId].data[0] == 0) + if (gTasks[taskId].tMenuType == MAIN_MENU_NEWGAME) gTasks[taskId].func = Task_SetWin0BldRegsNoSaveFileCheck; else gTasks[taskId].func = Task_PrintMainMenuText; @@ -284,12 +318,10 @@ static void Task_SetWin0BldRegsNoSaveFileCheck(u8 taskId) SetGpuReg(REG_OFFSET_WIN0V, 0); SetGpuReg(REG_OFFSET_WININ, 0x0001); SetGpuReg(REG_OFFSET_WINOUT, 0x0021); - SetGpuReg(REG_OFFSET_BLDCNT, - BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | - BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0)); SetGpuReg(REG_OFFSET_BLDY, 7); - if (gTasks[taskId].data[0] == 0) + if (gTasks[taskId].tMenuType == 0) gTasks[taskId].func = Task_ExecuteMainMenuSelection; else gTasks[taskId].func = Task_WaitFadeAndPrintMainMenuText; @@ -311,9 +343,7 @@ static void Task_PrintMainMenuText(u8 taskId) SetGpuReg(REG_OFFSET_WIN0V, 0); SetGpuReg(REG_OFFSET_WININ, 0x0001); SetGpuReg(REG_OFFSET_WINOUT, 0x0021); - SetGpuReg(REG_OFFSET_BLDCNT, - BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | - BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0)); SetGpuReg(REG_OFFSET_BLDY, 7); if (gSaveBlock2Ptr->playerGender == MALE) @@ -321,47 +351,47 @@ static void Task_PrintMainMenuText(u8 taskId) else pal = RGB(31, 3, 21); LoadPalette(&pal, 0xF1, 2); - switch (gTasks[taskId].data[0]) + switch (gTasks[taskId].tMenuType) { - case 0: + case MAIN_MENU_NEWGAME: default: - FillWindowPixelBuffer(0, PIXEL_FILL(10)); - AddTextPrinterParameterized3(0, 2, 2, 2, sTextColor1, -1, gText_NewGame); - DrawBubbleBorder(&sWindowTemplate[0]); - PutWindowTilemap(0); - CopyWindowToVram(0, 3); + FillWindowPixelBuffer(MAIN_MENU_WINDOW_NEWGAME_ONLY, PIXEL_FILL(10)); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_NEWGAME_ONLY, 2, 2, 2, sTextColor1, -1, gText_NewGame); + MainMenu_DrawWindow(&sWindowTemplate[MAIN_MENU_WINDOW_NEWGAME_ONLY]); + PutWindowTilemap(MAIN_MENU_WINDOW_NEWGAME_ONLY); + CopyWindowToVram(MAIN_MENU_WINDOW_NEWGAME_ONLY, 3); break; - case 1: - FillWindowPixelBuffer(1, PIXEL_FILL(10)); - FillWindowPixelBuffer(2, PIXEL_FILL(10)); - AddTextPrinterParameterized3(1, 2, 2, 2, sTextColor1, -1, gText_Continue); - AddTextPrinterParameterized3(2, 2, 2, 2, sTextColor1, -1, gText_NewGame); + case MAIN_MENU_CONTINUE: + FillWindowPixelBuffer(MAIN_MENU_WINDOW_CONTINUE, PIXEL_FILL(10)); + FillWindowPixelBuffer(MAIN_MENU_WINDOW_NEWGAME, PIXEL_FILL(10)); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 2, 2, sTextColor1, -1, gText_Continue); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_NEWGAME, 2, 2, 2, sTextColor1, -1, gText_NewGame); PrintContinueStats(); - DrawBubbleBorder(&sWindowTemplate[1]); - DrawBubbleBorder(&sWindowTemplate[2]); - PutWindowTilemap(1); - PutWindowTilemap(2); - CopyWindowToVram(1, 2); - CopyWindowToVram(2, 3); + MainMenu_DrawWindow(&sWindowTemplate[MAIN_MENU_WINDOW_CONTINUE]); + MainMenu_DrawWindow(&sWindowTemplate[MAIN_MENU_WINDOW_NEWGAME]); + PutWindowTilemap(MAIN_MENU_WINDOW_CONTINUE); + PutWindowTilemap(MAIN_MENU_WINDOW_NEWGAME); + CopyWindowToVram(MAIN_MENU_WINDOW_CONTINUE, 2); + CopyWindowToVram(MAIN_MENU_WINDOW_NEWGAME, 3); break; - case 2: - FillWindowPixelBuffer(1, PIXEL_FILL(10)); - FillWindowPixelBuffer(2, PIXEL_FILL(10)); - FillWindowPixelBuffer(3, PIXEL_FILL(10)); - AddTextPrinterParameterized3(1, 2, 2, 2, sTextColor1, -1, gText_Continue); - AddTextPrinterParameterized3(2, 2, 2, 2, sTextColor1, -1, gText_NewGame); - gTasks[taskId].data[10] = 1; - AddTextPrinterParameterized3(3, 2, 2, 2, sTextColor1, -1, gText_MysteryGift); + case MAIN_MENU_MYSTERYGIFT: + FillWindowPixelBuffer(MAIN_MENU_WINDOW_CONTINUE, PIXEL_FILL(10)); + FillWindowPixelBuffer(MAIN_MENU_WINDOW_NEWGAME, PIXEL_FILL(10)); + FillWindowPixelBuffer(MAIN_MENU_WINDOW_MYSTERYGIFT, PIXEL_FILL(10)); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 2, 2, sTextColor1, -1, gText_Continue); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_NEWGAME, 2, 2, 2, sTextColor1, -1, gText_NewGame); + gTasks[taskId].tMGErrorType = 1; + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_MYSTERYGIFT, 2, 2, 2, sTextColor1, -1, gText_MysteryGift); PrintContinueStats(); - DrawBubbleBorder(&sWindowTemplate[1]); - DrawBubbleBorder(&sWindowTemplate[2]); - DrawBubbleBorder(&sWindowTemplate[3]); - PutWindowTilemap(1); - PutWindowTilemap(2); - PutWindowTilemap(3); - CopyWindowToVram(1, 2); - CopyWindowToVram(2, 2); - CopyWindowToVram(3, 3); + MainMenu_DrawWindow(&sWindowTemplate[MAIN_MENU_WINDOW_CONTINUE]); + MainMenu_DrawWindow(&sWindowTemplate[MAIN_MENU_WINDOW_NEWGAME]); + MainMenu_DrawWindow(&sWindowTemplate[MAIN_MENU_WINDOW_MYSTERYGIFT]); + PutWindowTilemap(MAIN_MENU_WINDOW_CONTINUE); + PutWindowTilemap(MAIN_MENU_WINDOW_NEWGAME); + PutWindowTilemap(MAIN_MENU_WINDOW_MYSTERYGIFT); + CopyWindowToVram(MAIN_MENU_WINDOW_CONTINUE, 2); + CopyWindowToVram(MAIN_MENU_WINDOW_NEWGAME, 2); + CopyWindowToVram(MAIN_MENU_WINDOW_MYSTERYGIFT, 3); break; } gTasks[taskId].func = Task_WaitDma3AndFadeIn; @@ -380,7 +410,7 @@ static void Task_WaitDma3AndFadeIn(u8 taskId) static void Task_UpdateVisualSelection(u8 taskId) { - MoveWindowByMenuTypeAndCursorPos(gTasks[taskId].data[0], gTasks[taskId].data[1]); + MoveWindowByMenuTypeAndCursorPos(gTasks[taskId].tMenuType, gTasks[taskId].tCursorPos); gTasks[taskId].func = Task_HandleMenuInput; } @@ -394,36 +424,36 @@ static void Task_HandleMenuInput(u8 taskId) static void Task_ExecuteMainMenuSelection(u8 taskId) { - s32 r0; + s32 menuAction; if (!gPaletteFade.active) { - switch (gTasks[taskId].data[0]) + switch (gTasks[taskId].tMenuType) { default: - case 0: - r0 = 0; + case MAIN_MENU_NEWGAME: + menuAction = MAIN_MENU_NEWGAME; break; - case 1: - switch (gTasks[taskId].data[1]) + case MAIN_MENU_CONTINUE: + switch (gTasks[taskId].tCursorPos) { default: case 0: - r0 = 1; + menuAction = MAIN_MENU_CONTINUE; break; case 1: - r0 = 0; + menuAction = MAIN_MENU_NEWGAME; break; } break; - case 2: - switch (gTasks[taskId].data[1]) + case MAIN_MENU_MYSTERYGIFT: + switch (gTasks[taskId].tCursorPos) { default: case 0: - r0 = 1; + menuAction = MAIN_MENU_CONTINUE; break; case 1: - r0 = 0; + menuAction = MAIN_MENU_NEWGAME; break; case 2: if (!IsWirelessAdapterConnected()) @@ -435,29 +465,29 @@ static void Task_ExecuteMainMenuSelection(u8 taskId) } else { - r0 = 2; + menuAction = MAIN_MENU_MYSTERYGIFT; } break; } break; } - switch (r0) + switch (menuAction) { default: - case 0: + case MAIN_MENU_NEWGAME: gUnknown_2031DE0 = 0; FreeAllWindowBuffers(); DestroyTask(taskId); StartNewGameScene(); break; - case 1: + case MAIN_MENU_CONTINUE: gPlttBufferUnfaded[0] = RGB_BLACK; gPlttBufferFaded[0] = RGB_BLACK; gUnknown_2031DE0 = 0; FreeAllWindowBuffers(); TrySetUpQuestLogScenes_ElseContinueFromSave(taskId); break; - case 2: + case MAIN_MENU_MYSTERYGIFT: SetMainCallback2(c2_mystery_gift); HelpSystem_Disable(); FreeAllWindowBuffers(); @@ -469,24 +499,24 @@ static void Task_ExecuteMainMenuSelection(u8 taskId) static void Task_MysteryGiftError(u8 taskId) { - switch (gTasks[taskId].data[9]) + switch (gTasks[taskId].tMGErrorMsgState) { case 0: FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); - if (gTasks[taskId].data[10] == 1) + if (gTasks[taskId].tMGErrorType == 1) PrintMessageOnWindow4(gText_WirelessAdapterIsNotConnected); else PrintMessageOnWindow4(gText_MysteryGiftCantBeUsedWhileWirelessAdapterIsAttached); - gTasks[taskId].data[9]++; + gTasks[taskId].tMGErrorMsgState++; break; case 1: if (!gPaletteFade.active) - gTasks[taskId].data[9]++; + gTasks[taskId].tMGErrorMsgState++; break; case 2: RunTextPrinters(); if (!IsTextPrinterActive(4)) - gTasks[taskId].data[9]++; + gTasks[taskId].tMGErrorMsgState++; break; case 3: if (JOY_NEW(A_BUTTON | B_BUTTON)) @@ -510,36 +540,36 @@ static void Task_ReturnToTileScreen(u8 taskId) static void MoveWindowByMenuTypeAndCursorPos(u8 menuType, u8 cursorPos) { - u16 win0v1, win0v2; + u16 win0vTop, win0vBot; SetGpuReg(REG_OFFSET_WIN0H, 0x12DE); switch (menuType) { default: - case 0: - win0v1 = 0x00; - win0v2 = 0x20; + case MAIN_MENU_NEWGAME: + win0vTop = 0x00 << 8; + win0vBot = 0x20; break; - case 1: - case 2: + case MAIN_MENU_CONTINUE: + case MAIN_MENU_MYSTERYGIFT: switch (cursorPos) { default: - case 0: - win0v1 = 0x00; - win0v2 = 0x60; + case 0: // CONTINUE + win0vTop = 0x00 << 8; + win0vBot = 0x60; break; - case 1: - win0v1 = 0x60 << 8; - win0v2 = 0x80; + case 1: // NEW GAME + win0vTop = 0x60 << 8; + win0vBot = 0x80; break; - case 2: - win0v1 = 0x80 << 8; - win0v2 = 0xA0; + case 2: // MYSTERY GIFT + win0vTop = 0x80 << 8; + win0vBot = 0xA0; break; } break; } - SetGpuReg(REG_OFFSET_WIN0V, (win0v1 + (2 << 8)) | (win0v2 - 2)); + SetGpuReg(REG_OFFSET_WIN0V, (win0vTop + (2 << 8)) | (win0vBot - 2)); } static bool8 HandleMenuInput(u8 taskId) @@ -559,14 +589,14 @@ static bool8 HandleMenuInput(u8 taskId) SetGpuReg(REG_OFFSET_WIN0V, 0xA0); gTasks[taskId].func = Task_ReturnToTileScreen; } - else if (JOY_NEW(DPAD_UP) && gTasks[taskId].data[1] > 0) + else if (JOY_NEW(DPAD_UP) && gTasks[taskId].tCursorPos > 0) { - gTasks[taskId].data[1]--; + gTasks[taskId].tCursorPos--; return TRUE; } - else if (JOY_NEW(DPAD_DOWN) && gTasks[taskId].data[1] < gUnknown_8234694[gTasks[taskId].data[0]]) + else if (JOY_NEW(DPAD_DOWN) && gTasks[taskId].tCursorPos < sMenuCursorYMax[gTasks[taskId].tMenuType]) { - gTasks[taskId].data[1]++; + gTasks[taskId].tCursorPos++; return TRUE; } @@ -575,11 +605,11 @@ static bool8 HandleMenuInput(u8 taskId) static void PrintMessageOnWindow4(const u8 *str) { - FillWindowPixelBuffer(4, PIXEL_FILL(10)); - DrawBubbleBorder(&sWindowTemplate[4]); - AddTextPrinterParameterized3(4, 2, 0, 2, sTextColor1, 2, str); - PutWindowTilemap(4); - CopyWindowToVram(4, 2); + FillWindowPixelBuffer(MAIN_MENU_WINDOW_ERROR, PIXEL_FILL(10)); + MainMenu_DrawWindow(&sWindowTemplate[4]); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_ERROR, 2, 0, 2, sTextColor1, 2, str); + PutWindowTilemap(MAIN_MENU_WINDOW_ERROR); + CopyWindowToVram(MAIN_MENU_WINDOW_ERROR, 2); SetGpuReg(REG_OFFSET_WIN0H, 0x13DD); SetGpuReg(REG_OFFSET_WIN0V, 0x739D); } @@ -597,12 +627,12 @@ static void PrintPlayerName(void) s32 i; u8 name[OT_NAME_LENGTH + 1]; u8 *ptr; - AddTextPrinterParameterized3(1, 2, 2, 18, sTextColor2, -1, gText_Player); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 2, 18, sTextColor2, -1, gText_Player); ptr = name; for (i = 0; i < OT_NAME_LENGTH; i++) *ptr++ = gSaveBlock2Ptr->playerName[i]; *ptr = EOS; - AddTextPrinterParameterized3(1, 2, 62, 18, sTextColor2, -1, name); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 62, 18, sTextColor2, -1, name); } static void PrintPlayTime(void) @@ -610,11 +640,11 @@ static void PrintPlayTime(void) u8 strbuf[30]; u8 *ptr; - AddTextPrinterParameterized3(1, 2, 2, 34, sTextColor2, -1, gText_Time); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 2, 34, sTextColor2, -1, gText_Time); ptr = ConvertIntToDecimalStringN(strbuf, gSaveBlock2Ptr->playTimeHours, STR_CONV_MODE_LEFT_ALIGN, 3); *ptr++ = CHAR_COLON; ConvertIntToDecimalStringN(ptr, gSaveBlock2Ptr->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2); - AddTextPrinterParameterized3(1, 2, 62, 34, sTextColor2, -1, strbuf); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 62, 34, sTextColor2, -1, strbuf); } static void PrintDexCount(void) @@ -628,10 +658,10 @@ static void PrintDexCount(void) dexcount = GetNationalPokedexCount(FLAG_GET_CAUGHT); else dexcount = GetKantoPokedexCount(FLAG_GET_CAUGHT); - AddTextPrinterParameterized3(1, 2, 2, 50, sTextColor2, -1, gText_Pokedex); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 2, 50, sTextColor2, -1, gText_Pokedex); ptr = ConvertIntToDecimalStringN(strbuf, dexcount, STR_CONV_MODE_LEFT_ALIGN, 3); StringAppend(ptr, gTextJPDummy_Hiki); - AddTextPrinterParameterized3(1, 2, 62, 50, sTextColor2, -1, strbuf); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 62, 50, sTextColor2, -1, strbuf); } } @@ -646,40 +676,120 @@ static void PrintBadgeCount(void) if (FlagGet(flagId)) nbadges++; } - AddTextPrinterParameterized3(1, 2, 2, 66, sTextColor2, -1, gText_Badges); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 2, 66, sTextColor2, -1, gText_Badges); ptr = ConvertIntToDecimalStringN(strbuf, nbadges, STR_CONV_MODE_LEADING_ZEROS, 1); StringAppend(ptr, gTextJPDummy_Ko); - AddTextPrinterParameterized3(1, 2, 62, 66, sTextColor2, -1, strbuf); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 62, 66, sTextColor2, -1, strbuf); } static void LoadUserFrameToBg(u8 bgId) { LoadBgTiles(bgId, GetUserFrameGraphicsInfo(gSaveBlock2Ptr->optionsWindowFrameType)->tiles, 0x120, 0x1B1); LoadPalette(GetUserFrameGraphicsInfo(gSaveBlock2Ptr->optionsWindowFrameType)->palette, 0x20, 0x20); - DestroyWindowBubbleFrame(&sWindowTemplate[4]); + MainMenu_EraseWindow(&sWindowTemplate[MAIN_MENU_WINDOW_ERROR]); } static void SetStdFrame0OnBg(u8 bgId) { - TextWindow_SetStdFrame0_WithPal(0, 0x1B1, 0x20); - DestroyWindowBubbleFrame(&sWindowTemplate[4]); + TextWindow_SetStdFrame0_WithPal(MAIN_MENU_WINDOW_NEWGAME_ONLY, 0x1B1, 0x20); + MainMenu_EraseWindow(&sWindowTemplate[MAIN_MENU_WINDOW_ERROR]); } -static void DrawBubbleBorder(const struct WindowTemplate * windowTemplate) +static void MainMenu_DrawWindow(const struct WindowTemplate * windowTemplate) { - FillBgTilemapBufferRect(windowTemplate->bg, 0x1B1, windowTemplate->tilemapLeft - 1, windowTemplate->tilemapTop - 1, 1, 1, 2); - FillBgTilemapBufferRect(windowTemplate->bg, 0x1B2, windowTemplate->tilemapLeft, windowTemplate->tilemapTop - 1, windowTemplate->width, windowTemplate->height, 2); - FillBgTilemapBufferRect(windowTemplate->bg, 0x1B3, windowTemplate->tilemapLeft + windowTemplate->width, windowTemplate->tilemapTop - 1, 1, 1, 2); - FillBgTilemapBufferRect(windowTemplate->bg, 0x1B4, windowTemplate->tilemapLeft - 1, windowTemplate->tilemapTop, 1, windowTemplate->height, 2); - FillBgTilemapBufferRect(windowTemplate->bg, 0x1B6, windowTemplate->tilemapLeft + windowTemplate->width, windowTemplate->tilemapTop, 1, windowTemplate->height, 2); - FillBgTilemapBufferRect(windowTemplate->bg, 0x1B7, windowTemplate->tilemapLeft - 1, windowTemplate->tilemapTop + windowTemplate->height, 1, 1, 2); - FillBgTilemapBufferRect(windowTemplate->bg, 0x1B8, windowTemplate->tilemapLeft, windowTemplate->tilemapTop + windowTemplate->height, windowTemplate->width, 1, 2); - FillBgTilemapBufferRect(windowTemplate->bg, 0x1B9, windowTemplate->tilemapLeft + windowTemplate->width, windowTemplate->tilemapTop + windowTemplate->height, 1, 1, 2); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B1, + windowTemplate->tilemapLeft - 1, + windowTemplate->tilemapTop - 1, + 1, + 1, + 2 + ); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B2, + windowTemplate->tilemapLeft, + windowTemplate->tilemapTop - 1, + windowTemplate->width, + windowTemplate->height, + 2 + ); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B3, + windowTemplate->tilemapLeft + + windowTemplate->width, + windowTemplate->tilemapTop - 1, + 1, + 1, + 2 + ); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B4, + windowTemplate->tilemapLeft - 1, + windowTemplate->tilemapTop, + 1, + windowTemplate->height, + 2 + ); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B6, + windowTemplate->tilemapLeft + + windowTemplate->width, + windowTemplate->tilemapTop, + 1, + windowTemplate->height, + 2 + ); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B7, + windowTemplate->tilemapLeft - 1, + windowTemplate->tilemapTop + + windowTemplate->height, + 1, + 1, + 2 + ); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B8, + windowTemplate->tilemapLeft, + windowTemplate->tilemapTop + + windowTemplate->height, + windowTemplate->width, + 1, + 2 + ); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B9, + windowTemplate->tilemapLeft + + windowTemplate->width, + windowTemplate->tilemapTop + + windowTemplate->height, + 1, + 1, + 2 + ); CopyBgTilemapBufferToVram(windowTemplate->bg); } -static void DestroyWindowBubbleFrame(const struct WindowTemplate * windowTemplate) +static void MainMenu_EraseWindow(const struct WindowTemplate * windowTemplate) { - FillBgTilemapBufferRect(windowTemplate->bg, 0x000, windowTemplate->tilemapLeft - 1, windowTemplate->tilemapTop - 1, windowTemplate->tilemapLeft + windowTemplate->width + 1, windowTemplate->tilemapTop + windowTemplate->height + 1, 2); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x000, + windowTemplate->tilemapLeft - 1, + windowTemplate->tilemapTop - 1, + windowTemplate->tilemapLeft + + windowTemplate->width + 1, + windowTemplate->tilemapTop + + windowTemplate->height + 1, + 2 + ); CopyBgTilemapBufferToVram(windowTemplate->bg); } |