diff options
author | aiju <devnull@localhost> | 2014-02-27 19:52:02 +0100 |
---|---|---|
committer | aiju <devnull@localhost> | 2014-02-27 19:52:02 +0100 |
commit | ff5ac0c5cb11cf2770a44157107abff8536a0edc (patch) | |
tree | 390f4923481387c70255c325a42156f95da827a1 /sys/src/games/nes/ppu.c | |
parent | c65a3809dade0640fe6247fecb9461515857aec2 (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.c | 13 |
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; + } } } |