diff --git a/include/common_structs.h b/include/common_structs.h index 55e428e6ab..9e32f2fd00 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -2164,7 +2164,7 @@ typedef struct MenuPanel { /* 0x01 */ s8 col; /* 0x02 */ s8 row; /* 0x03 */ u8 selected; // usually set to the current value from gridData - /* 0x04 */ s8 page; // filemenu: 0 = select, 1 = delete, 3 = copy from, 4 = copy to, all else = save + /* 0x04 */ s8 state; // filemenu: 0 = select, 1 = delete, 3 = copy from, 4 = copy to, all else = save /* 0x05 */ s8 numCols; /* 0x06 */ s8 numRows; /* 0x07 */ s8 numPages; // unsure diff --git a/include/enums.h b/include/enums.h index 2c187718f2..be51d6fbf2 100644 --- a/include/enums.h +++ b/include/enums.h @@ -5369,14 +5369,14 @@ enum FileMenuMessages { /* 31 */ FILE_MESSAGE_HAS_BEEN_CREATED, // has been created.[End] #if VERSION_PAL // TODO: determine where these new entries should be placed - UNK1, - UNK2, + FILE_MESSAGE_PAL_UNK1, + FILE_MESSAGE_PAL_UNK2, #endif /* 32 */ FILE_MESSAGE_ENTER_A_FILE_NAME, // Enter a file name![End] /* 33 */ FILE_MESSAGE_QUESTION, // ?[End] /* 34 */ FILE_MESSAGE_PERIOD_34, // .[End] #if VERSION_PAL - FILE_MESSAGE_BASE_UNK, + FILE_MESSAGE_PAL_UNK3, #endif }; @@ -6033,6 +6033,12 @@ enum MsgChars { MSG_CHAR_UNK_C3 = 0xC3, + MSG_CHAR_MENU_SPACE = 0xC6, + MSG_CHAR_MENU_USE_CHARSET_B = 0xC7, + MSG_CHAR_MENU_USE_CHARSET_A = 0xC8, + MSG_CHAR_MENU_BACK = 0xC9, + MSG_CHAR_MENU_END = 0xCA, + // special character codes used when reading from the source buffer MSG_CHAR_READ_ENDL = 0xF0, MSG_CHAR_READ_WAIT = 0xF1, diff --git a/include/filemenu.h b/include/filemenu.h index caead1bb78..3525812c79 100644 --- a/include/filemenu.h +++ b/include/filemenu.h @@ -4,14 +4,65 @@ #include "common.h" #include "filemenu.h" +#define CENTER_WINDOW_X(id) (((gWindows[id].parent != WIN_NONE) \ + ? (gWindows[gWindows[id].parent].width / 2) \ + : (SCREEN_WIDTH / 2)) \ + - (gWindows[id].width / 2)) + +#define CENTER_WINDOW_Y(id) (((gWindows[id].parent != WIN_NONE) \ + ? (gWindows[gWindows[id].parent].height / 2) \ + : (SCREEN_HEIGHT / 2)) \ + - (gWindows[id].height / 2)) + +enum { + FILE_MENU_MAIN = 0, // file selection + FILE_MENU_CONFIRM = 1, // confirmation prompt is open + FILE_MENU_MESSAGE = 2, // message is displayed, e.g. "File X has been deleted." + FILE_MENU_INPUT_NAME = 3, // "Enter a file name!" screen + FILE_MENU_SELECT_LANG = 4, // PAL only +}; + enum { - PAGE_0, - PAGE_1, + // states for main menu + FM_MAIN_SELECT_FILE = 0, // choose which file to load + FM_MAIN_SELECT_DELETE, // choose which file to delete +#if !VERSION_PAL + FM_MAIN_SELECT_LANG_DUMMY, // non-PAL versions have an unimplemented dummy language select +#endif + FM_MAIN_SELECT_COPY_FROM, + FM_MAIN_SELECT_COPY_TO, + FM_MAIN_SELECT_LANG_PAL, + + // states for confirm submenu + FM_CONFIRM_DELETE = 0, #if !VERSION_PAL - PAGE_2, + FM_CONFIRM_DUMMY, #endif - PAGE_3, - PAGE_4, + FM_CONFIRM_CREATE, + FM_CONFIRM_COPY, // unused + FM_CONFIRM_START, + + // states for message submenu + FM_MESSAGE_DELETED = 0, +#if !VERSION_PAL + FM_MESSAGE_DUMMY, +#endif + FM_MESSAGE_COPIED, + FM_MESSAGE_CREATED, + + // states for input submenu + FM_INPUT_CHARSET_A = 0, + FM_INPUT_CHARSET_B, +}; + +enum { + FM_MAIN_OPT_FILE_1, + FM_MAIN_OPT_FILE_2, + FM_MAIN_OPT_FILE_3, + FM_MAIN_OPT_FILE_4, + FM_MAIN_OPT_DELETE, + FM_MAIN_OPT_COPY, + FM_MAIN_OPT_CANCEL, }; extern MenuPanel* filemenu_menus[]; @@ -44,7 +95,7 @@ extern u8 D_filemenu_8025095C[4]; f32* scaleX, f32* scaleY,\ f32* rotX, f32* rotY, f32* rotZ,\ s32* darkening,\ - s32* opacity);\ + s32* opacity) WINDOW_UPDATE_FUNC(filemenu_update_show_name_input); WINDOW_UPDATE_FUNC(filemenu_update_show_options_left); diff --git a/include/functions.h b/include/functions.h index a2540c5eb2..1bc2d29952 100644 --- a/include/functions.h +++ b/include/functions.h @@ -110,10 +110,10 @@ void pause_handle_input(s32 buttonsPressed, s32 buttonsHeld); void pause_cleanup(void); // file menu stuff -void filemenu_init(s32); +void filemenu_init(s32 mode); void filemenu_cleanup(void); void filemenu_update(void); -s32 func_80244BC4(void); +s32 filemenu_get_exit_mode(void); void filemenu_set_selected(MenuPanel* menu, s32 col, s32 row); void filemenu_set_cursor_alpha(s32 arg0); void filemenu_set_cursor_goal_pos(s32 windowIndex, s32 posX, s32 posY); diff --git a/include/macros.h b/include/macros.h index 9f2ea1b920..09fcd29ee1 100644 --- a/include/macros.h +++ b/include/macros.h @@ -81,7 +81,7 @@ #define ITEM_MENU_PAGE(index) (&gPauseItemsPages[index]) #define MENU_PANEL_SELECTED_GRID_DATA(panel) \ - (panel)->gridData[(panel)->page * (panel)->numCols * (panel)->numRows + \ + (panel)->gridData[(panel)->state * (panel)->numCols * (panel)->numRows + \ (panel)->numCols * (panel)->row + \ (panel)->col] diff --git a/src/battle/btl_states_menus.c b/src/battle/btl_states_menus.c index fb6ceae0c2..7d7cddeb99 100644 --- a/src/battle/btl_states_menus.c +++ b/src/battle/btl_states_menus.c @@ -444,11 +444,11 @@ BSS s32 D_802AD6D4; void create_battle_popup_menu(PopupMenu* popup); s32 get_player_anim_for_status(s32 animID); -void func_802A3C98(void* data, s32 x, s32 y); -void func_802A43DC(void* data, s32 x, s32 y); -void func_802A4448(void* data, s32 x, s32 y); -void func_802A4494(void* data, s32 x, s32 y); -void func_802A4534(void* data, s32 x, s32 y); +void btl_menu_moves_draw_content(void* data, s32 x, s32 y); +void btl_menu_moves_show_title(void* data, s32 x, s32 y); +void btl_menu_moves_show_icon(void* data, s32 x, s32 y); +void btl_menu_moves_show_desc(void* data, s32 x, s32 y); +void btl_menu_moves_show_error(void* data, s32 x, s32 y); void btl_menu_strats_draw_content(void* data, s32 x, s32 y); void btl_menu_strats_show_title(void* data, s32 x, s32 y); void btl_menu_strats_show_desc(void* data, s32 x, s32 y); @@ -1191,21 +1191,21 @@ s32 btl_submenu_moves_update(void) { moveX = BattleMenu_Moves_PosX; moveY = BattleMenu_Moves_PosY; if (!BattleMenu_UsingSpiritsSubmenu) { - set_window_properties(1, moveX, moveY, 150, (D_802AD10E * 13) + 28, 0, func_802A3C98, NULL, -1); - set_window_properties(2, moveX + 16, moveY - 6, 90, 16, 1, func_802A43DC, NULL, -1); - set_window_properties(3, moveX + 114, moveY - 12, 32, 32, 1, func_802A4448, NULL, -1); + set_window_properties(WIN_BTL_MOVES_MENU, moveX, moveY, 150, (D_802AD10E * 13) + 28, 0, btl_menu_moves_draw_content, NULL, -1); + set_window_properties(WIN_BTL_MOVES_TITLE, moveX + 16, moveY - 6, 90, 16, 1, btl_menu_moves_show_title, NULL, -1); + set_window_properties(WIN_BTL_MOVES_ICON, moveX + 114, moveY - 12, 32, 32, 1, btl_menu_moves_show_icon, NULL, -1); } else { s16 new_var; - set_window_properties(1, moveX, moveY, 144, (D_802AD10E * 13) + 28, 0, func_802A3C98, NULL, -1); + set_window_properties(WIN_BTL_MOVES_MENU, moveX, moveY, 144, (D_802AD10E * 13) + 28, 0, btl_menu_moves_draw_content, NULL, -1); new_var = moveY; // todo required to match - set_window_properties(4, moveX + 10, new_var - 6, 100, 16, 1, func_802A43DC, 0, -1); - set_window_properties(5, moveX + 110, new_var - 12, 32, 35, 1, func_802A4448, 0, -1); + set_window_properties(WIN_BTL_SPIRITS_TITLE, moveX + 10, new_var - 6, 100, 16, 1, btl_menu_moves_show_title, 0, -1); + set_window_properties(WIN_BTL_SPIRITS_ICON, moveX + 110, new_var - 12, 32, 35, 1, btl_menu_moves_show_icon, 0, -1); } moveX = 20; moveY = BattleMenu_Moves_PosY; - set_window_properties(8, moveX, 186, 280, 32, WINDOW_PRIORITY_20, func_802A4494, NULL, -1); + set_window_properties(WIN_BTL_DESC_BOX, moveX, 186, 280, 32, WINDOW_PRIORITY_20, btl_menu_moves_show_desc, NULL, -1); set_window_update(WIN_BTL_MOVES_MENU, WINDOW_UPDATE_SHOW); if (!BattleMenu_UsingSpiritsSubmenu) { set_window_update(WIN_BTL_MOVES_TITLE, WINDOW_UPDATE_SHOW); @@ -1419,7 +1419,7 @@ s32 btl_submenu_moves_update(void) { msgWidth = get_msg_width(msgID, 0) + 23; moveX = (SCREEN_WIDTH / 2) - (msgWidth / 2); - set_window_properties(9, moveX, 80, msgWidth, D_802AB340[get_msg_lines(msgID) - 1], 20, func_802A4534, NULL, -1); + set_window_properties(WIN_BTL_POPUP, moveX, 80, msgWidth, D_802AB340[get_msg_lines(msgID) - 1], 20, btl_menu_moves_show_error, NULL, -1); set_window_update(WIN_BTL_POPUP, WINDOW_UPDATE_SHOW); D_802AD10B = 60; battle_menu_moveState = BTL_SUBMENU_MOVES_STATE_UNK_2A; @@ -1458,7 +1458,7 @@ s32 btl_submenu_moves_update(void) { #define X_VAR2 93 #endif -void func_802A3C98(void* data, s32 x, s32 y) { +void btl_menu_moves_draw_content(void* data, s32 x, s32 y) { s32 var_t0; s32 temp_f6; s32 xPos, yPos; @@ -1662,7 +1662,7 @@ void func_802A3C98(void* data, s32 x, s32 y) { } } -void func_802A43DC(void* data, s32 x, s32 y) { +void btl_menu_moves_show_title(void* data, s32 x, s32 y) { s32 msgID; s32 posX; s32 posY; @@ -1685,7 +1685,7 @@ void func_802A43DC(void* data, s32 x, s32 y) { draw_msg(msgID, posX, posY, opacity, palette, DRAW_MSG_STYLE_MENU); } -void func_802A4448(void* data, s32 x, s32 y) { +void btl_menu_moves_show_icon(void* data, s32 x, s32 y) { s32 icon = BattleMenu_Moves_TitleID; hud_element_set_render_pos(icon, x + 16, y + 15); @@ -1693,7 +1693,7 @@ void func_802A4448(void* data, s32 x, s32 y) { hud_element_draw_clipped(icon); } -void func_802A4494(void* data, s32 x, s32 y) { +void btl_menu_moves_show_desc(void* data, s32 x, s32 y) { switch (battle_menu_moveState) { case BTL_SUBMENU_MOVES_STATE_UNK_NEGATIVE_ONE: case BTL_SUBMENU_MOVES_STATE_UNK_1: @@ -1708,7 +1708,7 @@ void func_802A4494(void* data, s32 x, s32 y) { } } -void func_802A4534(void* data, s32 x, s32 y) { +void btl_menu_moves_show_error(void* data, s32 x, s32 y) { s32 posY = y; s32 posX; s32 msgID; diff --git a/src/filemenu/filemenu_common.c b/src/filemenu/filemenu_common.c index b7d52554fb..8d48a3d12e 100644 --- a/src/filemenu/filemenu_common.c +++ b/src/filemenu/filemenu_common.c @@ -195,7 +195,7 @@ void filemenu_draw_rect(s32 ulx, s32 uly, s32 lrx, s32 lry, s32 tileIdx, s32 uls void filemenu_set_selected(MenuPanel* menu, s32 col, s32 row) { menu->col = col; menu->row = row; - menu->selected = menu->gridData[(menu->page * menu->numCols * menu->numRows) + + menu->selected = menu->gridData[(menu->state * menu->numCols * menu->numRows) + (menu->numCols * menu->row) + menu->col]; } @@ -217,7 +217,7 @@ void filemenu_set_cursor_goal_pos(s32 windowID, s32 posX, s32 posY) { Window* window = &gWindows[i]; s8 parent = window->parent; - if ((parent == -1 || parent == WIN_FILES_MAIN) && (window->flags & WINDOW_FLAG_INITIAL_ANIMATION)) { + if ((parent == WIN_NONE || parent == WIN_FILES_MAIN) && (window->flags & WINDOW_FLAG_INITIAL_ANIMATION)) { break; } } @@ -230,7 +230,7 @@ void filemenu_set_cursor_goal_pos(s32 windowID, s32 posX, s32 posY) { filemenu_cursor_targetY = posY; filemenu_cursor_posY = posY; } else if (!(window->flags & WINDOW_FLAG_INITIAL_ANIMATION) && - (window->parent == -1 || !(gWindows[window->parent].flags & WINDOW_FLAG_INITIAL_ANIMATION))) { + (window->parent == WIN_NONE || !(gWindows[window->parent].flags & WINDOW_FLAG_INITIAL_ANIMATION))) { filemenu_cursor_targetX = posX; filemenu_cursor_targetY = posY; } @@ -272,7 +272,7 @@ void filemenu_update_cursor(void) { Window* window = &gWindows[i]; s8 parent = window->parent; - if ((parent == -1 || parent == WIN_FILES_MAIN) && (window->flags & WINDOW_FLAG_INITIAL_ANIMATION)) { + if ((parent == WIN_NONE || parent == WIN_FILES_MAIN) && (window->flags & WINDOW_FLAG_INITIAL_ANIMATION)) { break; } } @@ -309,7 +309,7 @@ void filemenu_update(void) { s32 i; for (i = WIN_FILES_MAIN; i < ARRAY_COUNT(gWindows); i++) { - if ((gWindows[i].parent == -1 || gWindows[i].parent == WIN_FILES_MAIN) && + if ((gWindows[i].parent == WIN_NONE || gWindows[i].parent == WIN_FILES_MAIN) && (gWindows[i].flags & WINDOW_FLAG_INITIAL_ANIMATION)) { break; @@ -880,143 +880,152 @@ void filemenu_selectlanguage_80248018( #endif void filemenu_draw_cursor(MenuPanel* menu, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) { - s32 temp_a1; + s32 alpha; filemenu_update_cursor(); - temp_a1 = filemenu_cursor_alpha; - if (temp_a1 > 0) { - if (temp_a1 > 255) { - temp_a1 = 255; + alpha = filemenu_cursor_alpha; + if (alpha > 0) { + if (alpha > 255) { + alpha = 255; } - hud_element_set_alpha(filemenu_cursorHIDs[0], temp_a1); + hud_element_set_alpha(filemenu_cursorHIDs[0], alpha); hud_element_set_render_pos(filemenu_cursorHIDs[0], baseX + filemenu_cursor_posX, baseY + filemenu_cursor_posY); hud_element_draw_without_clipping(filemenu_cursorHIDs[0]); } } -#if VERSION_PAL -#define PAGE_4 (3) -#else -#define PAGE_4 (4) -#endif - void filemenu_draw_contents_copy_arrow(MenuPanel* menu, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) { - Matrix4f sp20, sp60; - MenuPanel* menu0 = filemenu_menus[0]; + Matrix4f transformMtx, tempMtx; f32 startX, startZ; f32 endX, endZ; - f32 temp_f28; - - if (menu0->page == PAGE_4 && menu0->selected < 4) { - if (menu0->selected != filemenu_loadedFileIdx && filemenu_currentMenu != 2) { - switch (filemenu_loadedFileIdx) { - case 0: - startX = 130.0f; - startZ = 90.0f; - break; - case 1: - startX = 190.0f; - startZ = 90.0f; - break; - case 2: - startX = 130.0f; - startZ = 150.0f; - break; - default: - startX = 190.0f; - startZ = 150.0f; - break; - } + f32 rotAngle; - switch (filemenu_menus[0]->selected) { - case 0: - endX = 130.0f; - endZ = 90.0f; - break; - case 1: - endX = 190.0f; - endZ = 90.0f; - break; - case 2: - endX = 130.0f; - endZ = 150.0f; - break; - default: - endX = 190.0f; - endZ = 150.0f; - break; - } + if (filemenu_menus[FILE_MENU_MAIN]->state != FM_MAIN_SELECT_COPY_TO) { + return; + } - temp_f28 = -atan2(startX, startZ, endX, endZ) - 90.0f; - - gSPViewport(gMainGfxPos++, &D_80249D60); - - guOrthoF(sp20, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT, 0.0f, -100.0f, 100.0f, 1.0f); - guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]); - - gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], - G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - gSPDisplayList(gMainGfxPos++, filemenu_dl_copyarrow); - gDPSetPrimColor(gMainGfxPos++, 0, 0, 0, 0, 0, 128); - gDPSetEnvColor(gMainGfxPos++, 0, 0, 0, 0); - - guTranslateF(sp20, startX + 4.0f, startZ + 4.0f, 0.0f); - guScaleF(sp60, -1.0f, 1.0f, 1.0f); - guMtxCatF(sp60, sp20, sp20); - guRotateF(sp60, temp_f28, 0.0f, 0.0f, 1.0f); - guMtxCatF(sp60, sp20, sp20); - guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]); - - gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], - G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gMainGfxPos++, D_8024B6F0); - gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW); - - guTranslateF(sp60, D_80249D70[gGameStatusPtr->frameCounter % ARRAY_COUNT(D_80249D70)], 0.0f, 0.0f); - guMtxCatF(sp60, sp20, sp20); - guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]); - - gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], - G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gDPSetTileSize(gMainGfxPos++, 1, (gGameStatusPtr->frameCounter * 8) % 512, 0, - ((gGameStatusPtr->frameCounter * 8) % 512) + 60, 0); - gSPDisplayList(gMainGfxPos++, D_8024B708); - gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW); - gDPSetPrimColor(gMainGfxPos++, 0, 0, 230, 230, 230, 255); - gDPSetEnvColor(gMainGfxPos++, 232, 40, 160, 0); - - guTranslateF(sp20, startX, startZ, 0.0f); - guScaleF(sp60, -1.0f, 1.0f, 1.0f); - guMtxCatF(sp60, sp20, sp20); - guRotateF(sp60, temp_f28, 0.0f, 0.0f, 1.0f); - guMtxCatF(sp60, sp20, sp20); - guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]); - - gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], - G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gMainGfxPos++, D_8024B6F0); - gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW); - - guTranslateF(sp60, D_80249D70[(gGameStatusPtr->frameCounter % ARRAY_COUNT(D_80249D70))], 0.0f, 0.0f); - guMtxCatF(sp60, sp20, sp20); - guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]); - - gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], - G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gDPSetTileSize(gMainGfxPos++, 1, (gGameStatusPtr->frameCounter * 8) % 512, 0, - ((gGameStatusPtr->frameCounter * 8) % 512) + 60, 0); - gSPDisplayList(gMainGfxPos++, D_8024B708); - gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW); - } + // check for invalid selection + if (filemenu_menus[FILE_MENU_MAIN]->selected >= 4) { + return; + } + + // check if different files are selected + if (filemenu_menus[FILE_MENU_MAIN]->selected == filemenu_loadedFileIdx) { + return; } + + // do not show while message menu is showing + if (filemenu_currentMenu == FILE_MENU_MESSAGE) { + return; + } + + switch (filemenu_loadedFileIdx) { + case 0: + startX = 130.0f; + startZ = 90.0f; + break; + case 1: + startX = 190.0f; + startZ = 90.0f; + break; + case 2: + startX = 130.0f; + startZ = 150.0f; + break; + default: + startX = 190.0f; + startZ = 150.0f; + break; + } + + switch (filemenu_menus[FILE_MENU_MAIN]->selected) { + case 0: + endX = 130.0f; + endZ = 90.0f; + break; + case 1: + endX = 190.0f; + endZ = 90.0f; + break; + case 2: + endX = 130.0f; + endZ = 150.0f; + break; + default: + endX = 190.0f; + endZ = 150.0f; + break; + } + + rotAngle = -atan2(startX, startZ, endX, endZ) - 90.0f; + + gSPViewport(gMainGfxPos++, &D_80249D60); + + guOrthoF(transformMtx, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT, 0.0f, -100.0f, 100.0f, 1.0f); + guMtxF2L(transformMtx, &gDisplayContext->matrixStack[gMatrixListPos]); + + gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPDisplayList(gMainGfxPos++, filemenu_dl_copyarrow); + gDPSetPrimColor(gMainGfxPos++, 0, 0, 0, 0, 0, 128); + gDPSetEnvColor(gMainGfxPos++, 0, 0, 0, 0); + + guTranslateF(transformMtx, startX + 4.0f, startZ + 4.0f, 0.0f); + guScaleF(tempMtx, -1.0f, 1.0f, 1.0f); + guMtxCatF(tempMtx, transformMtx, transformMtx); + guRotateF(tempMtx, rotAngle, 0.0f, 0.0f, 1.0f); + guMtxCatF(tempMtx, transformMtx, transformMtx); + guMtxF2L(transformMtx, &gDisplayContext->matrixStack[gMatrixListPos]); + + gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], + G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gMainGfxPos++, D_8024B6F0); + gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW); + + guTranslateF(tempMtx, D_80249D70[gGameStatusPtr->frameCounter % ARRAY_COUNT(D_80249D70)], 0.0f, 0.0f); + guMtxCatF(tempMtx, transformMtx, transformMtx); + guMtxF2L(transformMtx, &gDisplayContext->matrixStack[gMatrixListPos]); + + gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], + G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetTileSize(gMainGfxPos++, 1, (gGameStatusPtr->frameCounter * 8) % 512, 0, + ((gGameStatusPtr->frameCounter * 8) % 512) + 60, 0); + gSPDisplayList(gMainGfxPos++, D_8024B708); + gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW); + gDPSetPrimColor(gMainGfxPos++, 0, 0, 230, 230, 230, 255); + gDPSetEnvColor(gMainGfxPos++, 232, 40, 160, 0); + + guTranslateF(transformMtx, startX, startZ, 0.0f); + guScaleF(tempMtx, -1.0f, 1.0f, 1.0f); + guMtxCatF(tempMtx, transformMtx, transformMtx); + guRotateF(tempMtx, rotAngle, 0.0f, 0.0f, 1.0f); + guMtxCatF(tempMtx, transformMtx, transformMtx); + guMtxF2L(transformMtx, &gDisplayContext->matrixStack[gMatrixListPos]); + + gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], + G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gMainGfxPos++, D_8024B6F0); + gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW); + + guTranslateF(tempMtx, D_80249D70[(gGameStatusPtr->frameCounter % ARRAY_COUNT(D_80249D70))], 0.0f, 0.0f); + guMtxCatF(tempMtx, transformMtx, transformMtx); + guMtxF2L(transformMtx, &gDisplayContext->matrixStack[gMatrixListPos]); + + gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], + G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetTileSize(gMainGfxPos++, 1, (gGameStatusPtr->frameCounter * 8) % 512, 0, + ((gGameStatusPtr->frameCounter * 8) % 512) + 60, 0); + gSPDisplayList(gMainGfxPos++, D_8024B708); + gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW); + } void func_PAL_8002B574(void); // TODO identify // TODO bad match, look into -void filemenu_init(s32 arg0) { +void filemenu_init(s32 mode) { MenuPanel** panelIt; MenuPanel* menu; s32 i; @@ -1029,19 +1038,19 @@ void filemenu_init(s32 arg0) { } filemenu_cursorHID = filemenu_cursorHIDs[0]; - if (arg0 == 0) { + if (mode == 0) { filemenu_common_windowBPs[0].style.customStyle->background.imgData = NULL; // ??? } setup_pause_menu_tab(filemenu_common_windowBPs, ARRAY_COUNT(filemenu_common_windowBPs)); #if VERSION_PAL - if (arg0 != 2) { - filemenu_currentMenu = 0; - menu = filemenu_menus[0]; - menu->page = filemenu_currentMenu; + if (mode != 2) { + filemenu_currentMenu = FILE_MENU_MAIN; + menu = filemenu_menus[FILE_MENU_MAIN]; + menu->state = FM_MAIN_SELECT_FILE; func_PAL_8002B574(); - if (menu->page == 0) { + if (menu->state == FM_MAIN_SELECT_FILE) { fio_load_globals(); if (gSaveGlobals.lastFileSelected >= 4) { gSaveGlobals.lastFileSelected = 0; @@ -1059,12 +1068,12 @@ void filemenu_init(s32 arg0) { } update_window_hierarchy(WIN_PAUSE_DECRIPTION, 64); } else { - filemenu_currentMenu = 4; - filemenu_set_selected(filemenu_menus[4], 0, gCurrentLanguage); + filemenu_currentMenu = FM_MAIN_SELECT_LANG_PAL; + filemenu_set_selected(filemenu_menus[FM_MAIN_SELECT_LANG_PAL], 0, gCurrentLanguage); panelIt = filemenu_menus; for (i = 0; i < ARRAY_COUNT(filemenu_menus); i++, panelIt++) { - if (i == 4) { + if (i == FM_MAIN_SELECT_LANG_PAL) { if ((*panelIt)->fpInit != NULL) { (*panelIt)->fpInit((*panelIt)); } @@ -1073,16 +1082,16 @@ void filemenu_init(s32 arg0) { update_window_hierarchy(WIN_PAUSE_DECRIPTION, 64); } #else - menu = filemenu_menus[0]; - filemenu_currentMenu = 0; + filemenu_currentMenu = FILE_MENU_MAIN; + menu = filemenu_menus[FILE_MENU_MAIN]; - if (arg0 == 0) { - menu->page = 0; + if (mode == 0) { + menu->state = FM_MAIN_SELECT_FILE; } else { - menu->page = 2; + menu->state = FM_MAIN_SELECT_LANG_DUMMY; } - if (menu->page == 0) { + if (menu->state == FM_MAIN_SELECT_FILE) { for (i = 0; i < ARRAY_COUNT(filemenu_menus); i++) { if (!fio_load_game(i)) { gSaveSlotHasData[i] = FALSE; @@ -1092,7 +1101,7 @@ void filemenu_init(s32 arg0) { } } - if (menu->page == 0) { + if (menu->state == FM_MAIN_SELECT_FILE) { fio_load_globals(); if (gSaveGlobals.lastFileSelected >= 4) { gSaveGlobals.lastFileSelected = 0; @@ -1137,15 +1146,22 @@ void filemenu_cleanup(void) { set_window_update(WIN_PAUSE_TUTORIAL, WINDOW_UPDATE_HIDE); set_window_update(WIN_PAUSE_DECRIPTION, WINDOW_UPDATE_HIDE); - func_80244BC4(); + filemenu_get_exit_mode(); // part of a conditional that optimized out? } -s32 func_80244BC4() { - if (filemenu_menus[0]->page == 0 && filemenu_currentMenu == 1 && filemenu_menus[1]->selected == 0) { +s32 filemenu_get_exit_mode() { + if (filemenu_menus[FILE_MENU_MAIN]->state == FM_MAIN_SELECT_FILE + && filemenu_currentMenu == FILE_MENU_CONFIRM + && filemenu_menus[FILE_MENU_CONFIRM]->selected == 0 + ) { return 2; - } else if (filemenu_menus[0]->page == 0 && filemenu_menus[0]->selected < 4) { + } + + if (filemenu_menus[FILE_MENU_MAIN]->state == FM_MAIN_SELECT_FILE + && filemenu_menus[FILE_MENU_MAIN]->selected <= FM_MAIN_OPT_FILE_4 + ) { return 1; - } else { - return 0; } + + return 0; } diff --git a/src/filemenu/filemenu_createfile.c b/src/filemenu/filemenu_createfile.c index 45989df355..33552b7eb3 100644 --- a/src/filemenu/filemenu_createfile.c +++ b/src/filemenu/filemenu_createfile.c @@ -17,7 +17,6 @@ s32 D_8024A18C = -4; #define WINDOW_2_Y (55) #define WINDOW_2_HEIGHT (133) #define ROWS (8) -#define INPUT_FINAL_PAGE (1) extern u8 D_filemenu_80250958[]; extern u8 D_filemenu_80250960[]; #else @@ -25,7 +24,6 @@ extern u8 D_filemenu_80250960[]; #define WINDOW_2_Y (67) #define WINDOW_2_HEIGHT (113) #define ROWS (6) -#define INPUT_FINAL_PAGE (2) #endif MenuWindowBP filemenu_createfile_windowBPs[] = { @@ -64,7 +62,7 @@ MenuPanel filemenu_createfile_menuBP = { .col = 0, .row = 0, .selected = 0, - .page = 0, + .state = 0, .numCols = 13, .numRows = ROWS, .numPages = 0, @@ -118,7 +116,7 @@ void filemenu_draw_contents_file_create_header( } } - if (filemenu_currentMenu == 3) { + if (filemenu_currentMenu == FILE_MENU_INPUT_NAME) { if (filemenu_filename_pos == 8) { xOffset = temp_s2 + 86; } else { @@ -148,7 +146,7 @@ void filemenu_draw_contents_file_create_header( } tempAmt = 8; - if (filemenu_currentMenu == 3) { + if (filemenu_currentMenu == FILE_MENU_INPUT_NAME) { s32 phi_v0 = 122; if (filemenu_filename_pos != tempAmt) { @@ -194,8 +192,8 @@ void filemenu_draw_contents_choose_name( if ((window->flags & WINDOW_FLAG_INITIAL_ANIMATION) && window->fpUpdate.func == filemenu_update_change_layout) { changeLayoutOffset = window->updateCounter * 2; - currentPage = menu->page; - previousPage = menu->page != 1; + currentPage = menu->state; + previousPage = menu->state != 1; if (changeLayoutOffset > 16) { changeLayoutOffset = 16; } @@ -221,7 +219,7 @@ void filemenu_draw_contents_choose_name( for (col = 0; col < menu->numCols; col++) { c = menu->gridData[page * menu->numCols * menu->numRows + menu->numCols * row + col]; - if (c != 0xF7) { + if (c != MSG_CHAR_READ_SPACE) { if (col == menu->col && row == menu->row) { flags = 8; color = 0; @@ -236,23 +234,23 @@ void filemenu_draw_contents_choose_name( #endif specialChar = c; if (c >= 0xA2 && c < 0xF0) { - if (c >= 0xC6) { + if (c >= MSG_CHAR_MENU_SPACE) { hud_element_set_render_pos(filemenu_createfile_HIDs[2], baseX + xOffset + 22, baseY + yOffset + 8); hud_element_draw_without_clipping(filemenu_createfile_HIDs[2]); flags = 0; } } - if (specialChar == 0xC6) { + if (specialChar == MSG_CHAR_MENU_SPACE) { xOffset--; } - if (specialChar == 0xC9) { + if (specialChar == MSG_CHAR_MENU_BACK) { #if VERSION_PAL xOffset += 16; #else xOffset += 5; #endif } - if (specialChar == 0xCA) { + if (specialChar == MSG_CHAR_MENU_END) { #if VERSION_PAL if (gCurrentLanguage == LANGUAGE_DE) { xOffset += 4; @@ -263,7 +261,7 @@ void filemenu_draw_contents_choose_name( xOffset += 8; #endif } - if (specialChar == 0xC6 || specialChar == 0xCA || specialChar == 0xC9) { + if (specialChar == MSG_CHAR_MENU_SPACE || specialChar == MSG_CHAR_MENU_END || specialChar == MSG_CHAR_MENU_BACK) { yOffset--; xNudge = 9; } @@ -280,8 +278,8 @@ void filemenu_draw_contents_choose_name( } else { for (col = 0; col < menu->numCols; col++) { for (row = 0; row < menu->numRows; row++) { - c = menu->gridData[menu->page * menu->numCols * menu->numRows + menu->numCols * row + col]; - if (c != 0xF7) { + c = menu->gridData[menu->state * menu->numCols * menu->numRows + menu->numCols * row + col]; + if (c != MSG_CHAR_READ_SPACE) { if (col == menu->col && row == menu->row) { flags = 8; color = 0; @@ -296,19 +294,19 @@ void filemenu_draw_contents_choose_name( #endif specialChar = c; if (c >= 0xA2 && c < 0xF0) { - if (c >= 0xC6) { + if (c >= MSG_CHAR_MENU_SPACE) { hud_element_set_render_pos(filemenu_createfile_HIDs[2], baseX + xOffset + 22, baseY + yOffset + 8); hud_element_draw_without_clipping(filemenu_createfile_HIDs[2]); flags = 0; } } - if (specialChar == 0xC6) { + if (specialChar == MSG_CHAR_MENU_SPACE) { xOffset--; } - if (specialChar == 0xC9) { + if (specialChar == MSG_CHAR_MENU_BACK) { xOffset += FILEMENU_C9_OFFSET; } - if (specialChar == 0xCA) { + if (specialChar == MSG_CHAR_MENU_END) { #if VERSION_PAL if (gCurrentLanguage == LANGUAGE_DE) { xOffset += 4; @@ -319,7 +317,7 @@ void filemenu_draw_contents_choose_name( xOffset += 8; #endif } - if (specialChar == 0xC6 || specialChar == 0xCA || specialChar == 0xC9) { + if (specialChar == MSG_CHAR_MENU_SPACE || specialChar == MSG_CHAR_MENU_END || specialChar == MSG_CHAR_MENU_BACK) { yOffset--; xNudge = 9; } @@ -333,7 +331,7 @@ void filemenu_draw_contents_choose_name( } } - if (filemenu_currentMenu == 3) { + if (filemenu_currentMenu == FILE_MENU_INPUT_NAME) { if (filemenu_heldButtons & (BUTTON_STICK_RIGHT | BUTTON_STICK_LEFT | BUTTON_STICK_DOWN | BUTTON_STICK_UP)) { D_8024A18C = -4; } @@ -359,31 +357,19 @@ void filemenu_choose_name_init(MenuPanel* menu) { setup_pause_menu_tab(filemenu_createfile_windowBPs, ARRAY_COUNT(filemenu_createfile_windowBPs)); - gWindows[WIN_FILES_INPUT_FIELD].pos.x = ((gWindows[WIN_FILES_INPUT_FIELD].parent != -1) - ? (gWindows[gWindows[WIN_FILES_INPUT_FIELD].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_INPUT_FIELD].width / 2; - - gWindows[WIN_FILES_INPUT_KEYBOARD].pos.x = ((gWindows[WIN_FILES_INPUT_KEYBOARD].parent != -1) - ? (gWindows[gWindows[WIN_FILES_INPUT_KEYBOARD].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_INPUT_KEYBOARD].width / 2; + gWindows[WIN_FILES_INPUT_FIELD].pos.x = CENTER_WINDOW_X(WIN_FILES_INPUT_FIELD); + gWindows[WIN_FILES_INPUT_KEYBOARD].pos.x = CENTER_WINDOW_X(WIN_FILES_INPUT_KEYBOARD); menu->initialized = TRUE; } void filemenu_choose_name_handle_input(MenuPanel* menu) { s32 oldSelected = menu->selected; - MenuPanel* newMenu; - MenuPanel* newMenu2; s32 i; #if VERSION_PAL - s32 halfWidth; - gWindows[WIN_FILES_INPUT_FIELD].width = D_filemenu_80250958[gCurrentLanguage]; - halfWidth = gWindows[WIN_FILES_INPUT_FIELD].width / 2; - gWindows[WIN_FILES_INPUT_FIELD].pos.x = gWindows[WIN_FILES_INPUT_FIELD].parent != -1 ? - (gWindows[gWindows[WIN_FILES_INPUT_FIELD].parent].width / 2) - halfWidth : - SCREEN_WIDTH / 2 - halfWidth; + gWindows[WIN_FILES_INPUT_FIELD].pos.x = CENTER_WINDOW_X(WIN_FILES_INPUT_FIELD); #endif if (filemenu_heldButtons & BUTTON_STICK_LEFT) { @@ -441,39 +427,42 @@ void filemenu_choose_name_handle_input(MenuPanel* menu) { } if (filemenu_pressedButtons & BUTTON_A) { + MenuPanel* confirmMenu; + switch (menu->selected) { - case 0xC6: + case MSG_CHAR_MENU_SPACE: sfx_play_sound(SOUND_CREATE_FILE_SET_CHARACTER); if (filemenu_filename_pos == ARRAY_COUNT(filemenu_filename)) { filemenu_filename_pos = ARRAY_COUNT(filemenu_filename) - 1; } - filemenu_filename[filemenu_filename_pos] = 0xF7; + filemenu_filename[filemenu_filename_pos] = MSG_CHAR_READ_SPACE; filemenu_filename_pos++; if (filemenu_filename_pos > ARRAY_COUNT(filemenu_filename)) { filemenu_filename_pos = ARRAY_COUNT(filemenu_filename); } break; - case 0xC9: + case MSG_CHAR_MENU_BACK: + // handled later to combine with B-input detection break; - case 0xC7: - if (menu->page != 1) { + case MSG_CHAR_MENU_USE_CHARSET_B: + if (menu->state != FM_INPUT_CHARSET_B) { sfx_play_sound(SOUND_CREATE_FILE_CHANGE_CHARSET); - menu->page = 1; + menu->state = FM_INPUT_CHARSET_B; filemenu_set_selected(menu, menu->col, menu->row); set_window_update(WIN_FILES_INPUT_KEYBOARD, (s32)filemenu_update_change_layout); } break; - case 0xC8: - if (menu->page != 0) { + case MSG_CHAR_MENU_USE_CHARSET_A: + if (menu->state != FM_INPUT_CHARSET_A) { sfx_play_sound(SOUND_CREATE_FILE_CHANGE_CHARSET); - menu->page = 0; + menu->state = FM_INPUT_CHARSET_A; filemenu_set_selected(menu, menu->col, menu->row); set_window_update(WIN_FILES_INPUT_KEYBOARD, (s32)filemenu_update_change_layout); } break; - case 0xCA: + case MSG_CHAR_MENU_END: for (i = 0; i < ARRAY_COUNT(filemenu_filename); i++) { - if (filemenu_filename[i] != 0xF7) { + if (filemenu_filename[i] != MSG_CHAR_READ_SPACE) { break; } } @@ -487,30 +476,23 @@ void filemenu_choose_name_handle_input(MenuPanel* menu) { gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.y = 121; gWindows[WIN_FILES_CONFIRM_OPTIONS].width = 69; gWindows[WIN_FILES_CONFIRM_OPTIONS].height = 44; - gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.x = ((gWindows[WIN_FILES_CONFIRM_OPTIONS].parent != -1) - ? (gWindows[gWindows[WIN_FILES_CONFIRM_OPTIONS].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_CONFIRM_OPTIONS].width / 2; + gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_OPTIONS); gWindows[WIN_FILES_CONFIRM_PROMPT].pos.y = -70; #if VERSION_PAL gWindows[WIN_FILES_CONFIRM_PROMPT].width = D_filemenu_80250960[gCurrentLanguage]; - halfWidth = gWindows[WIN_FILES_CONFIRM_PROMPT].width / 2; gWindows[WIN_FILES_CONFIRM_PROMPT].height = 62; - gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = gWindows[WIN_FILES_CONFIRM_PROMPT].parent != -1 - ? (gWindows[gWindows[WIN_FILES_CONFIRM_PROMPT].parent].width / 2) - halfWidth - : SCREEN_WIDTH / 2 - halfWidth; + gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_PROMPT); #else gWindows[WIN_FILES_CONFIRM_PROMPT].width = 164; gWindows[WIN_FILES_CONFIRM_PROMPT].height = 62; - gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = ((gWindows[WIN_FILES_CONFIRM_PROMPT].parent != -1) - ? (gWindows[gWindows[WIN_FILES_CONFIRM_PROMPT].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_CONFIRM_PROMPT].width / 2; + gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_PROMPT); #endif - filemenu_currentMenu = 1; - newMenu = filemenu_menus[filemenu_currentMenu]; - newMenu->page = INPUT_FINAL_PAGE; - filemenu_set_selected(newMenu, 0, 0); + filemenu_currentMenu = FILE_MENU_CONFIRM; + confirmMenu = filemenu_menus[filemenu_currentMenu]; + confirmMenu->state = FM_CONFIRM_CREATE; + filemenu_set_selected(confirmMenu, 0, 0); return; default: sfx_play_sound(SOUND_CREATE_FILE_SET_CHARACTER); @@ -526,13 +508,16 @@ void filemenu_choose_name_handle_input(MenuPanel* menu) { break; } - if (menu->selected != 0xC7 && menu->selected != 0xC8 && menu->selected != 0xC9 && - filemenu_filename_pos == ARRAY_COUNT(filemenu_filename)) { + if (menu->selected != MSG_CHAR_MENU_USE_CHARSET_A + && menu->selected != MSG_CHAR_MENU_USE_CHARSET_B + && menu->selected != MSG_CHAR_MENU_BACK + && filemenu_filename_pos == ARRAY_COUNT(filemenu_filename) + ) { filemenu_set_selected(menu, menu->numCols - 3, menu->numRows - 1); } } - if ((filemenu_pressedButtons & BUTTON_B) || ((filemenu_pressedButtons & BUTTON_A) && menu->selected == 0xC9)) { + if ((filemenu_pressedButtons & BUTTON_B) || ((filemenu_pressedButtons & BUTTON_A) && menu->selected == MSG_CHAR_MENU_BACK)) { sfx_play_sound(SOUND_CREATE_FILE_BACKSPACE); filemenu_filename_pos--; if (filemenu_filename_pos < 0) { @@ -550,18 +535,20 @@ void filemenu_choose_name_handle_input(MenuPanel* menu) { set_window_update(WIN_FILES_SLOT2_BODY, (s32) &filemenu_update_show_with_rotation); set_window_update(WIN_FILES_SLOT3_BODY, (s32) &filemenu_update_show_with_rotation); set_window_update(WIN_FILES_SLOT4_BODY, (s32) &filemenu_update_show_with_rotation); - filemenu_currentMenu = 0; + filemenu_currentMenu = FILE_MENU_MAIN; return; } for (i = filemenu_filename_pos; i < ARRAY_COUNT(filemenu_filename); i++) { - filemenu_filename[i] = 0xF7; + filemenu_filename[i] = MSG_CHAR_READ_SPACE; } } if (filemenu_pressedButtons & BUTTON_START) { + MenuPanel* confirmMenu; + for (i = 0; i < ARRAY_COUNT(filemenu_filename); i++) { - if (filemenu_filename[i] != 0xF7) { + if (filemenu_filename[i] != MSG_CHAR_READ_SPACE) { break; } } @@ -577,36 +564,26 @@ void filemenu_choose_name_handle_input(MenuPanel* menu) { gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.y = 121; gWindows[WIN_FILES_CONFIRM_OPTIONS].width = 69; gWindows[WIN_FILES_CONFIRM_OPTIONS].height = 44; - gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.x = ((gWindows[WIN_FILES_CONFIRM_OPTIONS].parent != -1) - ? (gWindows[gWindows[WIN_FILES_CONFIRM_OPTIONS].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_CONFIRM_OPTIONS].width / 2; + gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_OPTIONS); gWindows[WIN_FILES_CONFIRM_PROMPT].pos.y = -70; #if VERSION_PAL gWindows[WIN_FILES_CONFIRM_PROMPT].width = D_filemenu_80250960[gCurrentLanguage]; gWindows[WIN_FILES_CONFIRM_PROMPT].height = 62; - halfWidth = gWindows[WIN_FILES_CONFIRM_PROMPT].width / 2; - gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = gWindows[WIN_FILES_CONFIRM_PROMPT].parent != -1 - ? (gWindows[gWindows[WIN_FILES_CONFIRM_PROMPT].parent].width / 2) - halfWidth - : SCREEN_WIDTH / 2 - halfWidth; + gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_PROMPT); #else - gWindows[WIN_FILES_CONFIRM_PROMPT].width = 164; gWindows[WIN_FILES_CONFIRM_PROMPT].height = 62; - gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = ((gWindows[WIN_FILES_CONFIRM_PROMPT].parent != -1) - ? (gWindows[gWindows[WIN_FILES_CONFIRM_PROMPT].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_CONFIRM_PROMPT].width / 2; + gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_PROMPT); #endif - filemenu_currentMenu = 1; - newMenu2 = filemenu_menus[filemenu_currentMenu]; - newMenu2->page = INPUT_FINAL_PAGE; - filemenu_set_selected(newMenu2, 0, 0); + filemenu_currentMenu = FILE_MENU_CONFIRM; + confirmMenu = filemenu_menus[filemenu_currentMenu]; + confirmMenu->state = FM_CONFIRM_CREATE; + filemenu_set_selected(confirmMenu, 0, 0); } } -static const f32 padding[2] = { 0.0f, 0.0f }; // not sure why this is needed - void filemenu_choose_name_update(MenuPanel* menu) { } diff --git a/src/filemenu/filemenu_info.c b/src/filemenu/filemenu_info.c index 35de8f93aa..035d90b3da 100644 --- a/src/filemenu/filemenu_info.c +++ b/src/filemenu/filemenu_info.c @@ -45,7 +45,7 @@ MenuPanel filemenu_info_menuBP = { .col = 0, .row = 0, .selected = 0, - .page = 0, + .state = 0, .numCols = 1, .numRows = 1, .numPages = 0, @@ -65,18 +65,17 @@ void filemenu_info_draw_message_contents( #if VERSION_PAL s32 xOffset; - // TODO figure out FILE_MESSAGE constants - switch (menu->page) { - case 0: + switch (menu->state) { + case FM_MESSAGE_DELETED: filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_28), baseX + 10, baseY + 4, 255, 0, 0); xOffset = D_filemenu_80250934[gCurrentLanguage] + 10; filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_FILE_26), baseX + xOffset, baseY + 4, 255, 0, 0); xOffset += D_filemenu_802508FC[gCurrentLanguage]; - draw_number(filemenu_menus[0]->selected + 1, baseX + xOffset, baseY + 6, 0, 0, 255, 3); + draw_number(filemenu_menus[FILE_MENU_MAIN]->selected + 1, baseX + xOffset, baseY + 6, 0, 0, 255, 3); xOffset++; filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_HAS_BEEN_DELETED), baseX + xOffset, baseY + 4, 255, 0, 0); break; - case 1: + case FM_MESSAGE_COPIED: filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_COPY_FROM), baseX + 10, baseY + 4, 255, 0, 0); xOffset = D_filemenu_80250948[gCurrentLanguage] + 10; filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_FILE_26), baseX + xOffset, baseY + 4, 255, 0, 0); @@ -90,24 +89,24 @@ void filemenu_info_draw_message_contents( xOffset += D_filemenu_80250950[gCurrentLanguage]; filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_HAS_BEEN_CREATED), baseX + xOffset, baseY + 18, 255, 0, 0); break; - case 2: - filemenu_draw_message(filemenu_get_menu_message(0x20), baseX + 10, baseY + 4, 255, 0, 0); + case FM_MESSAGE_CREATED: + filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_PAL_UNK2), baseX + 10, baseY + 4, 255, 0, 0); xOffset = D_filemenu_80250968[gCurrentLanguage] + 10; filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_FILE_26), baseX + xOffset, baseY + 4, 255, 0, 0); xOffset += D_filemenu_802508FC[gCurrentLanguage]; - draw_number(filemenu_menus[0]->selected + 1, baseX + xOffset, baseY + 6, 0, 0, 255, 3); + draw_number(filemenu_menus[FILE_MENU_MAIN]->selected + 1, baseX + xOffset, baseY + 6, 0, 0, 255, 3); xOffset++; - filemenu_draw_message(filemenu_get_menu_message(0x1F), baseX + xOffset, baseY + 4, 255, 0, 0); + filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_PAL_UNK1), baseX + xOffset, baseY + 4, 255, 0, 0); break; } #else - switch (menu->page) { - case 0: + switch (menu->state) { + case FM_MESSAGE_DELETED: filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_FILE_26), baseX + 10, baseY + 4, 255, 0, 0); - draw_number(filemenu_menus[0]->selected + 1, baseX + 48, baseY + 6 + NUMBER_OFFSET_Y, DRAW_NUMBER_CHARSET_NORMAL, MSG_PAL_WHITE, 255, DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT); + draw_number(filemenu_menus[FILE_MENU_MAIN]->selected + 1, baseX + 48, baseY + 6 + NUMBER_OFFSET_Y, DRAW_NUMBER_CHARSET_NORMAL, MSG_PAL_WHITE, 255, DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_HAS_BEEN_DELETED), baseX + 49, baseY + 4, 255, 0, 0); break; - case 2: + case FM_MESSAGE_COPIED: #if VERSION_IQUE filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_COPY_FROM), baseX + 10, baseY + 7, 255, 0, 0); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_FILE_26), baseX + 42, baseY + 7, 255, 0, 0); @@ -126,12 +125,12 @@ void filemenu_info_draw_message_contents( filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_PERIOD_34), baseX + 65, baseY + 18, 255, 0, 0); #endif break; - case 1: + case FM_MESSAGE_DUMMY: filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_28), baseX + 10, baseY + 4, 255, 0, 0); break; - case 3: + case FM_MESSAGE_CREATED: filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_FILE_26), baseX + 10, baseY + 4, 255, 0, 0); - draw_number(filemenu_menus[0]->selected + 1, baseX + CREATE_SUCCESS_NUMBER_X, baseY + 6 + NUMBER_OFFSET_Y, DRAW_NUMBER_CHARSET_NORMAL, MSG_PAL_WHITE, 255, DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT); + draw_number(filemenu_menus[FILE_MENU_MAIN]->selected + 1, baseX + CREATE_SUCCESS_NUMBER_X, baseY + 6 + NUMBER_OFFSET_Y, DRAW_NUMBER_CHARSET_NORMAL, MSG_PAL_WHITE, 255, DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_HAS_BEEN_CREATED), baseX + 49, baseY + 4, 255, 0, 0); break; } @@ -152,21 +151,21 @@ void filemenu_info_init(MenuPanel* tab) { void filemenu_info_handle_input(MenuPanel* menu) { if (filemenu_pressedButtons & (BUTTON_A | BUTTON_B)) { - MenuPanel* menu = filemenu_menus[0]; + MenuPanel* menu = filemenu_menus[FILE_MENU_MAIN]; - filemenu_currentMenu = 0; + filemenu_currentMenu = FILE_MENU_MAIN; - switch (menu->page) { - case PAGE_1: - menu->page = PAGE_0; + switch (menu->state) { + case FM_MAIN_SELECT_DELETE: + menu->state = FM_MAIN_SELECT_FILE; set_window_update(WIN_FILES_STEREO, (s32)filemenu_update_show_options_left); set_window_update(WIN_FILES_MONO, (s32)filemenu_update_show_options_right); set_window_update(WIN_FILES_OPTION_LEFT, (s32)filemenu_update_show_options_bottom); set_window_update(WIN_FILES_OPTION_RIGHT, (s32)filemenu_update_show_options_bottom); filemenu_set_selected(menu, 0, 2); break; - case PAGE_4: - menu->page = PAGE_0; + case FM_MAIN_SELECT_COPY_TO: + menu->state = FM_MAIN_SELECT_FILE; set_window_update(WIN_FILES_STEREO, (s32)filemenu_update_show_options_left); set_window_update(WIN_FILES_MONO, (s32)filemenu_update_show_options_right); set_window_update(WIN_FILES_OPTION_LEFT, (s32)filemenu_update_show_options_bottom); @@ -174,8 +173,8 @@ void filemenu_info_handle_input(MenuPanel* menu) { filemenu_set_selected(menu, 1, 2); break; #if !VERSION_PAL - case PAGE_2: - menu->page = 2; + case FM_MAIN_SELECT_LANG_DUMMY: + menu->state = FM_MAIN_SELECT_LANG_DUMMY; filemenu_set_selected(menu, 1, 2); break; #endif diff --git a/src/filemenu/filemenu_main.c b/src/filemenu/filemenu_main.c index c7ace3e114..4ce11ea078 100644 --- a/src/filemenu/filemenu_main.c +++ b/src/filemenu/filemenu_main.c @@ -328,7 +328,7 @@ MenuPanel filemenu_main_menuBP = { .col = 0, .row = 0, .selected = 0, - .page = 0, + .state = 0, .numCols = 3, .numRows = 3, .numPages = 0, @@ -349,29 +349,29 @@ void filemenu_draw_contents_title( s32 xOffset; s32 yOffset; - switch (menu->page) { - case PAGE_0: + switch (menu->state) { + case FM_MAIN_SELECT_FILE: msgIdx = FILE_MESSAGE_SELECT_FILE_TO_START; xOffset = 9; yOffset = 4; break; - case PAGE_1: + case FM_MAIN_SELECT_DELETE: msgIdx = FILE_MESSAGE_SELECT_FILE_TO_DELETE; xOffset = DELETE_OFFSET_X; yOffset = 4; break; - case PAGE_3: + case FM_MAIN_SELECT_COPY_FROM: msgIdx = FILE_MESSAGE_COPY_WHICH_FILE; xOffset = SAVE_OFFSET_X; yOffset = 4; break; - case PAGE_4: + case FM_MAIN_SELECT_COPY_TO: msgIdx = FILE_MESSAGE_COPY_TO_WHICH_FILE; xOffset = COPY_OFFSET_X; yOffset = 4; break; #if !VERSION_PAL - case PAGE_2: + case FM_MAIN_SELECT_LANG_DUMMY: default: msgIdx = FILE_MESSAGE_SELECT_FILE_TO_SAVE; xOffset = 10; @@ -427,7 +427,7 @@ void filemenu_draw_contents_option_left( } filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_DELETE_FILE), baseX + offset + OFFSET_WIDTH, baseY + 2, 255, 0, 1); #else - if (menu->page != 2) { + if (menu->state != FM_MAIN_SELECT_LANG_DUMMY) { if (menu->col == 0 && menu->row == 2) { filemenu_set_cursor_goal_pos(WIN_FILES_OPTION_LEFT, baseX, baseY + 8); } @@ -447,10 +447,10 @@ void filemenu_draw_contents_option_center( s32 xOffset; s32 yOffset; - switch (menu->page) { - case 1: - case 2: - case 3: + switch (menu->state) { + case FM_MAIN_SELECT_DELETE: + case FM_MAIN_SELECT_COPY_FROM: + case FM_MAIN_SELECT_COPY_TO: msgIdx = FILE_MESSAGE_CANCEL; xOffset = D_filemenu_802508F4[gCurrentLanguage]; yOffset = 0; @@ -481,11 +481,11 @@ void filemenu_draw_contents_option_center( s32 xOffset; s32 yOffset; - switch (menu->page) { - case 1: - case 2: - case 3: - case 4: + switch (menu->state) { + case FM_MAIN_SELECT_DELETE: + case FM_MAIN_SELECT_LANG_DUMMY: + case FM_MAIN_SELECT_COPY_FROM: + case FM_MAIN_SELECT_COPY_TO: msgIdx = FILE_MESSAGE_CANCEL; xOffset = CENTER_CANCEL_X; yOffset = 0; @@ -521,7 +521,7 @@ void filemenu_draw_contents_option_right( } filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_CANCEL), baseX + offset, baseY + 2, 255, 0, 1); #else - if (menu->page != 2) { + if (menu->state != 2) { if (menu->col == 2 && menu->row == 2) { filemenu_set_cursor_goal_pos(WIN_FILES_OPTION_RIGHT, baseX + 8, baseY + 8); } @@ -619,19 +619,19 @@ void filemenu_draw_contents_file_title( s32 width, s32 height, s32 opacity, s32 darkening) { - if (filemenu_currentMenu == 0 && menu->selected == fileIdx) { + if (filemenu_currentMenu == FILE_MENU_MAIN && menu->selected == fileIdx) { filemenu_set_cursor_goal_pos(fileIdx + 60, baseX - 3, baseY + 8); } filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_OK), baseX + FILE_X, baseY + 1, 255, 0, 1); if (!gSaveSlotHasData[fileIdx]) { - filemenu_draw_message(filemenu_get_menu_message(fileIdx + FILE_MESSAGE_BASE_UNK), + filemenu_draw_message(filemenu_get_menu_message(fileIdx + FILE_MESSAGE_PAL_UNK3), baseX + D_filemenu_802508D0[gCurrentLanguage], baseY + 1, 255, 0, 1); } else { s32 tmp = D_filemenu_802508D0[gCurrentLanguage]; - filemenu_draw_message(filemenu_get_menu_message(fileIdx + FILE_MESSAGE_BASE_UNK), + filemenu_draw_message(filemenu_get_menu_message(fileIdx + FILE_MESSAGE_PAL_UNK3), baseX + tmp, baseY + 1, 255, 0, 1); tmp += D_filemenu_802508D4[gCurrentLanguage]; @@ -651,7 +651,7 @@ void filemenu_draw_contents_file_title( s32 width, s32 height, s32 opacity, s32 darkening) { - if (filemenu_currentMenu == 0 && menu->selected == fileIdx) { + if (filemenu_currentMenu == FILE_MENU_MAIN && menu->selected == fileIdx) { filemenu_set_cursor_goal_pos(fileIdx + 60, baseX - 3, baseY + 8); } @@ -741,12 +741,8 @@ void filemenu_draw_contents_file_3_title( filemenu_draw_contents_file_title(3, menu, baseX, baseY, width, height, opacity, darkening); } -// TODO figure out how to merge these nicer -#if VERSION_PAL void filemenu_main_init(MenuPanel* menu) { - s32 halfWidth; s32 i; - s32 tmp; for (i = 0; i < ARRAY_COUNT(filemenu_mainHIDs); i++) { filemenu_mainHIDs[i] = hud_element_create(filemenu_main_hudScripts[gCurrentLanguage][i]); @@ -760,53 +756,12 @@ void filemenu_main_init(MenuPanel* menu) { setup_pause_menu_tab(filemenu_main_windowBPs, ARRAY_COUNT(filemenu_main_windowBPs)); menu->selected = MENU_PANEL_SELECTED_GRID_DATA(menu); +#if VERSION_PAL gWindows[WIN_FILES_TITLE].pos.y = 1; gWindows[WIN_FILES_TITLE].width = 162; gWindows[WIN_FILES_TITLE].height = 25; - - halfWidth = gWindows[WIN_FILES_TITLE].width / 2; - - gWindows[WIN_FILES_TITLE].pos.x = gWindows[WIN_FILES_TITLE].parent != -1 - ? (gWindows[gWindows[WIN_FILES_TITLE].parent].width / 2) - halfWidth - : SCREEN_WIDTH / 2 - halfWidth; - - tmp = 1; - halfWidth = gWindows[WIN_FILES_OPTION_CENTER].width / 2; - - gWindows[WIN_FILES_OPTION_CENTER].pos.x = gWindows[WIN_FILES_OPTION_CENTER].parent != -1 - ? (gWindows[gWindows[WIN_FILES_OPTION_CENTER].parent].width / 2) - halfWidth - : SCREEN_WIDTH / 2 - halfWidth; - - if (menu->page != 0) { - set_window_update(WIN_FILES_OPTION_LEFT, WINDOW_UPDATE_HIDE); - set_window_update(WIN_FILES_OPTION_RIGHT, WINDOW_UPDATE_HIDE); - set_window_update(WIN_FILES_STEREO, WINDOW_UPDATE_HIDE); - set_window_update(WIN_FILES_MONO, WINDOW_UPDATE_HIDE); - } - menu->initialized = tmp; -} #else -void filemenu_main_init(MenuPanel* menu) { - s32 halfWidth; - s32 halfWidth2; - s16* posXPtr; - s32 x; - s32 i; - s32 tmp; - - for (i = 0; i < ARRAY_COUNT(filemenu_mainHIDs); i++) { - filemenu_mainHIDs[i] = hud_element_create(filemenu_main_hudScripts[gCurrentLanguage][i]); - hud_element_set_flags(filemenu_mainHIDs[i], HUD_ELEMENT_FLAG_80); - } - - for (i = 0; i < ARRAY_COUNT(filemenu_main_windowBPs); i++) { - filemenu_main_windowBPs[i].tab = menu; - } - - setup_pause_menu_tab(filemenu_main_windowBPs, ARRAY_COUNT(filemenu_main_windowBPs)); - menu->selected = MENU_PANEL_SELECTED_GRID_DATA(menu); - - if (menu->page == 2) { + if (menu->state == FM_MAIN_SELECT_LANG_DUMMY) { gWindows[WIN_FILES_TITLE].pos.y = 1; gWindows[WIN_FILES_TITLE].width = 211; gWindows[WIN_FILES_TITLE].height = 25; @@ -815,34 +770,18 @@ void filemenu_main_init(MenuPanel* menu) { gWindows[WIN_FILES_TITLE].width = 162; gWindows[WIN_FILES_TITLE].height = 25; } +#endif + gWindows[WIN_FILES_TITLE].pos.x = CENTER_WINDOW_X(WIN_FILES_TITLE); + gWindows[WIN_FILES_OPTION_CENTER].pos.x = CENTER_WINDOW_X(WIN_FILES_OPTION_CENTER); - halfWidth = gWindows[WIN_FILES_TITLE].width / 2; - posXPtr = &gWindows[WIN_FILES_TITLE].pos.x; - if (gWindows[WIN_FILES_TITLE].parent != -1) { - x = (gWindows[gWindows[WIN_FILES_TITLE].parent].width / 2) - halfWidth; - } else { - x = SCREEN_WIDTH / 2 - halfWidth; - } - *posXPtr = x; - - halfWidth2 = gWindows[WIN_FILES_OPTION_CENTER].width / 2; - posXPtr = &gWindows[WIN_FILES_OPTION_CENTER].pos.x; - if (gWindows[WIN_FILES_OPTION_CENTER].parent != -1) { - x = (gWindows[gWindows[WIN_FILES_OPTION_CENTER].parent].width / 2) - halfWidth2; - } else { - x = SCREEN_WIDTH / 2 - halfWidth2; - } - *posXPtr = x; - - if (menu->page != 0) { + if (menu->state != FM_MAIN_SELECT_FILE) { set_window_update(WIN_FILES_OPTION_LEFT, WINDOW_UPDATE_HIDE); set_window_update(WIN_FILES_OPTION_RIGHT, WINDOW_UPDATE_HIDE); set_window_update(WIN_FILES_STEREO, WINDOW_UPDATE_HIDE); set_window_update(WIN_FILES_MONO, WINDOW_UPDATE_HIDE); } - menu->initialized = 1; + menu->initialized = TRUE; } -#endif #if VERSION_PAL INCLUDE_ASM(void, "filemenu/filemenu_main", filemenu_main_handle_input); @@ -892,40 +831,49 @@ void filemenu_main_handle_input(MenuPanel* menu) { } } - switch (menu->page) { - case 0: + switch (menu->state) { + case FM_MAIN_SELECT_FILE: + // force selection to column 0 when navigating up from bottom row if (menu->col == 1 && (u8) menu->row < 2) { menu->col = 0; } break; - case 1: // TODO required to duplicate cases 1-4 instead of using fallthrough + case FM_MAIN_SELECT_DELETE: // TODO required to duplicate cases 1-4 instead of using fallthrough + // force selection to column 0 when navigating up from bottom row if (menu->col == 1 && (u8) menu->row < 2) { menu->col = 0; } + // force selection to column 1 when navigating down to bottom row if (menu->row == 2) { menu->col = 1; } break; - case 2: + case FM_MAIN_SELECT_LANG_DUMMY: + // force selection to column 0 when navigating up from bottom row if (menu->col == 1 && (u8) menu->row < 2) { menu->col = 0; } + // force selection to column 1 when navigating down to bottom row if (menu->row == 2) { menu->col = 1; } break; - case 3: + case FM_MAIN_SELECT_COPY_FROM: + // force selection to column 0 when navigating up from bottom row if (menu->col == 1 && (u8) menu->row < 2) { menu->col = 0; } + // force selection to column 1 when navigating down to bottom row if (menu->row == 2) { menu->col = 1; } break; - case 4: + case FM_MAIN_SELECT_COPY_TO: + // force selection to column 0 when navigating up from bottom row if (menu->col == 1 && (u8) menu->row < 2) { menu->col = 0; } + // force selection to column 1 when navigating down to bottom row if (menu->row == 2) { menu->col = 1; } @@ -937,7 +885,7 @@ void filemenu_main_handle_input(MenuPanel* menu) { sfx_play_sound(SOUND_FILE_MENU_MOVE_CURSOR); } - if (menu->page == 0) { + if (menu->state == FM_MAIN_SELECT_FILE) { s32 originalOutputMode = gGameStatusPtr->soundOutputMode; if (filemenu_pressedButtons & BUTTON_Z) { @@ -957,23 +905,24 @@ void filemenu_main_handle_input(MenuPanel* menu) { } } - if ((filemenu_pressedButtons & BUTTON_START) && menu->page == 0 && menu->selected < 4) { + if ((filemenu_pressedButtons & BUTTON_START) && menu->state == FM_MAIN_SELECT_FILE && menu->selected <= FM_MAIN_OPT_FILE_4) { filemenu_pressedButtons = BUTTON_A; } if (filemenu_pressedButtons & BUTTON_A) { s32 cond = FALSE; - switch (menu->page) { - case 0: - if (menu->selected < 4 && !gSaveSlotHasData[menu->selected]) { + switch (menu->state) { + case FM_MAIN_SELECT_FILE: + if (menu->selected <= FM_MAIN_OPT_FILE_4 && !gSaveSlotHasData[menu->selected]) { cond = TRUE; } if (cond) { - MenuPanel* temp_a0; + // selected a file with no data + MenuPanel* inputMenu; for (i = 0; i < ARRAY_COUNT(filemenu_filename); i++) { - filemenu_filename[i] = 0xF7; + filemenu_filename[i] = MSG_CHAR_READ_SPACE; } filemenu_filename_pos = 0; set_window_update(WIN_FILES_INPUT_FIELD, (s32)filemenu_update_show_name_input); @@ -990,14 +939,15 @@ void filemenu_main_handle_input(MenuPanel* menu) { set_window_update(WIN_FILES_SLOT3_BODY, (s32)filemenu_update_hidden_with_rotation); set_window_update(WIN_FILES_SLOT4_BODY, (s32)filemenu_update_hidden_with_rotation); sfx_play_sound(SOUND_MENU_NEXT); - filemenu_currentMenu = 3; - temp_a0 = filemenu_menus[filemenu_currentMenu]; - temp_a0->page = 0; - filemenu_set_selected(temp_a0, 0, 0); + filemenu_currentMenu = FILE_MENU_INPUT_NAME; + inputMenu = filemenu_menus[FILE_MENU_INPUT_NAME]; + inputMenu->state = FM_INPUT_CHARSET_A; + filemenu_set_selected(inputMenu, 0, 0); break; } - if (menu->selected == 6) { + if (menu->selected == FM_MAIN_OPT_CANCEL) { + // selected "Cancel" button set_window_update(WIN_FILES_STEREO, (s32)filemenu_update_hidden_options_left); set_window_update(WIN_FILES_MONO, (s32)filemenu_update_hidden_options_right); set_window_update(WIN_FILES_OPTION_LEFT, (s32)filemenu_update_hidden_options_bottom); @@ -1010,24 +960,25 @@ void filemenu_main_handle_input(MenuPanel* menu) { set_window_update(WIN_FILES_TITLE, (s32)filemenu_update_hidden_title); sfx_play_sound(SOUND_FILE_MENU_OUT); set_game_mode(GAME_MODE_END_FILE_SELECT); - } else if (menu->selected == 4) { + } else if (menu->selected == FM_MAIN_OPT_DELETE) { + // selected "Delete File" button sfx_play_sound(SOUND_MENU_NEXT); - menu->page = 1; + menu->state = FM_MAIN_SELECT_DELETE; filemenu_set_selected(menu, 1, 2); set_window_update(WIN_FILES_STEREO, (s32)filemenu_update_hidden_options_left); set_window_update(WIN_FILES_MONO, (s32)filemenu_update_hidden_options_right); set_window_update(WIN_FILES_OPTION_LEFT, (s32)filemenu_update_hidden_options_bottom); set_window_update(WIN_FILES_OPTION_RIGHT, (s32)filemenu_update_hidden_options_bottom); - } else if (menu->selected == 5) { + } else if (menu->selected == FM_MAIN_OPT_COPY) { sfx_play_sound(SOUND_MENU_NEXT); - menu->page = 3; + menu->state = FM_MAIN_SELECT_COPY_FROM; filemenu_set_selected(menu, 1, 2); set_window_update(WIN_FILES_STEREO, (s32)filemenu_update_hidden_options_left); set_window_update(WIN_FILES_MONO, (s32)filemenu_update_hidden_options_right); set_window_update(WIN_FILES_OPTION_LEFT, (s32)filemenu_update_hidden_options_bottom); set_window_update(WIN_FILES_OPTION_RIGHT, (s32)filemenu_update_hidden_options_bottom); - } else if (menu->selected < 4) { - MenuPanel* temp_a0; + } else if (menu->selected <= FM_MAIN_OPT_FILE_4) { + MenuPanel* confirmMenu; sfx_play_sound(SOUND_MENU_NEXT); set_window_update(WIN_FILES_TITLE, (s32)filemenu_update_hidden_with_rotation); @@ -1048,35 +999,33 @@ void filemenu_main_handle_input(MenuPanel* menu) { gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.y = 143; gWindows[WIN_FILES_CONFIRM_OPTIONS].width = 69; gWindows[WIN_FILES_CONFIRM_OPTIONS].height = 44; - gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.x = ((gWindows[WIN_FILES_CONFIRM_OPTIONS].parent != -1) - ? (gWindows[gWindows[WIN_FILES_CONFIRM_OPTIONS].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_CONFIRM_OPTIONS].width / 2; + gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_OPTIONS); gWindows[WIN_FILES_CONFIRM_PROMPT].pos.y = -29; gWindows[WIN_FILES_CONFIRM_PROMPT].width = 192; gWindows[WIN_FILES_CONFIRM_PROMPT].height = 25; - gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = ((gWindows[WIN_FILES_CONFIRM_PROMPT].parent != -1) - ? (gWindows[gWindows[WIN_FILES_CONFIRM_PROMPT].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_CONFIRM_PROMPT].width / 2; - - filemenu_currentMenu = 1; - temp_a0 = filemenu_menus[filemenu_currentMenu]; - temp_a0->page = 4; - filemenu_set_selected(temp_a0, 0, 0); + gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_PROMPT); + + filemenu_currentMenu = FILE_MENU_CONFIRM; + confirmMenu = filemenu_menus[FILE_MENU_CONFIRM]; + confirmMenu->state = FM_CONFIRM_START; + filemenu_set_selected(confirmMenu, 0, 0); } break; - case 1: - if (menu->selected == 6) { + case FM_MAIN_SELECT_DELETE: + if (menu->selected == FM_MAIN_OPT_CANCEL) { + // selected "Cancel" button sfx_play_sound(SOUND_MENU_NEXT); - menu->page = 0; + menu->state = FM_MAIN_SELECT_FILE; set_window_update(WIN_FILES_STEREO, (s32)filemenu_update_show_options_left); set_window_update(WIN_FILES_MONO, (s32)filemenu_update_show_options_right); set_window_update(WIN_FILES_OPTION_LEFT, (s32)filemenu_update_show_options_bottom); set_window_update(WIN_FILES_OPTION_RIGHT, (s32)filemenu_update_show_options_bottom); filemenu_set_selected(menu, 0, 2); - } else if (menu->selected < 4) { + } else if (menu->selected <= FM_MAIN_OPT_FILE_4) { + // selected a file if (gSaveSlotHasData[menu->selected]) { - MenuPanel* temp_a0; + MenuPanel* confirmMenu; sfx_play_sound(SOUND_MENU_NEXT); set_window_update(WIN_FILES_CONFIRM_OPTIONS, (s32)filemenu_update_show_name_confirm); @@ -1084,67 +1033,63 @@ void filemenu_main_handle_input(MenuPanel* menu) { gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.y = 121; gWindows[WIN_FILES_CONFIRM_OPTIONS].width = 69; gWindows[WIN_FILES_CONFIRM_OPTIONS].height = 44; - gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.x = ((gWindows[WIN_FILES_CONFIRM_OPTIONS].parent != -1) - ? (gWindows[gWindows[WIN_FILES_CONFIRM_OPTIONS].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_CONFIRM_OPTIONS].width / 2; + gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_OPTIONS); gWindows[WIN_FILES_CONFIRM_PROMPT].pos.y = -29; gWindows[WIN_FILES_CONFIRM_PROMPT].width = 118; gWindows[WIN_FILES_CONFIRM_PROMPT].height = 25; - gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = ((gWindows[WIN_FILES_CONFIRM_PROMPT].parent != -1) - ? (gWindows[gWindows[WIN_FILES_CONFIRM_PROMPT].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_CONFIRM_PROMPT].width / 2; - - filemenu_currentMenu = 1; - temp_a0 = filemenu_menus[filemenu_currentMenu]; - temp_a0->page = 0; - filemenu_set_selected(temp_a0, 0, 1); + gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_PROMPT); + + filemenu_currentMenu = FILE_MENU_CONFIRM; + confirmMenu = filemenu_menus[FILE_MENU_CONFIRM]; + confirmMenu->state = FM_CONFIRM_DELETE; + filemenu_set_selected(confirmMenu, 0, 1); } else { sfx_play_sound(SOUND_MENU_ERROR); } } break; - case 3: - if (menu->selected == 6) { + case FM_MAIN_SELECT_COPY_FROM: + if (menu->selected == FM_MAIN_OPT_CANCEL) { + // selected "Cancel" button sfx_play_sound(SOUND_MENU_NEXT); - menu->page = 0; + menu->state = FM_MAIN_SELECT_FILE; set_window_update(WIN_FILES_STEREO, (s32)filemenu_update_show_options_left); set_window_update(WIN_FILES_MONO, (s32)filemenu_update_show_options_right); set_window_update(WIN_FILES_OPTION_LEFT, (s32)filemenu_update_show_options_bottom); set_window_update(WIN_FILES_OPTION_RIGHT, (s32)filemenu_update_show_options_bottom); filemenu_set_selected(menu, 0, 1); - } else if (menu->selected < 4) { + } else if (menu->selected <= FM_MAIN_OPT_FILE_4) { + // selected a file if (gSaveSlotHasData[menu->selected]) { sfx_play_sound(SOUND_MENU_NEXT); - menu->page = 4; + menu->state = FM_MAIN_SELECT_COPY_TO; filemenu_loadedFileIdx = menu->selected; } else { sfx_play_sound(SOUND_MENU_ERROR); } } break; - case 4: - if (menu->selected == 6) { + case FM_MAIN_SELECT_COPY_TO: + if (menu->selected == FM_MAIN_OPT_CANCEL) { + // selected "Cancel" button sfx_play_sound(SOUND_MENU_NEXT); - menu->page = 3; + menu->state = FM_MAIN_SELECT_COPY_FROM; filemenu_set_selected(menu, 0, 2); - } else if (menu->selected < 4) { + } else if (menu->selected <= FM_MAIN_OPT_FILE_4) { + // selected a file if (filemenu_loadedFileIdx == menu->selected) { sfx_play_sound(SOUND_MENU_ERROR); } else { filemenu_iterFileIdx = menu->selected; if (!gSaveSlotHasData[menu->selected]) { sfx_play_sound(SOUND_MENU_NEXT); - filemenu_currentMenu = 2; - filemenu_menus[filemenu_currentMenu]->page = 2; + filemenu_currentMenu = FILE_MENU_MESSAGE; + filemenu_menus[filemenu_currentMenu]->state = FM_MESSAGE_COPIED; gWindows[WIN_FILES_MESSAGE].width = 154; gWindows[WIN_FILES_MESSAGE].height = 39; - gWindows[WIN_FILES_MESSAGE].pos.x = ((gWindows[WIN_FILES_MESSAGE].parent != -1) - ? (gWindows[gWindows[WIN_FILES_MESSAGE].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_MESSAGE].width / 2; - gWindows[WIN_FILES_MESSAGE].pos.y = ((gWindows[WIN_FILES_MESSAGE].parent != -1) - ? (gWindows[gWindows[WIN_FILES_MESSAGE].parent].height / 2) - : SCREEN_HEIGHT / 2) - gWindows[WIN_FILES_MESSAGE].height / 2; + gWindows[WIN_FILES_MESSAGE].pos.x = CENTER_WINDOW_X(WIN_FILES_MESSAGE); + gWindows[WIN_FILES_MESSAGE].pos.y = CENTER_WINDOW_Y(WIN_FILES_MESSAGE); set_window_update(WIN_FILES_MESSAGE, WINDOW_UPDATE_SHOW); set_window_update(WIN_FILES_CONFIRM_OPTIONS, WINDOW_UPDATE_HIDE); @@ -1153,69 +1098,63 @@ void filemenu_main_handle_input(MenuPanel* menu) { fio_save_game(filemenu_iterFileIdx); gSaveSlotHasData[filemenu_iterFileIdx] = TRUE; } else { - MenuPanel* temp_a0; + MenuPanel* confirmMenu; sfx_play_sound(SOUND_MENU_NEXT); set_window_update(WIN_FILES_CONFIRM_OPTIONS, (s32)filemenu_update_show_name_confirm); gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.y = 121; gWindows[WIN_FILES_CONFIRM_OPTIONS].width = 69; gWindows[WIN_FILES_CONFIRM_OPTIONS].height = 44; - gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.x = ((gWindows[WIN_FILES_CONFIRM_OPTIONS].parent != -1) - ? (gWindows[gWindows[WIN_FILES_CONFIRM_OPTIONS].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_CONFIRM_OPTIONS].width / 2; + gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_OPTIONS); gWindows[WIN_FILES_CONFIRM_PROMPT].pos.y = -43; gWindows[WIN_FILES_CONFIRM_PROMPT].width = 182; gWindows[WIN_FILES_CONFIRM_PROMPT].height = 39; - gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = ((gWindows[WIN_FILES_CONFIRM_PROMPT].parent != -1) - ? (gWindows[gWindows[WIN_FILES_CONFIRM_PROMPT].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_CONFIRM_PROMPT].width / 2; - - filemenu_currentMenu = 1; - temp_a0 = filemenu_menus[filemenu_currentMenu]; - temp_a0->page = 3; - filemenu_set_selected(temp_a0, 0, 1); + gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_PROMPT); + + filemenu_currentMenu = FILE_MENU_CONFIRM; + confirmMenu = filemenu_menus[filemenu_currentMenu]; + confirmMenu->state = FM_CONFIRM_COPY; + filemenu_set_selected(confirmMenu, 0, 1); } } } break; - case 2: - if (menu->selected == 6) { + case FM_MAIN_SELECT_LANG_DUMMY: + if (menu->selected == FM_MAIN_OPT_CANCEL) { + // selected "Cancel" button sfx_play_sound(SOUND_MENU_NEXT); set_game_mode(GAME_MODE_END_LANGUAGE_SELECT); - } else if (menu->selected < 4) { + } else if (menu->selected <= FM_MAIN_OPT_FILE_4) { + // selected a file if (!gSaveSlotHasData[menu->selected]) { sfx_play_sound(SOUND_MENU_NEXT); - filemenu_currentMenu = 2; - filemenu_menus[filemenu_currentMenu]->page = 1; + filemenu_currentMenu = FILE_MENU_MESSAGE; + filemenu_menus[filemenu_currentMenu]->state = FM_MESSAGE_DUMMY; set_window_update(WIN_FILES_MAIN, (s32)main_menu_window_update); set_window_update(WIN_FILES_MESSAGE, WINDOW_UPDATE_SHOW); set_window_update(WIN_FILES_CONFIRM_OPTIONS, WINDOW_UPDATE_HIDE); fio_save_game(menu->selected); gSaveSlotHasData[menu->selected] = TRUE; } else { - MenuPanel* temp_a0; + MenuPanel* confirmMenu; sfx_play_sound(SOUND_MENU_NEXT); set_window_update(WIN_FILES_CONFIRM_OPTIONS, (s32)filemenu_update_show_name_confirm); gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.y = 127; gWindows[WIN_FILES_CONFIRM_OPTIONS].width = 69; gWindows[WIN_FILES_CONFIRM_OPTIONS].height = 44; - gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.x = ((gWindows[WIN_FILES_CONFIRM_OPTIONS].parent != -1) - ? (gWindows[gWindows[WIN_FILES_CONFIRM_OPTIONS].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_CONFIRM_OPTIONS].width / 2; + gWindows[WIN_FILES_CONFIRM_OPTIONS].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_OPTIONS); gWindows[WIN_FILES_CONFIRM_PROMPT].pos.y = -50; gWindows[WIN_FILES_CONFIRM_PROMPT].width = 148; gWindows[WIN_FILES_CONFIRM_PROMPT].height = 38; - gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = ((gWindows[WIN_FILES_CONFIRM_PROMPT].parent != -1) - ? (gWindows[gWindows[WIN_FILES_CONFIRM_PROMPT].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_CONFIRM_PROMPT].width / 2; - - filemenu_currentMenu = 1; - temp_a0 = filemenu_menus[filemenu_currentMenu]; - temp_a0->page = 1; - filemenu_set_selected(temp_a0, 0, 1); + gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_PROMPT); + + filemenu_currentMenu = FILE_MENU_CONFIRM; + confirmMenu = filemenu_menus[filemenu_currentMenu]; + confirmMenu->state = FM_CONFIRM_DUMMY; + filemenu_set_selected(confirmMenu, 0, 1); } } break; @@ -1223,26 +1162,26 @@ void filemenu_main_handle_input(MenuPanel* menu) { } if (filemenu_pressedButtons & BUTTON_B) { - switch (menu->page) { - case 0: + switch (menu->state) { + case FM_MAIN_SELECT_FILE: filemenu_set_selected(menu, 2, 2); break; - case 1: + case FM_MAIN_SELECT_DELETE: filemenu_set_selected(menu, 1, 2); break; - case 2: + case FM_MAIN_SELECT_LANG_DUMMY: filemenu_set_selected(menu, 1, 2); break; - case 3: + case FM_MAIN_SELECT_COPY_FROM: filemenu_set_selected(menu, 1, 2); break; - case 4: + case FM_MAIN_SELECT_COPY_TO: filemenu_set_selected(menu, 1, 2); break; } - switch (menu->page) { - case 0: + switch (menu->state) { + case FM_MAIN_SELECT_FILE: set_window_update(WIN_FILES_STEREO, (s32)filemenu_update_hidden_options_left); set_window_update(WIN_FILES_MONO, (s32)filemenu_update_hidden_options_right); set_window_update(WIN_FILES_OPTION_LEFT, (s32)filemenu_update_hidden_options_bottom); @@ -1256,8 +1195,8 @@ void filemenu_main_handle_input(MenuPanel* menu) { sfx_play_sound(SOUND_FILE_MENU_OUT); set_game_mode(GAME_MODE_END_FILE_SELECT); break; - case 1: - menu->page = 0; + case FM_MAIN_SELECT_DELETE: + menu->state = FM_MAIN_SELECT_FILE; filemenu_set_selected(menu, 0, 2); set_window_update(WIN_FILES_STEREO, (s32)filemenu_update_show_options_left); set_window_update(WIN_FILES_MONO, (s32)filemenu_update_show_options_right); @@ -1265,8 +1204,8 @@ void filemenu_main_handle_input(MenuPanel* menu) { set_window_update(WIN_FILES_OPTION_RIGHT, (s32)filemenu_update_show_options_bottom); sfx_play_sound(SOUND_MENU_BACK); break; - case 3: - menu->page = 0; + case FM_MAIN_SELECT_COPY_FROM: + menu->state = FM_MAIN_SELECT_FILE; filemenu_set_selected(menu, 1, 2); set_window_update(WIN_FILES_STEREO, (s32)filemenu_update_show_options_left); set_window_update(WIN_FILES_MONO, (s32)filemenu_update_show_options_right); @@ -1274,12 +1213,12 @@ void filemenu_main_handle_input(MenuPanel* menu) { set_window_update(WIN_FILES_OPTION_RIGHT, (s32)filemenu_update_show_options_bottom); sfx_play_sound(SOUND_MENU_BACK); break; - case 4: - menu->page = 3; + case FM_MAIN_SELECT_COPY_TO: + menu->state = FM_MAIN_SELECT_COPY_FROM; filemenu_set_selected(menu, (filemenu_loadedFileIdx % 2) * 2, filemenu_loadedFileIdx / 2); sfx_play_sound(SOUND_MENU_BACK); break; - case 2: + case FM_MAIN_SELECT_LANG_DUMMY: sfx_play_sound(SOUND_MENU_BACK); set_game_mode(GAME_MODE_END_LANGUAGE_SELECT); break; @@ -1289,6 +1228,7 @@ void filemenu_main_handle_input(MenuPanel* menu) { #endif void filemenu_main_update(MenuPanel* menu) { + // set default styles for all file slot panels gWindowStyles[WIN_FILES_SLOT1_BODY].customStyle = &filemenu_windowStyles[15]; gWindowStyles[WIN_FILES_SLOT2_BODY].customStyle = &filemenu_windowStyles[15]; gWindowStyles[WIN_FILES_SLOT3_BODY].customStyle = &filemenu_windowStyles[15]; @@ -1298,40 +1238,42 @@ void filemenu_main_update(MenuPanel* menu) { gWindowStyles[WIN_FILES_SLOT3_TITLE].customStyle = &filemenu_windowStyles[17]; gWindowStyles[WIN_FILES_SLOT4_TITLE].customStyle = &filemenu_windowStyles[17]; + // modify style for selected file slot panel to add highlight switch (menu->selected) { - case 0: + case FM_MAIN_OPT_FILE_1: gWindowStyles[WIN_FILES_SLOT1_BODY].customStyle = &filemenu_windowStyles[16]; gWindowStyles[WIN_FILES_SLOT1_TITLE].customStyle = &filemenu_windowStyles[18]; break; - case 1: + case FM_MAIN_OPT_FILE_2: gWindowStyles[WIN_FILES_SLOT2_BODY].customStyle = &filemenu_windowStyles[16]; gWindowStyles[WIN_FILES_SLOT2_TITLE].customStyle = &filemenu_windowStyles[18]; break; - case 2: + case FM_MAIN_OPT_FILE_3: gWindowStyles[WIN_FILES_SLOT3_BODY].customStyle = &filemenu_windowStyles[16]; gWindowStyles[WIN_FILES_SLOT3_TITLE].customStyle = &filemenu_windowStyles[18]; break; - case 3: + case FM_MAIN_OPT_FILE_4: gWindowStyles[WIN_FILES_SLOT4_BODY].customStyle = &filemenu_windowStyles[16]; gWindowStyles[WIN_FILES_SLOT4_TITLE].customStyle = &filemenu_windowStyles[18]; break; } - if (filemenu_menus[0]->page == PAGE_4) { + // also add highlight to "copy to" target + if (filemenu_menus[FILE_MENU_MAIN]->state == FM_MAIN_SELECT_COPY_TO) { switch (filemenu_loadedFileIdx) { - case 0: + case FM_MAIN_OPT_FILE_1: gWindowStyles[WIN_FILES_SLOT1_BODY].customStyle = &filemenu_windowStyles[16]; gWindowStyles[WIN_FILES_SLOT1_TITLE].customStyle = &filemenu_windowStyles[18]; return; - case 1: + case FM_MAIN_OPT_FILE_2: gWindowStyles[WIN_FILES_SLOT2_BODY].customStyle = &filemenu_windowStyles[16]; gWindowStyles[WIN_FILES_SLOT2_TITLE].customStyle = &filemenu_windowStyles[18]; return; - case 2: + case FM_MAIN_OPT_FILE_3: gWindowStyles[WIN_FILES_SLOT3_BODY].customStyle = &filemenu_windowStyles[16]; gWindowStyles[WIN_FILES_SLOT3_TITLE].customStyle = &filemenu_windowStyles[18]; return; - case 3: + case FM_MAIN_OPT_FILE_4: gWindowStyles[WIN_FILES_SLOT4_BODY].customStyle = &filemenu_windowStyles[16]; gWindowStyles[WIN_FILES_SLOT4_TITLE].customStyle = &filemenu_windowStyles[18]; return; diff --git a/src/filemenu/filemenu_msg.c b/src/filemenu/filemenu_msg.c index 59c3f9551c..64b4d35546 100644 --- a/src/filemenu/filemenu_msg.c +++ b/src/filemenu/filemenu_msg.c @@ -589,21 +589,21 @@ s32 filemenu_draw_char(s32 c, s32 x, s32 y, s32 flag1, s32 color, s32 flag2) { } #endif - if (c == 0xF7) { + if (c == MSG_CHAR_READ_SPACE) { return charWidth - 6; } switch (c) { - case 0xF3: + case MSG_CHAR_READ_VARIANT0: filemenu_charset_raster_id = 0; break; - case 0xF4: + case MSG_CHAR_READ_VARIANT1: filemenu_charset_raster_id = 1; break; - case 0xF5: + case MSG_CHAR_READ_VARIANT2: filemenu_charset_raster_id = 2; break; - case 0xF6: + case MSG_CHAR_READ_VARIANT3: filemenu_charset_raster_id = 3; break; } @@ -637,7 +637,7 @@ void filemenu_draw_message(u8* message, s32 x, s32 y, s32 alpha, s32 color, u32 u8* tmp; filemenu_draw_char(0xF3, x, y, flag1, color, flag2); tmp = message; - while (*tmp != 0xFD) { + while (*tmp != MSG_CHAR_READ_END) { #if VERSION_IQUE int ord = *tmp; if (ord >= MSG_CHAR_MULTIBYTE_FIRST && ord <= MSG_CHAR_MULTIBYTE_LAST) { @@ -671,7 +671,7 @@ void filemenu_draw_file_name(u8* filename, s32 length, s32 x, s32 y, s32 alpha, for (i = 0; i < length; i++) { u32 c = filename[i]; - if (c != 0xF7) { + if (c != MSG_CHAR_READ_SPACE) { #if VERSION_IQUE // Numerals get drawn one pixel lower than other characters if (c >= MSG_CHAR_DIGIT_0 && c <= MSG_CHAR_DIGIT_9) { diff --git a/src/filemenu/filemenu_selectlanguage.c b/src/filemenu/filemenu_selectlanguage.c index 5ec65fe729..161e278faa 100644 --- a/src/filemenu/filemenu_selectlanguage.c +++ b/src/filemenu/filemenu_selectlanguage.c @@ -140,7 +140,7 @@ MenuPanel filemenu_selectlanguage_menuBP = { .col = 0, .row = 0, .selected = 0, - .page = 0, + .state = 0, .numCols =1, .numRows = 4, .numPages = 0, @@ -158,7 +158,7 @@ void filemenu_draw_pal_8024d6a0(MenuPanel* menu, s32 baseX, s32 baseY, s32 width void func_filemenu_8024D710(s32 arg0, MenuPanel* menu, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) { s32 var_a1; - if (filemenu_currentMenu == 4 && menu->selected == arg0) { + if (filemenu_currentMenu == FILE_MENU_SELECT_LANG && menu->selected == arg0) { filemenu_set_cursor_goal_pos(arg0 + 60, baseX + 4, baseY + 10); } @@ -226,10 +226,10 @@ void filemenu_selectlanguage_init(MenuPanel* menu) { gWindows[WIN_FILES_TITLE].height = 25; posXPtr = &gWindows[WIN_FILES_TITLE].pos.x; - if (gWindows[WIN_FILES_TITLE].parent != -1) { + if (gWindows[WIN_FILES_TITLE].parent != WIN_NONE) { x = (gWindows[gWindows[WIN_FILES_TITLE].parent].width / 2) - (gWindows[WIN_FILES_TITLE].width / 2); } else { - x = 64; + x = 64; // different from CENTER_WINDOW_X macro } *posXPtr = x; diff --git a/src/filemenu/filemenu_yesno.c b/src/filemenu/filemenu_yesno.c index 828d2c9c5c..1013314072 100644 --- a/src/filemenu/filemenu_yesno.c +++ b/src/filemenu/filemenu_yesno.c @@ -29,12 +29,12 @@ u8 filemenu_yesno_gridData[] = { 0, 1, +#if !VERSION_PAL + 0, 1, +#endif 0, 1, 0, 1, 0, 1, -#if !VERSION_PAL - 0, 1 -#endif }; MenuWindowBP filemenu_yesno_windowBPs[] = { @@ -73,7 +73,7 @@ MenuPanel filemenu_yesno_menuBP = { .col = 0, .row = 0, .selected = 0, - .page = 0, + .state = 0, .numCols = 1, .numRows = 2, .numPages = 0, @@ -97,45 +97,45 @@ void filemenu_yesno_draw_options_contents( s32 cursorGoalXOffset; s32 cursorGoalYOffset; - switch (menu->page) { - case 0: + switch (menu->state) { + case FM_CONFIRM_DELETE: xOffset1 = 28; yOffset1 = 4; xOffset2 = 28; yOffset2 = 21; break; - case 1: +#if !VERSION_PAL + case FM_CONFIRM_DUMMY: xOffset1 = 28; yOffset1 = 4; xOffset2 = 28; yOffset2 = 21; break; - case 2: +#endif + case FM_CONFIRM_CREATE: xOffset1 = 28; yOffset1 = 4; xOffset2 = 28; yOffset2 = 21; break; - case 3: + case FM_CONFIRM_COPY: xOffset1 = 28; yOffset1 = 4; xOffset2 = 28; yOffset2 = 21; break; -#if !VERSION_PAL - case 4: + case FM_CONFIRM_START: xOffset1 = 28; yOffset1 = 4; xOffset2 = 28; yOffset2 = 21; break; -#endif } filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_YES), baseX + xOffset1, baseY + yOffset1, 0xFF, 0, 0); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_NO), baseX + xOffset2, baseY + yOffset2, 0xFF, 0, 0); - if (filemenu_currentMenu == 1) { + if (filemenu_currentMenu == FILE_MENU_CONFIRM) { if (menu->selected == 0) { cursorGoalXOffset = xOffset1 - 10; cursorGoalYOffset = yOffset1 + 8; @@ -159,27 +159,27 @@ void filemenu_yesno_draw_prompt_contents( s32 xOffset; s32 i; - switch (menu->page) { - case 0: + switch (menu->state) { + case FM_CONFIRM_DELETE: filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_DELETE), baseX + DELETE_FILE_DELETE_X, baseY + 4, 0xFF, 0, 0); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_FILE_22), baseX + DELETE_FILE_FILE_X, baseY + 4, 0xFF, 0, 0); - draw_number(filemenu_menus[0]->selected + 1, baseX + DELETE_FILE_NUMBER_X, baseY + 6 + NUMBER_OFFSET_Y, DRAW_NUMBER_CHARSET_NORMAL, MSG_PAL_WHITE, 0xFF, DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT); + draw_number(filemenu_menus[FILE_MENU_MAIN]->selected + 1, baseX + DELETE_FILE_NUMBER_X, baseY + 6 + NUMBER_OFFSET_Y, DRAW_NUMBER_CHARSET_NORMAL, MSG_PAL_WHITE, 0xFF, DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_QUESTION), baseX + DELETE_FILE_QMARK_X, baseY + 4, 0xFF, 0, 0); break; - case 3: + case FM_CONFIRM_COPY: filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_FILE_22), baseX + 10, baseY + 4, 0xFF, 0, 0); - draw_number(filemenu_menus[0]->selected + 1, baseX + COPY_FILE_NUMBER_X, baseY + 6 + NUMBER_OFFSET_Y, DRAW_NUMBER_CHARSET_NORMAL, MSG_PAL_WHITE, 0xFF, DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT); + draw_number(filemenu_menus[FILE_MENU_MAIN]->selected + 1, baseX + COPY_FILE_NUMBER_X, baseY + 6 + NUMBER_OFFSET_Y, DRAW_NUMBER_CHARSET_NORMAL, MSG_PAL_WHITE, 0xFF, DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_WILL_BE_DELETED), baseX + 49, baseY + 4, 0xFF, 0, 0); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_OK_TO_COPY_TO_THIS_FILE), baseX + 10, baseY + 18, 0xFF, 0, 0); break; - case 1: + case FM_CONFIRM_DUMMY: filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_OVERRIDE_TO_NEW_DATA), baseX + 10, baseY + 4, 0xFF, 0, 0); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_SAVE_OK), baseX + 10, baseY + 18, 0xFF, 0, 0); break; - case 2: + case FM_CONFIRM_CREATE: filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_FILE_NAME_IS), baseX + 10, baseY + 6, 0xFF, 0, 0); for (i = ARRAY_COUNT(filemenu_filename) - 1; i >= 0; i--) { - if (filemenu_filename[i] != 0xF7) { + if (filemenu_filename[i] != MSG_CHAR_READ_SPACE) { break; } } @@ -190,10 +190,10 @@ void filemenu_yesno_draw_prompt_contents( filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_PERIOD_20), baseX + xOffset, baseY + 22, 0xFF, 0, 0); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_OK), baseX + 70, baseY + 38, 0xFF, 0, 0); break; - case 4: + case FM_CONFIRM_START: filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_START_GAME_WITH), baseX + START_GAME_START_WITH_X, baseY + 4, 0xFF, 0, 0); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_FILE_22), baseX + START_GAME_FILE_X, baseY + 4, 0xFF, 0, 0); - draw_number(filemenu_menus[0]->selected + 1, baseX + START_GAME_NUMBER_X, baseY + 6 + NUMBER_OFFSET_Y, DRAW_NUMBER_CHARSET_NORMAL, MSG_PAL_WHITE, 0xFF, DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT); + draw_number(filemenu_menus[FILE_MENU_MAIN]->selected + 1, baseX + START_GAME_NUMBER_X, baseY + 6 + NUMBER_OFFSET_Y, DRAW_NUMBER_CHARSET_NORMAL, MSG_PAL_WHITE, 0xFF, DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_QUESTION), baseX + START_GAME_QMARK_X, baseY + 4, 0xFF, 0, 0); break; } @@ -237,7 +237,7 @@ void filemenu_yesno_handle_input(MenuPanel* menu) { sfx_play_sound(SOUND_MENU_CHANGE_SELECTION); } - if ((filemenu_pressedButtons & BUTTON_START) && menu->page == 4) { + if ((filemenu_pressedButtons & BUTTON_START) && menu->state == FM_CONFIRM_START) { filemenu_set_selected(menu, 0, 0); filemenu_pressedButtons = BUTTON_A; } @@ -252,25 +252,21 @@ void filemenu_yesno_handle_input(MenuPanel* menu) { sfx_play_sound(SOUND_MENU_NEXT); switch (menu->selected) { - case 0: - switch (menu->page) { - case 0: - filemenu_currentMenu = 2; - filemenu_menus[filemenu_currentMenu]->page = 0; + case 0: // YES + switch (menu->state) { + case FM_CONFIRM_DELETE: + filemenu_currentMenu = FILE_MENU_MESSAGE; + filemenu_menus[FILE_MENU_MESSAGE]->state = FM_MESSAGE_DELETED; gWindows[WIN_FILES_MESSAGE].width = 182; gWindows[WIN_FILES_MESSAGE].height = 25; - gWindows[WIN_FILES_MESSAGE].pos.x = ((gWindows[WIN_FILES_MESSAGE].parent != -1) - ? (gWindows[gWindows[WIN_FILES_MESSAGE].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_MESSAGE].width / 2; - gWindows[WIN_FILES_MESSAGE].pos.y = ((gWindows[WIN_FILES_MESSAGE].parent != -1) - ? (gWindows[gWindows[WIN_FILES_MESSAGE].parent].height / 2) - : SCREEN_HEIGHT / 2) - gWindows[WIN_FILES_MESSAGE].height / 2; + gWindows[WIN_FILES_MESSAGE].pos.x = CENTER_WINDOW_X(WIN_FILES_MESSAGE); + gWindows[WIN_FILES_MESSAGE].pos.y = CENTER_WINDOW_Y(WIN_FILES_MESSAGE); set_window_update(WIN_FILES_MESSAGE, WINDOW_UPDATE_SHOW); set_window_update(WIN_FILES_CONFIRM_OPTIONS, (s32)filemenu_update_hidden_name_confirm); - slot = filemenu_menus[0]->selected; + slot = filemenu_menus[FILE_MENU_MAIN]->selected; for (i = 0; i < ARRAY_COUNT(gSaveSlotMetadata->filename); i++) { - gSaveSlotMetadata[slot].filename[i] = 0xF7; + gSaveSlotMetadata[slot].filename[i] = MSG_CHAR_READ_SPACE; } gSaveSlotMetadata[slot].level = 0; gSaveSlotMetadata[slot].timePlayed = 0; @@ -278,17 +274,13 @@ void filemenu_yesno_handle_input(MenuPanel* menu) { fio_erase_game(slot); gSaveSlotHasData[slot] = FALSE; break; - case 3: - filemenu_currentMenu = 2; - filemenu_menus[filemenu_currentMenu]->page = 2; + case FM_CONFIRM_COPY: + filemenu_currentMenu = FILE_MENU_MESSAGE; + filemenu_menus[filemenu_currentMenu]->state = FM_MESSAGE_COPIED; gWindows[WIN_FILES_MESSAGE].width = 154; gWindows[WIN_FILES_MESSAGE].height = 39; - gWindows[WIN_FILES_MESSAGE].pos.x = ((gWindows[WIN_FILES_MESSAGE].parent != -1) - ? (gWindows[gWindows[WIN_FILES_MESSAGE].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_MESSAGE].width / 2; - gWindows[WIN_FILES_MESSAGE].pos.y = ((gWindows[WIN_FILES_MESSAGE].parent != -1) - ? (gWindows[gWindows[WIN_FILES_MESSAGE].parent].height / 2) - : SCREEN_HEIGHT / 2) - gWindows[WIN_FILES_MESSAGE].height / 2; + gWindows[WIN_FILES_MESSAGE].pos.x = CENTER_WINDOW_X(WIN_FILES_MESSAGE); + gWindows[WIN_FILES_MESSAGE].pos.y = CENTER_WINDOW_Y(WIN_FILES_MESSAGE); set_window_update(WIN_FILES_MESSAGE, WINDOW_UPDATE_SHOW); set_window_update(WIN_FILES_CONFIRM_OPTIONS, (s32)filemenu_update_hidden_name_confirm); fio_load_game(filemenu_loadedFileIdx); @@ -296,24 +288,20 @@ void filemenu_yesno_handle_input(MenuPanel* menu) { fio_save_game(filemenu_iterFileIdx); gSaveSlotHasData[filemenu_iterFileIdx] = TRUE; break; - case 1: - filemenu_currentMenu = 2; - filemenu_menus[filemenu_currentMenu]->page = 1; + case FM_CONFIRM_DUMMY: + filemenu_currentMenu = FILE_MENU_MESSAGE; + filemenu_menus[filemenu_currentMenu]->state = FM_MESSAGE_DUMMY; gWindows[WIN_FILES_MESSAGE].width = 153; gWindows[WIN_FILES_MESSAGE].height = 25; - gWindows[WIN_FILES_MESSAGE].pos.x = ((gWindows[WIN_FILES_MESSAGE].parent != -1) - ? (gWindows[gWindows[WIN_FILES_MESSAGE].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_MESSAGE].width / 2; - gWindows[WIN_FILES_MESSAGE].pos.y = ((gWindows[WIN_FILES_MESSAGE].parent != -1) - ? (gWindows[gWindows[WIN_FILES_MESSAGE].parent].height / 2) - : SCREEN_HEIGHT / 2) - gWindows[WIN_FILES_MESSAGE].height / 2; + gWindows[WIN_FILES_MESSAGE].pos.x = CENTER_WINDOW_X(WIN_FILES_MESSAGE); + gWindows[WIN_FILES_MESSAGE].pos.y = CENTER_WINDOW_Y(WIN_FILES_MESSAGE); set_window_update(WIN_FILES_MESSAGE, WINDOW_UPDATE_SHOW); set_window_update(WIN_FILES_CONFIRM_OPTIONS, (s32)filemenu_update_hidden_name_confirm); - gSaveSlotMetadata[filemenu_menus[0]->selected] = gSaveSlotMetadata[gGameStatusPtr->saveSlot]; - fio_save_game(filemenu_menus[0]->selected); - gSaveSlotHasData[filemenu_menus[0]->selected] = TRUE; + gSaveSlotMetadata[filemenu_menus[FILE_MENU_MAIN]->selected] = gSaveSlotMetadata[gGameStatusPtr->saveSlot]; + fio_save_game(filemenu_menus[FILE_MENU_MAIN]->selected); + gSaveSlotHasData[filemenu_menus[FILE_MENU_MAIN]->selected] = TRUE; break; - case 2: + case FM_CONFIRM_CREATE: clear_player_data(); clear_saved_variables(); gGameStatusPtr->areaID = AREA_KMR; @@ -321,7 +309,7 @@ void filemenu_yesno_handle_input(MenuPanel* menu) { gGameStatusPtr->entryID = 0; evt_set_variable(NULL, GB_StoryProgress, STORY_INTRO); - slot2 = filemenu_menus[0]->selected; + slot2 = filemenu_menus[FILE_MENU_MAIN]->selected; for (i = 0; i < ARRAY_COUNT(gSaveSlotMetadata->filename); i++) { gSaveSlotMetadata[slot2].filename[i] = filemenu_filename[i]; } @@ -341,20 +329,16 @@ void filemenu_yesno_handle_input(MenuPanel* menu) { set_window_update(WIN_FILES_SLOT3_BODY, (s32)filemenu_update_show_with_rotation); set_window_update(WIN_FILES_SLOT4_BODY, (s32)filemenu_update_show_with_rotation); set_window_update(WIN_FILES_CONFIRM_OPTIONS, (s32)filemenu_update_hidden_name_confirm); - filemenu_currentMenu = 2; - filemenu_menus[2]->page = 3; + filemenu_currentMenu = FILE_MENU_MESSAGE; + filemenu_menus[FILE_MENU_MESSAGE]->state = FM_MESSAGE_CREATED; gWindows[WIN_FILES_MESSAGE].width = 184; gWindows[WIN_FILES_MESSAGE].height = 25; - gWindows[WIN_FILES_MESSAGE].pos.x = ((gWindows[WIN_FILES_MESSAGE].parent != -1) - ? (gWindows[gWindows[WIN_FILES_MESSAGE].parent].width / 2) - : SCREEN_WIDTH / 2) - gWindows[WIN_FILES_MESSAGE].width / 2; - gWindows[WIN_FILES_MESSAGE].pos.y = ((gWindows[WIN_FILES_MESSAGE].parent != -1) - ? (gWindows[gWindows[WIN_FILES_MESSAGE].parent].height / 2) - : SCREEN_HEIGHT / 2) - gWindows[WIN_FILES_MESSAGE].height / 2; + gWindows[WIN_FILES_MESSAGE].pos.x = CENTER_WINDOW_X(WIN_FILES_MESSAGE); + gWindows[WIN_FILES_MESSAGE].pos.y = CENTER_WINDOW_Y(WIN_FILES_MESSAGE); set_window_update(WIN_FILES_MESSAGE, WINDOW_UPDATE_SHOW); break; - case 4: - slot3 = filemenu_menus[0]->selected; + case FM_CONFIRM_START: + slot3 = filemenu_menus[FILE_MENU_MAIN]->selected; if (gGameStatusPtr->soundOutputMode != 1 - gSaveGlobals.useMonoSound || slot3 != (u8)gSaveGlobals.lastFileSelected) { @@ -367,21 +351,21 @@ void filemenu_yesno_handle_input(MenuPanel* menu) { break; } break; - case 1: - switch (menu->page) { - case 0: - case 1: - case 3: - filemenu_currentMenu = 0; + case 1: // NO + switch (menu->state) { + case FM_CONFIRM_DELETE: + case FM_CONFIRM_DUMMY: + case FM_CONFIRM_COPY: + filemenu_currentMenu = FILE_MENU_MAIN; set_window_update(WIN_FILES_CONFIRM_OPTIONS, (s32)filemenu_update_hidden_name_confirm); break; - case 2: - filemenu_currentMenu = 3; + case FM_CONFIRM_CREATE: + filemenu_currentMenu = FILE_MENU_INPUT_NAME; set_window_update(WIN_FILES_CONFIRM_OPTIONS, (s32)filemenu_update_hidden_name_confirm); break; - case 4: - filemenu_currentMenu = 0; - slot4 = filemenu_menus[0]->selected; + case FM_CONFIRM_START: + filemenu_currentMenu = FILE_MENU_MAIN; + slot4 = filemenu_menus[FILE_MENU_MAIN]->selected; set_window_update(WIN_FILES_TITLE, (s32)filemenu_update_show_with_rotation); set_window_update(WIN_FILES_STEREO, (s32)filemenu_update_show_with_rotation); set_window_update(WIN_FILES_MONO, (s32)filemenu_update_show_with_rotation); @@ -407,20 +391,20 @@ void filemenu_yesno_handle_input(MenuPanel* menu) { sfx_play_sound(SOUND_MENU_BACK); filemenu_set_selected(menu, 0, 1); - switch (menu->page) { - case 0: - case 1: - case 3: - filemenu_currentMenu = 0; + switch (menu->state) { + case FM_CONFIRM_DELETE: + case FM_CONFIRM_DUMMY: + case FM_CONFIRM_COPY: + filemenu_currentMenu = FILE_MENU_MAIN; set_window_update(WIN_FILES_CONFIRM_OPTIONS, (s32)filemenu_update_hidden_name_confirm); break; - case 2: - filemenu_currentMenu = 3; + case FM_CONFIRM_CREATE: + filemenu_currentMenu = FILE_MENU_INPUT_NAME; set_window_update(WIN_FILES_CONFIRM_OPTIONS, (s32)filemenu_update_hidden_name_confirm); break; - case 4: - filemenu_currentMenu = 0; - slot = filemenu_menus[0]->selected; + case FM_CONFIRM_START: + filemenu_currentMenu = FILE_MENU_MAIN; + slot = filemenu_menus[FILE_MENU_MAIN]->selected; set_window_update(WIN_FILES_TITLE, (s32)filemenu_update_show_with_rotation); set_window_update(WIN_FILES_STEREO, (s32)filemenu_update_show_with_rotation); set_window_update(WIN_FILES_MONO, (s32)filemenu_update_show_with_rotation); diff --git a/src/pause/pause_badges.c b/src/pause/pause_badges.c index e79a3f3198..efccab9bff 100644 --- a/src/pause/pause_badges.c +++ b/src/pause/pause_badges.c @@ -112,7 +112,7 @@ MenuPanel gPausePanelBadges = { .col = 0, .row = 0, .selected = 0, - .page = 0, + .state = 0, .numCols = 0, .numRows = 0, .numPages = 0, diff --git a/src/pause/pause_items.c b/src/pause/pause_items.c index ff7f687652..c80d72906e 100644 --- a/src/pause/pause_items.c +++ b/src/pause/pause_items.c @@ -54,7 +54,7 @@ MenuPanel gPausePanelItems = { .col = 0, .row = 0, .selected = 0, - .page = 0, + .state = 0, .numCols = 0, .numRows = 0, .numPages = 0, diff --git a/src/pause/pause_main.c b/src/pause/pause_main.c index a564288cb3..e896428aab 100644 --- a/src/pause/pause_main.c +++ b/src/pause/pause_main.c @@ -219,7 +219,7 @@ void pause_set_cursor_pos_immediate(s32 windowID, s32 posX, s32 posY) { gPauseCursorTargetPosY = posY; gPauseCursorPosY = posY; - } else if ((window->flags & WINDOW_FLAG_INITIAL_ANIMATION) == 0 && (window->parent == -1 || !(gWindows[window->parent].flags & WINDOW_FLAG_INITIAL_ANIMATION))) { + } else if ((window->flags & WINDOW_FLAG_INITIAL_ANIMATION) == 0 && (window->parent == WIN_NONE || !(gWindows[window->parent].flags & WINDOW_FLAG_INITIAL_ANIMATION))) { gPauseCursorTargetPosX = posX; gPauseCursorPosX = posX; gPauseCursorTargetPosY = posY; @@ -240,7 +240,7 @@ void pause_set_cursor_pos(s32 windowID, s32 posX, s32 posY) { Window* window = &gWindows[i]; s8 parent = window->parent; - if ((parent == -1 || parent == WIN_PAUSE_MAIN) && (window->flags & WINDOW_FLAG_INITIAL_ANIMATION)) { + if ((parent == WIN_NONE || parent == WIN_PAUSE_MAIN) && (window->flags & WINDOW_FLAG_INITIAL_ANIMATION)) { break; } } @@ -252,7 +252,7 @@ void pause_set_cursor_pos(s32 windowID, s32 posX, s32 posY) { gPauseCursorPosX = posX; gPauseCursorTargetPosY = posY; gPauseCursorPosY = posY; - } else if ((window->flags & WINDOW_FLAG_INITIAL_ANIMATION) == 0 && (window->parent == -1 || !(gWindows[window->parent].flags & WINDOW_FLAG_INITIAL_ANIMATION))) { + } else if ((window->flags & WINDOW_FLAG_INITIAL_ANIMATION) == 0 && (window->parent == WIN_NONE || !(gWindows[window->parent].flags & WINDOW_FLAG_INITIAL_ANIMATION))) { gPauseCursorTargetPosX = posX; gPauseCursorTargetPosY = posY; } diff --git a/src/pause/pause_map.c b/src/pause/pause_map.c index cac9fa5bde..aa51d85680 100644 --- a/src/pause/pause_map.c +++ b/src/pause/pause_map.c @@ -78,7 +78,7 @@ MenuPanel gPausePanelMap = { .col = 0, .row = 0, .selected = 0, - .page = 0, + .state = 0, .numCols = 0, .numRows = 0, .numPages = 0, diff --git a/src/pause/pause_partners.c b/src/pause/pause_partners.c index 19e2a1930e..b571a82362 100644 --- a/src/pause/pause_partners.c +++ b/src/pause/pause_partners.c @@ -273,7 +273,7 @@ MenuPanel gPausePanelPartners = { .col = 0, .row = 1, .selected = 0, - .page = 0, + .state = 0, .numCols = 4, .numRows = 2, .numPages = 0, diff --git a/src/pause/pause_spirits.c b/src/pause/pause_spirits.c index 8e044749fb..8ce1842ccc 100644 --- a/src/pause/pause_spirits.c +++ b/src/pause/pause_spirits.c @@ -132,7 +132,7 @@ MenuPanel gPausePanelSpirits = { .col = 2, .row = 0, .selected = 0, - .page = 0, + .state = 0, .numCols = 5, .numRows = 2, .numPages = 0, diff --git a/src/pause/pause_stats.c b/src/pause/pause_stats.c index 9abbc33a76..ced4fa8032 100644 --- a/src/pause/pause_stats.c +++ b/src/pause/pause_stats.c @@ -151,7 +151,7 @@ MenuPanel gPausePanelStats = { .col = 0, .row = 0, .selected = 0, - .page = 0, + .state = 0, .numCols = 2, .numRows = 7, .numPages = 0, diff --git a/src/pause/pause_tabs.c b/src/pause/pause_tabs.c index c7f5f067f6..1e26e7a428 100644 --- a/src/pause/pause_tabs.c +++ b/src/pause/pause_tabs.c @@ -187,7 +187,7 @@ MenuPanel gPausePanelTabs = { .col = 0, .row = 0, .selected = 0, - .page = 0, + .state = 0, .numCols = 6, .numRows = 1, .numPages = 0, diff --git a/src/state_file_select.c b/src/state_file_select.c index 57ca95beba..187c8de65c 100644 --- a/src/state_file_select.c +++ b/src/state_file_select.c @@ -232,7 +232,7 @@ void state_init_exit_file_select(void) { D_800A0932[0] = 0; D_800A0930 = 0; - if (func_80244BC4() == 0) { + if (filemenu_get_exit_mode() == 0) { set_map_transition_effect(TRANSITION_SLOW_FADE_TO_WHITE); } else { set_map_transition_effect(TRANSITION_ENTER_WORLD); @@ -377,7 +377,7 @@ void state_step_exit_language_select(void) { } void state_step_exit_file_select(void) { - s32 temp_s0 = func_80244BC4(); + s32 exitMode = filemenu_get_exit_mode(); s32 flagSum; s32 i; @@ -388,7 +388,7 @@ void state_step_exit_file_select(void) { for (i = 44; i < ARRAY_COUNT(gWindows); i++) { Window* window = &gWindows[i]; - if (window->parent == WIN_FILES_MAIN || window->parent == -1) { + if (window->parent == WIN_FILES_MAIN || window->parent == WIN_NONE) { flagSum += window->flags & WINDOW_FLAG_INITIAL_ANIMATION; } } @@ -398,7 +398,7 @@ void state_step_exit_file_select(void) { } break; case 1: - if (temp_s0 == 0 || update_exit_map_screen_overlay(D_800A0932) != 0) { + if (exitMode == 0 || update_exit_map_screen_overlay(D_800A0932) != 0) { D_800A0931 = 2; } break; @@ -408,7 +408,7 @@ void state_step_exit_file_select(void) { D_800A0931 = 3; case 3: set_time_freeze_mode(TIME_FREEZE_NONE); - if (temp_s0 == 0) { + if (exitMode == 0) { set_game_mode(GAME_MODE_TITLE_SCREEN); gOverrideFlags &= ~GLOBAL_OVERRIDES_WINDOWS_OVER_CURTAINS; } else { diff --git a/src/windows.c b/src/windows.c index 19d37fc5db..b641367bd8 100644 --- a/src/windows.c +++ b/src/windows.c @@ -321,7 +321,7 @@ void render_windows(s32* windowsArray, s32 parent, s32 flags, s32 baseX, s32 bas posY += baseY; } - if (parent == -1) { + if (parent == WIN_NONE) { boxTranslateX = SCREEN_WIDTH; } else { boxTranslateX = window->width; diff --git a/ver/jp/undefined_syms.txt b/ver/jp/undefined_syms.txt index b8662dd93f..f8b5d6393d 100644 --- a/ver/jp/undefined_syms.txt +++ b/ver/jp/undefined_syms.txt @@ -65,7 +65,7 @@ pause_handle_input = 0x80243BF4; pause_cleanup = 0x80243EC4; filemenu_init = 0x802440B0; filemenu_cleanup = 0x802442D0; -func_80244BC4 = 0x80244394; +filemenu_get_exit_mode = 0x80244394; heap_collisionHead = 0x80268000; shim_create_audio_system_obfuscated = 0x802B2000; shim_load_engine_data_obfuscated = 0x802B203C; diff --git a/ver/us/symbol_addrs.txt b/ver/us/symbol_addrs.txt index a89cc3d9a6..8b4ce20a6c 100644 --- a/ver/us/symbol_addrs.txt +++ b/ver/us/symbol_addrs.txt @@ -6343,7 +6343,7 @@ filemenu_draw_cursor = 0x80244030; // type:func rom:0x164890 filemenu_draw_contents_copy_arrow = 0x802440BC; // type:func rom:0x16491C filemenu_init = 0x802448E0; // type:func rom:0x165140 filemenu_cleanup = 0x80244B00; // type:func rom:0x165360 -func_80244BC4 = 0x80244BC4; // type:func rom:0x165424 +filemenu_get_exit_mode = 0x80244BC4; // type:func rom:0x165424 filemenu_draw_contents_title = 0x80244C30; // type:func rom:0x165490 filemenu_draw_contents_stereo = 0x80244CEC; // type:func rom:0x16554C filemenu_draw_contents_mono = 0x80244D60; // type:func rom:0x1655C0 @@ -9016,11 +9016,11 @@ func_802A2910 = 0x802A2910; // type:func rom:0x4176A0 func_802A2AB8 = 0x802A2AB8; // type:func rom:0x417848 func_802A2C58 = 0x802A2C58; // type:func rom:0x4179E8 btl_submenu_moves_update = 0x802A2C84; // type:func rom:0x417A14 -func_802A3C98 = 0x802A3C98; // type:func rom:0x418A28 -func_802A43DC = 0x802A43DC; // type:func rom:0x41916C -func_802A4448 = 0x802A4448; // type:func rom:0x4191D8 -func_802A4494 = 0x802A4494; // type:func rom:0x419224 -func_802A4534 = 0x802A4534; // type:func rom:0x4192C4 +btl_menu_moves_draw_content = 0x802A3C98; // type:func rom:0x418A28 +btl_menu_moves_show_title = 0x802A43DC; // type:func rom:0x41916C +btl_menu_moves_show_icon = 0x802A4448; // type:func rom:0x4191D8 +btl_menu_moves_show_desc = 0x802A4494; // type:func rom:0x419224 +btl_menu_moves_show_error = 0x802A4534; // type:func rom:0x4192C4 func_802A45D8 = 0x802A45D8; // type:func rom:0x419368 func_802A4718 = 0x802A4718; // type:func rom:0x4194A8 func_802A472C = 0x802A472C; // type:func rom:0x4194BC