woof
woof copied to clipboard
`-fastdemo` doesn't work with `-skipsec`
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.
Does it make a difference if you use the -warp
parameter to skip to a specific map in the demo?
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;
I had to move the variable declaration because the setup tool links in i_timer.c
but not g_game.c
.
I think we can fix it elsewhere. I'll look into it, just got carried away with the DRS experiment 😄
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.