mirror of
https://github.com/wiiu-env/haxchi.git
synced 2024-11-18 22:29:15 +01:00
d29e796167
updated main Haxchi to v2.3
128 lines
3.9 KiB
C
128 lines
3.9 KiB
C
|
|
#ifndef _PAD_H_
|
|
#define _PAD_H_
|
|
|
|
typedef struct _KPADData
|
|
{
|
|
unsigned int btns_h;
|
|
unsigned int btns_d;
|
|
unsigned int btns_r;
|
|
unsigned int unused_1[5];
|
|
float pos_x;
|
|
float pos_y;
|
|
unsigned int unused_2[3];
|
|
float angle_x;
|
|
float angle_y;
|
|
unsigned int unused_3[8];
|
|
unsigned char device_type;
|
|
unsigned char wpad_error;
|
|
unsigned char pos_valid;
|
|
unsigned char unused_4[1];
|
|
|
|
union
|
|
{
|
|
struct
|
|
{
|
|
float stick_x;
|
|
float stick_y;
|
|
} nunchuck;
|
|
|
|
struct
|
|
{
|
|
unsigned int btns_h;
|
|
unsigned int btns_d;
|
|
unsigned int btns_r;
|
|
float lstick_x;
|
|
float lstick_y;
|
|
float rstick_x;
|
|
float rstick_y;
|
|
float ltrigger;
|
|
float rtrigger;
|
|
} classic;
|
|
|
|
unsigned int unused_6[20];
|
|
};
|
|
unsigned int unused_7[16];
|
|
} KPADData;
|
|
|
|
#define WPAD_BUTTON_LEFT 0x0001
|
|
#define WPAD_BUTTON_RIGHT 0x0002
|
|
#define WPAD_BUTTON_DOWN 0x0004
|
|
#define WPAD_BUTTON_UP 0x0008
|
|
#define WPAD_BUTTON_PLUS 0x0010
|
|
#define WPAD_BUTTON_2 0x0100
|
|
#define WPAD_BUTTON_1 0x0200
|
|
#define WPAD_BUTTON_B 0x0400
|
|
#define WPAD_BUTTON_A 0x0800
|
|
#define WPAD_BUTTON_MINUS 0x1000
|
|
#define WPAD_BUTTON_Z 0x2000
|
|
#define WPAD_BUTTON_C 0x4000
|
|
#define WPAD_BUTTON_HOME 0x8000
|
|
|
|
#define WPAD_CLASSIC_BUTTON_UP 0x0001
|
|
#define WPAD_CLASSIC_BUTTON_LEFT 0x0002
|
|
#define WPAD_CLASSIC_BUTTON_ZR 0x0004
|
|
#define WPAD_CLASSIC_BUTTON_X 0x0008
|
|
#define WPAD_CLASSIC_BUTTON_A 0x0010
|
|
#define WPAD_CLASSIC_BUTTON_Y 0x0020
|
|
#define WPAD_CLASSIC_BUTTON_B 0x0040
|
|
#define WPAD_CLASSIC_BUTTON_ZL 0x0080
|
|
#define WPAD_CLASSIC_BUTTON_R 0x0200
|
|
#define WPAD_CLASSIC_BUTTON_PLUS 0x0400
|
|
#define WPAD_CLASSIC_BUTTON_HOME 0x0800
|
|
#define WPAD_CLASSIC_BUTTON_MINUS 0x1000
|
|
#define WPAD_CLASSIC_BUTTON_L 0x2000
|
|
#define WPAD_CLASSIC_BUTTON_DOWN 0x4000
|
|
#define WPAD_CLASSIC_BUTTON_RIGHT 0x8000
|
|
|
|
|
|
|
|
typedef struct
|
|
{
|
|
float x,y;
|
|
} Vec2D;
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t x, y; /* Touch coordinates */
|
|
uint16_t touched; /* 1 = Touched, 0 = Not touched */
|
|
uint16_t invalid; /* 0 = All valid, 1 = X invalid, 2 = Y invalid, 3 = Both invalid? */
|
|
} VPADTPData;
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t btns_h; /* Held buttons */
|
|
uint32_t btns_d; /* Buttons that are pressed at that instant */
|
|
uint32_t btns_r; /* Released buttons */
|
|
Vec2D lstick, rstick; /* Each contains 4-byte X and Y components */
|
|
char unknown1c[0x52 - 0x1c]; /* Contains accelerometer and gyroscope data somewhere */
|
|
VPADTPData tpdata; /* Normal touchscreen data */
|
|
VPADTPData tpdata1; /* Modified touchscreen data 1 */
|
|
VPADTPData tpdata2; /* Modified touchscreen data 2 */
|
|
char unknown6a[0xa0 - 0x6a];
|
|
uint8_t volume;
|
|
uint8_t battery; /* 0 to 6 */
|
|
uint8_t unk_volume; /* One less than volume */
|
|
char unknowna4[0xac - 0xa4];
|
|
} VPADData;
|
|
|
|
#define VPAD_BUTTON_A 0x8000
|
|
#define VPAD_BUTTON_B 0x4000
|
|
#define VPAD_BUTTON_X 0x2000
|
|
#define VPAD_BUTTON_Y 0x1000
|
|
#define VPAD_BUTTON_LEFT 0x0800
|
|
#define VPAD_BUTTON_RIGHT 0x0400
|
|
#define VPAD_BUTTON_UP 0x0200
|
|
#define VPAD_BUTTON_DOWN 0x0100
|
|
#define VPAD_BUTTON_ZL 0x0080
|
|
#define VPAD_BUTTON_ZR 0x0040
|
|
#define VPAD_BUTTON_L 0x0020
|
|
#define VPAD_BUTTON_R 0x0010
|
|
#define VPAD_BUTTON_PLUS 0x0008
|
|
#define VPAD_BUTTON_MINUS 0x0004
|
|
#define VPAD_BUTTON_HOME 0x0002
|
|
#define VPAD_BUTTON_SYNC 0x0001
|
|
|
|
|
|
#endif
|