Added various 4:3, 16:10 (8:5), 16:9, 5:4 aspect-based resolutions,

cleaned up the video mode list, added refresh rate option to video menu 
(driver default (0), 59hz, 60hz, 70hz, 72hz, 75hz, 85hz, 100hz)


git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@3484 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Lance 2009-12-25 02:57:16 +00:00
parent c8308c46f2
commit df42139913

View file

@ -986,23 +986,42 @@ typedef struct vidmode_s
vidmode_t vid_modes[] = vidmode_t vid_modes[] =
{ {
{ "320x200", 320, 200}, { "320x200 (16:10)", 320, 200}, // CGA, MCGA
{ "320x240", 320, 240}, { "320x240 (4:3)", 320, 240}, // QVGA
{ "400x300", 400, 300}, { "400x300 (4:3)", 400, 300}, // Quarter SVGA
{ "512x384", 512, 384}, { "512x384 (4:3)", 512, 384}, // Mac LC
{ "640x480", 640, 480}, { "640x400 (16:10)", 640, 400}, // Atari ST mono, Amiga OCS NTSC Hires interlace
{ "800x600", 800, 600}, { "640x480 (4:3)", 640, 480}, // VGA, MCGA
{ "960x720", 960, 720}, { "800x600 (4:3)", 800, 600}, // SVGA
{ "1024x768 (XGA: 14-15inch LCD Native)", 1024, 768}, { "856x480 (16:9)", 856, 480}, // WVGA
{ "1152x864", 1152, 864}, { "960x720 (4:3)", 960, 720}, // unnamed
{ "1280x960", 1280, 960}, { "1024x576 (16:9)", 1024, 576}, // WSVGA
{ "1280x1024 (SXGA: 17-19inch LCD Native)", 1280, 1024}, { "1024x640 (16:10)", 1024, 640}, // unnamed
{ "1440x900 (WXGA: 19inch Widescreen LCD Native Resolution)", 1440, 900}, { "1024x768 (4:3)", 1024, 768}, // XGA
{ "1600x1200 (UXGA: 20+inch LCD Native Resolution)", 1600, 1200}, //sw height is bound to 200 to 1024 { "1152x720 (16:10)", 1152, 720}, // XGA+
{ "1680x1050 (WSXGA: 20inch Widescreen LCD Native)", 1680, 1050}, { "1152x864 (4:3)", 1152, 864}, // XGA+
{ "1920x1200 (WUXGA: 24inch Widescreen LCD Native)", 1920, 1200}, { "1280x720 (16:9)", 1280, 720}, // WXGA min.
{ "2048x1536", 2048, 1536}, //too much width will disable water warping (>1280) (but at that resolution, it's almost unnoticable) { "1280x800 (16:10)", 1280, 800}, // WXGA avg (native resolution of 17" widescreen LCDs)
{ "2560x1600 (30inch Widescreen LCD Native)", 2560, 1600} { "1280x960 (4:3)", 1280, 960}, //SXGA-
{ "1280x1024 (5:4)", 1280, 1024}, // SXGA (native resolution of 17-19" LCDs)
{ "1366x768 (16:9)", 1366, 768}, // WXGA
{ "1400x1050 (4:3)", 1400, 1050}, // SXGA+
{ "1440x900 (16:10)", 1440, 900}, // WXGA+ (native resolution of 19" widescreen LCDs)
{ "1440x1080 (4:3)", 1440, 1080}, // unnamed
{ "1600x900 (16:9)", 1600, 900}, // 900p
{ "1600x1200 (4:3)", 1600, 1200}, // UXGA (native resolution of 20"+ LCDs) //sw height is bound to 200 to 1024
{ "1680x1050 (16:10)", 1680, 1050}, // WSXGA+ (native resolution of 22" widescreen LCDs)
{ "1792x1344 (4:3)", 1792, 1344}, // unnamed
{ "1800x1440 (5:4)", 1800, 1440}, // unnamed
{ "1856x1392 (4:3)", 1856, 1392}, //unnamed
{ "1920x1080 (16:9)", 1920, 1080}, // 1080p (native resolution of cheap 24" LCDs, which really are 23.6")
{ "1920x1200 (16:10)", 1920, 1200}, // WUXGA (native resolution of good 24" widescreen LCDs)
{ "1920x1440 (4:3)", 1920, 1440}, // TXGA
{ "2048x1152 (16:9)", 2048, 1152}, // QWXGA (native resolution of 23" ultra-widescreen LCDs)
{ "2048x1536 (4:3)", 2048, 1536}, // QXGA //too much width will disable water warping (>1280) (but at that resolution, it's almost unnoticable)
{ "2304x1440 (16:10)", 2304, 1440}, // (unnamed; maximum resolution of the Sony GDM-FW900 and Hewlett Packard A7217A)
{ "2560x1600 (16:10)", 2560, 1600}, // WQXGA (maximum resolution of 30" widescreen LCDs, Dell for example)
{ "2560x2048 (5:4)", 2560, 2048} // QSXGA
}; };
#define NUMVIDMODES sizeof(vid_modes)/sizeof(vid_modes[0]) #define NUMVIDMODES sizeof(vid_modes)/sizeof(vid_modes[0])
@ -1021,6 +1040,7 @@ typedef struct {
menucombo_t *modecombo; menucombo_t *modecombo;
menucombo_t *conscalecombo; menucombo_t *conscalecombo;
menucombo_t *bppcombo; menucombo_t *bppcombo;
menucombo_t *refreshratecombo;
menucombo_t *texturefiltercombo; menucombo_t *texturefiltercombo;
menuedit_t *customwidth; menuedit_t *customwidth;
menuedit_t *customheight; menuedit_t *customheight;
@ -1108,6 +1128,35 @@ qboolean M_VideoApply (union menuoption_s *op,struct menu_s *menu,int key)
Cbuf_AddText(va("vid_bpp %i\n", selectedbpp), RESTRICT_LOCAL); Cbuf_AddText(va("vid_bpp %i\n", selectedbpp), RESTRICT_LOCAL);
switch(info->refreshratecombo->selectedoption)
{
case 0:
Cbuf_AddText(va("vid_displayfrequency %i\n", 0), RESTRICT_LOCAL);
break;
case 1:
Cbuf_AddText(va("vid_displayfrequency %i\n", 59), RESTRICT_LOCAL);
break;
case 2:
Cbuf_AddText(va("vid_displayfrequency %i\n", 60), RESTRICT_LOCAL);
break;
case 3:
Cbuf_AddText(va("vid_displayfrequency %i\n", 70), RESTRICT_LOCAL);
break;
case 4:
Cbuf_AddText(va("vid_displayfrequency %i\n", 72), RESTRICT_LOCAL);
break;
case 5:
Cbuf_AddText(va("vid_displayfrequency %i\n", 75), RESTRICT_LOCAL);
break;
case 6:
Cbuf_AddText(va("vid_displayfrequency %i\n", 85), RESTRICT_LOCAL);
break;
case 7:
Cbuf_AddText(va("vid_displayfrequency %i\n", 100), RESTRICT_LOCAL);
break;
}
switch(info->renderer->selectedoption) switch(info->renderer->selectedoption)
{ {
#ifdef RGLQUAKE #ifdef RGLQUAKE
@ -1157,11 +1206,25 @@ void M_Menu_Video_f (void)
NULL NULL
}; };
static const char *refreshrates[] =
{
"0Hz (OS Driver refresh rate)",
"59Hz (NTSC is 59.94i)",
"60Hz",
"70Hz",
"72Hz", // VESA minimum setting to avoid eye damage on CRT monitors
"75Hz",
"85Hz",
"100Hz",
NULL
};
videomenuinfo_t *info; videomenuinfo_t *info;
menu_t *menu; menu_t *menu;
int prefabmode; int prefabmode;
int prefab2dmode; int prefab2dmode;
int currentbpp; int currentbpp;
int currentrefreshrate;
#ifdef RGLQUAKE #ifdef RGLQUAKE
int currenttexturefilter; int currenttexturefilter;
#endif #endif
@ -1199,6 +1262,25 @@ void M_Menu_Video_f (void)
else else
currentbpp = 0; currentbpp = 0;
if (vid_refreshrate.value >= 100)
currentrefreshrate = 7;
else if (vid_refreshrate.value >= 85)
currentrefreshrate = 6;
else if (vid_refreshrate.value >= 75)
currentrefreshrate = 5;
else if (vid_refreshrate.value >= 72)
currentrefreshrate = 4;
else if (vid_refreshrate.value >= 70)
currentrefreshrate = 3;
else if (vid_refreshrate.value >= 60)
currentrefreshrate = 2;
else if (vid_refreshrate.value >= 59)
currentrefreshrate = 1;
else if (vid_refreshrate.value >= 0)
currentrefreshrate = 0;
else
currentrefreshrate = 0;
#ifdef RGLQUAKE #ifdef RGLQUAKE
if (!Q_strcasecmp(gl_texturemode.string, "gl_nearest_mipmap_nearest")) if (!Q_strcasecmp(gl_texturemode.string, "gl_nearest_mipmap_nearest"))
currenttexturefilter = 0; currenttexturefilter = 0;
@ -1216,6 +1298,7 @@ void M_Menu_Video_f (void)
y = 32; y = 32;
info->renderer = MC_AddCombo(menu, 16, y, " Renderer ", rendererops, i); y+=8; info->renderer = MC_AddCombo(menu, 16, y, " Renderer ", rendererops, i); y+=8;
info->bppcombo = MC_AddCombo(menu, 16, y, " Color Depth ", bppnames, currentbpp); y+=8; info->bppcombo = MC_AddCombo(menu, 16, y, " Color Depth ", bppnames, currentbpp); y+=8;
info->refreshratecombo = MC_AddCombo(menu, 16, y, " Refresh Rate ", refreshrates, currentrefreshrate); y+=8;
info->modecombo = MC_AddCombo(menu, 16, y, " Video Size ", modenames, prefabmode+1); y+=8; info->modecombo = MC_AddCombo(menu, 16, y, " Video Size ", modenames, prefabmode+1); y+=8;
info->conscalecombo = MC_AddCombo(menu, 16, y, " 2d Size ", modenames, prefab2dmode+1); y+=8; info->conscalecombo = MC_AddCombo(menu, 16, y, " 2d Size ", modenames, prefab2dmode+1); y+=8;
MC_AddCheckBox(menu, 16, y, " Fullscreen ", &vid_fullscreen,0); y+=8; MC_AddCheckBox(menu, 16, y, " Fullscreen ", &vid_fullscreen,0); y+=8;