megadrive_test2
annotate src/pad.h @ 11:302bcd73edc4
added 6button support
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 24 Jun 2017 03:47:37 +0300 |
parents | 6ecf2f3ff05a |
children |
rev | line source |
---|---|
nuclear@9 | 1 #ifndef PAD_H_ |
nuclear@9 | 2 #define PAD_H_ |
nuclear@9 | 3 |
nuclear@9 | 4 #include "io.h" |
nuclear@9 | 5 |
nuclear@11 | 6 uint16_t pad_bnstate[2], pad_prev_bnstate[2], pad_bndiff[2]; |
nuclear@11 | 7 char pad_6bn; |
nuclear@9 | 8 |
nuclear@9 | 9 static inline void pad_update(int pad) |
nuclear@9 | 10 { |
nuclear@9 | 11 pad_prev_bnstate[pad] = pad_bnstate[pad]; |
nuclear@11 | 12 pad_bnstate[pad] = pad_6bn ? io_readpad6(pad) : io_readpad(pad); |
nuclear@9 | 13 pad_bndiff[pad] = pad_bnstate[pad] ^ pad_prev_bnstate[pad]; |
nuclear@9 | 14 } |
nuclear@9 | 15 |
nuclear@9 | 16 static inline int pad_pressed(int pad, uint16_t mask) |
nuclear@9 | 17 { |
nuclear@9 | 18 return (pad_bnstate[pad] & mask & pad_bndiff[pad]) != 0; |
nuclear@9 | 19 } |
nuclear@9 | 20 |
nuclear@9 | 21 static inline int pad_released(int pad, uint16_t mask) |
nuclear@9 | 22 { |
nuclear@9 | 23 return (~pad_bnstate[pad] & mask & pad_bndiff[pad]) != 0; |
nuclear@9 | 24 } |
nuclear@9 | 25 |
nuclear@9 | 26 static inline uint16_t pad_getstate(int pad) |
nuclear@9 | 27 { |
nuclear@9 | 28 return pad_bnstate[pad]; |
nuclear@9 | 29 } |
nuclear@9 | 30 |
nuclear@9 | 31 #endif /* PAD_H_ */ |