diff options
author | notaz | 2011-12-05 02:38:46 +0200 |
---|---|---|
committer | notaz | 2011-12-05 23:31:01 +0200 |
commit | 95df1a043efd3a11b3cdf90d647fc1b3a96a2c88 (patch) | |
tree | 9afbd307c9df9244bb74b6b39bd8e339b2359696 /libpcsxcore/psxcounters.c | |
parent | 53c361f0abe1fca37806bec2c20afc661c998df6 (diff) | |
download | pcsx_rearmed-95df1a043efd3a11b3cdf90d647fc1b3a96a2c88.tar.gz pcsx_rearmed-95df1a043efd3a11b3cdf90d647fc1b3a96a2c88.tar.bz2 pcsx_rearmed-95df1a043efd3a11b3cdf90d647fc1b3a96a2c88.zip |
psxcounters: avoid excessive recalculations
Diffstat (limited to 'libpcsxcore/psxcounters.c')
-rw-r--r-- | libpcsxcore/psxcounters.c | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/libpcsxcore/psxcounters.c b/libpcsxcore/psxcounters.c index 2ea7c63..cd99842 100644 --- a/libpcsxcore/psxcounters.c +++ b/libpcsxcore/psxcounters.c @@ -194,18 +194,12 @@ void psxRcntReset( u32 index ) if( rcnts[index].counterState == CountToTarget ) { + count = psxRegs.cycle; + count -= rcnts[index].cycleStart; + if( rcnts[index].rate > 1 ) + count /= rcnts[index].rate; if( rcnts[index].mode & RcCountToTarget ) - { - count = psxRegs.cycle; - count -= rcnts[index].cycleStart; - if (rcnts[index].rate > 1) - count /= rcnts[index].rate; count -= rcnts[index].target; - } - else - { - count = _psxRcntRcount( index ); - } _psxRcntWcount( index, count ); @@ -221,8 +215,6 @@ void psxRcntReset( u32 index ) rcnts[index].mode |= RcCountEqTarget; - psxRcntSet(); - if( count < 0xffff ) // special case, overflow too? return; } @@ -249,8 +241,6 @@ void psxRcntReset( u32 index ) rcnts[index].mode |= RcOverflow; } - - psxRcntSet(); } void psxRcntUpdate() @@ -338,9 +328,10 @@ void psxRcntUpdate() base_cycle += hsync_steps * 8791293; rcnts[3].cycle = base_cycle >> 12; base_cycle &= 0xfff; - psxRcntSet(); } + psxRcntSet(); + #ifndef NDEBUG DebugVSync(); #endif |