megadrive_test2

view src/pad.h @ 9:6ecf2f3ff05a

- better pad input handling - switch between 28 and 30 vertical tiles by pressing C
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 24 Jun 2017 00:33:10 +0300
parents
children 302bcd73edc4
line source
1 #ifndef PAD_H_
2 #define PAD_H_
4 #include "io.h"
6 static uint16_t pad_bnstate[2], pad_prev_bnstate[2], pad_bndiff[2];
8 static inline void pad_update(int pad)
9 {
10 pad_prev_bnstate[pad] = pad_bnstate[pad];
11 pad_bnstate[pad] = io_readpad(pad);
12 pad_bndiff[pad] = pad_bnstate[pad] ^ pad_prev_bnstate[pad];
13 }
15 static inline int pad_pressed(int pad, uint16_t mask)
16 {
17 return (pad_bnstate[pad] & mask & pad_bndiff[pad]) != 0;
18 }
20 static inline int pad_released(int pad, uint16_t mask)
21 {
22 return (~pad_bnstate[pad] & mask & pad_bndiff[pad]) != 0;
23 }
25 static inline uint16_t pad_getstate(int pad)
26 {
27 return pad_bnstate[pad];
28 }
30 #endif /* PAD_H_ */