s32 psxRcntFreeze( void *f, s32 Mode )
{
u32 spuSyncCount = 0;
+ u32 count;
s32 i;
gzfreeze( &rcnts, sizeof(Rcnt) * CounterQuantity );
{
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();
}
load_register(H_CDLeft, cycles);\r
load_register(H_CDRight, cycles);\r
\r
+ if (spu.rvb->CurrAddr < spu.rvb->StartAddr)\r
+ spu.rvb->CurrAddr = spu.rvb->StartAddr;\r
// fix to prevent new interpolations from crashing\r
spu.interpolation = -1;\r
\r