diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 9d40bf8e42..57df4f98c0 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,4 +1,7 @@ December 11, 2009 (Changes by Graf Zahl) +- fixed: Auto-COMPAT_SHORTTEX for IWADs must be set per IWAD, not in general + for Doom. +- added autodetection of Harmony's IWAD. - Added SnailMan's updated language.ita file. December 11, 2009 diff --git a/src/compatibility.cpp b/src/compatibility.cpp index a6bb4a38aa..059a8a4b7d 100644 --- a/src/compatibility.cpp +++ b/src/compatibility.cpp @@ -196,7 +196,7 @@ void CheckCompatibility(MapData *map) FCompatValues *flags; // When playing Doom IWAD levels force COMPAT_SHORTTEX. - if (Wads.GetLumpFile(map->lumpnum) == 1 && gameinfo.gametype == GAME_Doom && !(level.flags & LEVEL_HEXENFORMAT)) + if (Wads.GetLumpFile(map->lumpnum) == 1 && (gameinfo.flags & GI_COMPATSHORTTEX) && !(level.flags & LEVEL_HEXENFORMAT)) { ii_compatflags = COMPATF_SHORTTEX; ib_compatflags = 0; diff --git a/src/d_iwad.cpp b/src/d_iwad.cpp index 8a7b0dacfd..dae65379d2 100644 --- a/src/d_iwad.cpp +++ b/src/d_iwad.cpp @@ -58,18 +58,18 @@ EIWADType gameiwad; const IWADInfo IWADInfos[NUM_IWAD_TYPES] = { // banner text, autoname, fg color, bg color - { "Final Doom: TNT - Evilution", "TNT", MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/tnt.txt", GI_MAPxx }, - { "Final Doom: Plutonia Experiment", "Plutonia", MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/plutonia.txt", GI_MAPxx }, + { "Final Doom: TNT - Evilution", "TNT", MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/tnt.txt", GI_MAPxx | GI_COMPATSHORTTEX }, + { "Final Doom: Plutonia Experiment", "Plutonia", MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/plutonia.txt", GI_MAPxx | GI_COMPATSHORTTEX }, { "Hexen: Beyond Heretic", NULL, MAKERGB(240,240,240), MAKERGB(107,44,24), GAME_Hexen, "mapinfo/hexen.txt", GI_MAPxx }, { "Hexen: Deathkings of the Dark Citadel", "HexenDK", MAKERGB(240,240,240), MAKERGB(139,68,9), GAME_Hexen, "mapinfo/hexen.txt", GI_MAPxx }, { "Hexen: Demo Version", "HexenDemo",MAKERGB(240,240,240), MAKERGB(107,44,24), GAME_Hexen, "mapinfo/hexen.txt", GI_MAPxx | GI_SHAREWARE }, - { "DOOM 2: Hell on Earth", "Doom2", MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/doom2.txt", GI_MAPxx }, + { "DOOM 2: Hell on Earth", "Doom2", MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/doom2.txt", GI_MAPxx | GI_COMPATSHORTTEX }, { "Heretic Shareware", NULL, MAKERGB(252,252,0), MAKERGB(168,0,0), GAME_Heretic, "mapinfo/hereticsw.txt",GI_SHAREWARE }, { "Heretic: Shadow of the Serpent Riders", NULL, MAKERGB(252,252,0), MAKERGB(168,0,0), GAME_Heretic, "mapinfo/heretic.txt", GI_MENUHACK_EXTENDED }, { "Heretic", NULL, MAKERGB(252,252,0), MAKERGB(168,0,0), GAME_Heretic, "mapinfo/heretic.txt" }, - { "DOOM Shareware", NULL, MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/doom1.txt", GI_SHAREWARE }, - { "The Ultimate DOOM", "Doom1", MAKERGB(84,84,84), MAKERGB(168,168,168), GAME_Doom, "mapinfo/ultdoom.txt" }, - { "DOOM Registered", "Doom1", MAKERGB(84,84,84), MAKERGB(168,168,168), GAME_Doom, "mapinfo/doom1.txt" }, + { "DOOM Shareware", NULL, MAKERGB(168,0,0), MAKERGB(168,168,168), GAME_Doom, "mapinfo/doom1.txt", GI_SHAREWARE | GI_COMPATSHORTTEX }, + { "The Ultimate DOOM", "Doom1", MAKERGB(84,84,84), MAKERGB(168,168,168), GAME_Doom, "mapinfo/ultdoom.txt", GI_COMPATSHORTTEX }, + { "DOOM Registered", "Doom1", MAKERGB(84,84,84), MAKERGB(168,168,168), GAME_Doom, "mapinfo/doom1.txt", GI_COMPATSHORTTEX }, { "Strife: Quest for the Sigil", NULL, MAKERGB(224,173,153), MAKERGB(0,107,101), GAME_Strife, "mapinfo/strife.txt", GI_MAPxx }, { "Strife: Teaser (Old Version)", NULL, MAKERGB(224,173,153), MAKERGB(0,107,101), GAME_Strife, "mapinfo/strife.txt", GI_MAPxx | GI_SHAREWARE }, { "Strife: Teaser (New Version)", NULL, MAKERGB(224,173,153), MAKERGB(0,107,101), GAME_Strife, "mapinfo/strife.txt", GI_MAPxx | GI_SHAREWARE | GI_TEASER2 }, @@ -81,6 +81,7 @@ const IWADInfo IWADInfos[NUM_IWAD_TYPES] = { "Chex(R) Quest", "Chex1", MAKERGB(255,255,0), MAKERGB(0,192,0), GAME_Chex, "mapinfo/chex.txt" }, { "Chex(R) Quest 3", "Chex3", MAKERGB(255,255,0), MAKERGB(0,192,0), GAME_Chex, "mapinfo/chex3.txt" }, { "Action Doom 2: Urban Brawl", "UrbanBrawl",MAKERGB(168,168,0), MAKERGB(168,0,0), GAME_Doom, "mapinfo/doom2.txt" }, + { "Harmony", "Harmony", MAKERGB(110,180,230), MAKERGB(69,79,126), GAME_Doom, "mapinfo/doom2.txt" }, //{ "ZDoom Engine", NULL, MAKERGB(168,0,0), MAKERGB(168,168,168) }, }; @@ -111,6 +112,7 @@ static const char *IWADNames[] = "chex.wad", "chex3.wad", "action2.wad", + "harm1.wad", #ifdef unix "DOOM2.WAD", // Also look for all-uppercase names "PLUTONIA.WAD", @@ -134,6 +136,7 @@ static const char *IWADNames[] = "CHEX.WAD", "CHEX3.WAD", "ACTION2.WAD", + "HARM1.WAD", #endif NULL }; @@ -169,6 +172,9 @@ static EIWADType ScanIWAD (const char *iwad) "CYCLA1", "FLMBA1", "MAPINFO", + "0HAWK01", + "0CARA3", + "0NOSE1", { 'G','A','M','E','I','N','F','O' }, "E2M1","E2M2","E2M3","E2M4","E2M5","E2M6","E2M7","E2M8","E2M9", "E3M1","E3M2","E3M3","E3M4","E3M5","E3M6","E3M7","E3M8","E3M9", @@ -199,6 +205,9 @@ static EIWADType ScanIWAD (const char *iwad) Check_Cycla1, Check_Flmba1, Check_Mapinfo, + Check_Hawk, + Check_Car, + Check_Nose, Check_Gameinfo, Check_e2m1 }; @@ -287,6 +296,10 @@ static EIWADType ScanIWAD (const char *iwad) { return IWAD_ActionDoom2; } + else if (lumpsfound[Check_Hawk] && lumpsfound[Check_Car] && lumpsfound[Check_Nose]) + { + return IWAD_Harmony; + } else if (lumpsfound[Check_FreeDoom]) { // Is there a 100% reliable way to tell FreeDoom and FreeDM diff --git a/src/d_main.h b/src/d_main.h index e9af860a04..744e76bcca 100644 --- a/src/d_main.h +++ b/src/d_main.h @@ -81,6 +81,7 @@ enum EIWADType IWAD_ChexQuest, IWAD_ChexQuest3, IWAD_ActionDoom2, + IWAD_Harmony, IWAD_Custom, NUM_IWAD_TYPES diff --git a/src/gi.h b/src/gi.h index b46be119cd..0ada094c25 100644 --- a/src/gi.h +++ b/src/gi.h @@ -42,6 +42,7 @@ #define GI_SHAREWARE 0x00000002 #define GI_MENUHACK_EXTENDED 0x00000004 // (Heretic) #define GI_TEASER2 0x00000008 // Alternate version of the Strife Teaser +#define GI_COMPATSHORTTEX 0x00000010 // always force COMPAT_SHORTTEX for IWAD maps. #include "gametype.h"