Reduce allocation spam in Jaguar disassembly functions
This commit is contained in:
parent
c9e30060d4
commit
542cf2433a
|
@ -6,7 +6,7 @@ using BizHawk.Emulation.Cores.Components.M68000;
|
|||
|
||||
namespace BizHawk.Emulation.Cores.Atari.Jaguar
|
||||
{
|
||||
public partial class JaguarDisassembler : VerifiedDisassembler
|
||||
public class JaguarDisassembler : VerifiedDisassembler
|
||||
{
|
||||
private readonly MC68000 _m68kDisassembler = new();
|
||||
|
||||
|
@ -17,7 +17,7 @@ namespace BizHawk.Emulation.Cores.Atari.Jaguar
|
|||
_m68kDisassembler.ReadLong = a => (int)m.PeekUint(a, true);
|
||||
var info = _m68kDisassembler.Disassemble((int)(addr & 0xFFFFFF));
|
||||
length = info.Length;
|
||||
return $"{info.RawBytes.Substring(0, 4):X4} {info.Mnemonic,-7} {info.Args}";
|
||||
return $"{info.RawBytes.Substring(0, 4)} {info.Mnemonic,-7} {info.Args}";
|
||||
}
|
||||
|
||||
// TOM and JERRY RISC processors are mostly similar, only 6 instructions differ
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
using System;
|
||||
|
||||
using System.Text;
|
||||
using BizHawk.Emulation.Common;
|
||||
|
||||
namespace BizHawk.Emulation.Cores.Atari.Jaguar
|
||||
|
@ -13,59 +13,59 @@ namespace BizHawk.Emulation.Cores.Atari.Jaguar
|
|||
|
||||
private unsafe void MakeCPUTrace(IntPtr r)
|
||||
{
|
||||
uint* regs = (uint*)r;
|
||||
var pc = regs[16] & 0xFFFFFF;
|
||||
var regs = (uint*)r;
|
||||
var pc = regs![16] & 0xFFFFFF;
|
||||
var disasm = _disassembler.DisassembleM68K(this.AsMemoryDomains().SystemBus, pc, out _);
|
||||
var regInfo = string.Empty;
|
||||
for (int i = 0; i < 8; i++)
|
||||
var regInfo = new StringBuilder(216);
|
||||
for (var i = 0; i < 8; i++)
|
||||
{
|
||||
regInfo += $"D{i}:{regs[i]:X8} ";
|
||||
regInfo.Append($"D{i}:{regs[i]:X8} ");
|
||||
}
|
||||
for (int i = 0; i < 8; i++)
|
||||
for (var i = 0; i < 8; i++)
|
||||
{
|
||||
regInfo += $"A{i}:{regs[i + 8]:X8} ";
|
||||
regInfo.Append($"A{i}:{regs[i + 8]:X8} ");
|
||||
}
|
||||
regInfo += $"SR:{regs[17]:X8} ";
|
||||
regInfo.Append($"SR:{regs[17]:X8} ");
|
||||
var sr = regs[17];
|
||||
regInfo += string.Concat(
|
||||
regInfo.Append(string.Concat(
|
||||
(sr & 16) > 0 ? "X" : "x",
|
||||
(sr & 8) > 0 ? "N" : "n",
|
||||
(sr & 4) > 0 ? "Z" : "z",
|
||||
(sr & 2) > 0 ? "V" : "v",
|
||||
(sr & 1) > 0 ? "C" : "c");
|
||||
regInfo += " (M68K)";
|
||||
(sr & 1) > 0 ? "C" : "c"));
|
||||
regInfo.Append(" (M68K)");
|
||||
|
||||
Tracer.Put(new(disassembly: $"{pc:X6}: {disasm}".PadRight(50), registerInfo: regInfo));
|
||||
Tracer.Put(new(disassembly: $"{pc:X6}: {disasm}".PadRight(50), registerInfo: regInfo.ToString()));
|
||||
}
|
||||
|
||||
private unsafe void MakeGPUTrace(uint pc, IntPtr r)
|
||||
{
|
||||
uint* regs = (uint*)r;
|
||||
var regs = (uint*)r;
|
||||
pc &= 0xFFFFFF;
|
||||
var disasm = _disassembler.DisassembleRISC(true, this.AsMemoryDomains().SystemBus, pc, out _);
|
||||
var regInfo = string.Empty;
|
||||
for (int i = 0; i < 32; i++)
|
||||
var regInfo = new StringBuilder(411);
|
||||
for (var i = 0; i < 32; i++)
|
||||
{
|
||||
regInfo += $"r{i}:{regs[i]:X8} ";
|
||||
regInfo.Append($"r{i}:{regs![i]:X8} ");
|
||||
}
|
||||
regInfo += "(GPU)";
|
||||
regInfo.Append("(GPU)");
|
||||
|
||||
Tracer.Put(new(disassembly: $"{pc:X6}: {disasm}".PadRight(50), registerInfo: regInfo));
|
||||
Tracer.Put(new(disassembly: $"{pc:X6}: {disasm}".PadRight(50), registerInfo: regInfo.ToString()));
|
||||
}
|
||||
|
||||
private unsafe void MakeDSPTrace(uint pc, IntPtr r)
|
||||
{
|
||||
uint* regs = (uint*)r;
|
||||
var regs = (uint*)r;
|
||||
pc &= 0xFFFFFF;
|
||||
var disasm = _disassembler.DisassembleRISC(false, this.AsMemoryDomains().SystemBus, pc, out _);
|
||||
var regInfo = string.Empty;
|
||||
for (int i = 0; i < 32; i++)
|
||||
var regInfo = new StringBuilder(411);
|
||||
for (var i = 0; i < 32; i++)
|
||||
{
|
||||
regInfo += $"r{i}:{regs[i]:X8} ";
|
||||
regInfo.Append($"r{i}:{regs![i]:X8} ");
|
||||
}
|
||||
regInfo += "(DSP)";
|
||||
regInfo.Append("(DSP)");
|
||||
|
||||
Tracer.Put(new(disassembly: $"{pc:X6}: {disasm}".PadRight(50), registerInfo: regInfo));
|
||||
Tracer.Put(new(disassembly: $"{pc:X6}: {disasm}".PadRight(50), registerInfo: regInfo.ToString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue