mirror of
https://github.com/fabiangreffrath/woof.git
synced 2025-09-22 03:12:00 -04:00
update DRS parameters
This commit is contained in:
parent
3584cb67bb
commit
fea6833ea0
16
src/d_main.c
16
src/d_main.c
@ -210,7 +210,6 @@ void D_ProcessEvents (void)
|
||||
gamestate_t wipegamestate = GS_DEMOSCREEN;
|
||||
boolean screen_melt = true;
|
||||
extern int showMessages;
|
||||
boolean enable_drs;
|
||||
|
||||
void D_Display (void)
|
||||
{
|
||||
@ -246,10 +245,14 @@ void D_Display (void)
|
||||
}
|
||||
}
|
||||
|
||||
enable_drs = true;
|
||||
|
||||
redrawsbar = false;
|
||||
|
||||
// save the current screen if about to wipe
|
||||
if ((wipe = gamestate != wipegamestate) && NOTSTRICTMODE(screen_melt))
|
||||
wipe_StartScreen(0, 0, video.unscaledw, SCREENHEIGHT);
|
||||
else
|
||||
I_DynamicResolution();
|
||||
|
||||
if (setsizeneeded) // change the view size if needed
|
||||
{
|
||||
R_ExecuteSetViewSize();
|
||||
@ -257,13 +260,6 @@ void D_Display (void)
|
||||
borderdrawcount = 3;
|
||||
}
|
||||
|
||||
// save the current screen if about to wipe
|
||||
if ((wipe = gamestate != wipegamestate) && NOTSTRICTMODE(screen_melt))
|
||||
{
|
||||
enable_drs = false;
|
||||
wipe_StartScreen(0, 0, video.unscaledw, SCREENHEIGHT);
|
||||
}
|
||||
|
||||
if (gamestate == GS_LEVEL && gametic)
|
||||
HU_Erase();
|
||||
|
||||
|
@ -368,8 +368,6 @@ extern boolean precache;
|
||||
// to force a wipe on the next draw
|
||||
extern gamestate_t wipegamestate;
|
||||
|
||||
extern boolean enable_drs;
|
||||
|
||||
extern int mouseSensitivity_horiz; // killough
|
||||
extern int mouseSensitivity_vert;
|
||||
extern int mouseSensitivity_horiz_strafe; // [FG] strafe
|
||||
|
@ -479,7 +479,7 @@ static int targetrefresh;
|
||||
static void ResetResolution(int height);
|
||||
static void ResetLogicalSize(void);
|
||||
|
||||
static void DynamicResolution(void)
|
||||
void I_DynamicResolution(void)
|
||||
{
|
||||
if (resolution_mode != RES_DRS || frametime_withoutpresent == 0 ||
|
||||
frametime_withoutpresent > 1000000 / 15)
|
||||
@ -494,9 +494,10 @@ static void DynamicResolution(void)
|
||||
double actualpercent = actual / target;
|
||||
|
||||
#define DRS_MIN_HEIGHT 400
|
||||
#define DRS_DELTA 0.5
|
||||
#define DRS_DELTA 0.01
|
||||
#define DRS_GREATER (1 + DRS_DELTA)
|
||||
#define DRS_LESS (1 - DRS_DELTA)
|
||||
#define DRS_STEP (SCREENHEIGHT / 2)
|
||||
|
||||
int newheight = 0;
|
||||
int oldheight = video.height;
|
||||
@ -516,6 +517,15 @@ static void DynamicResolution(void)
|
||||
return;
|
||||
}
|
||||
|
||||
int mul = (newheight + (DRS_STEP - 1)) / DRS_STEP; // integer round
|
||||
|
||||
newheight = mul * DRS_STEP;
|
||||
|
||||
if (newheight > native_height_adjusted)
|
||||
{
|
||||
newheight -= DRS_STEP;
|
||||
}
|
||||
|
||||
if (newheight == oldheight)
|
||||
{
|
||||
return;
|
||||
@ -563,8 +573,8 @@ void I_FinishUpdate(void)
|
||||
|
||||
time = frametime_start - last_time;
|
||||
|
||||
// Update FPS counter every second
|
||||
if (time >= 1000000)
|
||||
// Update FPS counter every 10th of second
|
||||
if (time >= 100000)
|
||||
{
|
||||
fps = (frame_counter * 1000000) / time;
|
||||
frame_counter = 0;
|
||||
@ -590,11 +600,6 @@ void I_FinishUpdate(void)
|
||||
I_ResetScreen();
|
||||
need_reset = false;
|
||||
}
|
||||
else if (enable_drs)
|
||||
{
|
||||
DynamicResolution();
|
||||
enable_drs = false;
|
||||
}
|
||||
|
||||
if (need_resize)
|
||||
{
|
||||
@ -966,14 +971,16 @@ static void ResetResolution(int height)
|
||||
{
|
||||
int w, h;
|
||||
|
||||
int unscaled_ah = use_aspect ? ACTUALHEIGHT : SCREENHEIGHT;
|
||||
|
||||
actualheight = use_aspect ? (int)(height * 1.2) : height;
|
||||
video.height = height;
|
||||
|
||||
switch (widescreen)
|
||||
{
|
||||
case RATIO_ORIG:
|
||||
w = 4;
|
||||
h = 3;
|
||||
w = SCREENWIDTH;
|
||||
h = unscaled_ah;
|
||||
break;
|
||||
case RATIO_MATCH_SCREEN:
|
||||
w = native_width;
|
||||
@ -1004,14 +1011,11 @@ static void ResetResolution(int height)
|
||||
aspect_ratio = 2.4;
|
||||
}
|
||||
|
||||
video.unscaledw = (int)(ACTUALHEIGHT * aspect_ratio);
|
||||
video.width = (int)(actualheight * aspect_ratio);
|
||||
video.unscaledw = (int)(unscaled_ah * aspect_ratio);
|
||||
|
||||
// width and height shoud be even
|
||||
video.unscaledw = (video.unscaledw + 1) & ~1;
|
||||
video.width = (video.width + 1) & ~1;
|
||||
video.height = (video.height + 1) & ~1;
|
||||
actualheight = (actualheight + 1) & ~1;
|
||||
double vertscale = (double)actualheight / (double)unscaled_ah;
|
||||
video.width = (int)(video.unscaledw * vertscale);
|
||||
video.width = (video.width + 1) & ~1;
|
||||
|
||||
video.deltaw = (video.unscaledw - NONWIDEWIDTH) / 2;
|
||||
|
||||
|
@ -51,20 +51,22 @@ typedef enum
|
||||
// determines the hardware configuration
|
||||
// and sets up the video mode
|
||||
|
||||
void I_InitGraphics (void);
|
||||
void I_InitGraphics(void);
|
||||
void I_ShutdownGraphics(void);
|
||||
|
||||
// Takes full 8 bit values.
|
||||
void I_SetPalette (byte* palette);
|
||||
void I_SetPalette(byte* palette);
|
||||
|
||||
void I_FinishUpdate (void);
|
||||
void I_FinishUpdate(void);
|
||||
|
||||
void I_ReadScreen (byte* scr);
|
||||
void I_ReadScreen(byte* dst);
|
||||
|
||||
void I_ResetScreen(void); // killough 10/98
|
||||
void I_ResetTargetRefresh(void);
|
||||
void I_ToggleVsync(void); // [JN] Calls native SDL vsync toggle
|
||||
|
||||
void I_DynamicResolution(void);
|
||||
|
||||
extern boolean use_vsync; // killough 2/8/98: controls whether vsync is called
|
||||
extern boolean disk_icon; // killough 10/98
|
||||
extern resolution_mode_t resolution_mode, default_resolution_mode;
|
||||
|
Loading…
x
Reference in New Issue
Block a user