diff options
author | aiju <devnull@localhost> | 2014-02-24 22:50:05 +0100 |
---|---|---|
committer | aiju <devnull@localhost> | 2014-02-24 22:50:05 +0100 |
commit | 76b51dc816a4e6ad1d21b6b40b8ea32a57bd47a6 (patch) | |
tree | 2006bdcb1ed36f5abdf959d26254a026da79a2d7 /sys/src/games/nes/nes.c | |
parent | 60c3c3b3dbf4e1ae03c1a376babec80900c14ecb (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.c | 10 |
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){ |