Merge pull request #3753 from phire/obviously_hacks_are_hacky

Only force progressive if we are currently in an interlaced video mode (fix NES games on Zelda collectors edition)
This commit is contained in:
Dolphin Bot 2016-04-05 19:29:39 +02:00
commit 94098a50c2
1 changed files with 6 additions and 2 deletions

View File

@ -634,7 +634,11 @@ u32 GetTicksPerField()
static void BeginField(FieldType field)
{
bool interlaced_xfb = ((m_PictureConfiguration.STD / m_PictureConfiguration.WPL)==2);
// Could we fit a second line of data in the stride?
bool potentially_interlaced_xfb = ((m_PictureConfiguration.STD / m_PictureConfiguration.WPL) == 2);
// Are there an odd number of half-lines per field (definition of interlaced video)
bool interlaced_video_mode = (GetHalfLinesPerEvenField() & 1) == 1;
u32 fbStride = m_PictureConfiguration.STD * 16;
u32 fbWidth = m_PictureConfiguration.WPL * 16;
u32 fbHeight = m_VerticalTimingRegister.ACV;
@ -650,7 +654,7 @@ static void BeginField(FieldType field)
xfbAddr = GetXFBAddressTop();
}
if (interlaced_xfb && g_ActiveConfig.bForceProgressive)
if (potentially_interlaced_xfb && interlaced_video_mode && g_ActiveConfig.bForceProgressive)
{
// Strictly speaking, in interlaced mode, we're only supposed to read
// half of the lines of the XFB, and use that to display a field; the