ref: fc09dbdf6703e62146a74a164be475ba965d00ab
parent: fe0eca1d099d79eec30c49882625827193ab0f6d
author: Simon Howard <[email protected]>
date: Tue Dec 28 11:43:41 EST 2010
Make demo loop handling of DEMO4 case depend on the executable version being emulated: the Vanilla versions did not have any conditional behavior based on gamemode/gamemission. This has the side effect of causing the game to exit with an error when playing with Final Doom, but this is Vanilla behavior. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 2230
--- 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
--- a/NOT-BUGS
+++ b/NOT-BUGS
@@ -31,6 +31,29 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+== 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
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -494,7 +494,13 @@
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;