--- prboom-2.2.6.orig/src/SDL/i_joy.c 2005-01-31 18:17:32.000000000 +0900 +++ prboom-2.2.6/src/SDL/i_joy.c 2005-01-31 14:34:19.341477664 +0900 @@ -58,6 +58,7 @@ lprintf(LO_DEBUG, "I_EndJoystick : closing joystick\n"); } +#define SIGN_OR_ZERO(x) ( x == 0 ? 0 : ( x < 0 ? -1 : 1 ) ) void I_PollJoystick(void) { #ifdef HAVE_SDL_JOYSTICKGETAXIS @@ -71,12 +72,10 @@ (SDL_JoystickGetButton(joystick, 1)<<1) | (SDL_JoystickGetButton(joystick, 2)<<2) | (SDL_JoystickGetButton(joystick, 3)<<3); - axis_value = SDL_JoystickGetAxis(joystick, 0) / 3000; - if (abs(axis_value)<10) axis_value=0; - ev.data2 = axis_value; - axis_value = SDL_JoystickGetAxis(joystick, 1) / 3000; - if (abs(axis_value)<10) axis_value=0; - ev.data3 = axis_value; + axis_value = SDL_JoystickGetAxis(joystick, 0) / 1000; + ev.data2 = SIGN_OR_ZERO(axis_value); + axis_value = SDL_JoystickGetAxis(joystick, 1) / 1000; + ev.data3 = SIGN_OR_ZERO(axis_value); D_PostEvent(&ev); #endif