From 2a6892619283cf480ddab17a57ab5f1582ffa9f3 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Sun, 7 Oct 2018 11:08:10 +0300 Subject: [PATCH 01/10] - use Xcode 10 for Travis builds --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 956ed21cfc..6962cbaffe 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ matrix: - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Debug -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9" - os: osx - osx_image: xcode9.4 + osx_image: xcode10 env: - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9" From 4d14642cadad984cd101e1a5b9654598d75d6682 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Sun, 7 Oct 2018 11:10:29 +0300 Subject: [PATCH 02/10] - enabled macOS dark mode support with pre-10.14 SDKs https://developer.apple.com/documentation/appkit/nsappearancecustomization/choosing_a_specific_appearance_for_your_app --- src/posix/osx/zdoom-info.plist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/posix/osx/zdoom-info.plist b/src/posix/osx/zdoom-info.plist index f0bbbf3d98..341a061d7c 100644 --- a/src/posix/osx/zdoom-info.plist +++ b/src/posix/osx/zdoom-info.plist @@ -48,5 +48,7 @@ NSApplication NSSupportsAutomaticGraphicsSwitching + NSRequiresAquaSystemAppearance + From 2c9a82e084c23a36f0c7c86bd6367077801219a6 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 7 Oct 2018 19:59:51 +0200 Subject: [PATCH 03/10] - fixed potential null pointer access in Hexen's spike code. --- wadsrc/static/zscript/hexen/spike.txt | 37 +++++++++++++++------------ 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/wadsrc/static/zscript/hexen/spike.txt b/wadsrc/static/zscript/hexen/spike.txt index cb8df17e27..a411dbf3f6 100644 --- a/wadsrc/static/zscript/hexen/spike.txt +++ b/wadsrc/static/zscript/hexen/spike.txt @@ -179,26 +179,29 @@ class ThrustFloor : Actor while (it.Next()) { let targ = it.thing; - double blockdist = radius + it.thing.radius; - if (abs(targ.pos.x - it.Position.X) >= blockdist || abs(targ.pos.y - it.Position.Y) >= blockdist) - continue; - - // Q: Make this z-aware for everything? It never was before. - if (targ.pos.z + targ.height < pos.z || targ.pos.z > pos.z + height) + if (targ != null) { - if (CurSector.PortalGroup != targ.CurSector.PortalGroup) + double blockdist = radius + targ.radius; + if (abs(targ.pos.x - it.Position.X) >= blockdist || abs(targ.pos.y - it.Position.Y) >= blockdist) continue; + + // Q: Make this z-aware for everything? It never was before. + if (targ.pos.z + targ.height < pos.z || targ.pos.z > pos.z + height) + { + if (CurSector.PortalGroup != targ.CurSector.PortalGroup) + continue; + } + + if (!targ.bShootable) + continue; + + if (targ == self) + continue; // don't clip against self + + int newdam = targ.DamageMobj (self, self, 10001, 'Crush'); + targ.TraceBleed (newdam > 0 ? newdam : 10001, null); + args[1] = 1; // Mark thrust thing as bloody } - - if (!targ.bShootable) - continue; - - if (targ == self) - continue; // don't clip against self - - int newdam = targ.DamageMobj (self, self, 10001, 'Crush'); - targ.TraceBleed (newdam > 0 ? newdam : 10001, null); - args[1] = 1; // Mark thrust thing as bloody } } } From 77b8eb6547b8d16ac0db5875eb1249f777694abf Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Mon, 8 Oct 2018 15:39:39 +0300 Subject: [PATCH 04/10] - reverted macOS dark mode support with old SDKs This feature causes several issues with NSOpenGLView: * Mouse event coordinates are wrong in non-retina mode on HiDPI screen * In retina mode only 1/4 of picture is visible and its scaling is incorrect * Some sort of filtering is applied to frontbuffer picture * Noticeable increase in CPU load because of that filtering Linking with macOS 10.14 SDK leads to all these issues regardless of .plist option presence and its value --- src/posix/osx/zdoom-info.plist | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/posix/osx/zdoom-info.plist b/src/posix/osx/zdoom-info.plist index 341a061d7c..f0bbbf3d98 100644 --- a/src/posix/osx/zdoom-info.plist +++ b/src/posix/osx/zdoom-info.plist @@ -48,7 +48,5 @@ NSApplication NSSupportsAutomaticGraphicsSwitching - NSRequiresAquaSystemAppearance - From 643e3a78d80e34e046f6bae60bad9215d710e6ca Mon Sep 17 00:00:00 2001 From: Erick Tenorio Date: Sun, 7 Oct 2018 23:48:24 -0500 Subject: [PATCH 05/10] Fixes for Wraith Corporation WADs --- wadsrc/static/zscript/level_compatibility.txt | 61 ++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/wadsrc/static/zscript/level_compatibility.txt b/wadsrc/static/zscript/level_compatibility.txt index a932a0b185..4ec2af8842 100644 --- a/wadsrc/static/zscript/level_compatibility.txt +++ b/wadsrc/static/zscript/level_compatibility.txt @@ -605,6 +605,28 @@ class LevelCompatibility play } break; } + + case '57386AEF275684BA06756359B08F4391': // Perdition's Gate MAP03 + { + // Stairs where one sector is too thin to score. + SetSectorSpecial(227, 0); + break; + } + + case 'F1A9938C4FC3906A582AB7D5088B5F87': // Perdition's Gate MAP12 + { + // Sector unintentionally left as a secret near switch + SetSectorSpecial(112, 0); + break; + } + + case '5C419E581D9570F44A24163A83032086': // Perdition's Gate MAP27 + { + // Sectors unintentionally left as secrets and cannot be scored + SetSectorSpecial(338, 0); + SetSectorSpecial(459, 0); + break; + } case 'FCCA97FC851F6473EAA069F74247B317': // pg-raw.wad map31 { @@ -621,8 +643,45 @@ class LevelCompatibility play break; } - case '712BB4CFBD0753178CA0C6814BE4C288': // beta version of map12 BTSX_E1 - patch some rendering glitches that are problematic to detect + case '5379C080299EB961792B50AD96821543': // Hell to Pay MAP14 { + // Two secrets are unreachable without jumping and crouching. + SetSectorSpecial(82, 0); + SetSectorSpecial(83, 0); + break; + } + + case '1A1AB6415851B9F17715A0C36412752E': // Hell to Pay MAP24 + { + // Remove Chaingunner far below the map, making 100% kills + // impractical. + SetThingFlags(70, 0); + break; + } + + case 'A7ACB57A2CAF17434D0DFE0FAC0E0480': // Hell to Pay MAP28 + { + // Three Lost Souls placed outside the map for some reason. + for(int i=0; i<3; i++) + { + SetThingFlags(217+i, 0); + } + break; + } + + case '2F1A18633C30E938B50B6D928C730CB6': // Hell to Pay MAP29 + { + // Three Lost Souls placed outside the map, again... + for(int i=0; i<3; i++) + { + SetThingFlags(239+i, 0); + } + break; + } + + case '712BB4CFBD0753178CA0C6814BE4C288': // beta version of map12 BTSX_E1 + { + // patch some rendering glitches that are problematic to detect AddSectorTag(545, 32000); AddSectorTag(1618, 32000); SetLineSpecial(2853, Sector_Set3DFloor, 32000, 4); From 3d81be1517161fb374780d06e9152e87d9085219 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Tue, 9 Oct 2018 04:38:18 -0400 Subject: [PATCH 06/10] - always enforce a minimum distance for fog when fogmode is set to standard. without this, it was possible for the GPU to error out and stop rendering pixels for certain screen blocks --- wadsrc/static/shaders/glsl/main.fp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wadsrc/static/shaders/glsl/main.fp b/wadsrc/static/shaders/glsl/main.fp index 228d7b02d8..f096d0dd7d 100644 --- a/wadsrc/static/shaders/glsl/main.fp +++ b/wadsrc/static/shaders/glsl/main.fp @@ -451,7 +451,7 @@ vec3 AmbientOcclusionColor() // if (uFogEnabled == -1) { - fogdist = pixelpos.w; + fogdist = max(16.0, pixelpos.w); } else { @@ -489,7 +489,7 @@ void main() { if (uFogEnabled == 1 || uFogEnabled == -1) { - fogdist = pixelpos.w; + fogdist = max(16.0, pixelpos.w); } else { From e223a25863b204c3bb2b53a883d59cf97c145f94 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Tue, 9 Oct 2018 06:55:56 -0400 Subject: [PATCH 07/10] - fixed: smooth teleporters could fudge the player over an adjacent line, causing the player to appear on top of a cliff that is much higher than the original teleport. --- src/p_teleport.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/p_teleport.cpp b/src/p_teleport.cpp index 2bb71f82b7..78f21b741f 100644 --- a/src/p_teleport.cpp +++ b/src/p_teleport.cpp @@ -523,18 +523,21 @@ bool EV_SilentLineTeleport (line_t *line, int side, AActor *thing, int id, INTBO // Is this really still necessary with real math instead of imprecise trig tables? #if 1 + const double fudgeamount = 1. / 65536.; + int side = reverse || (player && stepdown); int fudge = FUDGEFACTOR; double dx = line->Delta().X; double dy = line->Delta().Y; + // Make sure we are on correct side of exit linedef. while (P_PointOnLineSidePrecise(p, l) != side && --fudge >= 0) { if (fabs(dx) > fabs(dy)) - p.Y -= (dx < 0) != side ? -1 : 1; + p.Y -= (dx < 0) != side ? -fudgeamount : fudgeamount; else - p.X += (dy < 0) != side ? -1 : 1; + p.X += (dy < 0) != side ? -fudgeamount : fudgeamount; } #endif From 22f8c26917803c2a1436b9a0dddf5f3d0c405a27 Mon Sep 17 00:00:00 2001 From: Erick Tenorio Date: Mon, 8 Oct 2018 20:05:45 -0500 Subject: [PATCH 08/10] Fix missing enemies in HTP-RAW.WAD MAP22 Make 100% kills possible on MAP22 of Hell to Pay --- wadsrc/static/zscript/level_compatibility.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/wadsrc/static/zscript/level_compatibility.txt b/wadsrc/static/zscript/level_compatibility.txt index 4ec2af8842..7bc2b017a5 100644 --- a/wadsrc/static/zscript/level_compatibility.txt +++ b/wadsrc/static/zscript/level_compatibility.txt @@ -651,6 +651,20 @@ class LevelCompatibility play break; } + case '7837B5334A277F107515D649BCEFB682': // Hell to Pay MAP22 + { + // Four enemies (six if multiplayer) never spawn in the map, + // so the lines closest to them should teleport them instead. + SetLineSpecial(1835, Teleport, 0, 40); + SetLineActivation(1835, SPAC_MCross); + SetLineFlags(1835, Line.ML_REPEAT_SPECIAL); + + SetLineSpecial(1847, Teleport, 0, 40); + SetLineActivation(1847, SPAC_MCross); + SetLineFlags(1847, Line.ML_REPEAT_SPECIAL); + break; + } + case '1A1AB6415851B9F17715A0C36412752E': // Hell to Pay MAP24 { // Remove Chaingunner far below the map, making 100% kills From 0dc7f6be19634b5be14f1fa3dd2c69959a9e6cff Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 9 Oct 2018 19:16:15 +0200 Subject: [PATCH 09/10] - fixed: MD3s with a skin-less surface left the renderer in an undefined state. The frame interpolation factor wasn't reset and rendering prematurely aborted with no chance to recover. --- src/r_data/models/models_md3.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/r_data/models/models_md3.cpp b/src/r_data/models/models_md3.cpp index f47ee90cd6..b3f12b853c 100644 --- a/src/r_data/models/models_md3.cpp +++ b/src/r_data/models/models_md3.cpp @@ -363,7 +363,10 @@ void FMD3Model::RenderFrame(FModelRenderer *renderer, FTexture * skin, int frame surfaceSkin = TexMan(surf->skins[0]); } - if (!surfaceSkin) return; + if (!surfaceSkin) + { + continue; + } } renderer->SetMaterial(surfaceSkin, false, translation); From ec7e855a56c6fdddfe358de7aefebf4af05114d1 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Wed, 10 Oct 2018 02:25:32 -0400 Subject: [PATCH 10/10] - g3.7pre --- src/version.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/version.h b/src/version.h index e014d54ed9..61c6ceff8e 100644 --- a/src/version.h +++ b/src/version.h @@ -48,16 +48,16 @@ const char *GetVersionString(); #ifdef GIT_DESCRIPTION #define VERSIONSTR GIT_DESCRIPTION #else -#define VERSIONSTR "3.6pre" +#define VERSIONSTR "3.7pre" #endif // The version as seen in the Windows resource -#define RC_FILEVERSION 3,5,9999,0 -#define RC_PRODUCTVERSION 3,5,9999,0 +#define RC_FILEVERSION 3,6,9999,0 +#define RC_PRODUCTVERSION 3,6,9999,0 #define RC_PRODUCTVERSION2 VERSIONSTR // These are for content versioning. #define VER_MAJOR 3 -#define VER_MINOR 6 +#define VER_MINOR 7 #define VER_REVISION 0 // Version identifier for network games.