diff --git a/source/ngc/gui/gui.h b/source/ngc/gui/gui.h index 4ace717..0aed4a8 100644 --- a/source/ngc/gui/gui.h +++ b/source/ngc/gui/gui.h @@ -196,11 +196,19 @@ class GuiTrigger //!\param wiibtns Wii controller trigger button(s) - classic controller buttons are considered separately //!\param gcbtns GameCube controller trigger button(s) void SetButtonOnlyInFocusTrigger(s32 ch, u32 wiibtns, u16 gcbtns); - //!Get X/Y value from Wii Joystick (classic, nunchuk) input - //!\param right Controller stick (left = 0, right = 1) + //!Get X or Y value from Wii Joystick (classic, nunchuk) input + //!\param stick Controller stick (left = 0, right = 1) //!\param axis Controller stick axis (x-axis = 0, y-axis = 1) //!\return Stick value - s8 WPAD_Stick(u8 right, int axis); + s8 WPAD_Stick(u8 stick, int axis); + //!Get X value from Wii Joystick (classic, nunchuk) input + //!\param stick Controller stick (left = 0, right = 1) + //!\return Stick value + s8 WPAD_StickX(u8 stick); + //!Get Y value from Wii Joystick (classic, nunchuk) input + //!\param stick Controller stick (left = 0, right = 1) + //!\return Stick value + s8 WPAD_StickY(u8 stick); //!Move menu selection left (via pad/joystick). Allows scroll delay and button overriding //!\return true if selection should be moved left, false otherwise bool Left(); diff --git a/source/ngc/gui/gui_trigger.cpp b/source/ngc/gui/gui_trigger.cpp index 3ee7128..591a949 100644 --- a/source/ngc/gui/gui_trigger.cpp +++ b/source/ngc/gui/gui_trigger.cpp @@ -87,7 +87,7 @@ void GuiTrigger::SetButtonOnlyInFocusTrigger(s32 ch, u32 wiibtns, u16 gcbtns) * Get X/Y value from Wii Joystick (classic, nunchuk) input ***************************************************************************/ -s8 GuiTrigger::WPAD_Stick(u8 right, int axis) +s8 GuiTrigger::WPAD_Stick(u8 stick, int axis) { #ifdef HW_RVL @@ -98,7 +98,7 @@ s8 GuiTrigger::WPAD_Stick(u8 right, int axis) { case WPAD_EXP_NUNCHUK: case WPAD_EXP_GUITARHERO3: - if (right == 0) + if (stick == 0) { mag = wpad->exp.nunchuk.js.mag; ang = wpad->exp.nunchuk.js.ang; @@ -106,7 +106,7 @@ s8 GuiTrigger::WPAD_Stick(u8 right, int axis) break; case WPAD_EXP_CLASSIC: - if (right == 0) + if (stick == 0) { mag = wpad->exp.classic.ljs.mag; ang = wpad->exp.classic.ljs.ang; @@ -139,6 +139,16 @@ s8 GuiTrigger::WPAD_Stick(u8 right, int axis) #endif } +s8 GuiTrigger::WPAD_StickX(u8 stick) +{ + return WPAD_Stick(stick, 0); +} + +s8 GuiTrigger::WPAD_StickY(u8 stick) +{ + return WPAD_Stick(stick, 1); +} + bool GuiTrigger::Left() { u32 wiibtn = GCSettings.WiimoteOrientation ? WPAD_BUTTON_UP : WPAD_BUTTON_LEFT; diff --git a/source/ngc/input.cpp b/source/ngc/input.cpp index ffcc7d1..2bc8cf9 100644 --- a/source/ngc/input.cpp +++ b/source/ngc/input.cpp @@ -55,7 +55,7 @@ static int cursor_y[5] = {0,0,0,0,0}; #define ASSIGN_BUTTON_FALSE( keycode, snescmd ) \ S9xMapButton( keycode, cmd = S9xGetCommandT(snescmd), false) -int scopeTurbo = 0; // tracks whether superscope turbo is on or off +static int scopeTurbo = 0; // tracks whether superscope turbo is on or off u32 btnmap[4][4][12]; // button mapping void ResetControls(int consoleCtrl, int wiiCtrl) @@ -289,26 +289,30 @@ void DoRumble(int i) * * Updates X/Y coordinates for Superscope/mouse/justifier position ***************************************************************************/ -void UpdateCursorPosition (int chan, int &pos_x, int &pos_y) +static void UpdateCursorPosition (int chan, int &pos_x, int &pos_y) { #define SCOPEPADCAL 20 // gc left joystick - if (userInput[chan].pad.stickX > SCOPEPADCAL){ + if (userInput[chan].pad.stickX > SCOPEPADCAL) + { pos_x += (userInput[chan].pad.stickX*1.0)/SCOPEPADCAL; if (pos_x > 256) pos_x = 256; } - if (userInput[chan].pad.stickX < -SCOPEPADCAL){ + if (userInput[chan].pad.stickX < -SCOPEPADCAL) + { pos_x -= (userInput[chan].pad.stickX*-1.0)/SCOPEPADCAL; if (pos_x < 0) pos_x = 0; } - if (userInput[chan].pad.stickY < -SCOPEPADCAL){ + if (userInput[chan].pad.stickY < -SCOPEPADCAL) + { pos_y += (userInput[chan].pad.stickY*-1.0)/SCOPEPADCAL; if (pos_y > 224) pos_y = 224; } - if (userInput[chan].pad.stickY > SCOPEPADCAL){ + if (userInput[chan].pad.stickY > SCOPEPADCAL) + { pos_y -= (userInput[chan].pad.stickY*1.0)/SCOPEPADCAL; if (pos_y < 0) pos_y = 0; } @@ -321,23 +325,27 @@ void UpdateCursorPosition (int chan, int &pos_x, int &pos_y) } else { - signed char wm_ax = userInput[chan].WPAD_Stick(0,0); - signed char wm_ay = userInput[chan].WPAD_Stick(0,1); + s8 wm_ax = userInput[chan].WPAD_StickX(0); + s8 wm_ay = userInput[chan].WPAD_StickY(0); - if (wm_ax > SCOPEPADCAL){ + if (wm_ax > SCOPEPADCAL) + { pos_x += (wm_ax*1.0)/SCOPEPADCAL; if (pos_x > 256) pos_x = 256; } - if (wm_ax < -SCOPEPADCAL){ + if (wm_ax < -SCOPEPADCAL) + { pos_x -= (wm_ax*-1.0)/SCOPEPADCAL; if (pos_x < 0) pos_x = 0; } - if (wm_ay < -SCOPEPADCAL){ + if (wm_ay < -SCOPEPADCAL) + { pos_y += (wm_ay*-1.0)/SCOPEPADCAL; if (pos_y > 224) pos_y = 224; } - if (wm_ay > SCOPEPADCAL){ + if (wm_ay > SCOPEPADCAL) + { pos_y -= (wm_ay*1.0)/SCOPEPADCAL; if (pos_y < 0) pos_y = 0; } @@ -352,7 +360,7 @@ void UpdateCursorPosition (int chan, int &pos_x, int &pos_y) * Reads the changes (buttons pressed, etc) from a controller and reports * these changes to Snes9x ***************************************************************************/ -void decodepad (int chan) +static void decodepad (int chan) { int i, offset; float t; @@ -362,12 +370,9 @@ void decodepad (int chan) u32 jp = userInput[chan].pad.btns_h; #ifdef HW_RVL - s8 wm_ax = 0; - s8 wm_ay = 0; - u32 wp = 0; - wm_ax = userInput[chan].WPAD_Stick(0,0); - wm_ay = userInput[chan].WPAD_Stick(0,1); - wp = userInput[chan].wpad->btns_h; + s8 wm_ax = userInput[chan].WPAD_StickX(0); + s8 wm_ay = userInput[chan].WPAD_StickY(0); + u32 wp = userInput[chan].wpad->btns_h; u32 exp_type; if ( WPAD_Probe(chan, &exp_type) != 0 ) @@ -607,7 +612,7 @@ void NGCReportButtons () Settings.TurboMode = ( userInput[0].pad.substickX > 70 || - userInput[0].WPAD_Stick(1,0) > 70 + userInput[0].WPAD_StickX(1) > 70 ); // RIGHT on c-stick and on classic controller right joystick /* Check for menu: diff --git a/source/ngc/input.h b/source/ngc/input.h index 515ab74..45524a1 100644 --- a/source/ngc/input.h +++ b/source/ngc/input.h @@ -27,9 +27,6 @@ extern int rumbleRequest[4]; void ResetControls(int cc = -1, int wc = -1); void ShutoffRumble(); void DoRumble(int i); -s8 WPAD_Stick(u8 chan, u8 right, int axis); -void UpdateCursorPosition (int pad, int &pos_x, int &pos_y); -void decodepad (int pad); void NGCReportButtons (); void SetControllers (); void SetDefaultButtonMap ();