X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2F32x%2Fmemory.c;h=722698e7bcdf648589972c1f9335e3c33b6ed818;hb=ecc8036ee27ec57454c3fe736a71dd9c0cbcf3de;hp=fd902dd210bce5b37014be89722ff0f85b6c3631;hpb=e71fae1f13fa9cb16b435c18edb5e1505b18e592;p=picodrive.git diff --git a/pico/32x/memory.c b/pico/32x/memory.c index fd902dd..722698e 100644 --- a/pico/32x/memory.c +++ b/pico/32x/memory.c @@ -65,7 +65,7 @@ static int m68k_poll_detect(u32 a, u32 cycles, u32 flags) int ret = 0; if (a - 2 <= m68k_poll.addr && m68k_poll.addr <= a + 2 - && cycles - m68k_poll.cycles <= 64) + && cycles - m68k_poll.cycles <= 64 && !SekNotPolling) { if (m68k_poll.cnt++ > POLL_THRESHOLD) { if (!(Pico32x.emu_flags & flags)) { @@ -79,6 +79,7 @@ static int m68k_poll_detect(u32 a, u32 cycles, u32 flags) else { m68k_poll.cnt = 0; m68k_poll.addr = a; + SekNotPolling = 0; } m68k_poll.cycles = cycles; @@ -186,15 +187,9 @@ static u32 p32x_reg_read16(u32 a) return sh2_comm_faker(a); #else if ((a & 0x30) == 0x20) { - static u32 dr2 = 0; unsigned int cycles = SekCyclesDone(); int comreg = 1 << (a & 0x0f) / 2; - // evil X-Men proto polls in a dbra loop and expects it to expire.. - if (SekDar(2) != dr2) - m68k_poll.cnt = 0; - dr2 = SekDar(2); - if (cycles - msh2.m68krcycles_done > 244 || (Pico32x.comm_dirty_68k & comreg)) p32x_sync_sh2s(cycles); @@ -205,7 +200,6 @@ static u32 p32x_reg_read16(u32 a) SekSetStop(1); SekEndRun(16); } - dr2 = SekDar(2); goto out; } #endif