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
6f82abd
..
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();
}
@@
-294,11
+300,13
@@
void psxRcntUpdate()
// VSync irq.
if( hSyncCount == VBlankStart[Config.PsxType] )
{
// VSync irq.
if( hSyncCount == VBlankStart[Config.PsxType] )
{
- //if( !(HW_GPU_STATUS & PSXGPU_ILACE) ) // hmh
+ if( !(HW_GPU_STATUS & PSXGPU_ILACE) )
HW_GPU_STATUS |= PSXGPU_LCF;
HW_GPU_STATUS |= PSXGPU_LCF;
- // For the best times. :D
- //setIrq( 0x01 );
+ setIrq( 0x01 );
+
+ EmuUpdate();
+ GPU_updateLace();
}
// Update lace. (with InuYasha fix)
}
// Update lace. (with InuYasha fix)
@@
-307,11
+315,6
@@
void psxRcntUpdate()
hSyncCount = 0;
frame_counter++;
hSyncCount = 0;
frame_counter++;
- setIrq( 0x01 );
-
- EmuUpdate();
- GPU_updateLace();
-
HW_GPU_STATUS &= ~PSXGPU_LCF;
if( HW_GPU_STATUS & PSXGPU_ILACE )
HW_GPU_STATUS |= frame_counter << 31;
HW_GPU_STATUS &= ~PSXGPU_LCF;
if( HW_GPU_STATUS & PSXGPU_ILACE )
HW_GPU_STATUS |= frame_counter << 31;