From a2d9ca3e47b788080dccee4edbf0fb46983097eb Mon Sep 17 00:00:00 2001 From: Sunguk Lee Date: Fri, 30 Sep 2016 23:53:13 +0900 Subject: [PATCH] (Vita) Support L2/R2 on PSTV --- defines/psp_defines.h | 15 +++++++++++++-- input/drivers_joypad/psp_joypad.c | 8 +++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/defines/psp_defines.h b/defines/psp_defines.h index 6d8bd5870f..c716d4886a 100644 --- a/defines/psp_defines.h +++ b/defines/psp_defines.h @@ -81,8 +81,12 @@ int sceClibPrintf ( const char * format, ... ); #define PSP_CTRL_SQUARE SCE_CTRL_SQUARE #define PSP_CTRL_CROSS SCE_CTRL_CROSS #define PSP_CTRL_CIRCLE SCE_CTRL_CIRCLE -#define PSP_CTRL_L SCE_CTRL_LTRIGGER -#define PSP_CTRL_R SCE_CTRL_RTRIGGER +#define PSP_CTRL_L SCE_CTRL_L1 +#define PSP_CTRL_R SCE_CTRL_R1 +#define PSP_CTRL_L2 SCE_CTRL_LTRIGGER +#define PSP_CTRL_R2 SCE_CTRL_RTRIGGER +#define PSP_CTRL_L3 SCE_CTRL_L3 +#define PSP_CTRL_R3 SCE_CTRL_R3 #else #define DEFAULT_SAMPLING_MODE (SCE_CTRL_MODE_DIGITALANALOG) @@ -100,7 +104,13 @@ int sceClibPrintf ( const char * format, ... ); #define PSP_CTRL_R SCE_CTRL_R #endif +#if defined(VITA) +#define CtrlSetSamplingMode(mode) sceCtrlSetSamplingModeExt(mode) +#define CtrlPeekBufferPositive(port, pad_data, bufs) sceCtrlReadBufferPositiveExt2(port, pad_data, bufs) +#else +#define CtrlSetSamplingMode(mode) sceCtrlSetSamplingMode(mode) #define CtrlPeekBufferPositive(port, pad_data, bufs) sceCtrlPeekBufferPositive(port, pad_data, bufs) +#endif #elif defined(PSP) @@ -115,6 +125,7 @@ int sceClibPrintf ( const char * format, ... ); #define DEFAULT_SAMPLING_MODE (PSP_CTRL_MODE_ANALOG) +#define CtrlSetSamplingMode(mode) sceCtrlSetSamplingMode(mode) #define CtrlPeekBufferPositive(port, pad_data, bufs) sceCtrlPeekBufferPositive(pad_data, bufs) #endif diff --git a/input/drivers_joypad/psp_joypad.c b/input/drivers_joypad/psp_joypad.c index 1eae1fbda5..f811d0ac66 100644 --- a/input/drivers_joypad/psp_joypad.c +++ b/input/drivers_joypad/psp_joypad.c @@ -134,7 +134,7 @@ static void psp_joypad_poll(void) sceCtrlSetSamplingCycle(0); #endif - sceCtrlSetSamplingMode(DEFAULT_SAMPLING_MODE); + CtrlSetSamplingMode(DEFAULT_SAMPLING_MODE); BIT64_CLEAR(lifecycle_state, RARCH_MENU_TOGGLE); @@ -176,6 +176,12 @@ static void psp_joypad_poll(void) pad_state[i] |= (STATE_BUTTON(state_tmp) & PSP_CTRL_CIRCLE) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_A) : 0; pad_state[i] |= (STATE_BUTTON(state_tmp) & PSP_CTRL_R) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_R) : 0; pad_state[i] |= (STATE_BUTTON(state_tmp) & PSP_CTRL_L) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_L) : 0; +#if defined(VITA) + pad_state[i] |= (STATE_BUTTON(state_tmp) & PSP_CTRL_R2) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_R2) : 0; + pad_state[i] |= (STATE_BUTTON(state_tmp) & PSP_CTRL_L2) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_L2) : 0; + pad_state[i] |= (STATE_BUTTON(state_tmp) & PSP_CTRL_R3) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_R3) : 0; + pad_state[i] |= (STATE_BUTTON(state_tmp) & PSP_CTRL_L3) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_L3) : 0; +#endif analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT] [RETRO_DEVICE_ID_ANALOG_X] = (int16_t)(STATE_ANALOGLX(state_tmp)-128) * 256; analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT] [RETRO_DEVICE_ID_ANALOG_Y] = (int16_t)(STATE_ANALOGLY(state_tmp)-128) * 256;