From 417d0a3606f7b6a12badae44f2f68bd9121b9850 Mon Sep 17 00:00:00 2001 From: FlatOutPS2 Date: Wed, 23 Nov 2016 22:14:44 +0100 Subject: [PATCH] GSdx Merge Circuit: Fix regressions Fixes screen shaking in Tenchu: Wrath Of Heaven, and graphical issues in NASCAR 09. --- plugins/GSdx/GSRenderer.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/plugins/GSdx/GSRenderer.cpp b/plugins/GSdx/GSRenderer.cpp index f452751aff..1f9c0340f6 100644 --- a/plugins/GSdx/GSRenderer.cpp +++ b/plugins/GSdx/GSRenderer.cpp @@ -237,17 +237,18 @@ bool GSRenderer::Merge(int field) // Time Crisis 2/3 uses two side by side images when in split screen mode. // Though ignore cases where baseline and display rectangle offsets only differ by 1 pixel, causes blurring and wrong resolution output on FFXII - if(display_diff.x > 2) + // And cap the offset range to avoid cases with extreme values (NASCAR 09) causing graphical issues. + if(display_diff.x > 2 && display_diff.x < 10) { off.x = tex[i]->GetScale().x * display_diff.x; } // If the DX offset is too small then consider the status of frame memory offsets, prevents blurring on Tenchu: Fatal Shadows, Worms 3D - else if(display_diff.x || frame_diff.x) + else if((display_diff.x != frame_diff.x) && display_diff.x < 10 && frame_diff.x < 10) { off.x = tex[i]->GetScale().x * frame_diff.x; } - if(display_diff.y >= 4) // Shouldn't this be 2? + if(display_diff.y >= 4 && display_diff.y < 10) // Shouldn't this be >= 2? { off.y = tex[i]->GetScale().y * display_diff.y; @@ -256,7 +257,7 @@ bool GSRenderer::Merge(int field) off.y /= 2; } } - else if(display_diff.y || frame_diff.y) + else if(display_diff.y != frame_diff.y && display_diff.y < 10 && frame_diff.y < 10) { off.y = tex[i]->GetScale().y * frame_diff.y; }