C64: Raster interrupt bit can be set even if not enabled, just won't actually assert IRQ
This commit is contained in:
parent
e63d10b608
commit
3a135c7c26
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue