aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore/psxcounters.c
diff options
context:
space:
mode:
authornotaz2011-12-04 23:33:50 +0200
committernotaz2011-12-05 01:08:25 +0200
commitddbaf678c49d33cf60f1eac5069e3275baa2c685 (patch)
tree6ed9f1a9d0dd5673baabf909cb6338fb1941c104 /libpcsxcore/psxcounters.c
parentadb4b2c6fff620ecd65e3786a2f961413507c1a4 (diff)
downloadpcsx_rearmed-ddbaf678c49d33cf60f1eac5069e3275baa2c685.tar.gz
pcsx_rearmed-ddbaf678c49d33cf60f1eac5069e3275baa2c685.tar.bz2
pcsx_rearmed-ddbaf678c49d33cf60f1eac5069e3275baa2c685.zip
move some gpu status handling to core
this removes need to update each gpu plugin when this stuff is changed
Diffstat (limited to 'libpcsxcore/psxcounters.c')
-rw-r--r--libpcsxcore/psxcounters.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/libpcsxcore/psxcounters.c b/libpcsxcore/psxcounters.c
index 177ccb7..e8d2796 100644
--- a/libpcsxcore/psxcounters.c
+++ b/libpcsxcore/psxcounters.c
@@ -22,6 +22,7 @@
*/
#include "psxcounters.h"
+#include "gpu.h"
#include "debug.h"
/******************************************************************************/
@@ -75,6 +76,7 @@ static u32 spuSyncCount = 0;
static u32 hsync_steps = 0;
static u32 gpu_wants_hcnt = 0;
static u32 base_cycle = 0;
+static u32 frame_counter = 0;
u32 psxNextCounter = 0, psxNextsCounter = 0;
@@ -294,7 +296,9 @@ void psxRcntUpdate()
if( hSyncCount == VBlankStart[Config.PsxType] )
{
GPU_vBlank( 1, &hSyncCount, &gpu_wants_hcnt );
-
+ //if( !(HW_GPU_STATUS & PSXGPU_ILACE) ) // hmh
+ HW_GPU_STATUS |= PSXGPU_LCF;
+
// For the best times. :D
//setIrq( 0x01 );
}
@@ -303,12 +307,17 @@ void psxRcntUpdate()
if( hSyncCount >= (Config.VSyncWA ? HSyncTotal[Config.PsxType] / BIAS : HSyncTotal[Config.PsxType]) )
{
hSyncCount = 0;
+ frame_counter++;
GPU_vBlank( 0, &hSyncCount, &gpu_wants_hcnt );
setIrq( 0x01 );
EmuUpdate();
GPU_updateLace();
+
+ HW_GPU_STATUS &= ~PSXGPU_LCF;
+ if( HW_GPU_STATUS & PSXGPU_ILACE )
+ HW_GPU_STATUS |= frame_counter << 31;
}
// Schedule next call, in hsyncs