From f92c65326c31b5484736ecf3b8f052ba51d2a51f Mon Sep 17 00:00:00 2001 From: SimoneN64 Date: Mon, 5 Jun 2023 11:28:11 +0200 Subject: [PATCH] Reset system overhaul --- src/backend/Core.cpp | 4 +--- src/backend/Core.hpp | 1 - src/backend/core/Interpreter.cpp | 1 + src/backend/core/MMIO.cpp | 4 ---- src/backend/core/MMIO.hpp | 3 ++- src/backend/core/Mem.cpp | 11 +++++------ src/backend/core/RDP.cpp | 3 ++- 7 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/backend/Core.cpp b/src/backend/Core.cpp index 6bd8493f..5343f42c 100644 --- a/src/backend/Core.cpp +++ b/src/backend/Core.cpp @@ -20,7 +20,6 @@ void Core::Stop() { void Core::LoadROM(const std::string& rom_) { rom = rom_; cpu.Reset(); - cpu.mem.Reset(); pause = false; romLoaded = true; @@ -29,9 +28,8 @@ void Core::LoadROM(const std::string& rom_) { cpu.mem.mmio.si.pif.InitDevices(cpu.mem.saveType); cpu.mem.mmio.si.pif.LoadMempak(rom_); cpu.mem.mmio.si.pif.LoadEeprom(cpu.mem.saveType, rom_); - isPAL = cpu.mem.IsROMPAL(); - cpu.mem.mmio.vi.isPal = isPAL; cpu.mem.mmio.si.pif.ExecutePIF(cpu.mem, cpu.regs); + cpu.mem.mmio.vi.isPal = cpu.mem.IsROMPAL(); } void Core::Run(float volumeL, float volumeR) { diff --git a/src/backend/Core.hpp b/src/backend/Core.hpp index ec370991..29710c4e 100644 --- a/src/backend/Core.hpp +++ b/src/backend/Core.hpp @@ -22,7 +22,6 @@ struct Core { bool pause = true; int cycles = 0; - bool isPAL = false; bool romLoaded = false; bool done = false; std::string rom; diff --git a/src/backend/core/Interpreter.cpp b/src/backend/core/Interpreter.cpp index 01922aae..6c5accf9 100644 --- a/src/backend/core/Interpreter.cpp +++ b/src/backend/core/Interpreter.cpp @@ -3,5 +3,6 @@ namespace n64 { void Interpreter::Reset() { regs.Reset(); + mem.Reset(); } } \ No newline at end of file diff --git a/src/backend/core/MMIO.cpp b/src/backend/core/MMIO.cpp index 620731cd..8a701618 100644 --- a/src/backend/core/MMIO.cpp +++ b/src/backend/core/MMIO.cpp @@ -4,10 +4,6 @@ #include namespace n64 { -MMIO::MMIO () { - Reset(); -} - void MMIO::Reset() { rsp.Reset(); rdp.Reset(); diff --git a/src/backend/core/MMIO.hpp b/src/backend/core/MMIO.hpp index f19fd35f..0abeb377 100644 --- a/src/backend/core/MMIO.hpp +++ b/src/backend/core/MMIO.hpp @@ -13,8 +13,9 @@ struct Mem; struct Registers; struct MMIO { - MMIO(); + MMIO() = default; void Reset(); + VI vi; MI mi; AI ai; diff --git a/src/backend/core/Mem.cpp b/src/backend/core/Mem.cpp index d887e0e1..8222594c 100644 --- a/src/backend/core/Mem.cpp +++ b/src/backend/core/Mem.cpp @@ -7,12 +7,6 @@ namespace n64 { Mem::Mem() { - rom.cart = (u8*)calloc(CART_SIZE, 1); - sram = (u8*)calloc(SRAM_SIZE, 1); - Reset(); -} - -void Mem::Reset() { memset(readPages, 0, PAGE_COUNT); memset(writePages, 0, PAGE_COUNT); @@ -23,6 +17,11 @@ void Mem::Reset() { writePages[i] = pointer; } + rom.cart = (u8*)calloc(CART_SIZE, 1); + sram = (u8*)calloc(SRAM_SIZE, 1); +} + +void Mem::Reset() { memset(rom.cart, 0, CART_SIZE); memset(sram, 0, SRAM_SIZE); mmio.Reset(); diff --git a/src/backend/core/RDP.cpp b/src/backend/core/RDP.cpp index 73c1132e..82b9ee63 100644 --- a/src/backend/core/RDP.cpp +++ b/src/backend/core/RDP.cpp @@ -7,7 +7,8 @@ namespace n64 { RDP::RDP() { rdram = (u8*)calloc(RDRAM_SIZE, 1); - Reset(); + memset(cmd_buf, 0, 0x100000); + dpc.status.raw = 0x80; } void RDP::Reset() {