ref: 2d25e3bd940078aa04d18d098176ba73e91b4ae8
dir: /gb-nosleep/
diff -r e899bb299ed2 sys/src/games/gb/apu.c
--- a/sys/src/games/gb/apu.c Fri Feb 10 22:39:47 2017 +0100
+++ b/sys/src/games/gb/apu.c Sat Feb 11 20:06:13 2017 +0200
@@ -475,7 +475,7 @@
if(sbufp == sbuf)
return 0;
cl = clock;
- rc = write(fd, sbuf, (sbufp - sbuf) * 2);
+ rc = nosleep ? 1 : write(fd, sbuf, (sbufp - sbuf) * 2);
if(rc > 0)
sbufp -= (rc+1)/2;
if(sbufp < sbuf)
diff -r e899bb299ed2 sys/src/games/gb/dat.h
--- a/sys/src/games/gb/dat.h Fri Feb 10 22:39:47 2017 +0100
+++ b/sys/src/games/gb/dat.h Sat Feb 11 20:06:13 2017 +0200
@@ -25,6 +25,7 @@
extern u8int mode;
extern u8int mbc, feat;
extern int keys, scale;
+extern int nosleep;
enum {
JOYP = 0x00,
diff -r e899bb299ed2 sys/src/games/gb/gb.c
--- a/sys/src/games/gb/gb.c Fri Feb 10 22:39:47 2017 +0100
+++ b/sys/src/games/gb/gb.c Sat Feb 11 20:06:13 2017 +0200
@@ -12,7 +12,7 @@
Rectangle picr;
Image *bg, *tmp;
Mousectl *mc;
-int keys, paused, framestep, backup;
+int keys, paused, framestep, backup, nosleep;
QLock pauselock;
int savefd = -1, saveframes;
ulong clock;
@@ -285,6 +285,9 @@
}
framestep = !framestep;
break;
+ case ' ':
+ nosleep = !nosleep;
+ break;
}
}
k &= ~(k << 1 & 0x0a | k >> 1 & 0x05);
@@ -352,7 +355,9 @@
flushimage(display, 1);
if(profile)
timing();
- if(audioout() < 0){
+ if(nosleep)
+ old = nsec();
+ if(audioout() < 0 && !nosleep){
new = nsec();
diff = 0;
if(old != 0){