From 999b01c81436cce5ad498c87e5631a5523637db0 Mon Sep 17 00:00:00 2001 From: refractionpcsx2 Date: Tue, 28 Jun 2022 15:47:36 +0100 Subject: [PATCH] GS: Fix interlace offset for native. --- pcsx2/GS/Renderers/Common/GSRenderer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pcsx2/GS/Renderers/Common/GSRenderer.cpp b/pcsx2/GS/Renderers/Common/GSRenderer.cpp index d513e68f5e..806f1e97fb 100644 --- a/pcsx2/GS/Renderers/Common/GSRenderer.cpp +++ b/pcsx2/GS/Renderers/Common/GSRenderer.cpp @@ -306,10 +306,11 @@ bool GSRenderer::Merge(int field) // src_out_rect is the resized rect for output. (Not really used) src_out_rect[i] = (GSVector4(r) * scale) / GSVector4(tex[i]->GetSize()).xyxy(); - if (m_regs->SMODE2.FFMD && !is_bob && !GSConfig.DisableInterlaceOffset && GSConfig.InterlaceMode != GSInterlaceMode::Off && GetUpscaleMultiplier() > 1) + if (m_regs->SMODE2.FFMD && !is_bob && !GSConfig.DisableInterlaceOffset && GSConfig.InterlaceMode != GSInterlaceMode::Off) { // We do half because FFMD is a half sized framebuffer, then we offset by 1 in the shader for the actual interlace - interlace_offset += ((((tex[1] ? tex[1]->GetScale().y : tex[0]->GetScale().y) + 0.5f) * 0.5f) - 1.0f) * static_cast(field ^ field2); + if(GetUpscaleMultiplier() > 1) + interlace_offset += ((((tex[1] ? tex[1]->GetScale().y : tex[0]->GetScale().y) + 0.5f) * 0.5f) - 1.0f) * static_cast(field ^ field2); offset = 1.0f; } // Restore manually offset "interlace" lines