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 int keys, clock, ppuclock;
+extern u8int apuseq, apuctr[13];
+extern u16int dmcaddr, dmccnt;
+
+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,
PPUNMI = 1<<7,
BIGSPRITE = 1<<5,
enum {
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,
+};