PRG delays due to HMOVE
This commit is contained in:
parent
3e14c07c51
commit
48dcf8fc91
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue