Rambo-1: Temporary fix for IRQs until a better model is found

See: http://forums.nesdev.com/viewtopic.php?f=9&t=19565
This commit is contained in:
Sour 2020-02-01 10:58:37 -05:00
parent 5b0c208984
commit 4f3f58c067
2 changed files with 3 additions and 2 deletions

View file

@ -23,6 +23,7 @@ public:
Stream(_lastCycle, _cyclesDown);
}
template<uint8_t minDelay = 10>
A12StateChange UpdateVramAddress(uint16_t addr, uint32_t frameCycle)
{
A12StateChange result = A12StateChange::None;
@ -42,7 +43,7 @@ public:
result = A12StateChange::Fall;
}
} else if(addr & 0x1000) {
if(_cyclesDown > 10) {
if(_cyclesDown > minDelay) {
result = A12StateChange::Rise;
}
_cyclesDown = 0;

View file

@ -157,7 +157,7 @@ public:
virtual void NotifyVRAMAddressChange(uint16_t addr) override
{
if(!_irqCycleMode) {
if(_a12Watcher.UpdateVramAddress(addr, _console->GetPpu()->GetFrameCycle()) == A12StateChange::Rise) {
if(_a12Watcher.UpdateVramAddress<30>(addr, _console->GetPpu()->GetFrameCycle()) == A12StateChange::Rise) {
ClockIrqCounter(Rambo1::PpuIrqDelay);
}
}