diff --git a/src/d_main.cpp b/src/d_main.cpp index 7e4518156..109adbbd9 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -181,6 +181,8 @@ INT32 eventhead, eventtail; boolean dedicated = false; +boolean loaded_config = false; + // // D_PostEvent // Called by the I/O functions when input is detected @@ -1664,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); @@ -1793,6 +1796,8 @@ void D_SRB2Main(void) savedata.lives = 0; // flag this as not-used + loaded_config = true; // so pallettechange doesent get called 500 times at startup lol + CON_SetLoadingProgress(LOADED_CONFIG); CONS_Printf("R_InitTextureData()...\n"); diff --git a/src/d_main.h b/src/d_main.h index dad45f4ea..40b9471cd 100644 --- a/src/d_main.h +++ b/src/d_main.h @@ -55,6 +55,8 @@ typedef enum extern boolean gameconfig_loaded; extern tic_t rendergametic; +extern boolean loaded_config; + extern char srb2home[256]; //Alam: My Home extern boolean usehome; //Alam: which path? extern const char *pandf; //Alam: how to path? diff --git a/src/p_mobj.c b/src/p_mobj.c index e5b15074f..5ff73ad15 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -9055,7 +9055,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) if ((!mobj->target || !mobj->target->health || !mobj->target->player || !P_IsObjectOnGround(mobj->target)) || !mobj->target->player->drift || !(mobj->target->player->pflags & PF_BRAKEDRIFT) || !((mobj->target->player->cmd.buttons & BT_BRAKE) - || (K_GetKartButtons(mobj->target->player) & BT_ACCELERATE))) // Letting go of accel functions about the same as brake-drifting + || !(K_GetKartButtons(mobj->target->player) & BT_ACCELERATE))) // Letting go of accel functions about the same as brake-drifting { P_RemoveMobj(mobj); return false; diff --git a/src/screen.c b/src/screen.c index 675c76e3e..523463139 100644 --- a/src/screen.c +++ b/src/screen.c @@ -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 diff --git a/src/screen.h b/src/screen.h index 539ede6d4..7a5ad7420 100644 --- a/src/screen.h +++ b/src/screen.h @@ -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; diff --git a/src/v_video.c b/src/v_video.c index 56f7e30bb..f766d4b7e 100644 --- a/src/v_video.c +++ b/src/v_video.c @@ -15,6 +15,7 @@ #include "doomdef.h" #include "doomtype.h" +#include "d_main.h" #include "r_local.h" #include "p_local.h" // stplyr #include "g_game.h" // players @@ -135,7 +136,7 @@ static boolean InitCube(void) float globalgammamul, globalgammaoffs; boolean doinggamma; - if (con_startup_loadprogress < LOADED_CONFIG) + if (loaded_config == false) return false; #define diffcons(cv) (cv.value != atoi(cv.defaultvalue)) @@ -491,6 +492,8 @@ void V_SetPaletteLump(const char *pal) static void CV_palette_OnChange(void) { + if (loaded_config == false) + return; // recalculate Color Cube V_ReloadPalette(); V_SetPalette(0); @@ -4125,6 +4128,14 @@ void V_Recalc(void) #endif vid.fdupx = vid.fdupy = (vid.fdupx < vid.fdupy ? vid.fdupx : vid.fdupy); + 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;