shithub: choc

Download patch

ref: ef586e36e0a871bd1cc9222148a47605d1b554a5
parent: 1ce76006eede7aa1bd45176901fc2fb918e5e162
author: Simon Howard <fraggle@gmail.com>
date: Sun Sep 18 19:15:58 EDT 2011

Fix a minor annoyance with Strife startup - we are *not* emulating the
"Final Doom" executable. -gameversion processing code remains in case
support for other Strife versions is desired in the future.
Strip out some redundant gameversion / chex stuff as well.

Subversion-branch: /branches/v2-branch
Subversion-revision: 2385

--- a/src/strife/d_main.c
+++ b/src/strife/d_main.c
@@ -945,21 +945,6 @@
     M_CreateSaveDirs(savegamedir);
 }
 
-// Check if the IWAD file is the Chex Quest IWAD.  
-// Returns true if this is chex.wad.
-// haleyjd 08/23/10: there is no Chex Quest based on Strife,
-// though I must admit that makes an intriguing idea....
-/*
-static boolean CheckChex(char *iwadname)
-{
-    char *chex_iwadname = "chex.wad";
-
-    return (strlen(iwadname) > strlen(chex_iwadname)
-     && !strcasecmp(iwadname + strlen(iwadname) - strlen(chex_iwadname),
-                    chex_iwadname));
-}
-*/
-
 //      print title for every printed line
 char            title[128];
 
@@ -1027,10 +1012,7 @@
     char *cmdline;
     GameVersion_t version;
 } gameversions[] = {
-    {"Doom 1.9",             "1.9",        exe_doom_1_9},
-    {"Ultimate Doom",        "ultimate",   exe_ultimate},
-    {"Final Doom",           "final",      exe_final},
-    {"Chex Quest",           "chex",       exe_chex},
+    {"Strife 1.31",          "1.31",       exe_strife_1_31},
     { NULL,                  NULL,         0},
 };
 
@@ -1041,12 +1023,15 @@
     int p;
     int i;
 
+    // This is mostly redundant for now, as we only support
+    // Strife v1.31. But perhaps in the future we might decide
+    // to support older versions ...
+
     //! 
     // @arg <version>
     // @category compat
     //
-    // Emulate a specific version of Doom.  Valid values are "1.9",
-    // "ultimate" and "final".
+    // Emulate a specific version of Doom.  Valid values are "1.31".
     //
 
     p = M_CheckParmWithArgs("-gameversion", 1);
@@ -1061,7 +1046,7 @@
                 break;
             }
         }
-        
+
         if (gameversions[i].description == NULL) 
         {
             printf("Supported game versions:\n");
@@ -1071,53 +1056,14 @@
                 printf("\t%s (%s)\n", gameversions[i].cmdline,
                         gameversions[i].description);
             }
-            
+
             I_Error("Unknown game version '%s'", myargv[p+1]);
         }
     }
     else
     {
-        // Determine automatically
-
-        // haleyjd 08/23/10: Removed Chex mode, as it is irrelevant to Strife
-        if (gamemode == shareware || gamemode == registered)
-        {
-            // original
-
-            gameversion = exe_doom_1_9;
-        }
-        else if (gamemode == retail)
-        {
-            gameversion = exe_ultimate;
-        }
-        else if (gamemode == commercial)
-        {
-            if (gamemission == doom2)
-            {
-                gameversion = exe_doom_1_9;
-            }
-            else
-            {
-                // Final Doom: tnt or plutonia
-
-                gameversion = exe_final;
-            }
-        }
+        gameversion = exe_strife_1_31;
     }
-    
-    // The original exe does not support retail - 4th episode not supported
-
-    if (gameversion < exe_ultimate && gamemode == retail)
-    {
-        gamemode = registered;
-    }
-
-    // EXEs prior to the Final Doom exes do not support Final Doom.
-
-    if (gameversion < exe_final && gamemode == commercial)
-    {
-        gamemission = doom2;
-    }
 }
 
 void PrintGameVersion(void)
@@ -1135,34 +1081,6 @@
     }
 }
 
-// Load the Chex Quest dehacked file, if we are in Chex mode.
-// haleyjd 08/23/2010: Removed, as irrelevant to Strife.
-/*
-static void LoadChexDeh(void)
-{
-    char *chex_deh;
-
-    if (gameversion == exe_chex)
-    {
-        chex_deh = D_FindWADByName("chex.deh");
-
-        if (chex_deh == NULL)
-        {
-            I_Error("Unable to find Chex Quest dehacked file (chex.deh).\n"
-                    "The dehacked file is required in order to emulate\n"
-                    "chex.exe correctly.  It can be found in your nearest\n"
-                    "/idgames repository mirror at:\n\n"
-                    "   utils/exe_edit/patches/chexdeh.zip");
-        }
-
-        if (!DEH_LoadFile(chex_deh))
-        {
-            I_Error("Failed to load chex.deh needed for emulating chex.exe.");
-        }
-    }
-}
-*/
-
 // Function called at exit to display the ENDOOM screen
 
 static void D_Endoom(void)
@@ -1726,7 +1644,6 @@
     
     D_IdentifyVersion();
     InitGameVersion();
-    //LoadChexDeh(); - haleyjd: removed, as irrelevant to Strife
     D_SetGameDescription();
     SetSaveGameDir(iwadfile);
 
--- a/src/strife/doomstat.c
+++ b/src/strife/doomstat.c
@@ -32,7 +32,7 @@
 // Game Mode - identify IWAD as shareware, retail etc.
 GameMode_t gamemode = indetermined;
 GameMission_t	gamemission = doom;
-GameVersion_t   gameversion = exe_final;
+GameVersion_t   gameversion = exe_strife_1_31;
 char *gamedescription;
 
 // Set if homebrew PWAD stuff has been added.
--- a/src/strife/p_mobj.c
+++ b/src/strife/p_mobj.c
@@ -350,33 +350,7 @@
     {
         // hit the floor
 
-        // Note (id):
-        //  somebody left this after the setting momz to 0,
-        //  kinda useless there.
-        //
-        // cph - This was the a bug in the linuxdoom-1.10 source which
-        //  caused it not to sync Doom 2 v1.9 demos. Someone
-        //  added the above comment and moved up the following code. So
-        //  demos would desync in close lost soul fights.
-        // Note that this only applies to original Doom 1 or Doom2 demos - not
-        //  Final Doom and Ultimate Doom.  So we test demo_compatibility *and*
-        //  gamemission. (Note we assume that Doom1 is always Ult Doom, which
-        //  seems to hold for most published demos.)
-        //  
-        //  fraggle - cph got the logic here slightly wrong.  There are three
-        //  versions of Doom 1.9:
-        //
-        //  * The version used in registered doom 1.9 + doom2 - no bounce
-        //  * The version used in ultimate doom - has bounce
-        //  * The version used in final doom - has bounce
-        //
-        // So we need to check that this is either retail or commercial
-        // (but not doom2)
-
-        // [STRIFE] not applicable
-        //int correct_lost_soul_bounce = gameversion >= exe_ultimate;
-
-        if (/*correct_lost_soul_bounce &&*/ mo->flags & MF_BOUNCE)
+        if (mo->flags & MF_BOUNCE)
         {
             // the skull slammed into something
             // villsa [STRIFE] affect reactiontime