859b9a7e640ae3be36b07e06feb878508c7dff31
[gbajam21] / 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/clear interrupts */
27 #define intr_enable()   \
28         do { REG_IME |= 0x0001; } while(0)
29 #define intr_disable()  \
30         do { REG_IME &= 0xfffe; } while(0)
31
32 /* set an interrupt handler */
33 void interrupt(int intr, void (*handler)(void));
34
35 /* mask/unmask an interrupt */
36 #define mask(intr)              do {REG_IE &= ~(1 << (intr));} while(0)
37 #define unmask(intr)    do {REG_IE |= 1 << (intr);} while(0)
38
39 #endif  /* INTR_H_ */