Skip to content

Commit

Permalink
fix #4069
Browse files Browse the repository at this point in the history
gpgx: swap A and D regs in gpgx_getregs()

actually limit pc to 24 bits, not just disasm address
  • Loading branch information
vadosnaprimer committed Oct 7, 2024
1 parent 737e9ca commit 809d43d
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 19 deletions.
Binary file modified Assets/dll/gpgx.wbx.zst
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ public class GPGXTraceBuffer(
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();

Expand Down
32 changes: 16 additions & 16 deletions waterbox/gpgx/cinterface/cinterface.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand Down

0 comments on commit 809d43d

Please sign in to comment.