diff --git a/pcsx2/Counters.cpp b/pcsx2/Counters.cpp index 3193ad0006..3b5ea37925 100644 --- a/pcsx2/Counters.cpp +++ b/pcsx2/Counters.cpp @@ -301,7 +301,7 @@ const char* ReportVideoMode() const char* ReportInterlaceMode() { const u64& smode2 = *(u64*)PS2GS_BASE(GS_SMODE2); - return (smode2 & 1) ? ((smode2 & 2) ? "Interlaced (Frame)" : "Interlaced (Field)") : "Progressive"; + return !IsProgressiveVideoMode() ? ((smode2 & 2) ? "Interlaced (Frame)" : "Interlaced (Field)") : "Progressive"; } double GetVerticalFrequency() diff --git a/pcsx2/GS/Renderers/Common/GSRenderer.cpp b/pcsx2/GS/Renderers/Common/GSRenderer.cpp index 170bfaaa89..14475efd47 100644 --- a/pcsx2/GS/Renderers/Common/GSRenderer.cpp +++ b/pcsx2/GS/Renderers/Common/GSRenderer.cpp @@ -368,10 +368,12 @@ bool GSRenderer::Merge(int field) ds = fs; // When interlace(FRAME) mode, the rect is half height, so it needs to be stretched. - if (m_regs->SMODE2.INT && m_regs->SMODE2.FFMD) + const bool is_interlaced_resolution = m_regs->SMODE2.INT || (isReallyInterlaced() && IsAnalogue() && GSConfig.InterlaceMode != GSInterlaceMode::Off); + + if (is_interlaced_resolution && m_regs->SMODE2.FFMD) ds.y *= 2; - m_real_size = ds; + m_real_size = GSVector2i(fs.x, is_interlaced_resolution ? ds.y : fs.y); if (tex[0] || tex[1]) {