mcd, regression fix
authorkub <derkub@gmail.com>
Thu, 11 May 2023 22:17:37 +0000 (22:17 +0000)
committerkub <derkub@gmail.com>
Thu, 11 May 2023 22:20:02 +0000 (22:20 +0000)
yikes...

pico/cd/mcd.c
pico/cd/memory.c

index 2283887..13ada8b 100644 (file)
@@ -322,8 +322,10 @@ void pcd_run_cpus_normal(int m68k_cycles)
     if (Pico_mcd->m.state_flags & (PCD_ST_M68K_POLL|PCD_ST_M68K_SLEEP)) {
       int s68k_left;
       // main CPU is polling, (wake and) run sub only
-      Pico_mcd->m.state_flags &= ~(PCD_ST_S68K_POLL|PCD_ST_S68K_SLEEP);
-      Pico_mcd->m.s68k_poll_cnt = 0;
+      if (Pico_mcd->m.state_flags & (PCD_ST_S68K_POLL|PCD_ST_S68K_SLEEP)) {
+        Pico_mcd->m.state_flags &= ~(PCD_ST_S68K_POLL|PCD_ST_S68K_SLEEP);
+        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;
index ae76451..2fbf881 100644 (file)
@@ -249,7 +249,7 @@ write_comm:
     // Delay slave a bit to make sure master can check before slave changes.\r
     SekCycleCntS68k += 24; // Silpheed\r
   }\r
-  if ((Pico_mcd->m.s68k_poll_a ^ a) & ~1) {\r
+  if (!((Pico_mcd->m.s68k_poll_a ^ a) & ~1)) {\r
     if (Pico_mcd->m.state_flags & PCD_ST_S68K_POLL)\r
       elprintf(EL_CDPOLL, "s68k poll release, a=%02x", a);\r
     Pico_mcd->m.state_flags &= ~PCD_ST_S68K_POLL;\r
@@ -498,7 +498,7 @@ write_comm:
     return;\r
 \r
   Pico_mcd->s68k_regs[a] = (u8) d;\r
-  if ((Pico_mcd->m.m68k_poll_a ^ a) & ~1) {\r
+  if (!((Pico_mcd->m.m68k_poll_a ^ a) & ~1)) {\r
     SekEndRunS68k(8);\r
     Pico_mcd->m.state_flags &= ~PCD_ST_M68K_POLL;\r
     Pico_mcd->m.m68k_poll_cnt = 0;\r
@@ -565,7 +565,7 @@ write_comm:
 \r
   r[a] = d >> 8;\r
   r[a + 1] = d;\r
-  if ((Pico_mcd->m.m68k_poll_a ^ a) & ~1) {\r
+  if (!((Pico_mcd->m.m68k_poll_a ^ a) & ~1)) {\r
     SekEndRunS68k(8);\r
     Pico_mcd->m.state_flags &= ~PCD_ST_M68K_POLL;\r
     Pico_mcd->m.m68k_poll_cnt = 0;\r