diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 4d383f60f341ca83ddbb5193ce3cae2b43c888c4..2bd45b114c56ffbf32cbb1e6c221557acdcb291b 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -912,7 +912,8 @@ void D_RegisterClientCommands(void) CV_RegisterVar(&cv_driftaxis2); CV_RegisterVar(&cv_driftaxis3); CV_RegisterVar(&cv_driftaxis4); - CV_RegisterVar(&cv_deadzone); + CV_RegisterVar(&cv_xdeadzone); + CV_RegisterVar(&cv_ydeadzone); CV_RegisterVar(&cv_deadzone2); CV_RegisterVar(&cv_deadzone3); CV_RegisterVar(&cv_deadzone4); diff --git a/src/g_game.c b/src/g_game.c index 0b0631f05e004677542b4407e8e8ac0e5367bf1d..d125f265293d415eca7df0d9a5be5094e4ae1b42 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -493,7 +493,8 @@ consvar_t cv_aimaxis = {"joyaxis_aim", "Y-Axis", CV_SAVE, joyaxis_cons_t, NULL, consvar_t cv_lookaxis = {"joyaxis_look", "None", CV_SAVE, joyaxis_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_fireaxis = {"joyaxis_fire", "None", CV_SAVE, joyaxis_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_driftaxis = {"joyaxis_drift", "None", CV_SAVE, joyaxis_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; -consvar_t cv_deadzone = {"joy_deadzone", "0.5", CV_FLOAT|CV_SAVE, deadzone_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_xdeadzone = {"joy_xdeadzone", "0.3", CV_FLOAT|CV_SAVE, deadzone_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_ydeadzone = {"joy_ydeadzone", "0.5", CV_FLOAT|CV_SAVE, deadzone_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_turnaxis2 = {"joyaxis2_turn", "X-Axis", CV_SAVE, joyaxis_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_moveaxis2 = {"joyaxis2_move", "None", CV_SAVE, joyaxis_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; @@ -930,32 +931,45 @@ static INT32 Joy1Axis(axis_input_e axissel) { axisval /= 2; retaxis = joyxmove[axisval]; + + if (retaxis < (-JOYAXISRANGE)) + retaxis = -JOYAXISRANGE; + if (retaxis > (+JOYAXISRANGE)) + retaxis = +JOYAXISRANGE; + if (!Joystick.bGamepadStyle && axissel < AXISDEAD) + { + const INT32 jdeadzone = ((JOYAXISRANGE-1) * cv_xdeadzone.value) >> FRACBITS; + if (abs(retaxis) <= jdeadzone) + return 0; + } + if (flp) retaxis = -retaxis; //flip it around + return retaxis; } else { axisval--; axisval /= 2; retaxis = joyymove[axisval]; + + if (retaxis < (-JOYAXISRANGE)) + retaxis = -JOYAXISRANGE; + if (retaxis > (+JOYAXISRANGE)) + retaxis = +JOYAXISRANGE; + if (!Joystick.bGamepadStyle && axissel < AXISDEAD) + { + const INT32 jdeadzone = ((JOYAXISRANGE-1) * cv_ydeadzone.value) >> FRACBITS; + if (abs(retaxis) <= jdeadzone) + return 0; + } + if (flp) retaxis = -retaxis; //flip it around + return retaxis; + } } #ifdef _arch_dreamcast skipDC: #endif - if (retaxis < (-JOYAXISRANGE)) - retaxis = -JOYAXISRANGE; - if (retaxis > (+JOYAXISRANGE)) - retaxis = +JOYAXISRANGE; - if (!Joystick.bGamepadStyle && axissel < AXISDEAD) - { - const INT32 jdeadzone = ((JOYAXISRANGE-1) * cv_deadzone.value) >> FRACBITS; - if (abs(retaxis) <= jdeadzone) - return 0; - } - if (flp) retaxis = -retaxis; //flip it around - return retaxis; -} - static INT32 Joy2Axis(axis_input_e axissel) { INT32 retaxis; diff --git a/src/g_game.h b/src/g_game.h index d77f4268e704662498a282c8acad53f1d9ad8a00..05225164a4e40adb4e71a1d778dc2f8789c7df21 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -118,7 +118,7 @@ extern consvar_t cv_invertmouse/*, cv_alwaysfreelook, cv_chasefreelook, cv_mouse extern consvar_t cv_invertmouse2/*, cv_alwaysfreelook2, cv_chasefreelook2, cv_mousemove2*/; extern consvar_t cv_useranalog, cv_useranalog2, cv_useranalog3, cv_useranalog4; extern consvar_t cv_analog, cv_analog2, cv_analog3, cv_analog4; -extern consvar_t cv_turnaxis,cv_moveaxis,cv_brakeaxis,cv_aimaxis,cv_lookaxis,cv_fireaxis,cv_driftaxis,cv_deadzone; +extern consvar_t cv_turnaxis,cv_moveaxis,cv_brakeaxis,cv_aimaxis,cv_lookaxis,cv_fireaxis,cv_driftaxis,cv_xdeadzone,cv_ydeadzone; extern consvar_t cv_turnaxis2,cv_moveaxis2,cv_brakeaxis2,cv_aimaxis2,cv_lookaxis2,cv_fireaxis2,cv_driftaxis2,cv_deadzone2; extern consvar_t cv_turnaxis3,cv_moveaxis3,cv_brakeaxis3,cv_aimaxis3,cv_lookaxis3,cv_fireaxis3,cv_driftaxis3,cv_deadzone3; extern consvar_t cv_turnaxis4,cv_moveaxis4,cv_brakeaxis4,cv_aimaxis4,cv_lookaxis4,cv_fireaxis4,cv_driftaxis4,cv_deadzone4; diff --git a/src/m_menu.c b/src/m_menu.c index 3243e0fc6694582248b0f9cfebfd99c50902b419..bdf2048c0bad9fa55aa005e8d5c43d3542b7effe 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -2563,7 +2563,7 @@ boolean M_Responder(event_t *ev) { if (ev->type == ev_joystick && ev->data1 == 0 && joywait < I_GetTime()) { - const INT32 jdeadzone = ((JOYAXISRANGE-1) * cv_deadzone.value) >> FRACBITS; + const INT32 jdeadzone = ((JOYAXISRANGE-1) * cv_ydeadzone.value) >> FRACBITS; if (ev->data3 != INT32_MAX) { if (Joystick.bGamepadStyle || abs(ev->data3) > jdeadzone)