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
\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