z80 timing change
[picodrive.git] / Pico / Pico.c
index d0845e1..04a0b97 100644 (file)
@@ -430,11 +430,18 @@ static int PicoFrameHints(void)
       getSamples(y);\r
 \r
     // Run scanline:\r
-    if(Pico.m.dma_bytes) SekCycleCnt+=CheckDMA();\r
+    if (Pico.m.dma_bytes) SekCycleCnt+=CheckDMA();\r
     SekRun(cycles_68k);\r
-    if((PicoOpt&4) && Pico.m.z80Run) {\r
-      Pico.m.z80Run|=2;\r
-      z80CycleAim+=cycles_z80;\r
+    if ((PicoOpt&4) && Pico.m.z80Run) {\r
+      if (Pico.m.z80Run & 2) z80CycleAim+=cycles_z80;\r
+      else {\r
+        int cnt = SekCyclesDone() - z80startCycle;\r
+        cnt = (cnt>>1)-(cnt>>5);\r
+        //if (cnt > cycles_z80) printf("FIXME: z80 cycles: %i\n", cnt);\r
+        if (cnt > cycles_z80) cnt = cycles_z80;\r
+        Pico.m.z80Run |= 2;\r
+        z80CycleAim+=cnt;\r
+      }\r
       total_z80+=z80_run(z80CycleAim-total_z80);\r
     }\r
   }\r