From 38b4b98fc01eac7b09965e8838423c3462634fcc Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Sat, 24 Sep 2022 04:29:00 -0700 Subject: [PATCH] minor touchups to jag risc disassembler --- .../Consoles/Atari/jaguar/JaguarDisassembler.cs | 15 ++++++++++++--- .../Atari/jaguar/VirtualJaguar.ITraceable.cs | 4 ++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/BizHawk.Emulation.Cores/Consoles/Atari/jaguar/JaguarDisassembler.cs b/src/BizHawk.Emulation.Cores/Consoles/Atari/jaguar/JaguarDisassembler.cs index 22862680e1..c4f4ec2bd1 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Atari/jaguar/JaguarDisassembler.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Atari/jaguar/JaguarDisassembler.cs @@ -75,7 +75,7 @@ namespace BizHawk.Emulation.Cores.Atari.Jaguar }; } - return (opcode >> 10) switch + var disasm = (opcode >> 10) switch { 0x00 => $"add {argRR()}", 0x01 => $"addc {argRR()}", @@ -115,7 +115,7 @@ namespace BizHawk.Emulation.Cores.Atari.Jaguar 0x23 => $"moveq {argIR()}", 0x24 => $"moveta {argRR()}", 0x25 => $"movefa {argRR()}", - 0x26 => $"movei ${m.PeekUshort(addr + 2, true) | (m.PeekUshort(addr + 4, true) << 16):X04} {argR2()}", + 0x26 => $"movei ${m.PeekUshort(addr + 2, true) | (m.PeekUshort(addr + 4, true) << 16):X06}, {argR2()}", 0x27 => $"loadb {argDRR()}", 0x28 => $"loadw {argDRR()}", 0x29 => $"load {argDRR()}", @@ -130,7 +130,7 @@ namespace BizHawk.Emulation.Cores.Atari.Jaguar 0x32 => $"store {argRDRO(15)}", 0x33 => $"move pc, {argR2()}", 0x34 => $"jump {argCC()}(r{arg1:d02})", - 0x35 => $"jr {argCC()}${addr + 2 + ((sbyte)(arg1 << 3) >> 2):X02}", + 0x35 => $"jr {argCC()}${addr + 2 + ((sbyte)(arg1 << 3) >> 2):X06}", 0x36 => $"mmult {argRR()}", 0x37 => $"mtoi {argRR()}", 0x38 => $"normi {argRR()}", @@ -143,6 +143,15 @@ namespace BizHawk.Emulation.Cores.Atari.Jaguar 0x3F => gpu ? $"{(arg1 == 0 ? "pack" : "unpack")} {argR2()}" : $"addqmod {argCZIR()}", _ => throw new InvalidOperationException(), }; + + if (length == 6) + { + return $"{opcode:X04} {m.PeekUshort(addr + 2, true):X04} {m.PeekUshort(addr + 2, true):X04} {disasm}"; + } + else + { + return $"{opcode:X04} {disasm}"; + } } public override string PCRegisterName => Cpu switch diff --git a/src/BizHawk.Emulation.Cores/Consoles/Atari/jaguar/VirtualJaguar.ITraceable.cs b/src/BizHawk.Emulation.Cores/Consoles/Atari/jaguar/VirtualJaguar.ITraceable.cs index 449275d55f..9ad6541208 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Atari/jaguar/VirtualJaguar.ITraceable.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Atari/jaguar/VirtualJaguar.ITraceable.cs @@ -35,7 +35,7 @@ namespace BizHawk.Emulation.Cores.Atari.Jaguar (sr & 1) > 0 ? "C" : "c"); regInfo += " (M68K)"; - Tracer.Put(new(disassembly: $"{pc:X6}: {disasm}".PadRight(50), registerInfo: regInfo)); + Tracer.Put(new(disassembly: $"{pc:X6}: {disasm}".PadRight(30), registerInfo: regInfo)); } private unsafe void MakeGPUTrace(uint pc, IntPtr r) @@ -50,7 +50,7 @@ namespace BizHawk.Emulation.Cores.Atari.Jaguar } regInfo += "(GPU)"; - Tracer.Put(new(disassembly: $"{pc:X6}: {disasm}".PadRight(50), registerInfo: regInfo)); + Tracer.Put(new(disassembly: $"{pc:X6}: {disasm}".PadRight(30), registerInfo: regInfo)); } private unsafe void MakeDSPTrace(uint pc, IntPtr r)