A2600: Resetting players before hsyncCnt 76 has apparently has strange results. I borrowed these changes from EMU7800. This seems to fix glitches with Frostbite.

This commit is contained in:
pjgat09 2012-10-31 23:42:18 +00:00
parent 967a60dcf7
commit 2d2e0c7e31
1 changed files with 49 additions and 2 deletions

View File

@ -1169,11 +1169,58 @@ namespace BizHawk.Emulation.Consoles.Atari
}
else if (maskedAddr == 0x10) // RESP0
{
player0.resetCnt = 0;
// Borrowed from EMU7800. Apparently resetting between 68 and 76 has strange results.
if (hsyncCnt < 69)
{
player0.hPosCnt = 0;
player0.resetCnt = 0;
player0.reset = true;
}
else if (hsyncCnt == 69)
{
player0.resetCnt = 3;
}
else if (hsyncCnt == 72)
{
player0.resetCnt = 2;
}
else if (hsyncCnt == 75)
{
player0.resetCnt = 1;
}
else
{
player0.resetCnt = 0;
}
//player0.resetCnt = 0;
}
else if (maskedAddr == 0x11) // RESP1
{
player1.resetCnt = 0;
// 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 = 0;
player1.reset = true;
}
else if (hsyncCnt == 69)
{
player1.resetCnt = 3;
}
else if (hsyncCnt == 72)
{
player1.resetCnt = 2;
}
else if (hsyncCnt == 75)
{
player1.resetCnt = 1;
}
else
{
player1.resetCnt = 0;
}
//player1.resetCnt = 0;
}
else if (maskedAddr == 0x12) // RESM0
{