summaryrefslogtreecommitdiff
path: root/sys/src/games/c64/dat.h
blob: 723053d758aba782ea71f3fe3de9958e8ca7c298 (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
extern u8int reg[47], crom[4096], krom[8192], brom[8192], cram[1024], cart[16384];

extern u16int pc, curpc;
extern u8int rP;
extern int nrdy, irq, nmi, irqen, nmien;

extern u8int pla;

extern uchar *tape, tapever, tapeplay;
extern ulong tapelen;

extern u16int ppux, ppuy, picw, pich;
extern u16int joys;
extern int region;

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

enum {
	IRQRASTER = 1<<0,
	IRQBGCOLL = 1<<1,
	IRQSPRCOLL = 1<<2,
	IRQLIGHT = 1<<3,
	IRQTIMERA = 1<<4,
	IRQTIMERB = 1<<5,
	IRQTOD = 1<<6,
	IRQSDR = 1<<7,
	IRQFLAG = 1<<8,
	IRQRESTORE = 1<<9,
};

enum{
	MSBX = 0x10,
	CTRL1 = 0x11,
	RASTER = 0x12,
	SPREN = 0x15,
	CTRL2 = 0x16,
	SPRYE = 0x17,
	MEMP = 0x18,
	IRQLATCH = 0x19,
	IRQEN = 0x1a,
	SPRDP = 0x1b,
	SPRMC = 0x1c,
	SPRXE = 0x1d,
	SPRSPR = 0x1e,
	SPRBG = 0x1f,
	EC = 0x20,
	BG0 = 0x21,
	BG1 = 0x22,
	BG2 = 0x23,
	BG3 = 0x24,
	SPRMC0 = 0x25,
	SPRMC1 = 0x26,
	SPRCOL = 0x27
};

enum {
	LORAM = 1,
	HIRAM = 2,
	CHAREN = 4,
	GAME = 8,
	EXROM = 16,
	
	ECM = 0x40,
	BMM = 0x20,
	DEN = 0x10,
	RSEL = 0x08,
	CSEL = 0x08,
	
	MCM = 0x10,
};

enum {
	HZ = 3579545,
	RATE = 44100,
	SAMPDIV = HZ / 3 / RATE,
};

enum {
	NTSC,
	NTSC0,
	PAL
};