finish mgba tracer

This commit is contained in:
feos 2020-02-03 22:23:18 +03:00
parent 626efe8caf
commit 340fe48f3a
1 changed files with 17 additions and 4 deletions
BizHawk.Emulation.Cores/Consoles/Nintendo/GBA

View File

@ -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()
};
}