gpgx: swap A and D regs in gpgx_getregs()

actually limit pc to 24 bits, not just disasm address
This commit is contained in:
feos 2024-10-07 19:34:48 +03:00
parent 737e9ca73b
commit 809d43dd44
3 changed files with 19 additions and 19 deletions

Binary file not shown.

View File

@ -15,13 +15,13 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
IDisassemblable disassembler)
: CallbackBasedTraceBuffer(debuggableCore, memoryDomains, disassembler, TRACE_HEADER)
{
private const string TRACE_HEADER = "M68K: PC, machine code, mnemonic, operands, registers (D0-D7, A0-A7, SR, USP), flags (XNZVC)";
private const string TRACE_HEADER = "M68K: PC, machine code, mnemonic, operands, registers (A0-A7, D0-D7, SR, USP), flags (XNZVC)";
protected override void TraceFromCallback(uint addr, uint value, uint flags)
{
var regs = DebuggableCore.GetCpuFlagsAndRegisters();
var pc = (uint)regs["M68K PC"].Value;
var disasm = Disassembler.Disassemble(MemoryDomains.SystemBus, pc & 0xFFFFFF, out _);
var pc = (uint)regs["M68K PC"].Value & 0xFFFFFF;
var disasm = Disassembler.Disassemble(MemoryDomains.SystemBus, pc, out _);
var sb = new StringBuilder();

View File

@ -1100,14 +1100,6 @@ GPGX_EX int gpgx_getregs(gpregister_t *regs)
if ((system_hw & SYSTEM_PBC) == SYSTEM_MD)
{
#define MAKEREG(x) regs->name = "M68K " #x; regs->value = m68k_get_reg(M68K_REG_##x); regs++; ret++;
MAKEREG(D0);
MAKEREG(D1);
MAKEREG(D2);
MAKEREG(D3);
MAKEREG(D4);
MAKEREG(D5);
MAKEREG(D6);
MAKEREG(D7);
MAKEREG(A0);
MAKEREG(A1);
MAKEREG(A2);
@ -1116,6 +1108,14 @@ GPGX_EX int gpgx_getregs(gpregister_t *regs)
MAKEREG(A5);
MAKEREG(A6);
MAKEREG(A7);
MAKEREG(D0);
MAKEREG(D1);
MAKEREG(D2);
MAKEREG(D3);
MAKEREG(D4);
MAKEREG(D5);
MAKEREG(D6);
MAKEREG(D7);
MAKEREG(PC);
MAKEREG(SR);
MAKEREG(SP);
@ -1146,14 +1146,6 @@ GPGX_EX int gpgx_getregs(gpregister_t *regs)
if (system_hw == SYSTEM_MCD)
{
#define MAKEREG(x) regs->name = "S68K " #x; regs->value = s68k_get_reg(M68K_REG_##x); regs++; ret++;
MAKEREG(D0);
MAKEREG(D1);
MAKEREG(D2);
MAKEREG(D3);
MAKEREG(D4);
MAKEREG(D5);
MAKEREG(D6);
MAKEREG(D7);
MAKEREG(A0);
MAKEREG(A1);
MAKEREG(A2);
@ -1162,6 +1154,14 @@ GPGX_EX int gpgx_getregs(gpregister_t *regs)
MAKEREG(A5);
MAKEREG(A6);
MAKEREG(A7);
MAKEREG(D0);
MAKEREG(D1);
MAKEREG(D2);
MAKEREG(D3);
MAKEREG(D4);
MAKEREG(D5);
MAKEREG(D6);
MAKEREG(D7);
MAKEREG(PC);
MAKEREG(SR);
MAKEREG(SP);