C64: Split out VIC IRQ delays

This commit is contained in:
SaxxonPike 2019-07-13 19:28:44 -05:00
parent 154eefd2ad
commit 3bbfb98fc2
1 changed files with 7 additions and 7 deletions

View File

@ -334,15 +334,15 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
private void UpdatePins() private void UpdatePins()
{ {
var irqTemp = // IRQ is treated as a delay line
(_enableIntRaster & _intRaster) |
(_enableIntSpriteDataCollision & _intSpriteDataCollision) | var intIrq = (_enableIntRaster && _intRaster) ? 0x0008 : 0x0000;
(_enableIntSpriteCollision & _intSpriteCollision) | var sdIrq = (_enableIntSpriteDataCollision & _intSpriteDataCollision) ? 0x0001 : 0x0000;
(_enableIntLightPen & _intLightPen); var ssIrq = (_enableIntSpriteCollision & _intSpriteCollision) ? 0x0001 : 0x0000;
var lpIrq = (_enableIntLightPen & _intLightPen) ? 0x0001 : 0x0000;
// IRQ buffer is treated as a delay line
_irqBuffer >>= 1; _irqBuffer >>= 1;
_irqBuffer |= irqTemp ? 0x8 : 0; _irqBuffer |= intIrq | sdIrq | ssIrq | lpIrq;
_pinAec = _ba || _baCount >= 0; _pinAec = _ba || _baCount >= 0;
_pinBa = _ba; _pinBa = _ba;
} }