HUD rescaling for larger resolutions

Lifted from Saturn: 2348e3b73e
This commit is contained in:
yamamama 2026-02-04 19:37:36 -05:00
parent e369d1a090
commit ff639004d4
4 changed files with 21 additions and 0 deletions

View file

@ -1666,6 +1666,7 @@ void D_SRB2Main(void)
M_Init();
if (!dedicated)
{
CV_RegisterVar(&cv_highreshudscale);
CV_RegisterVar(&cv_ticrate);
CV_RegisterVar(&cv_accuratefps);
CV_RegisterVar(&cv_constextsize);

View file

@ -68,6 +68,15 @@ consvar_t cv_shittyscreen = CVAR_INIT ("televisionsignal", "Okay", 0, shittyscre
static CV_PossibleValue_t votescale_cons_t[] = {{0, "Vanilla"}, {1, "Adaptive"}, {2, "VerticalFill"}, {3, "HorizontalFill"}, {0, NULL}};
consvar_t cv_votebgscaling = CVAR_INIT ("votebgscaling", "Adaptive", CV_SAVE, votescale_cons_t, NULL);
static void Highreshudscale_OnChange(void);
static CV_PossibleValue_t highreshudscale_cons_t[] = {{4*FRACUNIT/5, "MIN"}, {6*FRACUNIT/5, "MAX"}, {0, NULL}};
consvar_t cv_highreshudscale = CVAR_INIT ("highreshudscale", "1", CV_SAVE|CV_FLOAT|CV_CALL|CV_NOINIT|CV_NOSHOWHELP, highreshudscale_cons_t, Highreshudscale_OnChange);
static void Highreshudscale_OnChange(void)
{
SCR_Recalc();
}
CV_PossibleValue_t cv_renderer_t[] = {
{1, "Software"},
#ifdef HWRENDER

View file

@ -96,6 +96,7 @@ void SCR_ChangeRenderer(void);
extern CV_PossibleValue_t cv_renderer_t[];
extern consvar_t cv_scr_width, cv_scr_height, cv_scr_depth, cv_renderview, cv_renderer, cv_renderhitbox, cv_fullscreen;
extern consvar_t cv_highreshudscale;
extern consvar_t cv_vhseffect, cv_shittyscreen, cv_votebgscaling;
extern consvar_t cv_parallelsoftware;
extern consvar_t cv_accuratefps;

View file

@ -4128,6 +4128,16 @@ void V_Recalc(void)
#endif
vid.fdupx = vid.fdupy = (vid.fdupx < vid.fdupy ? vid.fdupx : vid.fdupy);
I_OutputMsg("width: %d, height: %d\n", vid.width, vid.height);
if (loaded_config // this could use a better name, since it is more and indicator that early startup is done and its safe to do sketchy shit now :chaosleep:
&& (vid.width > 720) && (vid.height > 1280)) // ehhhh well this thing has so many issues, so ill lock it to higher resolutions instead
{
vid.dupx = vid.dupy = FixedDiv(vid.dupy, cv_highreshudscale.value);
vid.fdupx = vid.fdupy = FixedDiv(vid.fdupy, cv_highreshudscale.value);
}
vid.meddupx = (UINT8)(vid.dupx >> 1) + 1;
vid.meddupy = (UINT8)(vid.dupy >> 1) + 1;