woof icon indicating copy to clipboard operation
woof copied to clipboard

`-fastdemo` doesn't work with `-skipsec`

Open MrAlaux opened this issue 7 months ago • 5 comments

Tested in the latest master artifact (x64).

If I play a demo through -fastdemo, it works as expected: the demo plays back as fast as possible. However, if I throw -skipsec into the mix, the demo will skip the specified time but then resume at normal speed, as if ignoring -fastdemo.

-timedemo seems to be unaffected.

MrAlaux avatar Dec 06 '23 20:12 MrAlaux

Does it make a difference if you use the -warp parameter to skip to a specific map in the demo?

fabiangreffrath avatar Dec 07 '23 12:12 fabiangreffrath

Looks like this fixes it:

diff --git a/src/g_game.c b/src/g_game.c
index 6983224..1f33ad2 100644
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -93,7 +93,6 @@ boolean         sendreload;    // send a reload level event next tic
 boolean         sendjoin;      // send a join demo event next tic
 boolean         usergame;      // ok to save / end game
 boolean         timingdemo;    // if true, exit with report on completion
-boolean         fastdemo;      // if true, run at full speed -- killough
 boolean         nodrawers;     // for comparative timing purposes
 boolean         noblit;        // for comparative timing purposes
 int             starttime;     // for comparative timing purposes
diff --git a/src/i_timer.c b/src/i_timer.c
index 96c68d4..5968a5b 100644
--- a/src/i_timer.c
+++ b/src/i_timer.c
@@ -93,6 +93,7 @@ static int I_GetTime_Scaled(void)
     return MSToTic(GetTimeMS_Scaled());
 }
 
+boolean fastdemo; // if true, run at full speed -- killough
 static int fasttic;
 
 static int I_GetTime_FastDemo(void)
@@ -144,7 +145,7 @@ void I_SetFastdemoTimer(boolean on)
         I_GetTime = I_GetTime_FastDemo;
         I_GetFracTime = I_GetFracTime_FastDemo;
     }
-    else if (I_GetTime == I_GetTime_FastDemo)
+    else if (I_GetTime == I_GetTime_FastDemo && !fastdemo)
     {
         uint64_t counter;
 

fabiangreffrath avatar Dec 07 '23 16:12 fabiangreffrath

I had to move the variable declaration because the setup tool links in i_timer.c but not g_game.c.

fabiangreffrath avatar Dec 07 '23 16:12 fabiangreffrath

I think we can fix it elsewhere. I'll look into it, just got carried away with the DRS experiment 😄

rfomin avatar Dec 07 '23 18:12 rfomin

Does it make a difference if you use the -warp parameter to skip to a specific map in the demo?

Using -warp disables fast playback too. I'll try the PR.

MrAlaux avatar Dec 08 '23 00:12 MrAlaux