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()
{
var irqTemp =
(_enableIntRaster & _intRaster) |
(_enableIntSpriteDataCollision & _intSpriteDataCollision) |
(_enableIntSpriteCollision & _intSpriteCollision) |
(_enableIntLightPen & _intLightPen);
// IRQ is treated as a delay line
var intIrq = (_enableIntRaster && _intRaster) ? 0x0008 : 0x0000;
var sdIrq = (_enableIntSpriteDataCollision & _intSpriteDataCollision) ? 0x0001 : 0x0000;
var ssIrq = (_enableIntSpriteCollision & _intSpriteCollision) ? 0x0001 : 0x0000;
var lpIrq = (_enableIntLightPen & _intLightPen) ? 0x0001 : 0x0000;
// IRQ buffer is treated as a delay line
_irqBuffer >>= 1;
_irqBuffer |= irqTemp ? 0x8 : 0;
_irqBuffer |= intIrq | sdIrq | ssIrq | lpIrq;
_pinAec = _ba || _baCount >= 0;
_pinBa = _ba;
}