From 10409679c1070b086e9090240e507e4b41168896 Mon Sep 17 00:00:00 2001 From: Matthieu Milan Date: Sun, 17 Nov 2019 18:01:44 +0100 Subject: [PATCH] Fix wonky movements when using left stick on Vita #2 --- CMakeLists.txt | 2 +- system_sdl2.cpp | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c0d0ff1..32e2e71 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,7 +61,7 @@ if(SWITCH_LIBNX) add_definitions(-D__SWITCH__) add_custom_target(${CMAKE_PROJECT_NAME}.nro DEPENDS ${CMAKE_PROJECT_NAME} - COMMAND nacptool --create "Heart of Darkness" "cyx, usineur" "0.2.0" ${CMAKE_PROJECT_NAME}.nacp + COMMAND nacptool --create "Heart of Darkness" "cyx, usineur" "0.2.2" ${CMAKE_PROJECT_NAME}.nacp COMMAND elf2nro ${CMAKE_PROJECT_NAME} ${CMAKE_PROJECT_NAME}.nro --icon=${CMAKE_SOURCE_DIR}/res/icon.jpg --nacp=${CMAKE_PROJECT_NAME}.nacp ) add_custom_target(nxlink diff --git a/system_sdl2.cpp b/system_sdl2.cpp index 594ed37..9bef279 100644 --- a/system_sdl2.cpp +++ b/system_sdl2.cpp @@ -12,6 +12,10 @@ static const char *kIconBmp = "icon.bmp"; +#ifdef __vita__ +static bool axis[4]= { false, false, false, false }; +#endif + static int _scalerMultiplier = 3; static const Scaler *_scaler = &scaler_xbr; static const float _gamma = 1.f; @@ -496,12 +500,24 @@ void System_SDL2::processEvents() { case SDL_CONTROLLER_AXIS_RIGHTX: if (ev.caxis.value < -kJoystickCommitValue) { pad.mask |= SYS_INP_LEFT; +#ifdef __vita__ + axis[0] = true; + } else if (axis[0]) { + axis[0] = false; +#else } else { +#endif pad.mask &= ~SYS_INP_LEFT; } if (ev.caxis.value > kJoystickCommitValue) { pad.mask |= SYS_INP_RIGHT; +#ifdef __vita__ + axis[1] = true; + } else if (axis[1]) { + axis[1] = false; +#else } else { +#endif pad.mask &= ~SYS_INP_RIGHT; } break; @@ -509,12 +525,24 @@ void System_SDL2::processEvents() { case SDL_CONTROLLER_AXIS_RIGHTY: if (ev.caxis.value < -kJoystickCommitValue) { pad.mask |= SYS_INP_UP; +#ifdef __vita__ + axis[2] = true; + } else if (axis[2]) { + axis[2] = false; +#else } else { +#endif pad.mask &= ~SYS_INP_UP; } if (ev.caxis.value > kJoystickCommitValue) { pad.mask |= SYS_INP_DOWN; +#ifdef __vita__ + axis[3] = true; + } else if (axis[3]) { + axis[3] = false; +#else } else { +#endif pad.mask &= ~SYS_INP_DOWN; } break;