summaryrefslogtreecommitdiff
path: root/sys/src/games/nes/nes.c
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2014-02-24 22:50:05 +0100
committeraiju <devnull@localhost>2014-02-24 22:50:05 +0100
commit76b51dc816a4e6ad1d21b6b40b8ea32a57bd47a6 (patch)
tree2006bdcb1ed36f5abdf959d26254a026da79a2d7 /sys/src/games/nes/nes.c
parent60c3c3b3dbf4e1ae03c1a376babec80900c14ecb (diff)
games/nes: added dmc, fixed envelope, added cnrom
Diffstat (limited to 'sys/src/games/nes/nes.c')
-rw-r--r--sys/src/games/nes/nes.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/src/games/nes/nes.c b/sys/src/games/nes/nes.c
index a283825ce..96b05084f 100644
--- a/sys/src/games/nes/nes.c
+++ b/sys/src/games/nes/nes.c
@@ -13,7 +13,7 @@ uchar *prg, *chr;
int scale;
Rectangle picr;
Image *tmp, *bg;
-int clock, ppuclock, apuclock, sampclock, msgclock, saveclock;
+int clock, ppuclock, apuclock, dmcclock, dmcfreq, sampclock, msgclock, saveclock;
Mousectl *mc;
int keys, paused, savereq, loadreq, oflag, savefd = -1;
int mirr;
@@ -230,6 +230,7 @@ threadmain(int argc, char **argv)
pc = memread(0xFFFC) | memread(0xFFFD) << 8;
rP = FLAGI;
+ dmcfreq = 12 * 428;
for(;;){
if(savereq){
savestate("nes.save");
@@ -248,8 +249,7 @@ threadmain(int argc, char **argv)
ppuclock += t;
apuclock += t;
sampclock += t;
- //syncclock += t;
- //checkclock += t;
+ dmcclock += t;
while(ppuclock >= 4){
ppustep();
ppuclock -= 4;
@@ -262,6 +262,10 @@ threadmain(int argc, char **argv)
audiosample();
sampclock -= SAMPDIV;
}
+ if(dmcclock >= dmcfreq){
+ dmcstep();
+ dmcclock -= dmcfreq;
+ }
if(msgclock > 0){
msgclock -= t;
if(msgclock <= 0){