X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=libpcsxcore%2Fpsxcounters.c;h=6f82abd5ae3baf3ae7e73ae05a35f9656d394354;hp=177ccb75214ab42a44622069fa8e4e17a01b17ac;hb=24de2dd4dbdd50e44c91c40ebbc7d59ee1c0ac9b;hpb=4f55097de04a34ddcc83647f3b1f69570d7f1e36 diff --git a/libpcsxcore/psxcounters.c b/libpcsxcore/psxcounters.c index 177ccb75..6f82abd5 100644 --- a/libpcsxcore/psxcounters.c +++ b/libpcsxcore/psxcounters.c @@ -22,6 +22,7 @@ */ #include "psxcounters.h" +#include "gpu.h" #include "debug.h" /******************************************************************************/ @@ -70,10 +71,10 @@ static const s32 VerboseLevel = VERBOSE_LEVEL; Rcnt rcnts[ CounterQuantity ]; -static u32 hSyncCount = 0; +u32 hSyncCount = 0; +u32 frame_counter = 0; static u32 spuSyncCount = 0; static u32 hsync_steps = 0; -static u32 gpu_wants_hcnt = 0; static u32 base_cycle = 0; u32 psxNextCounter = 0, psxNextsCounter = 0; @@ -293,8 +294,9 @@ void psxRcntUpdate() // VSync irq. 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 +305,16 @@ 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 @@ -319,8 +325,6 @@ void psxRcntUpdate() hsync_steps = next_vsync; if( next_lace && next_lace < hsync_steps ) hsync_steps = next_lace; - if( gpu_wants_hcnt ) - hsync_steps = 1; rcnts[3].cycleStart = cycle - leftover_cycles; if (Config.PsxType)