diff --git a/source/core/gamecontrol.cpp b/source/core/gamecontrol.cpp index 1cf9e5bdb..780f2721c 100644 --- a/source/core/gamecontrol.cpp +++ b/source/core/gamecontrol.cpp @@ -1040,6 +1040,7 @@ void S_SetSoundPaused(int state) int CalcSmoothRatio(const ClockTicks &totalclk, const ClockTicks &ototalclk, int realgameticspersec) { + double const gametics = 1'000'000'000. / realgameticspersec; uint64_t currentTime = I_nsTime(); if ((lastototalclk == ototalclk) && (lastTime != 0)) @@ -1053,7 +1054,16 @@ int CalcSmoothRatio(const ClockTicks &totalclk, const ClockTicks &ototalclk, int } lastTime = currentTime; - return clamp(MaxSmoothRatio * (elapsedTime / (1'000'000'000. / realgameticspersec)), 0, MaxSmoothRatio); + double ratioScale = elapsedTime / gametics; + int smoothratio = clamp(xs_CRoundToInt(MaxSmoothRatio * ratioScale), 0, MaxSmoothRatio); + + if (cl_debugintrpl) + { + Printf("ototalclk: %d\ntotalclk: %d\ngametics: %.3f ms\nelapsedTime: %.3f ms\nratioScale: %f\nsmoothratio: %d\n", + ototalclk, totalclk, (gametics / 1'000'000.), (elapsedTime / 1'000'000.), ratioScale, smoothratio); + } + + return smoothratio; } FString G_GetDemoPath() diff --git a/source/core/gamecvars.cpp b/source/core/gamecvars.cpp index ce7bbea74..a18bb86ce 100644 --- a/source/core/gamecvars.cpp +++ b/source/core/gamecvars.cpp @@ -90,6 +90,7 @@ CVARD(Bool, cl_slopetilting, false, CVAR_ARCHIVE, "enable/disable slope tilting" CVARD(Int, cl_showweapon, 1, CVAR_ARCHIVE, "enable/disable show weapons") // only implemented in Blood CVARD(Bool, cl_sointerpolation, true, CVAR_ARCHIVE, "enable/disable sector object interpolation") // only implemented in SW CVARD(Bool, cl_syncinput, false, CVAR_ARCHIVE, "enable/disable synchronized input with game's ticrate") // only implemented in SW +CVARD(Bool, cl_debugintrpl, false, CVAR_NOSAVE, "print information regarding calculated smoothratio for interpolation") // only implemented in SW CUSTOM_CVARD(Int, cl_crosshairscale, 50, CVAR_ARCHIVE, "changes the size of the crosshair") { if (self < 1) self = 1; diff --git a/source/core/gamecvars.h b/source/core/gamecvars.h index 68fcecf1e..716546d75 100644 --- a/source/core/gamecvars.h +++ b/source/core/gamecvars.h @@ -25,6 +25,7 @@ EXTERN_CVAR(Int, cl_weaponswitch) EXTERN_CVAR(Int, cl_crosshairscale) EXTERN_CVAR(Bool, cl_sointerpolation) EXTERN_CVAR(Bool, cl_syncinput) +EXTERN_CVAR(Bool, cl_debugintrpl) EXTERN_CVAR(Bool, demorec_seeds_cvar) EXTERN_CVAR(Bool, demoplay_diffs)