filemenu state upstreams from dx (#1215)

This commit is contained in:
z64a 2024-10-30 20:21:15 -04:00 committed by GitHub
parent bf0741ce15
commit b1ca4bd051
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
25 changed files with 607 additions and 632 deletions

View File

@ -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

View File

@ -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,

View File

@ -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 {
PAGE_0,
PAGE_1,
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 {
// 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
PAGE_2,
FM_MAIN_SELECT_LANG_DUMMY, // non-PAL versions have an unimplemented dummy language select
#endif
PAGE_3,
PAGE_4,
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
FM_CONFIRM_DUMMY,
#endif
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);

View File

@ -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);

View File

@ -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]

View File

@ -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;

View File

@ -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;
f32 rotAngle;
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;
}
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;
}
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);
}
if (filemenu_menus[FILE_MENU_MAIN]->state != FM_MAIN_SELECT_COPY_TO) {
return;
}
// 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) {
return 1;
} else {
return 0;
}
if (filemenu_menus[FILE_MENU_MAIN]->state == FM_MAIN_SELECT_FILE
&& filemenu_menus[FILE_MENU_MAIN]->selected <= FM_MAIN_OPT_FILE_4
) {
return 1;
}
return 0;
}

View File

@ -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) {
}

View File

@ -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

View File

@ -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;
gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_PROMPT);
filemenu_currentMenu = 1;
temp_a0 = filemenu_menus[filemenu_currentMenu];
temp_a0->page = 4;
filemenu_set_selected(temp_a0, 0, 0);
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;
gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_PROMPT);
filemenu_currentMenu = 1;
temp_a0 = filemenu_menus[filemenu_currentMenu];
temp_a0->page = 0;
filemenu_set_selected(temp_a0, 0, 1);
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;
gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_PROMPT);
filemenu_currentMenu = 1;
temp_a0 = filemenu_menus[filemenu_currentMenu];
temp_a0->page = 3;
filemenu_set_selected(temp_a0, 0, 1);
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;
gWindows[WIN_FILES_CONFIRM_PROMPT].pos.x = CENTER_WINDOW_X(WIN_FILES_CONFIRM_PROMPT);
filemenu_currentMenu = 1;
temp_a0 = filemenu_menus[filemenu_currentMenu];
temp_a0->page = 1;
filemenu_set_selected(temp_a0, 0, 1);
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;

View File

@ -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) {

View File

@ -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;

View File

@ -29,12 +29,12 @@
u8 filemenu_yesno_gridData[] = {
0, 1,
0, 1,
0, 1,
0, 1,
#if !VERSION_PAL
0, 1
0, 1,
#endif
0, 1,
0, 1,
0, 1,
};
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:
xOffset1 = 28;
yOffset1 = 4;
xOffset2 = 28;
yOffset2 = 21;
break;
case 1:
xOffset1 = 28;
yOffset1 = 4;
xOffset2 = 28;
yOffset2 = 21;
break;
case 2:
xOffset1 = 28;
yOffset1 = 4;
xOffset2 = 28;
yOffset2 = 21;
break;
case 3:
switch (menu->state) {
case FM_CONFIRM_DELETE:
xOffset1 = 28;
yOffset1 = 4;
xOffset2 = 28;
yOffset2 = 21;
break;
#if !VERSION_PAL
case 4:
case FM_CONFIRM_DUMMY:
xOffset1 = 28;
yOffset1 = 4;
xOffset2 = 28;
yOffset2 = 21;
break;
#endif
case FM_CONFIRM_CREATE:
xOffset1 = 28;
yOffset1 = 4;
xOffset2 = 28;
yOffset2 = 21;
break;
case FM_CONFIRM_COPY:
xOffset1 = 28;
yOffset1 = 4;
xOffset2 = 28;
yOffset2 = 21;
break;
case FM_CONFIRM_START:
xOffset1 = 28;
yOffset1 = 4;
xOffset2 = 28;
yOffset2 = 21;
break;
}
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);

View File

@ -112,7 +112,7 @@ MenuPanel gPausePanelBadges = {
.col = 0,
.row = 0,
.selected = 0,
.page = 0,
.state = 0,
.numCols = 0,
.numRows = 0,
.numPages = 0,

View File

@ -54,7 +54,7 @@ MenuPanel gPausePanelItems = {
.col = 0,
.row = 0,
.selected = 0,
.page = 0,
.state = 0,
.numCols = 0,
.numRows = 0,
.numPages = 0,

View File

@ -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;
}

View File

@ -78,7 +78,7 @@ MenuPanel gPausePanelMap = {
.col = 0,
.row = 0,
.selected = 0,
.page = 0,
.state = 0,
.numCols = 0,
.numRows = 0,
.numPages = 0,

View File

@ -273,7 +273,7 @@ MenuPanel gPausePanelPartners = {
.col = 0,
.row = 1,
.selected = 0,
.page = 0,
.state = 0,
.numCols = 4,
.numRows = 2,
.numPages = 0,

View File

@ -132,7 +132,7 @@ MenuPanel gPausePanelSpirits = {
.col = 2,
.row = 0,
.selected = 0,
.page = 0,
.state = 0,
.numCols = 5,
.numRows = 2,
.numPages = 0,

View File

@ -151,7 +151,7 @@ MenuPanel gPausePanelStats = {
.col = 0,
.row = 0,
.selected = 0,
.page = 0,
.state = 0,
.numCols = 2,
.numRows = 7,
.numPages = 0,

View File

@ -187,7 +187,7 @@ MenuPanel gPausePanelTabs = {
.col = 0,
.row = 0,
.selected = 0,
.page = 0,
.state = 0,
.numCols = 6,
.numRows = 1,
.numPages = 0,

View File

@ -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 {

View File

@ -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;

View File

@ -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;

View File

@ -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