Mesen2/Core/SNES/Debugger/DummySnesCpu.cpp

62 lines
No EOL
1.3 KiB
C++

#include "pch.h"
#include "SNES/Debugger/DummySnesCpu.h"
#define DUMMYCPU
#define SnesCpu DummySnesCpu
#include "SNES/SnesCpu.cpp"
#undef SnesCpu
#undef DUMMYCPU
DummySnesCpu::DummySnesCpu(SnesConsole* console, CpuType type)
{
_console = console;
_memoryMappings = type == CpuType::Snes ? console->GetMemoryManager()->GetMemoryMappings() : console->GetCartridge()->GetSa1()->GetMemoryMappings();
_dmaController = nullptr;
_memoryManager = nullptr;
}
uint8_t DummySnesCpu::Read(uint32_t addr, MemoryOperationType type)
{
uint8_t value = _memoryMappings->Peek(addr);
LogMemoryOperation(addr, value, type);
return value;
}
void DummySnesCpu::Write(uint32_t addr, uint8_t value, MemoryOperationType type)
{
LogMemoryOperation(addr, value, type);
}
void DummySnesCpu::SetDummyState(SnesCpuState& state)
{
_state = state;
_state.StopState = SnesCpuStopState::Running;
_memOpCounter = 0;
}
uint32_t DummySnesCpu::GetOperationCount()
{
return _memOpCounter;
}
void DummySnesCpu::LogMemoryOperation(uint32_t addr, uint8_t value, MemoryOperationType type)
{
_memOperations[_memOpCounter] = {
addr,
(int32_t)value,
type,
MemoryType::SnesMemory
};
_memOpCounter++;
}
MemoryOperationInfo DummySnesCpu::GetOperationInfo(uint32_t index)
{
return _memOperations[index];
}
int32_t DummySnesCpu::GetLastOperand()
{
return _operand;
}