X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=source%2Fgles2rice%2Fsrc%2FRSP_Parser.cpp;h=0c2de1fab7263ebf3fb60ba69e9a7aaa7e4c5778;hb=ca22e7b76883b946060a6b40bb8709c1981e1cf6;hp=d3a69d308c73b3ec6db9ee1bb8c76a9816e27f86;hpb=292f9317f53c38c181439013be7276f86517fd6b;p=mupen64plus-pandora.git diff --git a/source/gles2rice/src/RSP_Parser.cpp b/source/gles2rice/src/RSP_Parser.cpp index d3a69d3..0c2de1f 100644 --- a/source/gles2rice/src/RSP_Parser.cpp +++ b/source/gles2rice/src/RSP_Parser.cpp @@ -780,6 +780,13 @@ uint32 DLParser_CheckUcode(uint32 ucStart, uint32 ucDStart, uint32 ucSize, uint3 extern int dlistMtxCount; extern bool bHalfTxtScale; +extern float mspervi; +extern float numvi; +static int skipframe=0; +static unsigned int oldtick=0; +static int oldskip=0; +extern bool skipping; + void DLParser_Process(OSTask * pTask) { static int skipframe=0; @@ -796,7 +803,7 @@ void DLParser_Process(OSTask * pTask) } status.bScreenIsDrawn = true; - if( options.bSkipFrame ) +/* if( options.bSkipFrame ) { skipframe++; if(skipframe%2) @@ -806,12 +813,44 @@ void DLParser_Process(OSTask * pTask) return; } } - +*/ if( currentRomOptions.N64RenderToTextureEmuType != TXT_BUF_NONE && defaultRomOptions.bSaveVRAM ) { g_pFrameBufferManager->CheckRenderTextureCRCInRDRAM(); } + unsigned int newtick=0; + static int count = 0; + if( options.bSkipFrame ) + { + skipping=false; + newtick = SDL_GetTicks(); + if (newtick-oldtick>400 || skipframe>4 || numvi==0) { + oldtick=newtick; // too long frame delay, something must have gone wrong + skipping=false; + } else + if ((float)(newtick-oldtick)>=mspervi*numvi+3.0f) { + skipping=true; + } + // don't jump frameskipping... + if (skipping) { + //want to skip, be progress slowly... + if (skipframe>oldskip+1) + skipping = false; + } + if (skipping) { + skipframe++; + status.bScreenIsDrawn = false; + TriggerDPInterrupt(); + TriggerSPInterrupt(); + return; + } + oldskip = skipframe; + skipframe=0; + oldtick=newtick; + numvi=0; + } + g_pOSTask = pTask; DebuggerPauseCountN( NEXT_DLIST );