Tweaked the VBeam logic enough to fix Endless Ocean 2. This might also fix a few other games that have been black screening on boot recently.

Fixes issue 3472.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6423 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
skidau 2010-11-15 11:32:30 +00:00
parent db35fe4100
commit 0c5ccf7156
1 changed files with 6 additions and 7 deletions

View File

@ -798,7 +798,8 @@ void Update()
{ {
// Progressive // Progressive
NewVBeamPos = s_lineCount + 1; NewVBeamPos = s_lineCount + 1;
BeginField(FIELD_PROGRESSIVE); if (m_VBeamPos == 1)
BeginField(FIELD_PROGRESSIVE);
} }
else if (m_VBeamPos == s_upperFieldBegin) else if (m_VBeamPos == s_upperFieldBegin)
{ {
@ -830,17 +831,15 @@ void Update()
EndField(); EndField();
} }
if (++m_VBeamPos > s_lineCount)
m_VBeamPos = (NewVBeamPos > s_lineCount) ? 1 : NewVBeamPos;
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)
{ {
if (m_VBeamPos <= m_InterruptRegister[i].VCT && m_InterruptRegister[i].VCT < NewVBeamPos) if (m_VBeamPos == m_InterruptRegister[i].VCT)
m_InterruptRegister[i].IR_INT = 1; m_InterruptRegister[i].IR_INT = 1;
} }
UpdateInterrupts(); UpdateInterrupts();
if (++m_VBeamPos > s_lineCount)
{
m_VBeamPos = (NewVBeamPos > s_lineCount) ? 1 : NewVBeamPos;
}
} }
} // namespace } // namespace