mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
32x, small improvement for poll detection
This commit is contained in:
parent
2eb213314a
commit
6432fb18ba
1 changed files with 3 additions and 2 deletions
|
@ -114,12 +114,13 @@ void p32x_m68k_poll_event(u32 flags)
|
|||
void NOINLINE p32x_sh2_poll_detect(u32 a, SH2 *sh2, u32 flags, int maxcnt)
|
||||
{
|
||||
u32 cycles_done = sh2_cycles_done_t(sh2);
|
||||
u32 cycles_diff = cycles_done - sh2->poll_cycles;
|
||||
|
||||
// reading 2 consecutive 16bit values is probably a 32bit access. detect this
|
||||
// by checking address (max 2 bytes away) and cycles (max 2 cycles later).
|
||||
// no polling if more than 20 cycles have passed since last detect call.
|
||||
if (a - sh2->poll_addr <= 2 && CYCLES_GE(sh2->poll_cycles+20, cycles_done)) {
|
||||
if (CYCLES_GT(cycles_done,sh2->poll_cycles+2) && ++sh2->poll_cnt >= maxcnt) {
|
||||
if (a - sh2->poll_addr <= 2 && CYCLES_GE(20, cycles_diff)) {
|
||||
if (CYCLES_GT(cycles_diff, 2) && ++sh2->poll_cnt >= maxcnt) {
|
||||
if (!(sh2->state & flags))
|
||||
elprintf_sh2(sh2, EL_32X, "state: %02x->%02x",
|
||||
sh2->state, sh2->state | flags);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue