finish mgba tracer
This commit is contained in:
parent
626efe8caf
commit
340fe48f3a
BizHawk.Emulation.Cores/Consoles/Nintendo/GBA
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System.Text;
|
||||
using BizHawk.Emulation.Common;
|
||||
|
||||
namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
||||
|
@ -58,7 +59,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
|||
|
||||
_tracer = new TraceBuffer()
|
||||
{
|
||||
Header = "ARM7: PC, mnemonic, operands, registers"
|
||||
Header = "ARM7: PC, machine code, mnemonic, operands, registers"
|
||||
};
|
||||
_tracecb = new LibmGBA.TraceCallback((msg) => _tracer.Put(_traceInfo(msg)));
|
||||
ser.Register(_tracer);
|
||||
|
@ -80,12 +81,24 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
|||
|
||||
private TraceInfo _traceInfo(string msg)
|
||||
{
|
||||
var split = msg.Split('|');
|
||||
var disasm = msg.Split('|')[1];
|
||||
var split = disasm.Split(':');
|
||||
var machineCode = split[0].PadLeft(8);
|
||||
var instruction = split[1].Trim();
|
||||
var regs = GetCpuFlagsAndRegisters();
|
||||
var wordSize = (regs["CPSR"].Value & 32) == 0 ? 4UL : 2UL;
|
||||
var pc = regs["R15"].Value - wordSize * 2;
|
||||
var sb = new StringBuilder();
|
||||
|
||||
for (var i = 0; i < RegisterNames.Length; i++)
|
||||
{
|
||||
sb.Append($" { RegisterNames[i] }:{ regs[RegisterNames[i]].Value:X8}");
|
||||
}
|
||||
|
||||
return new TraceInfo
|
||||
{
|
||||
Disassembly = split[1].Trim().PadRight(40),
|
||||
RegisterInfo = split[0]
|
||||
Disassembly = $"{pc:X8}: { machineCode } { instruction }".PadRight(50),
|
||||
RegisterInfo = sb.ToString()
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue