+ 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;
+ }
+