diff --git a/pcsx2/GS/Renderers/DX11/GSRendererDX11.cpp b/pcsx2/GS/Renderers/DX11/GSRendererDX11.cpp index 34aced99f4..8a56fe22f1 100644 --- a/pcsx2/GS/Renderers/DX11/GSRendererDX11.cpp +++ b/pcsx2/GS/Renderers/DX11/GSRendererDX11.cpp @@ -108,7 +108,8 @@ void GSRendererDX11::EmulateZbuffer() if (m_context->TEST.ZTE) { m_om_dssel.ztst = m_context->TEST.ZTST; - m_om_dssel.zwe = !m_context->ZBUF.ZMSK; + // AA1: Z is not written on lines since coverage is always less than 0x80. + m_om_dssel.zwe = (m_context->ZBUF.ZMSK || (PRIM->AA1 && m_vt.m_primclass == GS_LINE_CLASS)) ? 0 : 1; } else { diff --git a/pcsx2/GS/Renderers/OpenGL/GSRendererOGL.cpp b/pcsx2/GS/Renderers/OpenGL/GSRendererOGL.cpp index 36ef042844..6750c8c5b2 100644 --- a/pcsx2/GS/Renderers/OpenGL/GSRendererOGL.cpp +++ b/pcsx2/GS/Renderers/OpenGL/GSRendererOGL.cpp @@ -122,7 +122,8 @@ void GSRendererOGL::EmulateZbuffer() if (m_context->TEST.ZTE) { m_om_dssel.ztst = m_context->TEST.ZTST; - m_om_dssel.zwe = !m_context->ZBUF.ZMSK; + // AA1: Z is not written on lines since coverage is always less than 0x80. + m_om_dssel.zwe = (m_context->ZBUF.ZMSK || (PRIM->AA1 && m_vt.m_primclass == GS_LINE_CLASS)) ? 0 : 1; } else {