trying to fix weird derailing

This commit is contained in:
CocoSimone
2022-08-28 23:48:08 +02:00
parent b4812cd442
commit 87ad20b519
29 changed files with 86 additions and 621 deletions

View File

@@ -3,7 +3,6 @@
#include <Window.hpp>
#include <algorithm>
#include <util.hpp>
#include <debugger.hpp>
namespace n64 {
Core::Core() {
@@ -31,32 +30,29 @@ void Core::Reset() {
void Core::LoadROM(const std::string& rom_) {
rom = rom_;
mem.LoadROM(rom);
pause = false;
pause = true;
romLoaded = true;
}
void Core::Step() {
MMIO& mmio = mem.mmio;
cpu.Step(mem);
mmio.rsp.Step(mmio.mi, cpu.regs, mmio.rdp);
}
void Core::Run(Window& window) {
MMIO& mmio = mem.mmio;
int cycles = 0;
for(int field = 0; field < mmio.vi.numFields; field++) {
int frameCycles = 0;
if(!pause && romLoaded) {
for (int i = 0; i < mmio.vi.numHalflines; i++) {
if ((mmio.vi.current & 0x3FE) == mmio.vi.intr) {
InterruptRaise(mmio.mi, cpu.regs, Interrupt::VI);
}
for(;cycles <= mmio.vi.cyclesPerHalfline; cycles++) {
for(;cycles <= mmio.vi.cyclesPerHalfline; cycles++, frameCycles++) {
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);
mmio.ai.Step(mem, cpu.regs, 1);
}
cycles -= mmio.vi.cyclesPerHalfline;
@@ -67,6 +63,9 @@ void Core::Run(Window& window) {
}
UpdateScreenParallelRdp(*this, window, GetVI());
int missedCycles = N64_CYCLES_PER_FRAME - frameCycles;
mmio.ai.Step(mem, cpu.regs, missedCycles);
} else if(pause && romLoaded) {
UpdateScreenParallelRdp(*this, window, GetVI());
} else if(pause && !romLoaded) {