2019-02-27 19:49:26 -05:00
|
|
|
#pragma once
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "DebugTypes.h"
|
|
|
|
|
2019-03-28 17:47:43 -04:00
|
|
|
class MemoryManager;
|
|
|
|
|
2019-02-27 19:49:26 -05:00
|
|
|
class CodeDataLogger
|
|
|
|
{
|
|
|
|
private:
|
2019-03-28 17:47:43 -04:00
|
|
|
MemoryManager *_memoryManager;
|
2019-02-27 19:49:26 -05:00
|
|
|
uint8_t *_cdlData = nullptr;
|
|
|
|
uint32_t _prgSize = 0;
|
|
|
|
uint32_t _codeSize = 0;
|
|
|
|
uint32_t _dataSize = 0;
|
|
|
|
|
|
|
|
void CalculateStats();
|
|
|
|
|
|
|
|
public:
|
2019-03-28 17:47:43 -04:00
|
|
|
CodeDataLogger(uint32_t prgSize, MemoryManager* memoryManager);
|
2019-02-27 19:49:26 -05:00
|
|
|
~CodeDataLogger();
|
|
|
|
|
|
|
|
void Reset();
|
|
|
|
|
|
|
|
bool LoadCdlFile(string cdlFilepath);
|
|
|
|
bool SaveCdlFile(string cdlFilepath);
|
|
|
|
|
|
|
|
void SetFlags(int32_t absoluteAddr, uint8_t flags);
|
|
|
|
|
|
|
|
CdlRatios GetRatios();
|
|
|
|
|
|
|
|
bool IsCode(uint32_t absoluteAddr);
|
|
|
|
bool IsJumpTarget(uint32_t absoluteAddr);
|
|
|
|
bool IsSubEntryPoint(uint32_t absoluteAddr);
|
|
|
|
bool IsData(uint32_t absoluteAddr);
|
|
|
|
uint8_t GetCpuFlags(uint32_t absoluteAddr);
|
|
|
|
|
|
|
|
void SetCdlData(uint8_t *cdlData, uint32_t length);
|
2019-03-28 17:47:43 -04:00
|
|
|
void GetCdlData(uint32_t offset, uint32_t length, SnesMemoryType memoryType, uint8_t *cdlData);
|
2020-02-08 22:30:54 -05:00
|
|
|
|
|
|
|
void MarkBytesAs(uint32_t start, uint32_t end, uint8_t flags);
|
2020-02-12 19:36:47 -05:00
|
|
|
void StripData(uint8_t* romBuffer, CdlStripOption flag);
|
2019-02-27 19:49:26 -05:00
|
|
|
};
|