drop legacy save support
[picodrive.git] / pico / memory.c
index 5d1d25f..436f545 100644 (file)
@@ -331,22 +331,21 @@ NOINLINE void io_ports_write(u32 a, u32 d)
   Pico.ioports[a] = d;\r
 }\r
 \r
-// lame..\r
 static int z80_cycles_from_68k(void)\r
 {\r
-  return z80_cycle_aim\r
-    + cycles_68k_to_z80(SekCyclesDone() - last_z80_sync);\r
+  int m68k_cnt = SekCyclesDone() - timing.m68c_frame_start;\r
+  return cycles_68k_to_z80(m68k_cnt);\r
 }\r
 \r
 void NOINLINE ctl_write_z80busreq(u32 d)\r
 {\r
   d&=1; d^=1;\r
-  elprintf(EL_BUSREQ, "set_zrun: %i->%i [%i] @%06x", Pico.m.z80Run, d, SekCyclesDone(), SekPc);\r
+  elprintf(EL_BUSREQ, "set_zrun: %i->%i [%u] @%06x", Pico.m.z80Run, d, SekCyclesDone(), SekPc);\r
   if (d ^ Pico.m.z80Run)\r
   {\r
     if (d)\r
     {\r
-      z80_cycle_cnt = z80_cycles_from_68k();\r
+      timing.z80c_cnt = z80_cycles_from_68k() + 2;\r
     }\r
     else\r
     {\r
@@ -363,7 +362,7 @@ void NOINLINE ctl_write_z80busreq(u32 d)
 void NOINLINE ctl_write_z80reset(u32 d)\r
 {\r
   d&=1; d^=1;\r
-  elprintf(EL_BUSREQ, "set_zreset: %i->%i [%i] @%06x", Pico.m.z80_reset, d, SekCyclesDone(), SekPc);\r
+  elprintf(EL_BUSREQ, "set_zreset: %i->%i [%u] @%06x", Pico.m.z80_reset, d, SekCyclesDone(), SekPc);\r
   if (d ^ Pico.m.z80_reset)\r
   {\r
     if (d)\r
@@ -378,7 +377,7 @@ void NOINLINE ctl_write_z80reset(u32 d)
     }\r
     else\r
     {\r
-      z80_cycle_cnt = z80_cycles_from_68k();\r
+      timing.z80c_cnt = z80_cycles_from_68k() + 2;\r
       z80_reset();\r
     }\r
     Pico.m.z80_reset = d;\r
@@ -593,7 +592,7 @@ u32 PicoRead8_io(u32 a)
 \r
     if ((a & 0xff01) == 0x1100) { // z80 busreq (verified)\r
       d |= (Pico.m.z80Run | Pico.m.z80_reset) & 1;\r
-      elprintf(EL_BUSREQ, "get_zrun: %02x [%i] @%06x", d, SekCyclesDone(), SekPc);\r
+      elprintf(EL_BUSREQ, "get_zrun: %02x [%u] @%06x", d, SekCyclesDone(), SekPc);\r
     }\r
     goto end;\r
   }\r
@@ -628,7 +627,7 @@ u32 PicoRead16_io(u32 a)
 \r
     if ((a & 0xff00) == 0x1100) { // z80 busreq\r
       d |= ((Pico.m.z80Run | Pico.m.z80_reset) & 1) << 8;\r
-      elprintf(EL_BUSREQ, "get_zrun: %04x [%i] @%06x", d, SekCyclesDone(), SekPc);\r
+      elprintf(EL_BUSREQ, "get_zrun: %04x [%u] @%06x", d, SekCyclesDone(), SekPc);\r
     }\r
     goto end;\r
   }\r
@@ -896,10 +895,11 @@ static void m68k_mem_setup(void)
 static int get_scanline(int is_from_z80)\r
 {\r
   if (is_from_z80) {\r
-    int cycles = z80_cyclesDone();\r
-    while (cycles - z80_scanline_cycles >= 228)\r
-      z80_scanline++, z80_scanline_cycles += 228;\r
-    return z80_scanline;\r
+    int mclk_z80 = z80_cyclesDone() * 15;\r
+    int mclk_line = timing.z80_scanline * 488 * 7;\r
+    while (mclk_z80 - mclk_line >= 488 * 7)\r
+      timing.z80_scanline++, mclk_line += 488 * 7;\r
+    return timing.z80_scanline;\r
   }\r
 \r
   return Pico.m.scanline;\r