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) IDisassemblable disassembler)
: CallbackBasedTraceBuffer(debuggableCore, memoryDomains, disassembler, TRACE_HEADER) : 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) protected override void TraceFromCallback(uint addr, uint value, uint flags)
{ {
var regs = DebuggableCore.GetCpuFlagsAndRegisters(); var regs = DebuggableCore.GetCpuFlagsAndRegisters();
var pc = (uint)regs["M68K PC"].Value; var pc = (uint)regs["M68K PC"].Value & 0xFFFFFF;
var disasm = Disassembler.Disassemble(MemoryDomains.SystemBus, pc & 0xFFFFFF, out _); var disasm = Disassembler.Disassemble(MemoryDomains.SystemBus, pc, out _);
var sb = new StringBuilder(); 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) if ((system_hw & SYSTEM_PBC) == SYSTEM_MD)
{ {
#define MAKEREG(x) regs->name = "M68K " #x; regs->value = m68k_get_reg(M68K_REG_##x); regs++; ret++; #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(A0);
MAKEREG(A1); MAKEREG(A1);
MAKEREG(A2); MAKEREG(A2);
@ -1116,6 +1108,14 @@ GPGX_EX int gpgx_getregs(gpregister_t *regs)
MAKEREG(A5); MAKEREG(A5);
MAKEREG(A6); MAKEREG(A6);
MAKEREG(A7); MAKEREG(A7);
MAKEREG(D0);
MAKEREG(D1);
MAKEREG(D2);
MAKEREG(D3);
MAKEREG(D4);
MAKEREG(D5);
MAKEREG(D6);
MAKEREG(D7);
MAKEREG(PC); MAKEREG(PC);
MAKEREG(SR); MAKEREG(SR);
MAKEREG(SP); MAKEREG(SP);
@ -1146,14 +1146,6 @@ GPGX_EX int gpgx_getregs(gpregister_t *regs)
if (system_hw == SYSTEM_MCD) if (system_hw == SYSTEM_MCD)
{ {
#define MAKEREG(x) regs->name = "S68K " #x; regs->value = s68k_get_reg(M68K_REG_##x); regs++; ret++; #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(A0);
MAKEREG(A1); MAKEREG(A1);
MAKEREG(A2); MAKEREG(A2);
@ -1162,6 +1154,14 @@ GPGX_EX int gpgx_getregs(gpregister_t *regs)
MAKEREG(A5); MAKEREG(A5);
MAKEREG(A6); MAKEREG(A6);
MAKEREG(A7); MAKEREG(A7);
MAKEREG(D0);
MAKEREG(D1);
MAKEREG(D2);
MAKEREG(D3);
MAKEREG(D4);
MAKEREG(D5);
MAKEREG(D6);
MAKEREG(D7);
MAKEREG(PC); MAKEREG(PC);
MAKEREG(SR); MAKEREG(SR);
MAKEREG(SP); MAKEREG(SP);