Mesen-SX/Core/Debugger.h

54 lines
1.1 KiB
C
Raw Normal View History

#pragma once
#include "stdafx.h"
#include "CpuTypes.h"
#include "PpuTypes.h"
2019-02-15 21:33:13 -05:00
class Console;
class Cpu;
class Ppu;
2019-02-15 21:33:13 -05:00
class BaseCartridge;
class MemoryManager;
enum class MemoryOperationType;
class TraceLogger;
2019-02-15 21:33:13 -05:00
class MemoryDumper;
//class Disassembler;
struct DebugState
{
CpuState Cpu;
PpuState Ppu;
//ApuState apuState;
};
class Debugger
{
private:
shared_ptr<Console> _console;
shared_ptr<Cpu> _cpu;
shared_ptr<Ppu> _ppu;
shared_ptr<MemoryManager> _memoryManager;
2019-02-15 21:33:13 -05:00
shared_ptr<BaseCartridge> _baseCartridge;
shared_ptr<TraceLogger> _traceLogger;
2019-02-15 21:33:13 -05:00
shared_ptr<MemoryDumper> _memoryDumper;
//unique_ptr<Disassembler> _disassembler;
atomic<int32_t> _cpuStepCount;
public:
2019-02-15 21:33:13 -05:00
Debugger(shared_ptr<Console> console);
~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();
2019-02-15 21:33:13 -05:00
shared_ptr<MemoryDumper> GetMemoryDumper();
};