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 else if (maskedAddr == 0x10) // RESP0
{ {
// Borrowed from EMU7800. Apparently resetting between 68 and 76 has strange results. // Resp depends on HMOVE
if (!_hmove.LateHBlankReset)
{
if (_hsyncCnt < 69) if (_hsyncCnt < 69)
{ {
_player0.HPosCnt = 0; _player0.HPosCnt = 0;
_player0.ResetCnt = 2; _player0.ResetCnt = 2;
_player0.Reset = true; _player0.Reset = true;
} }
else if (_hsyncCnt == 69) else
{ {
_player0.ResetCnt = 0; _player0.ResetCnt = 0;
} }
else if (_hsyncCnt == 72)
{
_player0.ResetCnt = 0;
} }
else if (_hsyncCnt == 75) else
{ {
_player0.ResetCnt = 0; if (_hsyncCnt < 76)
{
_player0.HPosCnt = 0;
_player0.ResetCnt = 1;
_player0.Reset = true;
} }
else else
{ {
_player0.ResetCnt = 0; _player0.ResetCnt = 0;
} }
}
} }
else if (maskedAddr == 0x11) // RESP1 else if (maskedAddr == 0x11) // RESP1
{ {
// Borrowed from EMU7800. Apparently resetting between 68 and 76 has strange results. // RESP depends on HMOVE
// This fixes some graphic glitches with Frostbite if (!_hmove.LateHBlankReset)
{
if (_hsyncCnt < 69) if (_hsyncCnt < 69)
{ {
_player1.HPosCnt = 0; _player1.HPosCnt = 0;
_player1.ResetCnt = 2; _player1.ResetCnt = 2;
_player1.Reset = true; _player1.Reset = true;
} } else
else if (_hsyncCnt == 69)
{ {
_player1.ResetCnt = 0; _player1.ResetCnt = 0;
} }
else if (_hsyncCnt == 72) } else
{ {
_player1.ResetCnt = 0; if (_hsyncCnt < 76)
}
else if (_hsyncCnt == 75)
{ {
_player1.ResetCnt = 0; _player1.HPosCnt = 0;
_player1.ResetCnt = 1;
_player1.Reset = true;
} }
else else
{ {
_player1.ResetCnt = 0; _player1.ResetCnt = 0;
} }
}
} }
else if (maskedAddr == 0x12) // RESM0 else if (maskedAddr == 0x12) // RESM0
{ {