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); } } }