shithub: choc

Download patch

ref: 15a1c4924707f78ca4f9e109292e1ca35e83f1f7
parent: a4ff8b18d8c02b566ec1e203f983fc111408a752
author: Simon Howard <[email protected]>
date: Mon Mar 28 19:33:09 EDT 2011

Emulate bug with IDMUS cheat when emulating v1.9 (thanks Alexandre
Xavier).

Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 2314

--- a/NEWS
+++ b/NEWS
@@ -27,6 +27,8 @@
      * The null sector dereference emulation code has been imported
        from Prboom+ - this fixes a desync with CLNJ-506.LMP (thanks
        entryway).
+     * The IDMUS cheat doesn't work when emulating the v1.9 executable
+       (thanks Alexandre Xavier).
 
     Bugs fixed:
      * Menu navigation when using joystick/joypad (thanks Alexandre
--- a/NOT-BUGS
+++ b/NOT-BUGS
@@ -110,3 +110,20 @@
 
     http://rome.ro/lee_killough/editing/visplane.shtml
 
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+== IDMUS## cheat doesn't work with shareware/registered Doom IWADs ==
+
+The IDMUS cheat allows the in-game music to be changed.  However, in
+the original v1.9 this cheat didn't work properly when playing with
+the Doom 1 (shareware and registered) IWADs.  This bug was fixed in
+the Ultimate Doom and Final Doom executables.
+
+Chocolate Doom emulates this bug.  When playing with the shareware or
+registered Doom IWADs, the IDMUS cheat therefore does not work
+properly.  If you are playing with the Ultimate Doom IWAD, the
+Ultimate Doom executable is emulated by default, so the cheat works
+properly.
+
+# vim: tw=70
+
--- a/src/st_stuff.c
+++ b/src/st_stuff.c
@@ -521,8 +521,13 @@
 	
 	plyr->message = DEH_String(STSTR_MUS);
 	cht_GetParam(&cheat_mus, buf);
-	
-	if (gamemode == commercial)
+
+        // Note: The original v1.9 had a bug that tried to play back
+        // the Doom II music regardless of gamemode.  This was fixed
+        // in the Ultimate Doom executable so that it would work for
+        // the Doom 1 music as well.
+
+	if (gamemode == commercial || gameversion < exe_ultimate)
 	{
 	  musnum = mus_runnin + (buf[0]-'0')*10 + buf[1]-'0' - 1;