X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fpsxcounters.c;h=d0d45ec5c2d77b607880ea9f287406acbcaea263;hb=e7606d0edc6178f862d94164617e8c5ea4bbbe3b;hp=ab8beeea499a6f5800c3379c05fe1b33a80d463a;hpb=b34d6a805a50ee4a897b0a53bbc0b89e3eb7f72e;p=pcsx_rearmed.git diff --git a/libpcsxcore/psxcounters.c b/libpcsxcore/psxcounters.c index ab8beeea..d0d45ec5 100644 --- a/libpcsxcore/psxcounters.c +++ b/libpcsxcore/psxcounters.c @@ -22,6 +22,7 @@ */ #include "psxcounters.h" +#include "psxevents.h" #include "gpu.h" //#include "debug.h" #define DebugVSync() @@ -232,8 +233,7 @@ void psxRcntSet() } } - psxRegs.interrupt |= (1 << PSXINT_RCNT); - new_dyna_set_event(PSXINT_RCNT, psxNextCounter); + set_event(PSXINT_RCNT, psxNextCounter); } /******************************************************************************/ @@ -561,6 +561,7 @@ void psxRcntInit() s32 psxRcntFreeze( void *f, s32 Mode ) { u32 spuSyncCount = 0; + u32 count; s32 i; gzfreeze( &rcnts, sizeof(Rcnt) * CounterQuantity ); @@ -573,7 +574,12 @@ s32 psxRcntFreeze( void *f, s32 Mode ) { rcnts[3].rate = 1; for( i = 0; i < CounterQuantity - 1; ++i ) + { _psxRcntWmode( i, rcnts[i].mode ); + count = (psxRegs.cycle - rcnts[i].cycleStart) / rcnts[i].rate; + if (count > 0x1000) + _psxRcntWcount( i, count & 0xffff ); + } scheduleRcntBase(); psxRcntSet(); }