X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=plugins%2Fdfxvideo%2Fgpu.c;h=d80a265cd18c7c0b3544a2c75e4bb53f53d44037;hp=9a614de2171425dbb1aca9d2212de49c28f43df5;hb=7e44d49d2a65d6e45d6f99f72a8cccdb02654aae;hpb=e64dc4c54e96643522dc4b8c205d143c7d9b2f1d diff --git a/plugins/dfxvideo/gpu.c b/plugins/dfxvideo/gpu.c index 9a614de2..d80a265c 100644 --- a/plugins/dfxvideo/gpu.c +++ b/plugins/dfxvideo/gpu.c @@ -233,7 +233,7 @@ static void decideSkip(void) if(dwActFixes&0xa0) // -> pc fps calculation fix/old skipping fix { - int skip = (skip_advice && *skip_advice) || fps_skip < fFrameRateHz; + int skip = (skip_advice && *skip_advice) || UseFrameSkip == 1 || fps_skip < fFrameRateHz; if(skip && !bSkipNextFrame) // -> skip max one in a row {bSkipNextFrame = TRUE; fps_skip=fFrameRateHz;} else bSkipNextFrame = FALSE; @@ -649,7 +649,7 @@ void CALLBACK GPUwriteStatus(uint32_t gdata) // WRITE STATUS } lGPUstatusRet|=GPUSTATUS_INTERLACED; } - else lGPUstatusRet&=~GPUSTATUS_INTERLACED; + else lGPUstatusRet&=~(GPUSTATUS_INTERLACED|0x80000000); if (PSXDisplay.PAL) lGPUstatusRet|=GPUSTATUS_PAL; @@ -1042,6 +1042,7 @@ long CALLBACK GPUdmaChain(uint32_t * baseAddrL, uint32_t addr) uint32_t dmaMem; unsigned char * baseAddrB; short count;unsigned int DMACommandCounter = 0; + long dmaWords = 0; GPUIsBusy; @@ -1056,6 +1057,7 @@ long CALLBACK GPUdmaChain(uint32_t * baseAddrL, uint32_t addr) if(CheckForEndlessLoop(addr)) break; count = baseAddrB[addr+3]; + dmaWords += 1 + count; dmaMem=addr+4; @@ -1067,7 +1069,7 @@ long CALLBACK GPUdmaChain(uint32_t * baseAddrL, uint32_t addr) GPUIsIdle; - return 0; + return dmaWords; } //////////////////////////////////////////////////////////////////////// @@ -1137,6 +1139,8 @@ void CALLBACK GPUvBlank(int val) // rearmed thing #include "../../frontend/plugin_lib.h" +const struct rearmed_cbs *rcbs; + void GPUrearmedCallbacks(const struct rearmed_cbs *cbs) { // sync config @@ -1148,4 +1152,5 @@ void GPUrearmedCallbacks(const struct rearmed_cbs *cbs) skip_advice = &cbs->fskip_advice; fps_skip = 100.0f; + rcbs = cbs; }