diff --git a/src/m_menu.c b/src/m_menu.c index 1605d1aeb01861cb7e083f33826bfb2a1bb933be..6d7b0261279bf80de51b1b73971654c341f4f53a 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -13557,7 +13557,7 @@ static void M_VideoModeMenu(INT32 choice) memset(modedescs, 0, sizeof(modedescs)); vidm_nummodes = 0; - vidm_selected = 0; + vidm_selected = -1; for (INT32 i = 0; i < MAXWINMODES && vidm_nummodes < MAXMODEDESCS; i++) { @@ -13574,13 +13574,19 @@ static void M_VideoModeMenu(INT32 choice) if (width == vid.width && height == vid.height) vidm_selected = vidm_nummodes; - // Show multiples of 320x200 as green. - if (SCR_IsAspectCorrect(width, height)) - desc->goodratio = 1; - vidm_nummodes++; } + // Find closest resolution in the list that matches the current one + if (vidm_selected < 0) + { + for (INT32 i = 0; i < vidm_nummodes; i++) + { + if (modedescs[i].width >= vid.width && modedescs[i].height >= vid.height) + vidm_selected = i; + } + } + vidm_column_size = (vidm_nummodes + 2) / 3; M_SetupNextMenu(&OP_VideoModeDef); @@ -13594,9 +13600,7 @@ static void M_DrawMainVideoMenu(void) INT32 y = currentMenu->y+currentMenu->menuitems[1].alphaKey*2; if (itemOn == 7) y -= 10; - V_DrawRightAlignedString(BASEVIDWIDTH - currentMenu->x, y, - (SCR_IsAspectCorrect(vid.width, vid.height) ? V_GREENMAP : V_YELLOWMAP), - va("%dx%d", vid.width, vid.height)); + V_DrawRightAlignedString(BASEVIDWIDTH - currentMenu->x, y, V_YELLOWMAP, va("%dx%d", vid.width, vid.height)); } } @@ -13617,9 +13621,8 @@ static void M_DrawVideoMode(void) { if (i == vidm_selected) V_DrawString(row, col, V_YELLOWMAP, modedescs[i].desc); - // Show multiples of 320x200 as green. else - V_DrawString(row, col, (modedescs[i].goodratio) ? V_GREENMAP : 0, modedescs[i].desc); + V_DrawString(row, col, 0, modedescs[i].desc); col += 8; if ((i % vidm_column_size) == (vidm_column_size-1)) @@ -13634,11 +13637,9 @@ static void M_DrawVideoMode(void) INT32 testtime = (vidm_testingmode/TICRATE) + 1; V_DrawCenteredString(BASEVIDWIDTH/2, OP_VideoModeDef.y + 116, 0, - va("Previewing mode %c%dx%d", - (SCR_IsAspectCorrect(vid.width, vid.height)) ? 0x83 : 0x80, - vid.width, vid.height)); + va("Previewing resolution %dx%d", vid.width, vid.height)); V_DrawCenteredString(BASEVIDWIDTH/2, OP_VideoModeDef.y + 138, 0, - "Press ENTER again to keep this mode"); + "Press ENTER again to keep this resolution"); V_DrawCenteredString(BASEVIDWIDTH/2, OP_VideoModeDef.y + 150, 0, va("Wait %d second%s", testtime, (testtime > 1) ? "s" : "")); V_DrawCenteredString(BASEVIDWIDTH/2, OP_VideoModeDef.y + 158, 0, @@ -13646,28 +13647,24 @@ static void M_DrawVideoMode(void) } else { - V_DrawFill(60, OP_VideoModeDef.y + 98, 200, 12, 159); - V_DrawFill(60, OP_VideoModeDef.y + 114, 200, 20, 159); + INT32 y1 = OP_VideoModeDef.y + 120; + INT32 y2 = y1 + 12 + 4; + + INT32 width = 256; - V_DrawCenteredString(BASEVIDWIDTH/2, OP_VideoModeDef.y + 100, 0, - va("Current mode is %c%dx%d", - (SCR_IsAspectCorrect(vid.width, vid.height)) ? 0x83 : 0x80, - vid.width, vid.height)); - V_DrawCenteredString(BASEVIDWIDTH/2, OP_VideoModeDef.y + 116, (cv_fullscreen.value ? 0 : V_TRANSLUCENT), - va("Default mode is %c%dx%d", - (SCR_IsAspectCorrect(cv_scr_width.value, cv_scr_height.value)) ? 0x83 : (!SCR_IsValidResolution(cv_scr_width.value, cv_scr_height.value) ? 0x85 : 0x80), + V_DrawFill(BASEVIDWIDTH/2 - (width / 2), y1, width, 12, 159); + V_DrawFill(BASEVIDWIDTH/2 - (width / 2), y2, width, 20, 159); + + V_DrawCenteredString(BASEVIDWIDTH/2, y1 + 2, 0, + va("Current resolution is %dx%d", vid.width, vid.height)); + V_DrawCenteredString(BASEVIDWIDTH/2, y2 + 2, (cv_fullscreen.value ? 0 : V_TRANSLUCENT), + va("Default resolution is %c%dx%d", + !SCR_IsValidResolution(cv_scr_width.value, cv_scr_height.value) ? 0x85 : 0x80, cv_scr_width.value, cv_scr_height.value)); - V_DrawCenteredString(BASEVIDWIDTH/2, OP_VideoModeDef.y + 124, (cv_fullscreen.value ? V_TRANSLUCENT : 0), - va("Windowed mode is %c%dx%d", - (SCR_IsAspectCorrect(cv_scr_width_w.value, cv_scr_height_w.value)) ? 0x83 : (!SCR_IsValidResolution(cv_scr_width_w.value, cv_scr_height_w.value) ? 0x85 : 0x80), + V_DrawCenteredString(BASEVIDWIDTH/2, y2 + 2 + 8, (cv_fullscreen.value ? V_TRANSLUCENT : 0), + va("Windowed resolution is %c%dx%d", + !SCR_IsValidResolution(cv_scr_width_w.value, cv_scr_height_w.value) ? 0x85 : 0x80, cv_scr_width_w.value, cv_scr_height_w.value)); - - V_DrawCenteredString(BASEVIDWIDTH/2, OP_VideoModeDef.y + 138, - V_GREENMAP, "Green modes are recommended."); - V_DrawCenteredString(BASEVIDWIDTH/2, OP_VideoModeDef.y + 146, - V_YELLOWMAP, "Other modes may have visual errors."); - V_DrawCenteredString(BASEVIDWIDTH/2, OP_VideoModeDef.y + 158, - V_YELLOWMAP, "Larger modes may have performance issues."); } // Draw the cursor for the VidMode menu diff --git a/src/m_menu.h b/src/m_menu.h index 08f56b0f030858968fa36f4bbe282f1a363c9e95..7734f1d6c0e899c98a63d1e8f9ef72dbdc11c185 100644 --- a/src/m_menu.h +++ b/src/m_menu.h @@ -415,7 +415,6 @@ typedef struct { INT32 width, height; char desc[12]; // XXXXXxYYYYY - UINT8 goodratio; // aspect correct if 1 } modedesc_t; // savegame struct for save game menu