summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS4
-rw-r--r--NOT-BUGS23
-rw-r--r--src/d_main.c8
3 files changed, 34 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index c3289f3c..0dbdb06f 100644
--- a/NEWS
+++ b/NEWS
@@ -52,6 +52,10 @@
messages are actually errors (thanks Proteh).
* The setup tool now passes through all command line arguments
when launching the game (thanks AlexXav).
+ * Demo loop behavior (ie. whether to play DEMO4) now depends on
+ the version being emulated. When playing Final Doom the game
+ will exit unexpectedly as it tries to play the fourth demo -
+ this is Vanilla behaviour (thanks AlexXav).
Bugs fixed:
* A workaround has been a bug in old versions of SDL_mixer
diff --git a/NOT-BUGS b/NOT-BUGS
index 38d97770..f7d22231 100644
--- a/NOT-BUGS
+++ b/NOT-BUGS
@@ -31,6 +31,29 @@ upgrade.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+== Game exits in demo loop when playing Final Doom ==
+
+When playing with the Final Doom IWAD files (tnt.wad, plutonia.wad),
+if you leave the game at the title screen to play through the demo
+loop, it will eventually exit with the following error message:
+
+ W_GetNumForName: demo4 not found!
+
+This is the same behavior as the Vanilla executables that were
+bundled with Final Doom. When Ultimate Doom was developed, a fourth
+demo was added to the demo loop, and this change was retained in the
+Final Doom version of the executable. However, the Final Doom IWADs
+do not include a fourth demo, so the game crashes.
+
+One way to work around this problem is to make the game emulate the
+original (pre-Ultimate Doom) v1.9 executable. To do this, add the
+command line argument "-gameversion 1.9" when running the game.
+However, be aware this version does have some subtle differences that
+will affect the playback of Final Doom demos (lost soul bouncing,
+teleport behavior).
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
== Game exits when accessing the options menu ==
The game may exit with the message "Bad V_DrawPatch" when accessing
diff --git a/src/d_main.c b/src/d_main.c
index 397062a9..73978c2f 100644
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -494,7 +494,13 @@ void D_DoAdvanceDemo (void)
paused = false;
gameaction = ga_nothing;
- if (gamemode == retail && gameversion != exe_chex)
+ // The Ultimate Doom executable changed the demo sequence to add
+ // a DEMO4 demo. Final Doom was based on Ultimate, so also
+ // includes this change; however, the Final Doom IWADs do not
+ // include a DEMO4 lump, so the game bombs out with an error
+ // when it reaches this point in the demo sequence.
+
+ if (gameversion == exe_ultimate || gameversion == exe_final)
demosequence = (demosequence+1)%7;
else
demosequence = (demosequence+1)%6;