if (Pico_mcd->m.m68k_poll_cnt >= 16) {
int s68k_left;
// main CPU is polling, (wake and) run sub only
- if (SekIsStoppedS68k())
+ if (SekIsStoppedS68k()) {
SekSetStopS68k(0);
+ Pico_mcd->m.s68k_poll_cnt = 0;
+ }
s68k_left = pcd_sync_s68k(Pico.t.m68c_aim, 1);
Pico.t.m68c_cnt = Pico.t.m68c_aim;
return;\r
}\r
Pico_mcd->m.m68k_poll_cnt++;\r
- if(Pico_mcd->m.m68k_poll_cnt == POLL_LIMIT)\r
+ if(Pico_mcd->m.m68k_poll_cnt >= POLL_LIMIT)\r
SekEndRun(0);\r
}\r
\r
return;\r
\r
write_comm:\r
- if (d == Pico_mcd->s68k_regs[a])\r
+ if (Pico_mcd->s68k_regs[a] == (u8)d)\r
return;\r
\r
pcd_sync_s68k(SekCyclesDone(), 0);\r
return;\r
\r
write_comm:\r
+ if (Pico_mcd->s68k_regs[a] == (u8)d)\r
+ return;\r
+\r
Pico_mcd->s68k_regs[a] = (u8) d;\r
if (Pico_mcd->m.m68k_poll_cnt)\r
SekEndRunS68k(0);\r
return;\r
\r
write_comm:\r
+ if (r[a] == (u8)(d >> 8) && r[a + 1] == (u8)d)\r
+ return;\r
+\r
r[a] = d >> 8;\r
r[a + 1] = d;\r
if (Pico_mcd->m.m68k_poll_cnt)\r