fixed: broken fs0, sram saves
[fceu.git] / drivers / cli / throttle.c
CommitLineData
63bd5be0 1#include <sys/time.h>
2#include <unistd.h>
3#include "main.h"
4#include "throttle.h"
5
6static uint64 tfreq;
7static uint64 desiredfps;
8
9void RefreshThrottleFPS(void)
10{
11 desiredfps=FCEUI_GetDesiredFPS()>>8;
12 tfreq=1000000;
13 tfreq<<=16; /* Adjustment for fps returned from FCEUI_GetDesiredFPS(). */
14}
15
16static uint64 GetCurTime(void)
17{
18 uint64 ret;
19 struct timeval tv;
20
21 gettimeofday(&tv,0);
22 ret=(uint64)tv.tv_sec*1000000;
23 ret+=tv.tv_usec;
24 return(ret);
25}
26
27void SpeedThrottle(void)
28{
29 static uint64 ttime,ltime;
30
31 waiter:
32
33 ttime=GetCurTime();
34
35 if( (ttime-ltime) < (tfreq/desiredfps) )
36 {
37 usleep(1000);
38 goto waiter;
39 }
40 if( (ttime-ltime) >= (tfreq*4/desiredfps))
41 ltime=ttime;
42 else
43 ltime+=tfreq/desiredfps;
44}
45