PRG delays due to HMOVE

This commit is contained in:
alyosha-tas 2016-04-09 12:57:32 -04:00
parent 3e14c07c51
commit 48dcf8fc91
1 changed files with 54 additions and 48 deletions

View File

@ -1178,56 +1178,62 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
}
else if (maskedAddr == 0x10) // RESP0
{
// Borrowed from EMU7800. Apparently resetting between 68 and 76 has strange results.
if (_hsyncCnt < 69)
{
_player0.HPosCnt = 0;
_player0.ResetCnt = 2;
_player0.Reset = true;
}
else if (_hsyncCnt == 69)
{
_player0.ResetCnt = 0;
}
else if (_hsyncCnt == 72)
{
_player0.ResetCnt = 0;
}
else if (_hsyncCnt == 75)
{
_player0.ResetCnt = 0;
}
else
{
_player0.ResetCnt = 0;
}
}
// Resp depends on HMOVE
if (!_hmove.LateHBlankReset)
{
if (_hsyncCnt < 69)
{
_player0.HPosCnt = 0;
_player0.ResetCnt = 2;
_player0.Reset = true;
}
else
{
_player0.ResetCnt = 0;
}
}
else
{
if (_hsyncCnt < 76)
{
_player0.HPosCnt = 0;
_player0.ResetCnt = 1;
_player0.Reset = true;
}
else
{
_player0.ResetCnt = 0;
}
}
}
else if (maskedAddr == 0x11) // RESP1
{
// Borrowed from EMU7800. Apparently resetting between 68 and 76 has strange results.
// This fixes some graphic glitches with Frostbite
if (_hsyncCnt < 69)
{
_player1.HPosCnt = 0;
_player1.ResetCnt = 2;
_player1.Reset = true;
}
else if (_hsyncCnt == 69)
{
_player1.ResetCnt = 0;
}
else if (_hsyncCnt == 72)
{
_player1.ResetCnt = 0;
}
else if (_hsyncCnt == 75)
{
_player1.ResetCnt = 0;
}
else
{
_player1.ResetCnt = 0;
}
// RESP depends on HMOVE
if (!_hmove.LateHBlankReset)
{
if (_hsyncCnt < 69)
{
_player1.HPosCnt = 0;
_player1.ResetCnt = 2;
_player1.Reset = true;
} else
{
_player1.ResetCnt = 0;
}
} else
{
if (_hsyncCnt < 76)
{
_player1.HPosCnt = 0;
_player1.ResetCnt = 1;
_player1.Reset = true;
}
else
{
_player1.ResetCnt = 0;
}
}
}
else if (maskedAddr == 0x12) // RESM0
{