A2600: Add HMCLR delay
This commit is contained in:
parent
66cf00a917
commit
7df8ed1f27
|
@ -104,6 +104,8 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
private int _hmbDelay;
|
private int _hmbDelay;
|
||||||
private byte _hmbVal;
|
private byte _hmbVal;
|
||||||
|
|
||||||
|
private int _hmClrDelay;
|
||||||
|
|
||||||
private int _prg0Delay;
|
private int _prg0Delay;
|
||||||
private int _prg1Delay;
|
private int _prg1Delay;
|
||||||
private byte _prg0Val;
|
private byte _prg0Val;
|
||||||
|
@ -387,6 +389,21 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_hmClrDelay > 0)
|
||||||
|
{
|
||||||
|
_hmClrDelay++;
|
||||||
|
if (_hmClrDelay == 5)
|
||||||
|
{
|
||||||
|
_hmClrDelay = 0;
|
||||||
|
|
||||||
|
_player0.HM = 0;
|
||||||
|
_player0.Missile.Hm = 0;
|
||||||
|
_player1.HM = 0;
|
||||||
|
_player1.Missile.Hm = 0;
|
||||||
|
_ball.HM = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Reset the RDY flag when we reach hblank
|
// Reset the RDY flag when we reach hblank
|
||||||
if (_hsyncCnt <= 0)
|
if (_hsyncCnt <= 0)
|
||||||
{
|
{
|
||||||
|
@ -799,7 +816,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
_hmove.BallLatch = true;
|
_hmove.BallLatch = true;
|
||||||
_hmove.BallCnt = 0;
|
_hmove.BallCnt = 0;
|
||||||
|
|
||||||
_hmove.LateHBlankReset = true;
|
if (_hsyncCnt < 67) { _hmove.LateHBlankReset = true; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1357,11 +1374,9 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
}
|
}
|
||||||
else if (maskedAddr == 0x2B) // HMCLR
|
else if (maskedAddr == 0x2B) // HMCLR
|
||||||
{
|
{
|
||||||
_player0.HM = 0;
|
_hmClrDelay = 1;
|
||||||
_player0.Missile.Hm = 0;
|
|
||||||
_player1.HM = 0;
|
|
||||||
_player1.Missile.Hm = 0;
|
|
||||||
_ball.HM = 0;
|
|
||||||
}
|
}
|
||||||
else if (maskedAddr == 0x2C) // CXCLR
|
else if (maskedAddr == 0x2C) // CXCLR
|
||||||
{
|
{
|
||||||
|
|
|
@ -51,6 +51,8 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
ser.Sync("hmb_delay", ref _hmbDelay);
|
ser.Sync("hmb_delay", ref _hmbDelay);
|
||||||
ser.Sync("hmb_val", ref _hmbVal);
|
ser.Sync("hmb_val", ref _hmbVal);
|
||||||
|
|
||||||
|
ser.Sync("_hmClrDelay", ref _hmClrDelay);
|
||||||
|
|
||||||
ser.Sync("PRG0_delay", ref _prg0Delay);
|
ser.Sync("PRG0_delay", ref _prg0Delay);
|
||||||
ser.Sync("PRG1_delay", ref _prg1Delay);
|
ser.Sync("PRG1_delay", ref _prg1Delay);
|
||||||
ser.Sync("PRG0_val", ref _prg0Val);
|
ser.Sync("PRG0_val", ref _prg0Val);
|
||||||
|
|
Loading…
Reference in New Issue