Mesen2/Core/Debugger/MemoryDumper.h
2022-04-06 18:37:35 -04:00

50 lines
No EOL
1.7 KiB
C++

#pragma once
#include "stdafx.h"
#include <unordered_map>
#include "Debugger/DebugTypes.h"
#include "MemoryType.h"
class SnesMemoryManager;
class NesConsole;
class BaseCartridge;
class SnesPpu;
class Spc;
class Gameboy;
class PceConsole;
class Emulator;
class Debugger;
class Disassembler;
class MemoryDumper
{
private:
Emulator* _emu = nullptr;
SnesPpu* _ppu = nullptr;
Spc* _spc = nullptr;
Gameboy* _gameboy = nullptr;
SnesMemoryManager* _memoryManager = nullptr;
NesConsole* _nesConsole = nullptr;
PceConsole* _pceConsole = nullptr;
BaseCartridge* _cartridge = nullptr;
Debugger* _debugger = nullptr;
Disassembler* _disassembler = nullptr;
uint32_t _memorySize[(int)MemoryType::Register + 1] = {};
uint32_t InternalGetMemorySize(MemoryType type);
uint8_t InternalGetMemoryValue(MemoryType memoryType, uint32_t address, bool disableSideEffects = true);
public:
MemoryDumper(Debugger* debugger);
uint8_t* GetMemoryBuffer(MemoryType type);
uint32_t GetMemorySize(MemoryType type);
void GetMemoryState(MemoryType type, uint8_t *buffer);
uint8_t GetMemoryValue(MemoryType memoryType, uint32_t address, bool disableSideEffects = true);
void GetMemoryValues(MemoryType memoryType, uint32_t start, uint32_t end, uint8_t* output);
uint16_t GetMemoryValueWord(MemoryType memoryType, uint32_t address, bool disableSideEffects = true);
void SetMemoryValueWord(MemoryType memoryType, uint32_t address, uint16_t value, bool disableSideEffects = true);
void SetMemoryValue(MemoryType memoryType, uint32_t address, uint8_t value, bool disableSideEffects = true);
void SetMemoryValues(MemoryType memoryType, uint32_t address, uint8_t* data, uint32_t length);
void SetMemoryState(MemoryType type, uint8_t *buffer, uint32_t length);
};