diff --git a/src/doomdef.h b/src/doomdef.h index bdeb81611f..5d70ecd206 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -251,6 +251,7 @@ enum BCOMPATF_NOSLOPEID = 1 << 9, // disable line IDs on slopes. BCOMPATF_CLIPMIDTEX = 1 << 10, // Always Clip midtex's in the software renderer (required to run certain GZDoom maps, has no effect in the hardware renderer) BCOMPATF_NOSECTIONMERGE = 1 << 11, // (for IWAD maps) keep separate sections for sectors with intra-sector linedefs. + BCOMPATF_NOMIRRORS = 1 << 12, // disable mirrors, for maps that have broken setups. }; // phares 3/20/98: diff --git a/src/maploader/compatibility.cpp b/src/maploader/compatibility.cpp index 3549cd0bb4..802ec3465e 100644 --- a/src/maploader/compatibility.cpp +++ b/src/maploader/compatibility.cpp @@ -127,6 +127,7 @@ static FCompatOption Options[] = { "noslopeid", BCOMPATF_NOSLOPEID, SLOT_BCOMPAT }, { "clipmidtex", BCOMPATF_CLIPMIDTEX, SLOT_BCOMPAT }, { "nosectionmerge", BCOMPATF_NOSECTIONMERGE, SLOT_BCOMPAT }, + { "nomirrors", BCOMPATF_NOMIRRORS, SLOT_BCOMPAT }, // list copied from g_mapinfo.cpp diff --git a/src/rendering/hwrenderer/scene/hw_sky.cpp b/src/rendering/hwrenderer/scene/hw_sky.cpp index 5e4fc02ef8..0af7309b21 100644 --- a/src/rendering/hwrenderer/scene/hw_sky.cpp +++ b/src/rendering/hwrenderer/scene/hw_sky.cpp @@ -155,7 +155,7 @@ void HWWall::SkyPlane(HWDrawInfo *di, sector_t *sector, int plane, bool allowref break; } } - else if (allowreflect && sector->GetReflect(plane) > 0) + else if (allowreflect && sector->GetReflect(plane) > 0 && !(di->Level->ib_compatflags & BCOMPATF_NOMIRRORS)) { auto vpz = di->Viewpoint.Pos.Z; if ((plane == sector_t::ceiling && vpz > sector->ceilingplane.fD()) || diff --git a/src/rendering/hwrenderer/scene/hw_walls.cpp b/src/rendering/hwrenderer/scene/hw_walls.cpp index 88ed520687..b049ee172b 100644 --- a/src/rendering/hwrenderer/scene/hw_walls.cpp +++ b/src/rendering/hwrenderer/scene/hw_walls.cpp @@ -1273,7 +1273,7 @@ void HWWall::DoTexture(HWDrawInfo *di, int _type,seg_t * seg, int peg, if (!SetWallCoordinates(seg, &tci, floatceilingref, topleft, topright, bottomleft, bottomright, seg->sidedef->GetTextureXOffset(texpos))) return; - if (seg->linedef->special == Line_Mirror && _type == RENDERWALL_M1S && gl_mirrors) + if (seg->linedef->special == Line_Mirror && _type == RENDERWALL_M1S && gl_mirrors && !(di->Level->ib_compatflags & BCOMPATF_NOMIRRORS)) { PutPortal(di, PORTALTYPE_MIRROR, -1); } diff --git a/wadsrc/static/compatibility.txt b/wadsrc/static/compatibility.txt index 635e27d70e..d80950583e 100644 --- a/wadsrc/static/compatibility.txt +++ b/wadsrc/static/compatibility.txt @@ -320,3 +320,8 @@ F50C91A05E1A1E646690517641F0D1DD // daedalus.wad map19 { shorttex } + +65C155579BEA34642A7B83DF5481B29B // Conf256.pk3 CONF55 +{ + nomirrors +}