C64: raster interrupt fix
This commit is contained in:
parent
fb692806c3
commit
b53a89b88f
|
@ -207,7 +207,11 @@
|
||||||
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)
|
||||||
|
|
|
@ -242,23 +242,16 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
// start of rasterline
|
// start of rasterline
|
||||||
if ((_cycle == RasterIrqLineXCycle && _rasterLine > 0) || (_cycle == RasterIrqLine0Cycle && _rasterLine == 0))
|
if ((_cycle == RasterIrqLineXCycle && _rasterLine > 0) || (_cycle == RasterIrqLine0Cycle && _rasterLine == 0))
|
||||||
{
|
{
|
||||||
_rasterInterruptTriggered = false;
|
//_rasterInterruptTriggered = false;
|
||||||
|
|
||||||
if (_rasterLine == LastDmaLine)
|
if (_rasterLine == LastDmaLine)
|
||||||
_badlineEnable = false;
|
_badlineEnable = false;
|
||||||
}
|
|
||||||
|
|
||||||
// rasterline IRQ compare
|
// IRQ compares are done here
|
||||||
if (_rasterLine != _rasterInterruptLine)
|
if (_rasterLine == _rasterInterruptLine)
|
||||||
{
|
|
||||||
_rasterInterruptTriggered = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!_rasterInterruptTriggered)
|
|
||||||
{
|
{
|
||||||
_rasterInterruptTriggered = true;
|
_rasterInterruptTriggered = true;
|
||||||
|
|
||||||
// interrupt needs to be enabled to be set to true
|
// interrupt needs to be enabled to be set to true
|
||||||
if (_enableIntRaster)
|
if (_enableIntRaster)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue