blob: f3de4198c29c5b55a92cc1df5fcca9cafb97164c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#ifndef NITRO_PAD_PAD_H_
#define NITRO_PAD_PAD_H_
#include "registers.h"
//================================================================================
// BUTTONS
//---- masked value
#define PAD_PLUS_KEY_MASK 0x00f0 // mask : cross keys
#define PAD_BUTTON_MASK 0x2f0f // mask : buttons
#define PAD_DEBUG_BUTTON_MASK 0x2000 // mask : debug button
#define PAD_ALL_MASK 0x2fff // mask : all buttons
#define PAD_RCNTPORT_MASK 0x2c00 // mask : factors ARM7 can read from RCNT register
#define PAD_KEYPORT_MASK 0x03ff // mask : factors ARM7/9 can read from KEY register
#define PAD_DETECT_FOLD_MASK 0x8000 // mask : folding
//---- button and key
#define PAD_BUTTON_A 0x0001 // A
#define PAD_BUTTON_B 0x0002 // B
#define PAD_BUTTON_SELECT 0x0004 // SELECT
#define PAD_BUTTON_START 0x0008 // START
#define PAD_KEY_RIGHT 0x0010 // RIGHT of cross key
#define PAD_KEY_LEFT 0x0020 // LEFT of cross key
#define PAD_KEY_UP 0x0040 // UP of cross key
#define PAD_KEY_DOWN 0x0080 // DOWN of cross key
#define PAD_BUTTON_R 0x0100 // R
#define PAD_BUTTON_L 0x0200 // L
#define PAD_BUTTON_X 0x0400 // X
#define PAD_BUTTON_Y 0x0800 // Y
#define PAD_BUTTON_DEBUG 0x2000 // Debug button
static inline u16 PAD_Read(void)
{
return (u16)(((reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF) ^
(PAD_PLUS_KEY_MASK | PAD_BUTTON_MASK)) & (PAD_PLUS_KEY_MASK | PAD_BUTTON_MASK));
}
static inline BOOL PAD_DetectFold(void)
{
return (BOOL)((*(vu16 *)HW_BUTTON_XY_BUF & PAD_DETECT_FOLD_MASK) >> 15);
}
#endif //NITRO_PAD_PAD_H_
|