From 14ebd3783898752c80396e110b4ab937e22c8cb3 Mon Sep 17 00:00:00 2001 From: kub Date: Thu, 6 Jan 2022 22:19:40 +0100 Subject: [PATCH] mcd, fix 68k interpreter idle detector for sub cpu --- pico/cd/memory.c | 2 +- pico/sek.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pico/cd/memory.c b/pico/cd/memory.c index 2957ca7c..0a84f782 100644 --- a/pico/cd/memory.c +++ b/pico/cd/memory.c @@ -245,7 +245,7 @@ write_comm: } if (Pico_mcd->m.s68k_poll_a == (a & ~1)) { - if (Pico_mcd->m.s68k_poll_cnt > POLL_LIMIT) { + if (SekIsStoppedS68k()) { elprintf(EL_CDPOLL, "s68k poll release, a=%02x", a); SekSetStopS68k(0); } diff --git a/pico/sek.c b/pico/sek.c index 9c54a03b..b5649dcf 100644 --- a/pico/sek.c +++ b/pico/sek.c @@ -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); // XXX: probably shouldn't patch RAM too - v = m68k_read16_map[pc >> M68K_MEM_SHIFT]; + if (is_main68k) + v = m68k_read16_map[pc >> M68K_MEM_SHIFT]; + else + v = s68k_read16_map[pc >> M68K_MEM_SHIFT]; if (~v & ~((uptr)-1LL >> 1)) // MSB clear? target = (u16 *)((v << 1) + pc); else { -- 2.39.2