]> git.lizzy.rs Git - plan9front.git/blob - sys/src/games/gba/dat.h
games/gba: fix -3 crash and prevent >100% speed
[plan9front.git] / sys / src / games / gba / dat.h
1 typedef char s8int;
2 typedef short s16int;
3 typedef long s32int;
4 typedef vlong s64int;
5
6 extern int cpuhalt, trace, keys;
7
8 extern u32int curpc;
9 extern int irq;
10
11 extern int dmaact;
12 extern uchar vram[];
13 extern u16int pram[], oam[];
14 extern u16int reg[];
15 extern uchar *rom, *back;
16 extern int nrom, nback, backup;
17
18 extern int hblank, ppuy;
19
20 extern int clock;
21 extern int scale;
22
23 typedef struct Event Event;
24 struct Event {
25         int time;
26         void (*f)(void *);
27         Event *next;
28         void *aux;
29 };
30 extern Event *elist;
31
32 enum {
33         DISPCNT = 0x0/2,
34         DISPSTAT = 0x4/2,
35         BG0CNT = 0x8/2,
36         BG0HOFS = 0x10/2,
37         BG0VOFS = 0x12/2,
38
39         BG2PA = 0x20/2,
40         BG2PB = 0x22/2,
41         BG2PC = 0x24/2,
42         BG2PD = 0x26/2,
43         BG2XL = 0x28/2,
44         BG2XH = 0x2a/2,
45         BG2YL = 0x2c/2,
46         BG2YH = 0x2e/2,
47         BG3XL = 0x38/2,
48         BG3XH = 0x3a/2,
49         BG3YL = 0x3c/2,
50         BG3YH = 0x3e/2,
51         
52         WIN0H = 0x40/2,
53         WIN1H = 0x42/2,
54         WIN0V = 0x44/2,
55         WIN1V = 0x46/2,
56         WININ = 0x48/2,
57         WINOUT = 0x4a/2,
58         MOSAIC = 0x4c/2,
59         BLDCNT = 0x50/2,
60         BLDALPHA = 0x52/2,
61         BLDY = 0x54/2,
62         
63         SOUNDCNTL = 0x80/2,
64         SOUNDCNTH = 0x82/2,
65         SOUNDBIAS = 0x88/2,
66         
67         FIFOAH = 0xa2/2,
68         FIFOBH = 0xa6/2,
69         
70         DMA0CNTH = 0xba/2,
71         DMA1CNTH = 0xc6/2,
72         DMA2CNTH = 0xd2/2,
73         DMA3CNTH = 0xde/2,
74         
75         TM0CNTH = 0x102/2,
76         KEYCNT = 0x132/2,
77
78         IE = 0x200/2,
79         IF = 0x202/2,
80         WAITCNT = 0x204/2,
81         IME = 0x208/2,
82         
83 };
84
85 enum {
86         /* DISPCNT */
87         FRAME = 1<<4,
88         HBLFREE = 1<<5,
89         OBJNOMAT = 1<<6,
90         FBLANK = 1<<7,
91
92         /* DISPSTAT */
93         IRQVBLEN = 1<<3,
94         IRQHBLEN = 1<<4,
95         IRQVCTREN = 1<<5,
96
97         /* BGnCNT */
98         BGMOSAIC = 1<<6,
99         BG8 = 1<<7,
100         DISPWRAP = 1<<13,
101         
102         /* TIMERnCNTH */
103         PRESC = 3,
104         COUNTUP = 1<<2,
105         TIMERIRQ = 1<<6,
106         TIMERON = 1<<7,
107         
108         /* DMAnCNTH */
109         DMADCNT = 5,
110         DMASCNT = 7,
111         DMAREP = 1<<9,
112         DMAWIDE = 1<<10,
113         DMAWHEN = 12,
114         DMAIRQ = 1<<14,
115         DMAEN = 1<<15,
116
117         DMAINC = 0,
118         DMADEC = 1,
119         DMAFIX = 2,
120         DMAINCREL = 3,
121
122         DMANOW = 0,
123         DMAVBL = 1,
124         DMAHBL = 2,
125         DMASPEC = 3,
126         DMASOUND = 4,
127         DMAVIDEO = 5,
128         
129         IRQVBL = 1<<0,
130         IRQHBL = 1<<1,
131         IRQVCTR = 1<<2,
132         IRQTIM0 = 1<<3,
133         IRQDMA0 = 1<<8,
134         IRQKEY = 1<<12,
135         
136         NOBACK = 0,
137         SRAM = 1,
138         EEPROM = 2,
139         FLASH = 3,
140         
141         KB = 1024,
142         BACKTYPELEN = 64,
143         HZ = 16777216,
144         MILLION = 1000000,
145         BILLION = 1000000000,
146 };
147
148 typedef struct Var Var;
149
150 struct Var {
151         void *a;
152         int s, n;
153 };
154 #define VAR(a) {&a, sizeof(a), 1}
155 #define ARR(a) {a, sizeof(*a), nelem(a)}
156 enum { NEVENT = 6 };