From 066b1ace176c886e593e4a28b854d584279d18d5 Mon Sep 17 00:00:00 2001 From: CocoSimone Date: Thu, 18 Aug 2022 14:52:09 +0200 Subject: [PATCH] Update parallel-rdp properly --- src/frontend/App.cpp | 9 +-------- src/n64/Core.cpp | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/frontend/App.cpp b/src/frontend/App.cpp index bcbede89..b46a407d 100644 --- a/src/frontend/App.cpp +++ b/src/frontend/App.cpp @@ -31,13 +31,6 @@ void App::Run() { core.PollInputs(event); } - if(core.romLoaded) { - core.Run(window); - UpdateScreenParallelRdp(window, core.GetVI()); - } else { - UpdateScreenParallelRdpNoGame(window); - } - - SDL_Delay(1); + core.Run(window); } } diff --git a/src/n64/Core.cpp b/src/n64/Core.cpp index e8eb8334..dade90b6 100644 --- a/src/n64/Core.cpp +++ b/src/n64/Core.cpp @@ -22,16 +22,22 @@ void Core::LoadROM(const std::string& rom) { void Core::Run(Window& window) { MMIO& mmio = mem.mmio; for(mmio.vi.current = 0; mmio.vi.current < 262; mmio.vi.current++) { - for (int i = 0; i < 6000; i++) { - cpu.Step(mem); - mmio.rsp.Step(mmio.mi, cpu.regs, mmio.rdp); - mmio.rsp.Step(mmio.mi, cpu.regs, mmio.rdp); - mmio.rsp.Step(mmio.mi, cpu.regs, mmio.rdp); - mmio.rsp.Step(mmio.mi, cpu.regs, mmio.rdp); - } + if(romLoaded) { + for (int i = 0; i < 6000; i++) { + cpu.Step(mem); + mmio.rsp.Step(mmio.mi, cpu.regs, mmio.rdp); + mmio.rsp.Step(mmio.mi, cpu.regs, mmio.rdp); + mmio.rsp.Step(mmio.mi, cpu.regs, mmio.rdp); + mmio.rsp.Step(mmio.mi, cpu.regs, mmio.rdp); + } - if ((mmio.vi.current & 0x3FE) == mmio.vi.intr) { - InterruptRaise(mmio.mi, cpu.regs, Interrupt::VI); + if ((mmio.vi.current & 0x3FE) == mmio.vi.intr) { + InterruptRaise(mmio.mi, cpu.regs, Interrupt::VI); + } + + UpdateScreenParallelRdp(window, GetVI()); + } else { + UpdateScreenParallelRdpNoGame(window); } } }