--- 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

