notaz.gp2x.de
/
pcsx_rearmed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
psxcounters: handle overflow = target case
[pcsx_rearmed.git]
/
libpcsxcore
/
psxcounters.c
diff --git
a/libpcsxcore/psxcounters.c
b/libpcsxcore/psxcounters.c
index
7317c87
..
2ea7c63
100644
(file)
--- a/
libpcsxcore/psxcounters.c
+++ b/
libpcsxcore/psxcounters.c
@@
-190,6
+190,8
@@
void psxRcntReset( u32 index )
{
u32 count;
{
u32 count;
+ rcnts[index].mode |= RcUnknown10;
+
if( rcnts[index].counterState == CountToTarget )
{
if( rcnts[index].mode & RcCountToTarget )
if( rcnts[index].counterState == CountToTarget )
{
if( rcnts[index].mode & RcCountToTarget )
@@
-218,8
+220,14
@@
void psxRcntReset( u32 index )
}
rcnts[index].mode |= RcCountEqTarget;
}
rcnts[index].mode |= RcCountEqTarget;
+
+ psxRcntSet();
+
+ if( count < 0xffff ) // special case, overflow too?
+ return;
}
}
- else if( rcnts[index].counterState == CountToOverflow )
+
+ if( rcnts[index].counterState == CountToOverflow )
{
count = psxRegs.cycle;
count -= rcnts[index].cycleStart;
{
count = psxRegs.cycle;
count -= rcnts[index].cycleStart;
@@
-242,8
+250,6
@@
void psxRcntReset( u32 index )
rcnts[index].mode |= RcOverflow;
}
rcnts[index].mode |= RcOverflow;
}
- rcnts[index].mode |= RcUnknown10;
-
psxRcntSet();
}
psxRcntSet();
}