X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=libpcsxcore%2Fpsxcounters.c;h=3f6e13956e45e796ccb0bb14e165fbae82bc02f3;hp=db1462d033c71a303ff978930aee8bc71a001ede;hb=5b8c000f969c365d48418781d8f88f9c58d65611;hpb=554a2220f2413cc29d7912ad3f7d91c9e64284cf diff --git a/libpcsxcore/psxcounters.c b/libpcsxcore/psxcounters.c index db1462d0..3f6e1395 100644 --- a/libpcsxcore/psxcounters.c +++ b/libpcsxcore/psxcounters.c @@ -26,13 +26,6 @@ /******************************************************************************/ -typedef struct Rcnt -{ - u16 mode, target; - u32 rate, irq, counterState, irqState; - u32 cycle, cycleStart; -} Rcnt; - enum { Rc0Gate = 0x0001, // 0 not implemented @@ -70,11 +63,12 @@ static const u32 VBlankStart[] = { 240, 256 }; static const u32 HSyncTotal[] = { 263, 313 }; static const u32 SpuUpdInterval[] = { 32, 32 }; -static const s32 VerboseLevel = 0; +#define VERBOSE_LEVEL 0 +static const s32 VerboseLevel = VERBOSE_LEVEL; /******************************************************************************/ -static Rcnt rcnts[ CounterQuantity ]; +Rcnt rcnts[ CounterQuantity ]; static u32 hSyncCount = 0; static u32 spuSyncCount = 0; @@ -92,8 +86,9 @@ void setIrq( u32 irq ) } static -void verboseLog( s32 level, const char *str, ... ) +void verboseLog( u32 level, const char *str, ... ) { +#if VERBOSE_LEVEL > 0 if( level <= VerboseLevel ) { va_list va; @@ -106,6 +101,7 @@ void verboseLog( s32 level, const char *str, ... ) printf( "%s", buf ); fflush( stdout ); } +#endif } /******************************************************************************/ @@ -180,6 +176,9 @@ void psxRcntSet() psxNextCounter = countToUpdate; } } + + psxRegs.interrupt |= (1 << PSXINT_RCNT); + new_dyna_set_event(PSXINT_RCNT, psxNextCounter); } /******************************************************************************/ @@ -338,8 +337,6 @@ void psxRcntWcount( u32 index, u32 value ) { verboseLog( 2, "[RCNT %i] wcount: %x\n", index, value ); - psxRcntUpdate(); - _psxRcntWcount( index, value ); psxRcntSet(); } @@ -348,8 +345,6 @@ void psxRcntWmode( u32 index, u32 value ) { verboseLog( 1, "[RCNT %i] wmode: %x\n", index, value ); - psxRcntUpdate(); - rcnts[index].mode = value; rcnts[index].irqState = 0; @@ -401,8 +396,6 @@ void psxRcntWtarget( u32 index, u32 value ) { verboseLog( 1, "[RCNT %i] wtarget: %x\n", index, value ); - psxRcntUpdate(); - rcnts[index].target = value; _psxRcntWcount( index, _psxRcntRcount( index ) ); @@ -415,8 +408,6 @@ u32 psxRcntRcount( u32 index ) { u32 count; - psxRcntUpdate(); - count = _psxRcntRcount( index ); // Parasite Eve 2 fix. @@ -440,8 +431,6 @@ u32 psxRcntRmode( u32 index ) { u16 mode; - psxRcntUpdate(); - mode = rcnts[index].mode; rcnts[index].mode &= 0xe7ff;