2016-04-25 20:33:48 +02:00
|
|
|
/****************************************************************************
|
|
|
|
* Copyright (C) 2015
|
|
|
|
* by Dimok
|
|
|
|
*
|
|
|
|
* This software is provided 'as-is', without any express or implied
|
|
|
|
* warranty. In no event will the authors be held liable for any
|
|
|
|
* damages arising from the use of this software.
|
|
|
|
*
|
|
|
|
* Permission is granted to anyone to use this software for any
|
|
|
|
* purpose, including commercial applications, and to alter it and
|
|
|
|
* redistribute it freely, subject to the following restrictions:
|
|
|
|
*
|
|
|
|
* 1. The origin of this software must not be misrepresented; you
|
|
|
|
* must not claim that you wrote the original software. If you use
|
|
|
|
* this software in a product, an acknowledgment in the product
|
|
|
|
* documentation would be appreciated but is not required.
|
|
|
|
*
|
|
|
|
* 2. Altered source versions must be plainly marked as such, and
|
|
|
|
* must not be misrepresented as being the original software.
|
|
|
|
*
|
|
|
|
* 3. This notice may not be removed or altered from any source
|
|
|
|
* distribution.
|
|
|
|
***************************************************************************/
|
|
|
|
#ifndef __PAD_SCORE_FUNCTIONS_H_
|
|
|
|
#define __PAD_SCORE_FUNCTIONS_H_
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2016-08-18 11:18:44 +02:00
|
|
|
#include "dynamic_libs/vpad_functions.h"
|
|
|
|
|
2017-03-30 17:51:11 +02:00
|
|
|
extern u32 padscore_handle;
|
2016-04-25 20:33:48 +02:00
|
|
|
|
|
|
|
#include <gctypes.h>
|
|
|
|
|
2017-03-30 17:51:11 +02:00
|
|
|
#define WPAD_EXT_CORE 0
|
|
|
|
#define WPAD_EXT_NUNCHUK 1
|
|
|
|
#define WPAD_EXT_CLASSIC 2
|
|
|
|
#define WPAD_EXT_MPLUS 5
|
|
|
|
#define WPAD_EXT_MPLUS_NUNCHUK 6
|
|
|
|
#define WPAD_EXT_MPLUS_CLASSIC 7
|
|
|
|
#define WPAD_EXT_PRO_CONTROLLER 31
|
|
|
|
|
|
|
|
#define WPAD_FMT_PRO_CONTROLLER 22
|
|
|
|
|
2016-04-25 20:33:48 +02:00
|
|
|
#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
|
|
|
|
|
2016-08-18 11:18:44 +02:00
|
|
|
#define WPAD_PRO_BUTTON_UP 0x00000001
|
|
|
|
#define WPAD_PRO_BUTTON_LEFT 0x00000002
|
|
|
|
#define WPAD_PRO_TRIGGER_ZR 0x00000004
|
|
|
|
#define WPAD_PRO_BUTTON_X 0x00000008
|
|
|
|
#define WPAD_PRO_BUTTON_A 0x00000010
|
|
|
|
#define WPAD_PRO_BUTTON_Y 0x00000020
|
|
|
|
#define WPAD_PRO_BUTTON_B 0x00000040
|
|
|
|
#define WPAD_PRO_TRIGGER_ZL 0x00000080
|
|
|
|
#define WPAD_PRO_RESERVED 0x00000100
|
|
|
|
#define WPAD_PRO_TRIGGER_R 0x00000200
|
|
|
|
#define WPAD_PRO_BUTTON_PLUS 0x00000400
|
|
|
|
#define WPAD_PRO_BUTTON_HOME 0x00000800
|
|
|
|
#define WPAD_PRO_BUTTON_MINUS 0x00001000
|
|
|
|
#define WPAD_PRO_TRIGGER_L 0x00002000
|
|
|
|
#define WPAD_PRO_BUTTON_DOWN 0x00004000
|
|
|
|
#define WPAD_PRO_BUTTON_RIGHT 0x00008000
|
|
|
|
#define WPAD_PRO_BUTTON_STICK_R 0x00010000
|
|
|
|
#define WPAD_PRO_BUTTON_STICK_L 0x00020000
|
|
|
|
|
|
|
|
#define WPAD_PRO_STICK_L_EMULATION_UP 0x00200000
|
|
|
|
#define WPAD_PRO_STICK_L_EMULATION_DOWN 0x00100000
|
|
|
|
#define WPAD_PRO_STICK_L_EMULATION_LEFT 0x00040000
|
|
|
|
#define WPAD_PRO_STICK_L_EMULATION_RIGHT 0x00080000
|
|
|
|
|
|
|
|
#define WPAD_PRO_STICK_R_EMULATION_UP 0x02000000
|
|
|
|
#define WPAD_PRO_STICK_R_EMULATION_DOWN 0x01000000
|
|
|
|
#define WPAD_PRO_STICK_R_EMULATION_LEFT 0x00400000
|
|
|
|
#define WPAD_PRO_STICK_R_EMULATION_RIGHT 0x00800000
|
2016-04-25 20:33:48 +02:00
|
|
|
|
|
|
|
typedef struct _KPADData
|
|
|
|
{
|
|
|
|
u32 btns_h;
|
|
|
|
u32 btns_d;
|
|
|
|
u32 btns_r;
|
2017-09-24 07:20:10 +02:00
|
|
|
f32 acc_x;
|
|
|
|
f32 acc_y;
|
|
|
|
f32 acc_z;
|
|
|
|
f32 acc_value;
|
|
|
|
f32 acc_speed;
|
2016-04-25 20:33:48 +02:00
|
|
|
f32 pos_x;
|
|
|
|
f32 pos_y;
|
2017-09-24 07:20:10 +02:00
|
|
|
f32 vec_x;
|
|
|
|
f32 vec_y;
|
|
|
|
f32 speed;
|
2016-04-25 20:33:48 +02:00
|
|
|
f32 angle_x;
|
|
|
|
f32 angle_y;
|
2017-09-24 07:20:10 +02:00
|
|
|
f32 angle_vec_x;
|
|
|
|
f32 angle_vec_y;
|
|
|
|
f32 angle_speed;
|
|
|
|
f32 dist;
|
|
|
|
f32 dist_vec;
|
|
|
|
f32 dist_speed;
|
|
|
|
f32 acc_vertical_x;
|
|
|
|
f32 acc_vertical_y;
|
2016-04-25 20:33:48 +02:00
|
|
|
u8 device_type;
|
2017-09-24 07:20:10 +02:00
|
|
|
s8 wpad_error;
|
|
|
|
s8 pos_valid;
|
2016-08-18 11:18:44 +02:00
|
|
|
u8 format;
|
2016-04-25 20:33:48 +02:00
|
|
|
|
|
|
|
union
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
f32 stick_x;
|
|
|
|
f32 stick_y;
|
|
|
|
} nunchuck;
|
|
|
|
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
u32 btns_h;
|
|
|
|
u32 btns_d;
|
|
|
|
u32 btns_r;
|
|
|
|
f32 lstick_x;
|
|
|
|
f32 lstick_y;
|
|
|
|
f32 rstick_x;
|
|
|
|
f32 rstick_y;
|
|
|
|
f32 ltrigger;
|
|
|
|
f32 rtrigger;
|
|
|
|
} classic;
|
|
|
|
|
2016-08-18 11:18:44 +02:00
|
|
|
struct
|
|
|
|
{
|
|
|
|
u32 btns_h;
|
|
|
|
u32 btns_d;
|
|
|
|
u32 btns_r;
|
|
|
|
f32 lstick_x;
|
|
|
|
f32 lstick_y;
|
|
|
|
f32 rstick_x;
|
|
|
|
f32 rstick_y;
|
2017-04-23 15:21:47 +02:00
|
|
|
s32 charging;
|
|
|
|
s32 wired;
|
2016-08-18 11:18:44 +02:00
|
|
|
} pro;
|
|
|
|
|
2016-04-25 20:33:48 +02:00
|
|
|
u32 unused_6[20];
|
|
|
|
};
|
|
|
|
u32 unused_7[16];
|
|
|
|
} KPADData;
|
2017-03-30 17:51:11 +02:00
|
|
|
|
|
|
|
typedef struct WPADReadData_ {
|
|
|
|
u8 unknown[40];
|
|
|
|
u8 dev;
|
|
|
|
u8 err;
|
|
|
|
u8 unknown1[2];
|
|
|
|
u32 buttons;
|
|
|
|
s16 l_stick_x;
|
|
|
|
s16 l_stick_y;
|
|
|
|
s16 r_stick_x;
|
|
|
|
s16 r_stick_y;
|
|
|
|
u8 unknown2[8];
|
|
|
|
u8 fmt;
|
|
|
|
}WPADReadData;
|
|
|
|
|
|
|
|
typedef WPADReadData KPADUnifiedWpadData;
|
|
|
|
|
2016-08-18 11:18:44 +02:00
|
|
|
void InitPadScoreFunctionPointers(void);
|
|
|
|
void InitAcquirePadScore(void);
|
2016-04-25 20:33:48 +02:00
|
|
|
|
2017-04-23 15:21:47 +02:00
|
|
|
typedef void (* wpad_sampling_callback_t)(s32 chan);
|
2017-03-30 17:51:11 +02:00
|
|
|
typedef void (* wpad_extension_callback_t)(s32 chan, s32 status);
|
2016-04-25 20:33:48 +02:00
|
|
|
typedef void (* wpad_connect_callback_t)(s32 chan, s32 status);
|
|
|
|
|
|
|
|
extern void (* KPADInit)(void);
|
2016-08-18 11:18:44 +02:00
|
|
|
extern void (* WPADInit)(void);
|
2016-04-25 20:33:48 +02:00
|
|
|
extern s32 (* WPADProbe)(s32 chan, u32 * pad_type);
|
|
|
|
extern s32 (* WPADSetDataFormat)(s32 chan, s32 format);
|
|
|
|
extern void (* WPADEnableURCC)(s32 enable);
|
|
|
|
extern void (* WPADRead)(s32 chan, void * data);
|
2017-08-30 04:12:36 +02:00
|
|
|
extern s32 (* KPADRead)(s32 chan, KPADData * data, u32 size);
|
2016-08-18 11:18:44 +02:00
|
|
|
extern s32 (* KPADReadEx)(s32 chan, KPADData * data, u32 size, s32 *error);
|
|
|
|
extern void (*WPADSetAutoSleepTime)(u8 time);
|
|
|
|
extern void (*WPADDisconnect)( s32 chan );
|
2016-04-25 20:33:48 +02:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif // __PAD_SCORE_FUNCTIONS_H_
|