extern uchar mem[32768], ppuram[16384], oam[256];
extern u16int pput, ppuv;
extern u8int ppusx, vrambuf;
-extern int mirr, ppux, ppuy, odd, vramlatch, keylatch;
+extern int mirr, ppux, ppuy, odd, vramlatch, keylatch, keylatch2;
-extern int map, scale, mmc3hack, oflag;
+extern int map, mmc3hack, oflag;
extern uchar *prg, *chr;
extern int nprg, nchr, map, chrram;
-extern u8int apuseq, apuctr[10];
+extern u8int apuseq, apuctr[13];
+extern u16int dmcaddr, dmccnt;
-extern int keys, clock, ppuclock, apuclock, saveclock, paused;
+extern int clock, ppuclock, apuclock, dmcclock, dmcfreq, saveclock;
extern void (*mapper[])(int, u8int);
PPUMASK = 0x2001,
PPUSTATUS = 0x2002,
PPUSCROLL = 0x2005,
+ DMCCTRL = 0x4010,
+ DMCBUF = 0x4011,
+ DMCADDR = 0x4012,
+ DMCLEN = 0x4013,
APUSTATUS = 0x4015,
APUFRAME = 0x4017,
enum {
FREQ = 21477272,
- MILLION = 1000000,
- BILLION = 1000000000,
APUDIV = 89490,
RATE = 44100,
SAMPDIV = FREQ / RATE,