initial commit
[megatris] / src / pad.h
1 #ifndef PAD_H_
2 #define PAD_H_
3
4 #include "io.h"
5
6 uint16_t pad_bnstate[2], pad_prev_bnstate[2], pad_bndiff[2];
7 char pad_6bn;
8
9 static inline void pad_update(int pad)
10 {
11         pad_prev_bnstate[pad] = pad_bnstate[pad];
12         pad_bnstate[pad] = pad_6bn ? io_readpad6(pad) : io_readpad(pad);
13         pad_bndiff[pad] = pad_bnstate[pad] ^ pad_prev_bnstate[pad];
14 }
15
16 static inline int pad_pressed(int pad, uint16_t mask)
17 {
18         return (pad_bnstate[pad] & mask & pad_bndiff[pad]) != 0;
19 }
20
21 static inline int pad_released(int pad, uint16_t mask)
22 {
23         return (~pad_bnstate[pad] & mask & pad_bndiff[pad]) != 0;
24 }
25
26 static inline uint16_t pad_getstate(int pad)
27 {
28         return pad_bnstate[pad];
29 }
30
31 #endif  /* PAD_H_ */