Mesen-S/Core/DummyCpu.h
Sour 28443f84d6 Debugger: Fixed display issues in disassembly view for SA-1 debugger
Effective addresses and their values were incorrect
2020-02-27 19:59:41 -05:00

83 lines
1.6 KiB
C

#pragma once
#include "stdafx.h"
#include "MemoryMappings.h"
#include "DebugTypes.h"
#include "BaseCartridge.h"
#include "Sa1.h"
#define DUMMYCPU
#define Cpu DummyCpu
#include "Cpu.h"
#include "Cpu.cpp"
#undef Cpu
#undef DUMMYCPU
DummyCpu::DummyCpu(Console* console, CpuType type)
{
_console = console;
_memoryMappings = type == CpuType::Cpu ? console->GetMemoryManager()->GetMemoryMappings() : console->GetCartridge()->GetSa1()->GetMemoryMappings();
_dmaController = nullptr;
_memoryManager = nullptr;
}
uint8_t DummyCpu::Read(uint32_t addr, MemoryOperationType type)
{
uint8_t value = _memoryMappings->Peek(addr);
LogRead(addr, value);
return value;
}
void DummyCpu::Write(uint32_t addr, uint8_t value, MemoryOperationType type)
{
LogWrite(addr, value);
}
void DummyCpu::SetDummyState(CpuState &state)
{
_state = state;
_state.StopState = CpuStopState::Running;
_writeCounter = 0;
_readCounter = 0;
}
uint32_t DummyCpu::GetWriteCount()
{
return _writeCounter;
}
uint32_t DummyCpu::GetReadCount()
{
return _readCounter;
}
void DummyCpu::LogRead(uint32_t addr, uint8_t value)
{
_readAddresses[_readCounter] = addr;
_readValue[_readCounter] = value;
_readCounter++;
}
void DummyCpu::LogWrite(uint32_t addr, uint8_t value)
{
_writeAddresses[_writeCounter] = addr;
_writeValue[_writeCounter] = value;
_writeCounter++;
}
void DummyCpu::GetWriteInfo(uint32_t index, uint32_t &addr, uint8_t &value)
{
addr = _writeAddresses[index];
value = _writeValue[index];
}
void DummyCpu::GetReadInfo(uint32_t index, uint32_t &addr, uint8_t &value)
{
addr = _readAddresses[index];
value = _readValue[index];
}
int32_t DummyCpu::GetLastOperand()
{
return _operand;
}