foxygit / doom Log in
commit e5d5a0930ea060f7908f64ab93e04cd08e21d355
Author:     Thomas A. Birkel <capnclever@gmail.com>
AuthorDate: Sun Oct 16 04:17:24 2016 -0400
Commit:     Thomas A. Birkel <capnclever@gmail.com>
CommitDate: Sun Oct 16 04:17:24 2016 -0400

    g_game.c: Fix -timedemo "realtics" duration in Heretic/Hexen

    Same fix that fraggle did for Doom: only matters for multilevel demos so
    it wasn't relevant until such demos could be played back.

    Partial implementation of #432
---
 NEWS.md              | 4 ++++
 src/heretic/g_game.c | 3 ++-
 src/hexen/g_game.c   | 3 ++-
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/NEWS.md b/NEWS.md
index ec7a88fa..1d2e0d99 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -18,6 +18,10 @@
   * The vanilla limit of 4046 lumps per WAD is now enforced. (thanks
     Jon, Quasar, Edward-san)
   * Solidsegs overflow is emulated like in vanilla. (thanks Quasar)
+  * Heretic/Hexen demo support has expanded. "-demoextend" allows
+    demos to last longer than a single level; "-shortticfix" adjusts
+    low-resolution turning to match Doom's handling; "-maxdemo" and
+    "-longtics" support. (thanks CapnClever)

 ### Build systems
   * Improved compatibility with BSD Make. (thanks R.Rebello)
diff --git a/src/heretic/g_game.c b/src/heretic/g_game.c
index 146dc40c..f61ec0a1 100644
--- a/src/heretic/g_game.c
+++ b/src/heretic/g_game.c
@@ -680,7 +680,6 @@ void G_DoLoadLevel(void)

     P_SetupLevel(gameepisode, gamemap, 0, gameskill);
     displayplayer = consoleplayer;      // view the guy you are playing
-    starttime = I_GetTime();
     gameaction = ga_nothing;
     Z_CheckHeap();

@@ -1842,6 +1841,8 @@ void G_TimeDemo(char *name)
     }

     G_InitNew(skill, episode, map);
+    starttime = I_GetTime();
+
     usergame = false;
     demoplayback = true;
     timingdemo = true;
diff --git a/src/hexen/g_game.c b/src/hexen/g_game.c
index 1c5c3ad6..7acfe485 100644
--- a/src/hexen/g_game.c
+++ b/src/hexen/g_game.c
@@ -682,7 +682,6 @@ void G_DoLoadLevel(void)
     SN_StopAllSequences();
     P_SetupLevel(gameepisode, gamemap, 0, gameskill);
     displayplayer = consoleplayer;      // view the guy you are playing
-    starttime = I_GetTime();
     gameaction = ga_nothing;
     Z_CheckHeap();

@@ -2009,6 +2008,8 @@ void G_TimeDemo(char *name)
     }

     G_InitNew(skill, episode, map);
+    starttime = I_GetTime();
+
     usergame = false;
     demoplayback = true;
     timingdemo = true;