aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authornotaz2011-12-05 02:38:46 +0200
committernotaz2011-12-05 23:31:01 +0200
commit95df1a043efd3a11b3cdf90d647fc1b3a96a2c88 (patch)
tree9afbd307c9df9244bb74b6b39bd8e339b2359696 /libpcsxcore
parent53c361f0abe1fca37806bec2c20afc661c998df6 (diff)
downloadpcsx_rearmed-95df1a043efd3a11b3cdf90d647fc1b3a96a2c88.tar.gz
pcsx_rearmed-95df1a043efd3a11b3cdf90d647fc1b3a96a2c88.tar.bz2
pcsx_rearmed-95df1a043efd3a11b3cdf90d647fc1b3a96a2c88.zip
psxcounters: avoid excessive recalculations
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/psxcounters.c21
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