mirror of https://github.com/PCSX2/pcsx2.git
GS: Force Blend TFF when scanmsk is used on the frame
This commit is contained in:
parent
e5a4f27e79
commit
7d356a2d20
|
@ -158,6 +158,7 @@ bool GSRenderer::Merge(int field)
|
||||||
GSVector4 dst[2];
|
GSVector4 dst[2];
|
||||||
|
|
||||||
const bool slbg = m_regs->PMODE.SLBG;
|
const bool slbg = m_regs->PMODE.SLBG;
|
||||||
|
bool scanmsk_frame = true;
|
||||||
|
|
||||||
for (int i = 0; i < 2; i++)
|
for (int i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
|
@ -191,7 +192,10 @@ bool GSRenderer::Merge(int field)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_scanmask_used && display_diff.y == 1) // Scanmask effect wouldn't look correct if we scale the offset
|
if (m_scanmask_used && display_diff.y == 1) // Scanmask effect wouldn't look correct if we scale the offset
|
||||||
|
{
|
||||||
off.y = display_diff.y;
|
off.y = display_diff.y;
|
||||||
|
scanmsk_frame = false; // Scanmsk is used between the 2 merge circuits.
|
||||||
|
}
|
||||||
else if (display_diff.y >= 4) // Shouldn't this be >= 2?
|
else if (display_diff.y >= 4) // Shouldn't this be >= 2?
|
||||||
{
|
{
|
||||||
off.y = tex[i]->GetScale().y * display_diff.y;
|
off.y = tex[i]->GetScale().y * display_diff.y;
|
||||||
|
@ -235,9 +239,9 @@ bool GSRenderer::Merge(int field)
|
||||||
|
|
||||||
if (m_regs->SMODE2.INT && GSConfig.InterlaceMode != GSInterlaceMode::Off)
|
if (m_regs->SMODE2.INT && GSConfig.InterlaceMode != GSInterlaceMode::Off)
|
||||||
{
|
{
|
||||||
if (GSConfig.InterlaceMode == GSInterlaceMode::Automatic && m_regs->SMODE2.FFMD) // Auto interlace enabled / Odd frame interlace setting
|
if (GSConfig.InterlaceMode == GSInterlaceMode::Automatic && (m_regs->SMODE2.FFMD || (m_scanmask_used && scanmsk_frame))) // Auto interlace enabled / Odd frame interlace setting
|
||||||
{
|
{
|
||||||
int field2 = 0;
|
int field2 = m_scanmask_used;
|
||||||
int mode = 2;
|
int mode = 2;
|
||||||
g_gs_device->Interlace(ds, field ^ field2, mode, tex[1] ? tex[1]->GetScale().y : tex[0]->GetScale().y);
|
g_gs_device->Interlace(ds, field ^ field2, mode, tex[1] ? tex[1]->GetScale().y : tex[0]->GetScale().y);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue