mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-02-17 01:31:25 +00:00
Fix 5:4 aspect ratio gun and status bar
This commit is contained in:
parent
ba68cfd611
commit
172f58c165
6 changed files with 21 additions and 13 deletions
|
@ -300,7 +300,7 @@ void DBaseStatusBar::SetScaled (bool scale, bool force)
|
||||||
ST_X = 0;
|
ST_X = 0;
|
||||||
ST_Y = VirticalResolution - RelTop;
|
ST_Y = VirticalResolution - RelTop;
|
||||||
float aspect = ActiveRatio(SCREENWIDTH, SCREENHEIGHT);
|
float aspect = ActiveRatio(SCREENWIDTH, SCREENHEIGHT);
|
||||||
if (aspect >= 1.3f)
|
if (!Is54Aspect(aspect))
|
||||||
{ // Normal resolution
|
{ // Normal resolution
|
||||||
::ST_Y = Scale (ST_Y, SCREENHEIGHT, VirticalResolution);
|
::ST_Y = Scale (ST_Y, SCREENHEIGHT, VirticalResolution);
|
||||||
}
|
}
|
||||||
|
|
|
@ -318,7 +318,7 @@ void R_SWRSetWindow(int windowSize, int fullWidth, int fullHeight, int stHeight,
|
||||||
virtwidth = virtwidth2 = fullWidth;
|
virtwidth = virtwidth2 = fullWidth;
|
||||||
virtheight = virtheight2 = fullHeight;
|
virtheight = virtheight2 = fullHeight;
|
||||||
|
|
||||||
if (trueratio < 1.3f)
|
if (Is54Aspect(trueratio))
|
||||||
{
|
{
|
||||||
virtheight2 = virtheight2 * AspectMultiplier(trueratio) / 48;
|
virtheight2 = virtheight2 * AspectMultiplier(trueratio) / 48;
|
||||||
}
|
}
|
||||||
|
@ -327,7 +327,7 @@ void R_SWRSetWindow(int windowSize, int fullWidth, int fullHeight, int stHeight,
|
||||||
virtwidth2 = virtwidth2 * AspectMultiplier(trueratio) / 48;
|
virtwidth2 = virtwidth2 * AspectMultiplier(trueratio) / 48;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WidescreenRatio < 1.3f)
|
if (Is54Aspect(WidescreenRatio))
|
||||||
{
|
{
|
||||||
virtheight = virtheight * AspectMultiplier(WidescreenRatio) / 48;
|
virtheight = virtheight * AspectMultiplier(WidescreenRatio) / 48;
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,7 +229,7 @@ void R_SetWindow (int windowSize, int fullWidth, int fullHeight, int stHeight)
|
||||||
|
|
||||||
centery = viewheight/2;
|
centery = viewheight/2;
|
||||||
centerx = viewwidth/2;
|
centerx = viewwidth/2;
|
||||||
if (WidescreenRatio < 1.3f)
|
if (Is54Aspect(WidescreenRatio))
|
||||||
{
|
{
|
||||||
centerxwide = centerx;
|
centerxwide = centerx;
|
||||||
}
|
}
|
||||||
|
|
|
@ -887,7 +887,7 @@ void DCanvas::VirtualToRealCoords(double &x, double &y, double &w, double &h,
|
||||||
x = x * Width / vwidth;
|
x = x * Width / vwidth;
|
||||||
w = right * Width / vwidth - x;
|
w = right * Width / vwidth - x;
|
||||||
}
|
}
|
||||||
if (myratio < 1.3f)
|
if (Is54Aspect(myratio))
|
||||||
{ // The target surface is 5:4
|
{ // The target surface is 5:4
|
||||||
y = (y - vheight * 0.5) * Height * 600 / (vheight * AspectBaseHeight(myratio)) + Height * 0.5;
|
y = (y - vheight * 0.5) * Height * 600 / (vheight * AspectBaseHeight(myratio)) + Height * 0.5;
|
||||||
h = (bottom - vheight * 0.5) * Height * 600 / (vheight * AspectBaseHeight(myratio)) + Height * 0.5 - y;
|
h = (bottom - vheight * 0.5) * Height * 600 / (vheight * AspectBaseHeight(myratio)) + Height * 0.5 - y;
|
||||||
|
@ -950,7 +950,7 @@ void DCanvas::FillBorder (FTexture *img)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int bordtop, bordbottom, bordleft, bordright, bord;
|
int bordtop, bordbottom, bordleft, bordright, bord;
|
||||||
if (myratio < 1.3f)
|
if (Is54Aspect(myratio))
|
||||||
{ // Screen is taller than it is wide
|
{ // Screen is taller than it is wide
|
||||||
bordleft = bordright = 0;
|
bordleft = bordright = 0;
|
||||||
bord = Height - Height * AspectMultiplier(myratio) / 48;
|
bord = Height - Height * AspectMultiplier(myratio) / 48;
|
||||||
|
|
|
@ -1362,7 +1362,7 @@ void V_CalcCleanFacs (int designwidth, int designheight, int realwidth, int real
|
||||||
int cx1, cy1, cx2, cy2;
|
int cx1, cy1, cx2, cy2;
|
||||||
|
|
||||||
ratio = ActiveRatio(realwidth, realheight);
|
ratio = ActiveRatio(realwidth, realheight);
|
||||||
if (ratio < 1.3f)
|
if (Is54Aspect(ratio))
|
||||||
{
|
{
|
||||||
cwidth = realwidth;
|
cwidth = realwidth;
|
||||||
cheight = realheight * AspectMultiplier(ratio) / 48;
|
cheight = realheight * AspectMultiplier(ratio) / 48;
|
||||||
|
@ -1703,22 +1703,29 @@ int CheckRatio (int width, int height, int *trueratio)
|
||||||
|
|
||||||
int AspectBaseWidth(float aspect)
|
int AspectBaseWidth(float aspect)
|
||||||
{
|
{
|
||||||
return (int)round(240.0f * aspect * 3.0f);
|
return !Is54Aspect(aspect) ? (int)round(240.0f * aspect * 3.0f) : 960;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AspectBaseHeight(float aspect)
|
int AspectBaseHeight(float aspect)
|
||||||
{
|
{
|
||||||
return (int)round(200.0f * (320.0f / (240.0f * aspect)) * 3.0f);
|
return !Is54Aspect(aspect) ? (int)round(200.0f * (320.0f / (240.0f * aspect)) * 3.0f) : 640;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AspectPspriteOffset(float aspect)
|
double AspectPspriteOffset(float aspect)
|
||||||
{
|
{
|
||||||
return aspect < 1.3f ? (int)(6.5*FRACUNIT) : 0;
|
return !Is54Aspect(aspect) ? 0.0 : 6.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AspectMultiplier(float aspect)
|
int AspectMultiplier(float aspect)
|
||||||
{
|
{
|
||||||
return (int)round(320.0f / (240.0f * aspect) * 48.0f);
|
return !Is54Aspect(aspect) ? (int)round(320.0f / (240.0f * aspect) * 48.0f) : 48 * 15 / 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Is54Aspect(float aspect)
|
||||||
|
{
|
||||||
|
// The 5:4 aspect ratio redefined all the values to mean something else..
|
||||||
|
// Limit the range this is active to try prevent square cam textures inheriting this madness.
|
||||||
|
return aspect > 1.1f && aspect < 1.3f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IVideo::DumpAdapters ()
|
void IVideo::DumpAdapters ()
|
||||||
|
|
|
@ -523,8 +523,9 @@ static inline double ActiveRatio (double width, double height) { return ActiveRa
|
||||||
|
|
||||||
int AspectBaseWidth(float aspect);
|
int AspectBaseWidth(float aspect);
|
||||||
int AspectBaseHeight(float aspect);
|
int AspectBaseHeight(float aspect);
|
||||||
int AspectPspriteOffset(float aspect);
|
double AspectPspriteOffset(float aspect);
|
||||||
int AspectMultiplier(float aspect);
|
int AspectMultiplier(float aspect);
|
||||||
|
bool Is54Aspect(float aspect);
|
||||||
|
|
||||||
EXTERN_CVAR(Int, uiscale);
|
EXTERN_CVAR(Int, uiscale);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue