adjust z80 timing a bit
[picodrive.git] / pico / pico.c
index f0c54d1..0404367 100644 (file)
@@ -23,6 +23,8 @@ int PicoAutoRgnOrder;
 struct PicoSRAM SRam;\r
 int emustatus;         // rapid_ym2612, multi_ym_updates\r
 \r
+struct PicoTiming timing;\r
+\r
 void (*PicoWriteSound)(int len) = NULL; // called at the best time to send sound buffer (PsndOut) to hardware\r
 void (*PicoResetHook)(void) = NULL;\r
 void (*PicoLineHook)(void) = NULL;\r
@@ -278,31 +280,24 @@ PICO_INTERNAL int CheckDMA(void)
 \r
 #include "pico_cmn.c"\r
 \r
-unsigned int last_z80_sync; /* in 68k cycles */\r
-int z80_cycle_cnt;\r
-int z80_cycle_aim;\r
-int z80_scanline;\r
-int z80_scanline_cycles;  /* cycles done until z80_scanline */\r
-\r
 /* sync z80 to 68k */\r
 PICO_INTERNAL void PicoSyncZ80(unsigned int m68k_cycles_done)\r
 {\r
   int m68k_cnt;\r
   int cnt;\r
 \r
-  m68k_cnt = m68k_cycles_done - last_z80_sync;\r
-  z80_cycle_aim += cycles_68k_to_z80(m68k_cnt);\r
-  cnt = z80_cycle_aim - z80_cycle_cnt;\r
-  last_z80_sync = m68k_cycles_done;\r
+  m68k_cnt = m68k_cycles_done - timing.m68c_frame_start;\r
+  timing.z80c_aim = cycles_68k_to_z80(m68k_cnt);\r
+  cnt = timing.z80c_aim - timing.z80c_cnt;\r
 \r
   pprof_start(z80);\r
 \r
   elprintf(EL_BUSREQ, "z80 sync %i (%u|%u -> %u|%u)", cnt,\r
-    z80_cycle_cnt, z80_cycle_cnt / 228,\r
-    z80_cycle_aim, z80_cycle_aim / 228);\r
+    timing.z80c_cnt, timing.z80c_cnt * 15 / 7 / 488,\r
+    timing.z80c_aim, timing.z80c_aim * 15 / 7 / 488);\r
 \r
   if (cnt > 0)\r
-    z80_cycle_cnt += z80_run(cnt);\r
+    timing.z80c_cnt += z80_run(cnt);\r
 \r
   pprof_end(z80);\r
 }\r