Mesen-SX/Core/Debugger.h

47 lines
No EOL
933 B
C++

#pragma once
#include "stdafx.h"
#include "CpuTypes.h"
#include "PpuTypes.h"
class Cpu;
class Ppu;
class MemoryManager;
enum class MemoryOperationType;
class TraceLogger;
//class Disassembler;
struct DebugState
{
CpuState Cpu;
PpuState Ppu;
//ApuState apuState;
};
class Debugger
{
private:
shared_ptr<Cpu> _cpu;
shared_ptr<Ppu> _ppu;
shared_ptr<MemoryManager> _memoryManager;
shared_ptr<TraceLogger> _traceLogger;
//unique_ptr<Disassembler> _disassembler;
atomic<int32_t> _cpuStepCount;
public:
Debugger(shared_ptr<Cpu> cpu, shared_ptr<Ppu> ppu, shared_ptr<MemoryManager> memoryManager);
~Debugger();
void ProcessCpuRead(uint32_t addr, uint8_t value, MemoryOperationType type);
void ProcessCpuWrite(uint32_t addr, uint8_t value, MemoryOperationType type);
void Run();
void Step(int32_t stepCount);
bool IsExecutionStopped();
void GetState(DebugState *state);
shared_ptr<TraceLogger> GetTraceLogger();
};