Joystick fixed for Nunchuk and Classic controller (Y axis was inverted). Someone still needs to check gamecube. Makefile fixed.
This commit is contained in:
parent
554c1977b9
commit
3b4c232b4d
|
@ -64,8 +64,7 @@ install:
|
||||||
@cp -frv include/*.* $(INSTALL_HEADER_DIR)/SDL
|
@cp -frv include/*.* $(INSTALL_HEADER_DIR)/SDL
|
||||||
|
|
||||||
# Used to install library by pressing Alt+R in Programmer's Notepad
|
# Used to install library by pressing Alt+R in Programmer's Notepad
|
||||||
run:
|
run: all install
|
||||||
all install
|
|
||||||
|
|
||||||
test-make:
|
test-make:
|
||||||
$(MAKE) -f Makefile.test install
|
$(MAKE) -f Makefile.test install
|
||||||
|
|
|
@ -49,6 +49,9 @@
|
||||||
|
|
||||||
#define JOYNAMELEN 10
|
#define JOYNAMELEN 10
|
||||||
|
|
||||||
|
#define AXIS_MIN -32768 /* minimum value for axis coordinate */
|
||||||
|
#define AXIS_MAX 32767 /* maximum value for axis coordinate */
|
||||||
|
|
||||||
typedef struct joystick_paddata_t
|
typedef struct joystick_paddata_t
|
||||||
{
|
{
|
||||||
u16 prev_buttons;
|
u16 prev_buttons;
|
||||||
|
@ -204,7 +207,7 @@ int SDL_SYS_JoystickOpen(SDL_Joystick *joystick)
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static s8 WPAD_Stick(u8 chan, u8 right, int axis)
|
static s16 WPAD_Stick(u8 chan, u8 right, int axis)
|
||||||
{
|
{
|
||||||
float mag = 0.0;
|
float mag = 0.0;
|
||||||
float ang = 0.0;
|
float ang = 0.0;
|
||||||
|
@ -248,7 +251,7 @@ static s8 WPAD_Stick(u8 chan, u8 right, int axis)
|
||||||
else // y-axis
|
else // y-axis
|
||||||
val = mag * cos((PI * ang)/180.0f);
|
val = mag * cos((PI * ang)/180.0f);
|
||||||
|
|
||||||
return (s8)(val * 128.0f);
|
return (s16)(val * 128.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _HandleWiiJoystickUpdate(SDL_Joystick* joystick)
|
static void _HandleWiiJoystickUpdate(SDL_Joystick* joystick)
|
||||||
|
@ -309,13 +312,21 @@ static void _HandleWiiJoystickUpdate(SDL_Joystick* joystick)
|
||||||
axis = WPAD_Stick(joystick->index, 0, 0);
|
axis = WPAD_Stick(joystick->index, 0, 0);
|
||||||
if(prev_state->wiimote.classicL_stickX != axis)
|
if(prev_state->wiimote.classicL_stickX != axis)
|
||||||
{
|
{
|
||||||
SDL_PrivateJoystickAxis(joystick, 0, axis << 8);
|
s16 value;
|
||||||
|
if (axis >= 128) value = AXIS_MAX;
|
||||||
|
else if (axis <=-128) value = AXIS_MIN;
|
||||||
|
else value = axis << 8;
|
||||||
|
SDL_PrivateJoystickAxis(joystick, 0, value);
|
||||||
prev_state->wiimote.classicL_stickX = axis;
|
prev_state->wiimote.classicL_stickX = axis;
|
||||||
}
|
}
|
||||||
axis = WPAD_Stick(joystick->index, 0, 1);
|
axis = WPAD_Stick(joystick->index, 0, 1);
|
||||||
if(prev_state->wiimote.classicL_stickY != axis)
|
if(prev_state->wiimote.classicL_stickY != axis)
|
||||||
{
|
{
|
||||||
SDL_PrivateJoystickAxis(joystick, 1, axis << 8);
|
s16 value;
|
||||||
|
if (axis >= 128) value = AXIS_MAX;
|
||||||
|
else if (axis <=-128) value = AXIS_MIN;
|
||||||
|
else value = axis << 8;
|
||||||
|
SDL_PrivateJoystickAxis(joystick, 1, -value);
|
||||||
prev_state->wiimote.classicL_stickY = axis;
|
prev_state->wiimote.classicL_stickY = axis;
|
||||||
}
|
}
|
||||||
axis = WPAD_Stick(joystick->index, 1, 0);
|
axis = WPAD_Stick(joystick->index, 1, 0);
|
||||||
|
@ -348,13 +359,21 @@ static void _HandleWiiJoystickUpdate(SDL_Joystick* joystick)
|
||||||
axis = WPAD_Stick(joystick->index, 0, 0);
|
axis = WPAD_Stick(joystick->index, 0, 0);
|
||||||
if(prev_state->wiimote.nunchuk_stickX != axis)
|
if(prev_state->wiimote.nunchuk_stickX != axis)
|
||||||
{
|
{
|
||||||
SDL_PrivateJoystickAxis(joystick, 0, axis << 8);
|
s16 value;
|
||||||
|
if (axis >= 128) value = AXIS_MAX;
|
||||||
|
else if (axis <=-128) value = AXIS_MIN;
|
||||||
|
else value = axis << 8;
|
||||||
|
SDL_PrivateJoystickAxis(joystick, 0, value);
|
||||||
prev_state->wiimote.nunchuk_stickX = axis;
|
prev_state->wiimote.nunchuk_stickX = axis;
|
||||||
}
|
}
|
||||||
axis = WPAD_Stick(joystick->index, 0, 1);
|
axis = WPAD_Stick(joystick->index, 0, 1);
|
||||||
if(prev_state->wiimote.nunchuk_stickY != axis)
|
if(prev_state->wiimote.nunchuk_stickY != axis)
|
||||||
{
|
{
|
||||||
SDL_PrivateJoystickAxis(joystick, 1, axis << 8);
|
s16 value;
|
||||||
|
if (axis >= 128) value = AXIS_MAX;
|
||||||
|
else if (axis <=-128) value = AXIS_MIN;
|
||||||
|
else value = axis << 8;
|
||||||
|
SDL_PrivateJoystickAxis(joystick, 1, -value);
|
||||||
prev_state->wiimote.nunchuk_stickY = axis;
|
prev_state->wiimote.nunchuk_stickY = axis;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue