mcd, fix 68k interpreter idle detector for sub cpu
authorkub <derkub@gmail.com>
Thu, 6 Jan 2022 21:19:40 +0000 (22:19 +0100)
committerkub <derkub@gmail.com>
Thu, 6 Jan 2022 21:37:29 +0000 (22:37 +0100)
pico/cd/memory.c
pico/sek.c

index 2957ca7..0a84f78 100644 (file)
@@ -245,7 +245,7 @@ write_comm:
   }\r
   if (Pico_mcd->m.s68k_poll_a == (a & ~1))\r
   {\r
-    if (Pico_mcd->m.s68k_poll_cnt > POLL_LIMIT) {\r
+    if (SekIsStoppedS68k()) {\r
       elprintf(EL_CDPOLL, "s68k poll release, a=%02x", a);\r
       SekSetStopS68k(0);\r
     }\r
index 9c54a03..b5649dc 100644 (file)
@@ -404,7 +404,10 @@ int SekRegisterIdlePatch(unsigned int pc, int oldop, int newop, void *ctx)
     (newop&0x200)?'n':'y', is_main68k?'m':'s', idledet_count);\r
 \r
   // XXX: probably shouldn't patch RAM too\r
-  v = m68k_read16_map[pc >> M68K_MEM_SHIFT];\r
+  if (is_main68k)\r
+    v = m68k_read16_map[pc >> M68K_MEM_SHIFT];\r
+  else\r
+    v = s68k_read16_map[pc >> M68K_MEM_SHIFT];\r
   if (~v & ~((uptr)-1LL >> 1)) // MSB clear?\r
     target = (u16 *)((v << 1) + pc);\r
   else {\r