z80 timing change
[picodrive.git] / Pico / cd / Pico.c
index 00be7b6..0759acb 100644 (file)
@@ -331,8 +331,15 @@ static int PicoFrameHintsMCD(void)
     }
 
     if ((PicoOpt&4) && Pico.m.z80Run) {
-      Pico.m.z80Run|=2;
-      z80CycleAim+=cycles_z80;
+      if (Pico.m.z80Run & 2) z80CycleAim+=cycles_z80;
+      else {
+        int cnt = SekCyclesDone() - z80startCycle;
+        cnt = (cnt>>1)-(cnt>>5);
+        //if (cnt > cycles_z80) printf("FIXME: z80 cycles: %i\n", cnt);
+        if (cnt > cycles_z80) cnt = cycles_z80;
+        Pico.m.z80Run |= 2;
+        z80CycleAim+=cnt;
+      }
       total_z80+=z80_run(z80CycleAim-total_z80);
     }