summaryrefslogtreecommitdiff
path: root/sys/src/games/nes/dat.h
blob: 4f774dfe3a6992f9299c2d9795ea690b5bcf1946 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
extern u16int pc, curpc;
extern u8int rA, rX, rY, rS, rP;
extern u8int irq, nmi;
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 map, scale, mmc3hack, oflag;
extern uchar *prg, *chr;
extern int nprg, nchr, map, chrram;

extern u8int apuseq, apuctr[13];
extern u16int dmcaddr, dmccnt;

extern int keys, clock, ppuclock, apuclock, dmcclock, dmcfreq, saveclock, paused;

extern void (*mapper[])(int, u8int);

enum {
	FLAGC = 1<<0,
	FLAGZ = 1<<1,
	FLAGI = 1<<2,
	FLAGD = 1<<3,
	FLAGB = 1<<4,
	FLAGV = 1<<6,
	FLAGN = 1<<7
};

enum {
	PPUCTRL = 0x2000,
	PPUMASK = 0x2001,
	PPUSTATUS = 0x2002,
	PPUSCROLL = 0x2005,
	DMCCTRL = 0x4010,
	DMCBUF = 0x4011,
	DMCADDR = 0x4012,
	DMCLEN = 0x4013,
	APUSTATUS = 0x4015,
	APUFRAME = 0x4017,

	PPUNMI = 1<<7,
	BIGSPRITE = 1<<5,
	BGTABLE = 1<<4,
	SPRTABLE = 1<<3,
	VRAMINC = 1<<2,

	GRAYSCALE = 1<<0,
	BG8DISP = 1<<1,
	SPRITE8DISP = 1<<2,
	BGDISP = 1<<3,
	SPRITEDISP = 1<<4,

	PPUVBLANK = 1<<7,
	SPRITE0HIT = 1<<6,
};

enum {
	HPRG = 4,
	HCHR = 5,
	HRAM = 8,
	HROMH = 9,
	
	FLMIRROR = 1<<0,
	FLBAT = 1<<1,
	FLTRAINER = 1<<2,
	FLFOUR = 1<<3,
	FLMAPPERL = 4,
	FLMAPPERH = 12,
	FLNES20M = 3<<10,
	FLNES20V = 2<<10,
	FLPC10 = 1<<9,
	FLVS = 1<<8,
	
	PRGSZ = 1<<14,
	CHRSZ = 1<<13,
};

enum {
	FREQ = 21477272,
	MILLION = 1000000,
	BILLION = 1000000000,
	APUDIV = 89490,
	RATE = 44100,
	SAMPDIV = FREQ / RATE,
	SAVEFREQ = FREQ/5,
};

enum {
	MHORZ,
	MVERT,
	MSINGA,
	MSINGB,
	MFOUR
};

enum {
	INIT = -1,
	SAVE = -2,
	RSTR = -3,
	SCAN = -4,
};

enum {
	IRQFRAME = 1,
	IRQDMC = 2,
	IRQMMC = 4,
};