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) |
|
return 0x01 | ((_pointerVm & 0x3C00) >> 6) |
|
||||||
((_pointerCb & 0x7) << 1);
|
((_pointerCb & 0x7) << 1);
|
||||||
case 0x19:
|
case 0x19:
|
||||||
return 0x70 | (_rasterInterruptTriggered ? 0x01 : 0x00) |
|
return 0x70 | (_intRaster ? 0x01 : 0x00) |
|
||||||
(_intSpriteDataCollision ? 0x02 : 0x00) |
|
(_intSpriteDataCollision ? 0x02 : 0x00) |
|
||||||
(_intSpriteCollision ? 0x04 : 0x00) |
|
(_intSpriteCollision ? 0x04 : 0x00) |
|
||||||
(_intLightPen ? 0x08 : 0x00) |
|
(_intLightPen ? 0x08 : 0x00) |
|
||||||
|
@ -207,11 +207,7 @@
|
||||||
case 0x19:
|
case 0x19:
|
||||||
// interrupts are cleared by writing a 1
|
// interrupts are cleared by writing a 1
|
||||||
if ((val & 0x01) != 0)
|
if ((val & 0x01) != 0)
|
||||||
{
|
|
||||||
_intRaster = false;
|
_intRaster = false;
|
||||||
_rasterInterruptTriggered = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((val & 0x02) != 0)
|
if ((val & 0x02) != 0)
|
||||||
_intSpriteDataCollision = false;
|
_intSpriteDataCollision = false;
|
||||||
if ((val & 0x04) != 0)
|
if ((val & 0x04) != 0)
|
||||||
|
|
|
@ -207,7 +207,6 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
ser.Sync(nameof(_pointerCb), ref _pointerCb);
|
ser.Sync(nameof(_pointerCb), ref _pointerCb);
|
||||||
ser.Sync(nameof(_pointerVm), ref _pointerVm);
|
ser.Sync(nameof(_pointerVm), ref _pointerVm);
|
||||||
ser.Sync(nameof(_rasterInterruptLine), ref _rasterInterruptLine);
|
ser.Sync(nameof(_rasterInterruptLine), ref _rasterInterruptLine);
|
||||||
ser.Sync(nameof(_rasterInterruptTriggered), ref _rasterInterruptTriggered);
|
|
||||||
ser.Sync(nameof(_rasterLine), ref _rasterLine);
|
ser.Sync(nameof(_rasterLine), ref _rasterLine);
|
||||||
ser.Sync(nameof(_rasterX), ref _rasterX);
|
ser.Sync(nameof(_rasterX), ref _rasterX);
|
||||||
ser.Sync(nameof(_rasterXHold), ref _rasterXHold);
|
ser.Sync(nameof(_rasterXHold), ref _rasterXHold);
|
||||||
|
|
|
@ -262,13 +262,7 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
// IRQ compares are done here
|
// IRQ compares are done here
|
||||||
if (_rasterLine == _rasterInterruptLine)
|
if (_rasterLine == _rasterInterruptLine)
|
||||||
{
|
{
|
||||||
_rasterInterruptTriggered = true;
|
_intRaster = true;
|
||||||
|
|
||||||
// interrupt needs to be enabled to be set to true
|
|
||||||
if (_enableIntRaster)
|
|
||||||
{
|
|
||||||
_intRaster = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue