From 12353c2d6fd841b4ec01eeaae11985379cf0000f Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Sun, 27 Mar 2022 03:39:19 -0400 Subject: [PATCH] Do the alternative interp failsafe CORRECTLY. --- src/d_main.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/d_main.c b/src/d_main.c index bdd545e2e..4c750ef95 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -791,23 +791,19 @@ void D_SRB2Loop(void) if (interp && !(paused || P_AutoPause())) { static float tictime = 0.0f; + static float prevtime = 0.0f; float entertime = I_GetTimeFrac(); fixed_t entertimefrac; -#if 1 - (void)ticked; - //CONS_Printf("Avg FPS: %f, diff: %f\n========\n", averageFPS, entertime - tictime); - entertimefrac = min(FRACUNIT, FLOAT_TO_FIXED(entertime - tictime)); - tictime = entertime; -#else if (ticked) tictime = entertime; - if (averageFPS < 35.0) // Not convinced it should be doing it this way, but couldn't figure out anything better... + if (entertime - prevtime >= 1.0f) // Lagged for more frames than a gametic... shut off interpolation. entertimefrac = FRACUNIT; else - entertimefrac = FLOAT_TO_FIXED(entertime - tictime); -#endif + entertimefrac = min(FRACUNIT, FLOAT_TO_FIXED(entertime - tictime)); + + prevtime = entertime; // renderdeltatics is a bit awkard to evaluate, since the system time interface is whole tic-based renderdeltatics = realtics * FRACUNIT;