mirror of
https://github.com/SourMesen/Mesen2.git
synced 2025-04-02 10:21:44 -04:00
35 lines
No EOL
670 B
C++
35 lines
No EOL
670 B
C++
#pragma once
|
|
#include "Debugger/CodeDataLogger.h"
|
|
#include "Debugger/Disassembler.h"
|
|
|
|
namespace GbaCdlFlags
|
|
{
|
|
enum GbaCdlFlags : uint8_t
|
|
{
|
|
Thumb = 0x20,
|
|
};
|
|
}
|
|
|
|
class GbaCodeDataLogger final : public CodeDataLogger
|
|
{
|
|
private:
|
|
uint8_t GetCpuFlags(uint32_t absoluteAddr)
|
|
{
|
|
return _cdlData[absoluteAddr] & (GbaCdlFlags::Thumb);
|
|
}
|
|
|
|
public:
|
|
using CodeDataLogger::CodeDataLogger;
|
|
|
|
void RebuildPrgCache(Disassembler* dis) override
|
|
{
|
|
AddressInfo addrInfo;
|
|
addrInfo.Type = _memType;
|
|
for(uint32_t i = 0; i < _memSize; i++) {
|
|
if(IsCode(i)) {
|
|
addrInfo.Address = (int32_t)i;
|
|
i += dis->BuildCache(addrInfo, GetCpuFlags(i), CpuType::Gba) - 1;
|
|
}
|
|
}
|
|
}
|
|
}; |