From 17f814e47a3d77446a557d52971e28747a708a27 Mon Sep 17 00:00:00 2001 From: Souryo Date: Sun, 24 Jan 2016 16:51:58 -0500 Subject: [PATCH] BaseMapper: Fixed missing CPU clocks in ProcessCpuClock --- Core/CPU.cpp | 2 ++ Core/MemoryManager.cpp | 9 +++++---- Core/MemoryManager.h | 2 ++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Core/CPU.cpp b/Core/CPU.cpp index 036d70f7..47d10bab 100644 --- a/Core/CPU.cpp +++ b/Core/CPU.cpp @@ -97,6 +97,8 @@ void CPU::Exec() void CPU::IncCycleCount() { + _memoryManager->ProcessCpuClock(); + if(_dmcDmaRunning) { //CPU is being stalled by the DMC's DMA transfer _dmcCounter--; diff --git a/Core/MemoryManager.cpp b/Core/MemoryManager.cpp index 829565c1..ed1633a8 100644 --- a/Core/MemoryManager.cpp +++ b/Core/MemoryManager.cpp @@ -97,6 +97,11 @@ uint8_t MemoryManager::DebugRead(uint16_t addr) return value; } +void MemoryManager::ProcessCpuClock() +{ + _mapper->ProcessCpuClock(); +} + uint8_t MemoryManager::Read(uint16_t addr, MemoryOperationType operationType) { uint8_t value; @@ -106,8 +111,6 @@ uint8_t MemoryManager::Read(uint16_t addr, MemoryOperationType operationType) value = ReadRegister(addr); } - _mapper->ProcessCpuClock(); - CheatManager::ApplyRamCodes(addr, value); Debugger::ProcessRamOperation(operationType, addr, value); @@ -124,8 +127,6 @@ void MemoryManager::Write(uint16_t addr, uint8_t value) } else { WriteRegister(addr, value); } - - _mapper->ProcessCpuClock(); } void MemoryManager::ProcessVramAccess(uint16_t &addr) diff --git a/Core/MemoryManager.h b/Core/MemoryManager.h index c5ea46ec..4f0411d7 100644 --- a/Core/MemoryManager.h +++ b/Core/MemoryManager.h @@ -51,6 +51,8 @@ class MemoryManager: public Snapshotable uint8_t* GetInternalRAM(); + void ProcessCpuClock(); + uint8_t Read(uint16_t addr, MemoryOperationType operationType = MemoryOperationType::Read); void Write(uint16_t addr, uint8_t value);