Fix parallel-rdp integration and reset whole state upon loading rom

This commit is contained in:
CocoSimone
2022-08-13 11:44:35 +02:00
parent ed34d9c9ba
commit e2313c212c
41 changed files with 250 additions and 92 deletions

View File

@@ -1,15 +1,28 @@
#include <Core.hpp>
#include <ParallelRDPWrapper.hpp>
#include <Window.hpp>
namespace n64 {
Core::Core() {
Reset();
}
void Core::Reset() {
cpu.Reset();
mem.Reset();
romLoaded = false;
}
void Core::LoadROM(const std::string& rom) {
Reset();
mem.LoadROM(rom);
romLoaded = true;
}
void Core::Run() {
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++) {
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);
@@ -17,7 +30,7 @@ void Core::Run() {
mmio.rsp.Step(mmio.mi, cpu.regs, mmio.rdp);
}
if((mmio.vi.current & 0x3FE) == mmio.vi.intr) {
if ((mmio.vi.current & 0x3FE) == mmio.vi.intr) {
InterruptRaise(mmio.mi, cpu.regs, Interrupt::VI);
}
}