summaryrefslogtreecommitdiff
path: root/sys/src/games/nes/ppu.c
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2014-02-27 19:52:02 +0100
committeraiju <devnull@localhost>2014-02-27 19:52:02 +0100
commitff5ac0c5cb11cf2770a44157107abff8536a0edc (patch)
tree390f4923481387c70255c325a42156f95da827a1 /sys/src/games/nes/ppu.c
parentc65a3809dade0640fe6247fecb9461515857aec2 (diff)
games/nes: improved time synchronization
games/gb: added some games/nes improvements
Diffstat (limited to 'sys/src/games/nes/ppu.c')
-rw-r--r--sys/src/games/nes/ppu.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/sys/src/games/nes/ppu.c b/sys/src/games/nes/ppu.c
index 3c7c320fd..3cb4a150c 100644
--- a/sys/src/games/nes/ppu.c
+++ b/sys/src/games/nes/ppu.c
@@ -255,8 +255,8 @@ flush(void)
extern Rectangle picr;
extern Image *tmp, *bg;
extern Mousectl *mc;
- static vlong old, diff;
- vlong new;
+ static vlong old, delta;
+ vlong new, diff;
Mouse m;
Point p;
int h;
@@ -286,12 +286,17 @@ flush(void)
memset(pic, sizeof pic, 0);
if(audioout() < 0){
new = nsec();
+ diff = 0;
if(old != 0){
- diff = BILLION/60 - (new - old);
+ diff = BILLION/60 - (new - old) - delta;
if(diff >= MILLION)
sleep(diff/MILLION);
}
- old = new;
+ old = nsec();
+ if(diff != 0){
+ diff = (old - new) - (diff / MILLION) * MILLION;
+ delta += (diff - delta) / 100;
+ }
}
}