add missing tools/pngdump to the repo
[gbajam22] / src / intr.h
1 #ifndef INTR_H_
2 #define INTR_H_
3
4 #include "gbaregs.h"
5
6 /* interrupts */
7 enum {
8         INTR_VBLANK,
9         INTR_HBLANK,
10         INTR_VCOUNT,
11         INTR_TIMER0,
12         INTR_TIMER1,
13         INTR_TIMER2,
14         INTR_TIMER3,
15         INTR_COMM,
16         INTR_DMA0,
17         INTR_DMA1,
18         INTR_DMA2,
19         INTR_DMA3,
20         INTR_KEY,
21         INTR_GPAK
22 };
23
24 void intr_init(void);
25
26 /* set an interrupt handler */
27 void interrupt(int intr, void (*handler)(void));
28
29 #ifdef BUILD_GBA
30
31 /* set/clear interrupts */
32 #define intr_enable()   \
33         do { REG_IME |= 0x0001; } while(0)
34 #define intr_disable()  \
35         do { REG_IME &= 0xfffe; } while(0)
36
37 /* mask/unmask an interrupt */
38 #define mask(intr)              do {REG_IE &= ~(1 << (intr));} while(0)
39 #define unmask(intr)    do {REG_IE |= 1 << (intr);} while(0)
40
41 #else   /* non-GBA build */
42
43 void intr_enable(void);
44 void intr_disable(void);
45
46 void mask(int intr);
47 void unmask(int intr);
48
49 #endif
50
51 #endif  /* INTR_H_ */