handle dbra wait loops, update cyclone
[picodrive.git] / pico / cd / memory.c
index b15e9c8..47553f5 100644 (file)
@@ -75,9 +75,10 @@ static void remap_word_ram(u32 r3);
 void m68k_comm_check(u32 a)\r
 {\r
   pcd_sync_s68k(SekCyclesDone(), 0);\r
-  if (a != Pico_mcd->m.m68k_poll_a) {\r
+  if (SekNotPolling || a != Pico_mcd->m.m68k_poll_a) {\r
     Pico_mcd->m.m68k_poll_a = a;\r
     Pico_mcd->m.m68k_poll_cnt = 0;\r
+    SekNotPolling = 0;\r
     return;\r
   }\r
   Pico_mcd->m.m68k_poll_cnt++;\r
@@ -246,7 +247,7 @@ u32 s68k_poll_detect(u32 a, u32 d)
     return d;\r
 \r
   cycles = SekCyclesDoneS68k();\r
-  if (a == Pico_mcd->m.s68k_poll_a) {\r
+  if (!SekNotPolling && a == Pico_mcd->m.s68k_poll_a) {\r
     u32 clkdiff = cycles - Pico_mcd->m.s68k_poll_clk;\r
     if (clkdiff <= POLL_CYCLES) {\r
       cnt = Pico_mcd->m.s68k_poll_cnt + 1;\r
@@ -261,6 +262,7 @@ u32 s68k_poll_detect(u32 a, u32 d)
   Pico_mcd->m.s68k_poll_a = a;\r
   Pico_mcd->m.s68k_poll_clk = cycles;\r
   Pico_mcd->m.s68k_poll_cnt = cnt;\r
+  SekNotPollingS68k = 0;\r
 #endif\r
   return d;\r
 }\r