Fix controller bug (fixes MK64 menu "can't select anything other than 1p and 4p and 50cc" bug)
This commit is contained in:
@@ -302,8 +302,6 @@ void PIF::EepromWrite(u8* cmd, u8* res, const Mem& mem) {
|
|||||||
#define GET_AXIS(gamecontroller, axis) SDL_GameControllerGetAxis(gamecontroller, axis)
|
#define GET_AXIS(gamecontroller, axis) SDL_GameControllerGetAxis(gamecontroller, axis)
|
||||||
|
|
||||||
void PIF::UpdateController() {
|
void PIF::UpdateController() {
|
||||||
s8 xaxis = 0, yaxis = 0;
|
|
||||||
|
|
||||||
if(gamepadConnected) {
|
if(gamepadConnected) {
|
||||||
bool A = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_A);
|
bool A = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_A);
|
||||||
bool B = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_X);
|
bool B = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_X);
|
||||||
@@ -336,11 +334,25 @@ void PIF::UpdateController() {
|
|||||||
joybusDevices[channel].controller.c_left = CLEFT;
|
joybusDevices[channel].controller.c_left = CLEFT;
|
||||||
joybusDevices[channel].controller.c_right = CRIGHT;
|
joybusDevices[channel].controller.c_right = CRIGHT;
|
||||||
|
|
||||||
xaxis = (s8) std::clamp<s16>(GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_LEFTX), -86, 86);
|
float xclamped = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_LEFTX);
|
||||||
yaxis = (s8) std::clamp<s16>(GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_LEFTY), -86, 86);
|
if(xclamped < 0) {
|
||||||
|
xclamped /= float(std::abs(SDL_JOYSTICK_AXIS_MIN));
|
||||||
|
} else {
|
||||||
|
xclamped /= SDL_JOYSTICK_AXIS_MAX;
|
||||||
|
}
|
||||||
|
|
||||||
joybusDevices[channel].controller.joy_x = xaxis;
|
xclamped *= 86;
|
||||||
joybusDevices[channel].controller.joy_y = -yaxis;
|
|
||||||
|
float yclamped = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_LEFTY);
|
||||||
|
if(yclamped < 0) {
|
||||||
|
yclamped /= float(std::abs(SDL_JOYSTICK_AXIS_MIN));
|
||||||
|
} else {
|
||||||
|
yclamped /= SDL_JOYSTICK_AXIS_MAX;
|
||||||
|
}
|
||||||
|
yclamped *= 86;
|
||||||
|
|
||||||
|
joybusDevices[channel].controller.joy_x = xclamped;
|
||||||
|
joybusDevices[channel].controller.joy_y = -yclamped;
|
||||||
|
|
||||||
if (joybusDevices[channel].controller.joy_reset) {
|
if (joybusDevices[channel].controller.joy_reset) {
|
||||||
joybusDevices[channel].controller.start = false;
|
joybusDevices[channel].controller.start = false;
|
||||||
@@ -365,6 +377,7 @@ void PIF::UpdateController() {
|
|||||||
joybusDevices[channel].controller.c_left = state[SDL_SCANCODE_K];
|
joybusDevices[channel].controller.c_left = state[SDL_SCANCODE_K];
|
||||||
joybusDevices[channel].controller.c_right = state[SDL_SCANCODE_L];
|
joybusDevices[channel].controller.c_right = state[SDL_SCANCODE_L];
|
||||||
|
|
||||||
|
s16 xaxis = 0, yaxis = 0;
|
||||||
if (state[SDL_SCANCODE_LEFT]) {
|
if (state[SDL_SCANCODE_LEFT]) {
|
||||||
xaxis = -86;
|
xaxis = -86;
|
||||||
} else if (state[SDL_SCANCODE_RIGHT]) {
|
} else if (state[SDL_SCANCODE_RIGHT]) {
|
||||||
|
|||||||
Reference in New Issue
Block a user