Mesen2/Core/NES/Debugger/NesCodeDataLogger.h
2022-09-08 21:29:52 -04:00

58 lines
1.3 KiB
C++

#pragma once
#include "pch.h"
#include "Debugger/CodeDataLogger.h"
class NesCodeDataLogger : public CodeDataLogger
{
private:
CodeDataLogger* _chrRomCdl = nullptr;
protected:
void InternalLoadCdlFile(uint8_t* cdlData, uint32_t cdlSize) override
{
if(_chrRomCdl) {
_chrRomCdl->SetCdlData(cdlData + _memSize, cdlSize - _memSize);
}
}
void InternalSaveCdlFile(ofstream& cdlFile) override
{
if(_chrRomCdl) {
cdlFile.write((char*)_chrRomCdl->GetRawData(), _chrRomCdl->GetSize());
}
}
public:
NesCodeDataLogger(Debugger* debugger, MemoryType memType, uint32_t memSize, CpuType cpuType, uint32_t romCrc32, CodeDataLogger* chrRomCdl)
: CodeDataLogger(debugger, memType, memSize, cpuType, romCrc32)
{
_chrRomCdl = chrRomCdl;
}
void Reset() override
{
CodeDataLogger::Reset();
if(_chrRomCdl) {
_chrRomCdl->Reset();
}
}
CdlStatistics GetStatistics() override
{
CdlStatistics stats = CodeDataLogger::GetStatistics();
if(_chrRomCdl) {
CdlStatistics cdlStats = _chrRomCdl->GetStatistics();
stats.DrawnChrBytes = cdlStats.CodeBytes;
stats.TotalChrBytes = cdlStats.TotalBytes;
}
return stats;
}
void StripData(uint8_t* romBuffer, CdlStripOption flag) override
{
CodeDataLogger::StripData(romBuffer, flag);
if(_chrRomCdl) {
_chrRomCdl->StripData(romBuffer + _memSize, flag);
}
}
};