X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fpico.c;h=0404367c327c2c960a15b8e12d68224284efc3d3;hb=3162a7104cbb9c1046a3d780dfc74bbc684bdc5b;hp=f0c54d17c1838829e012aed0e4fd3e901d8abc18;hpb=ebd70cb5d9b32eb6548f92e03639db5c0683100f;p=picodrive.git diff --git a/pico/pico.c b/pico/pico.c index f0c54d1..0404367 100644 --- a/pico/pico.c +++ b/pico/pico.c @@ -23,6 +23,8 @@ int PicoAutoRgnOrder; struct PicoSRAM SRam; int emustatus; // rapid_ym2612, multi_ym_updates +struct PicoTiming timing; + void (*PicoWriteSound)(int len) = NULL; // called at the best time to send sound buffer (PsndOut) to hardware void (*PicoResetHook)(void) = NULL; void (*PicoLineHook)(void) = NULL; @@ -278,31 +280,24 @@ PICO_INTERNAL int CheckDMA(void) #include "pico_cmn.c" -unsigned int last_z80_sync; /* in 68k cycles */ -int z80_cycle_cnt; -int z80_cycle_aim; -int z80_scanline; -int z80_scanline_cycles; /* cycles done until z80_scanline */ - /* sync z80 to 68k */ PICO_INTERNAL void PicoSyncZ80(unsigned int m68k_cycles_done) { int m68k_cnt; int cnt; - m68k_cnt = m68k_cycles_done - last_z80_sync; - z80_cycle_aim += cycles_68k_to_z80(m68k_cnt); - cnt = z80_cycle_aim - z80_cycle_cnt; - last_z80_sync = m68k_cycles_done; + m68k_cnt = m68k_cycles_done - timing.m68c_frame_start; + timing.z80c_aim = cycles_68k_to_z80(m68k_cnt); + cnt = timing.z80c_aim - timing.z80c_cnt; pprof_start(z80); elprintf(EL_BUSREQ, "z80 sync %i (%u|%u -> %u|%u)", cnt, - z80_cycle_cnt, z80_cycle_cnt / 228, - z80_cycle_aim, z80_cycle_aim / 228); + timing.z80c_cnt, timing.z80c_cnt * 15 / 7 / 488, + timing.z80c_aim, timing.z80c_aim * 15 / 7 / 488); if (cnt > 0) - z80_cycle_cnt += z80_run(cnt); + timing.z80c_cnt += z80_run(cnt); pprof_end(z80); }