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_ */