X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2F32x%2F32x.c;h=9bfbeface3993454d95223cd9f8772cf26d41440;hb=8fde2033ac268ee9fe198f5d1c9d0b964f2763ab;hp=c10e1486643bc908eec7268218898c5a96e4bbea;hpb=93f9619ed819dee07948416c98ca2f1c70a22666;p=picodrive.git diff --git a/pico/32x/32x.c b/pico/32x/32x.c index c10e148..9bfbefa 100644 --- a/pico/32x/32x.c +++ b/pico/32x/32x.c @@ -422,6 +422,9 @@ void p32x_sync_other_sh2(SH2 *sh2, unsigned int m68k_target) } } +#define STEP_LS 24 +#define STEP_N 440 + #define sync_sh2s_normal p32x_sync_sh2s //#define sync_sh2s_lockstep p32x_sync_sh2s @@ -451,6 +454,8 @@ void sync_sh2s_normal(unsigned int m68k_target) target = m68k_target; if (event_time_next && CYCLES_GT(target, event_time_next)) target = event_time_next; + if (CYCLES_GT(target, now + STEP_N)) + target = now + STEP_N; while (CYCLES_GT(target, now)) { @@ -502,9 +507,10 @@ void sync_sh2s_normal(unsigned int m68k_target) if (CYCLES_GT(m68k_target, ssh2.m68krcycles_done)) ssh2.m68krcycles_done = m68k_target; } -} -#define STEP_68K 24 + // everyone is in sync now + Pico32x.comm_dirty = 0; +} void sync_sh2s_lockstep(unsigned int m68k_target) { @@ -515,7 +521,7 @@ void sync_sh2s_lockstep(unsigned int m68k_target) mcycles = ssh2.m68krcycles_done; while (mcycles < m68k_target) { - mcycles += STEP_68K; + mcycles += STEP_LS; sync_sh2s_normal(mcycles); } }