From 500d2e076db1b7d7d526008250b8244e84d0ef0f Mon Sep 17 00:00:00 2001 From: Akash Date: Wed, 8 Feb 2017 21:39:33 +0530 Subject: [PATCH] GSdx-PCRTC: Apply saturation only for field mode Previously, the NTSC saturation was also applied for double scan mode (Interlaced and Frame) where the developers send double the height to the DISP registers, saturation shouldn't be performed at such cases as the developers could send a value of 780 while the real size of the output would be 390 due to double scan mode. Doing the saturation later after identifying the real size also seems a bit counter-intuitive as we haven't discovered any cases where double scan games require the NTSC saturation hack. So let's just apply the saturation only for Interlaced (Field) Mode and omit the saturation step for other modes. --- plugins/GSdx/GSState.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/GSdx/GSState.cpp b/plugins/GSdx/GSState.cpp index a0e0ae4962..01217e4f78 100644 --- a/plugins/GSdx/GSState.cpp +++ b/plugins/GSdx/GSState.cpp @@ -422,7 +422,7 @@ void GSState::SaturateOutputSize(GSVector4i& r) // Limit games to standard NTSC resolutions. games with 512X512 (PAL resolution) on NTSC video mode produces black border on the bottom. // 512 X 448 is the resolution generally used by NTSC, saturating the height value seems to get rid of the black borders. // Though it's quite a bad hack as it affects binaries which are patched to run on a non-native video mode. - if (m_NTSC_Saturation && isinterlaced() && videomode == GSVideoMode::NTSC && r.height() > 448 && r.width() < 640) + if (m_NTSC_Saturation && (m_regs->SMODE2.INT & !m_regs->SMODE2.FFMD) && videomode == GSVideoMode::NTSC && r.height() > 448 && r.width() < 640) { r.bottom = r.top + 448; }