32x: improved lockstep mode, allows compatibility over 50%
[picodrive.git] / pico / debug.c
index 5bbf8c4..ac8f120 100644 (file)
@@ -71,6 +71,8 @@ char *PDebug32x(void)
     sprintf(dstrp, "%02x: %04x %04x %04x %04x %04x %04x %04x %04x\n",
       i*2, r[i+0], r[i+1], r[i+2], r[i+3], r[i+4], r[i+5], r[i+6], r[i+7]); MVP;
   }
+  r = Pico32x.sh2_regs;
+  sprintf(dstrp, "SH: %04x %04x %04x      IRQs: %02x\n", r[0], r[1], r[2], Pico32x.sh2irqs); MVP;
 
   i = 0;
   r = Pico32x.vdp_regs;
@@ -79,11 +81,14 @@ char *PDebug32x(void)
     i*2, r[i+0], r[i+1], r[i+2], r[i+3], r[i+4], r[i+5], r[i+6], r[i+7]); MVP;
 
   sprintf(dstrp, "                   mSH2              sSH2\n"); MVP;
-  sprintf(dstrp, "PC:            %08x          %08x\n", msh2_pc(), ssh2_pc()); MVP;
+  sprintf(dstrp, "PC,SR %08x,     %03x %08x,     %03x\n", sh2_pc(0), sh2_sr(0), sh2_pc(1), sh2_sr(1)); MVP;
   for (i = 0; i < 16/2; i++) {
     sprintf(dstrp, "R%d,%2d %08x,%08x %08x,%08x\n", i, i + 8,
-      msh2_reg(i), msh2_reg(i+8), ssh2_reg(i), ssh2_reg(i+8)); MVP;
+      sh2_reg(0,i), sh2_reg(0,i+8), sh2_reg(1,i), sh2_reg(1,i+8)); MVP;
   }
+  sprintf(dstrp, "gb,vb %08x,%08x %08x,%08x\n", sh2_gbr(0), sh2_vbr(0), sh2_gbr(1), sh2_vbr(1)); MVP;
+  sprintf(dstrp, "IRQs/mask:        %02x/%02x             %02x/%02x\n",
+    Pico32x.sh2irqi[0], Pico32x.sh2irq_mask[0], Pico32x.sh2irqi[1], Pico32x.sh2irq_mask[1]); MVP;
 
   return dstr;
 }
@@ -334,6 +339,8 @@ void PDebugDumpMem(void)
     dump_ram(Pico32xMem->dram[0], "dumps/dram0.bin");
     dump_ram(Pico32xMem->dram[1], "dumps/dram1.bin");
     dump_ram(Pico32xMem->pal, "dumps/pal32x.bin");
+    dump_ram(Pico32xMem->data_array[0], "dumps/data_array0.bin");
+    dump_ram(Pico32xMem->data_array[1], "dumps/data_array1.bin");
   }
 }