mirror of
https://github.com/SourMesen/Mesen2.git
synced 2025-04-02 10:21:44 -04:00
60 lines
No EOL
1.8 KiB
C++
60 lines
No EOL
1.8 KiB
C++
#include "pch.h"
|
|
#include "PCE/Debugger/PceTraceLogger.h"
|
|
#include "PCE/PceConsole.h"
|
|
#include "PCE/PceTypes.h"
|
|
#include "PCE/PceVdc.h"
|
|
#include "Debugger/DisassemblyInfo.h"
|
|
#include "Debugger/Debugger.h"
|
|
#include "Debugger/DebugTypes.h"
|
|
#include "Utilities/HexUtilities.h"
|
|
|
|
PceTraceLogger::PceTraceLogger(Debugger* debugger, IDebugger* cpuDebugger, PceVdc* vdc) : BaseTraceLogger(debugger, cpuDebugger, CpuType::Pce)
|
|
{
|
|
_vdc = vdc;
|
|
}
|
|
|
|
RowDataType PceTraceLogger::GetFormatTagType(string& tag)
|
|
{
|
|
if(tag == "A") {
|
|
return RowDataType::A;
|
|
} else if(tag == "X") {
|
|
return RowDataType::X;
|
|
} else if(tag == "Y") {
|
|
return RowDataType::Y;
|
|
} else if(tag == "P") {
|
|
return RowDataType::PS;
|
|
} else if(tag == "SP") {
|
|
return RowDataType::SP;
|
|
} else {
|
|
return RowDataType::Text;
|
|
}
|
|
}
|
|
|
|
void PceTraceLogger::GetTraceRow(string &output, PceCpuState &cpuState, TraceLogPpuState &ppuState, DisassemblyInfo &disassemblyInfo)
|
|
{
|
|
constexpr char activeStatusLetters[8] = { 'N', 'V', '-', 'T', 'D', 'I', 'Z', 'C' };
|
|
constexpr char inactiveStatusLetters[8] = { 'n', 'v', '-', 't', 'd', 'i', 'z', 'c' };
|
|
|
|
for(RowPart& rowPart : _rowParts) {
|
|
switch(rowPart.DataType) {
|
|
case RowDataType::A: WriteIntValue(output, cpuState.A, rowPart); break;
|
|
case RowDataType::X: WriteIntValue(output, cpuState.X, rowPart); break;
|
|
case RowDataType::Y: WriteIntValue(output, cpuState.Y, rowPart); break;
|
|
case RowDataType::SP: WriteIntValue(output, cpuState.SP, rowPart); break;
|
|
case RowDataType::PS: GetStatusFlag(activeStatusLetters, inactiveStatusLetters, output, cpuState.PS, rowPart); break;
|
|
default: ProcessSharedTag(rowPart, output, cpuState, ppuState, disassemblyInfo); break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void PceTraceLogger::LogPpuState()
|
|
{
|
|
_ppuState[_currentPos] = {};
|
|
|
|
_ppuState[_currentPos] = {
|
|
_vdc->GetHClock(),
|
|
_vdc->GetHClock(),
|
|
_vdc->GetScanline(),
|
|
_vdc->GetFrameCount()
|
|
};
|
|
} |