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 (_hsyncCnt < 69) if (!_hmove.LateHBlankReset)
{ {
_player0.HPosCnt = 0; if (_hsyncCnt < 69)
_player0.ResetCnt = 2; {
_player0.Reset = true; _player0.HPosCnt = 0;
} _player0.ResetCnt = 2;
else if (_hsyncCnt == 69) _player0.Reset = true;
{ }
_player0.ResetCnt = 0; else
} {
else if (_hsyncCnt == 72) _player0.ResetCnt = 0;
{ }
_player0.ResetCnt = 0; }
} else
else if (_hsyncCnt == 75) {
{ if (_hsyncCnt < 76)
_player0.ResetCnt = 0; {
} _player0.HPosCnt = 0;
else _player0.ResetCnt = 1;
{ _player0.Reset = true;
_player0.ResetCnt = 0; }
} else
} {
_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.ResetCnt = 2; _player1.HPosCnt = 0;
_player1.Reset = true; _player1.ResetCnt = 2;
} _player1.Reset = true;
else if (_hsyncCnt == 69) } else
{ {
_player1.ResetCnt = 0; _player1.ResetCnt = 0;
} }
else if (_hsyncCnt == 72) } else
{ {
_player1.ResetCnt = 0; if (_hsyncCnt < 76)
} {
else if (_hsyncCnt == 75) _player1.HPosCnt = 0;
{ _player1.ResetCnt = 1;
_player1.ResetCnt = 0; _player1.Reset = true;
} }
else else
{ {
_player1.ResetCnt = 0; _player1.ResetCnt = 0;
} }
}
} }
else if (maskedAddr == 0x12) // RESM0 else if (maskedAddr == 0x12) // RESM0
{ {