C64: Raster interrupt bit can be set even if not enabled, just won't actually assert IRQ

This commit is contained in:
SaxxonPike 2019-07-09 21:40:03 -05:00
parent e63d10b608
commit 3a135c7c26
3 changed files with 2 additions and 13 deletions

View File

@ -99,7 +99,7 @@
return 0x01 | ((_pointerVm & 0x3C00) >> 6) |
((_pointerCb & 0x7) << 1);
case 0x19:
return 0x70 | (_rasterInterruptTriggered ? 0x01 : 0x00) |
return 0x70 | (_intRaster ? 0x01 : 0x00) |
(_intSpriteDataCollision ? 0x02 : 0x00) |
(_intSpriteCollision ? 0x04 : 0x00) |
(_intLightPen ? 0x08 : 0x00) |
@ -207,11 +207,7 @@
case 0x19:
// interrupts are cleared by writing a 1
if ((val & 0x01) != 0)
{
_intRaster = false;
_rasterInterruptTriggered = false;
}
if ((val & 0x02) != 0)
_intSpriteDataCollision = false;
if ((val & 0x04) != 0)

View File

@ -207,7 +207,6 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
ser.Sync(nameof(_pointerCb), ref _pointerCb);
ser.Sync(nameof(_pointerVm), ref _pointerVm);
ser.Sync(nameof(_rasterInterruptLine), ref _rasterInterruptLine);
ser.Sync(nameof(_rasterInterruptTriggered), ref _rasterInterruptTriggered);
ser.Sync(nameof(_rasterLine), ref _rasterLine);
ser.Sync(nameof(_rasterX), ref _rasterX);
ser.Sync(nameof(_rasterXHold), ref _rasterXHold);

View File

@ -262,13 +262,7 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
// IRQ compares are done here
if (_rasterLine == _rasterInterruptLine)
{
_rasterInterruptTriggered = true;
// interrupt needs to be enabled to be set to true
if (_enableIntRaster)
{
_intRaster = true;
}
_intRaster = true;
}
}