extern uchar *prg, *chr;
extern int nprg, nchr, map, chrram;
-extern int keys, clock, ppuclock;
+extern u8int apuseq, apuctr[13];
+extern u16int dmcaddr, dmccnt;
+
+extern int keys, clock, ppuclock, apuclock, dmcclock, dmcfreq, saveclock, paused;
extern void (*mapper[])(int, u8int);
PPUMASK = 0x2001,
PPUSTATUS = 0x2002,
PPUSCROLL = 0x2005,
+ DMCCTRL = 0x4010,
+ DMCBUF = 0x4011,
+ DMCADDR = 0x4012,
+ DMCLEN = 0x4013,
+ APUSTATUS = 0x4015,
+ APUFRAME = 0x4017,
PPUNMI = 1<<7,
BIGSPRITE = 1<<5,
FREQ = 21477272,
MILLION = 1000000,
BILLION = 1000000000,
+ APUDIV = 89490,
+ RATE = 44100,
+ SAMPDIV = FREQ / RATE,
+ SAVEFREQ = FREQ/5,
};
enum {
RSTR = -3,
SCAN = -4,
};
+
+enum {
+ IRQFRAME = 1,
+ IRQDMC = 2,
+ IRQMMC = 4,
+};