5 #include "frame_skip.h"
9 #define uclock_t unsigned int
12 #define TICKS_PER_SEC 1000000UL
14 static int CPU_FPS=60;
17 #define MAX_FRAMESKIP 10
20 static char init_frame_skip = 1;
21 char skip_next_frame = 0;
22 static struct timeval init_tv = { 0, 0 };
25 void reset_frame_skip(void)
27 //static Uint8 init=0;
33 CPU_FPS=Memory.ROMFramesPerSecond;
35 F = (uclock_t) ((double) TICKS_PER_SEC / CPU_FPS);
38 uclock_t get_ticks(void)
43 if (init_tv.tv_sec == 0)
45 return (tv.tv_sec - init_tv.tv_sec) * TICKS_PER_SEC + tv.tv_usec -
54 static uclock_t sec = 0;
56 static uclock_t target;
57 static int nbFrame = 0;
58 static int skpFrm = 0;
60 if (init_frame_skip) {
81 if (rfd < target && f2skip == 0) {
82 while (get_ticks() < target);
84 f2skip = (rfd - target) / (double) F;
85 if (f2skip > MAX_FRAMESKIP) {
86 f2skip = MAX_FRAMESKIP;
89 // printf("Skip %d frame(s) %lu %lu\n",f2skip,target,rfd);
94 if (get_ticks() - sec >= TICKS_PER_SEC) {