Idle skipping... maybe?

This commit is contained in:
2026-05-21 17:16:43 +02:00
parent 609fa2fb08
commit 366637aba3
7 changed files with 604 additions and 580 deletions
+14
View File
@@ -110,6 +110,15 @@ void Core::Run(const float volumeL, const float volumeR) {
}
while (cycles < mem->mmio.vi.cyclesPerHalfline) {
if (IsAnythingSkippable()) {
const u32 taken = Scheduler::GetInstance().events.top().time - Scheduler::GetInstance().ticks;
cycles += taken;
frameCycles += taken;
Scheduler::GetInstance().Tick(taken);
isReadingAnyIO = false;
continue;
}
const u32 taken = StepCPU();
cycles += taken;
@@ -141,4 +150,9 @@ void Core::Run(const float volumeL, const float volumeR) {
if (broken)
pause = true;
}
bool Core::IsAnythingSkippable() {
MMIO &mmio = mem->mmio;
return (mmio.si.status.dmaBusy || mmio.pi.dmaBusy || mmio.pi.ioBusy) && isReadingAnyIO;
}
} // namespace n64