From 04df044637f702110979ee65f46f1ce849d2b414 Mon Sep 17 00:00:00 2001 From: dborth Date: Thu, 15 Oct 2009 07:43:25 +0000 Subject: [PATCH] tidy up code --- source/ngc/gui/gui.h | 14 ++++-- source/ngc/gui/gui_trigger.cpp | 16 ++++-- source/ngc/input.cpp | 92 ++++++---------------------------- source/ngc/input.h | 1 - source/ngc/inputzelda.cpp | 19 +++---- 5 files changed, 50 insertions(+), 92 deletions(-) diff --git a/source/ngc/gui/gui.h b/source/ngc/gui/gui.h index d927484..43e3cfd 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 cd26b49..be36902 100644 --- a/source/ngc/input.cpp +++ b/source/ngc/input.cpp @@ -37,10 +37,10 @@ GuiTrigger userInput[4]; static int rumbleCount[4] = {0,0,0,0}; #endif -bool cartridgeRumble = false, possibleCartridgeRumble = false; -int gameRumbleCount = 0, menuRumbleCount = 0, rumbleCountAlready = 0; +static bool cartridgeRumble = false, possibleCartridgeRumble = false; +static int gameRumbleCount = 0, menuRumbleCount = 0, rumbleCountAlready = 0; -unsigned int vbapadmap[10]; // VBA controller buttons +static unsigned int vbapadmap[10]; // VBA controller buttons u32 btnmap[5][10]; // button mapping void ResetControls(int wiiCtrl) @@ -299,71 +299,14 @@ void systemGameRumbleOnlyFor(int OnlyRumbleForFrames) { gameRumbleCount = OnlyRumbleForFrames; } -void systemMenuRumble(int RumbleForFrames) { - if (RumbleForFrames > menuRumbleCount) menuRumbleCount = RumbleForFrames; -} - -/**************************************************************************** - * WPAD_Stick - * - * Get X/Y value from Wii Joystick (classic, nunchuk) input - ***************************************************************************/ - -s8 WPAD_Stick(u8 chan, u8 right, int axis) -{ - float mag = 0.0; - float ang = 0.0; - WPADData *data = WPAD_Data(chan); - - switch (data->exp.type) - { - case WPAD_EXP_NUNCHUK: - case WPAD_EXP_GUITARHERO3: - if (right == 0) - { - mag = data->exp.nunchuk.js.mag; - ang = data->exp.nunchuk.js.ang; - } - break; - - case WPAD_EXP_CLASSIC: - if (right == 0) - { - mag = data->exp.classic.ljs.mag; - ang = data->exp.classic.ljs.ang; - } - else - { - mag = data->exp.classic.rjs.mag; - ang = data->exp.classic.rjs.ang; - } - break; - - default: - break; - } - - /* calculate x/y value (angle need to be converted into radian) */ - if (mag > 1.0) mag = 1.0; - else if (mag < -1.0) mag = -1.0; - double val; - - if(axis == 0) // x-axis - val = mag * sin((PI * ang)/180.0f); - else // y-axis - val = mag * cos((PI * ang)/180.0f); - - return (s8)(val * 128.0f); -} - -u32 StandardMovement(unsigned short pad) +u32 StandardMovement(unsigned short chan) { u32 J = 0; - signed char pad_x = PAD_StickX (pad); - signed char pad_y = PAD_StickY (pad); + s8 pad_x = userInput[chan].pad.stickX; + s8 pad_y = userInput[chan].pad.stickY; #ifdef HW_RVL - signed char wm_ax = WPAD_Stick ((u8)pad, 0, 0); - signed char wm_ay = WPAD_Stick ((u8)pad, 0, 1); + s8 wm_ax = userInput[0].WPAD_StickX(0); + s8 wm_ay = userInput[0].WPAD_StickY(0); #endif /*** Gamecube Joystick input, same as normal @@ -714,10 +657,10 @@ u32 DecodeNunchuk(unsigned short pad) { u32 J = 0; #ifdef HW_RVL - WPADData * wp = WPAD_Data(pad); for (int i = 0; i < MAXJP; i++) { - if ( (wp->exp.type == WPAD_EXP_NUNCHUK) && (wp->btns_h & btnmap[CTRLR_NUNCHUK][i]) ) + if ( (userInput[pad].wpad->exp.type == WPAD_EXP_NUNCHUK) && + (userInput[pad].wpad->btns_h & btnmap[CTRLR_NUNCHUK][i]) ) J |= vbapadmap[i]; } #endif @@ -749,9 +692,8 @@ u32 PAD_ButtonsHeldFake(unsigned short pad) { u32 gc = 0; #ifdef HW_RVL - WPADData * wp = WPAD_Data(pad); - if (wp->exp.type == WPAD_EXP_CLASSIC) { - gc = CCToGC(wp->btns_h); + if (userInput[pad].wpad->exp.type == WPAD_EXP_CLASSIC) { + gc = CCToGC(userInput[pad].wpad->btns_h); } #endif return gc; @@ -760,9 +702,8 @@ u32 PAD_ButtonsDownFake(unsigned short pad) { u32 gc = 0; #ifdef HW_RVL - WPADData * wp = WPAD_Data(pad); - if (wp->exp.type == WPAD_EXP_CLASSIC) { - gc = CCToGC(wp->btns_d); + if (userInput[pad].wpad->exp.type == WPAD_EXP_CLASSIC) { + gc = CCToGC(userInput[pad].wpad->btns_d); } #endif return gc; @@ -771,9 +712,8 @@ u32 PAD_ButtonsUpFake(unsigned short pad) { u32 gc = 0; #ifdef HW_RVL - WPADData * wp = WPAD_Data(pad); - if (wp->exp.type == WPAD_EXP_CLASSIC) { - gc = CCToGC(wp->btns_u); + if (userInput[pad].wpad->exp.type == WPAD_EXP_CLASSIC) { + gc = CCToGC(userInput[pad].wpad->btns_u); } #endif return gc; diff --git a/source/ngc/input.h b/source/ngc/input.h index ed3c43d..02c442f 100644 --- a/source/ngc/input.h +++ b/source/ngc/input.h @@ -40,7 +40,6 @@ void DoRumble(int i); void systemGameRumble(int RumbleForFrames); void systemGameRumbleOnlyFor(int OnlyRumbleForFrames); void updateRumbleFrame(); -s8 WPAD_Stick(u8 chan,u8 right, int axis); u32 GetJoy(int which); bool MenuRequested(); void SetupPads(); diff --git a/source/ngc/inputzelda.cpp b/source/ngc/inputzelda.cpp index 4e524b2..077a407 100644 --- a/source/ngc/inputzelda.cpp +++ b/source/ngc/inputzelda.cpp @@ -23,6 +23,7 @@ #include "audio.h" #include "video.h" #include "input.h" +#include "gui/gui.h" #include "gameinput.h" #include "vbasupport.h" #include "wiiusbsupport.h" @@ -287,8 +288,8 @@ u32 LinksAwakeningInput(unsigned short pad) // aka Zelda DX // but with R as the B button like in Twilight Princess } else if (wp->exp.type == WPAD_EXP_CLASSIC) { J |= StandardDPad(pad); - signed char wm_sx = WPAD_Stick(pad,1,0); // CC right joystick - signed char wm_sy = WPAD_Stick(pad,1,1); // CC right joystick + s8 wm_sx = userInput[pad].WPAD_StickX(1); // CC right joystick + s8 wm_sy = userInput[pad].WPAD_StickY(1); // CC right joystick static bool StickReady = true; ActionButton = wp->btns_h & WPAD_CLASSIC_BUTTON_A; SwordButton = wp->btns_h & WPAD_CLASSIC_BUTTON_B; @@ -313,7 +314,7 @@ u32 LinksAwakeningInput(unsigned short pad) // aka Zelda DX // Gamecube controls are based on Twilight Princess for the Gamecube { u32 gc = PAD_ButtonsHeld(pad); - signed char gc_px = PAD_SubStickX(pad); + s8 gc_px = PAD_SubStickX(pad); if (gc_px > 70) J |= VBA_SPEED; ActionButton = ActionButton || gc & PAD_BUTTON_A; PullButton = PullButton || gc & PAD_TRIGGER_R; @@ -619,8 +620,8 @@ static u32 ZeldaOracleInput(bool Seasons, unsigned short pad) { // but with R as the B button like in Twilight Princess } else if (wp->exp.type == WPAD_EXP_CLASSIC) { J |= StandardDPad(pad); - signed char wm_sx = WPAD_Stick(pad,1,0); // CC right joystick - signed char wm_sy = WPAD_Stick(pad,1,1); // CC right joystick + s8 wm_sx = userInput[pad].WPAD_StickX(1); // CC right joystick + s8 wm_sy = userInput[pad].WPAD_StickY(1); // CC right joystick static bool StickReady = true; ActionButton = wp->btns_h & WPAD_CLASSIC_BUTTON_A; SwordButton = wp->btns_h & WPAD_CLASSIC_BUTTON_B; @@ -645,7 +646,7 @@ static u32 ZeldaOracleInput(bool Seasons, unsigned short pad) { { u32 gc = PAD_ButtonsHeld(pad); u32 pressed = PAD_ButtonsDown(pad); - signed char gc_px = PAD_SubStickX(pad); + s8 gc_px = PAD_SubStickX(pad); if (gc_px > 70) J |= VBA_SPEED; ActionButton = ActionButton || gc & PAD_BUTTON_A; PullButton = PullButton || gc & PAD_TRIGGER_R; @@ -1214,8 +1215,8 @@ u32 MinishCapInput(unsigned short pad) // but with R as the B button like in Twilight Princess } else if (wp->exp.type == WPAD_EXP_CLASSIC) { J |= StandardDPad(pad); - signed char wm_sx = WPAD_Stick(pad,1,0); // CC right joystick - signed char wm_sy = WPAD_Stick(pad,1,1); // CC right joystick + s8 wm_sx = userInput[pad].WPAD_StickX(1); // CC right joystick + s8 wm_sy = userInput[pad].WPAD_StickY(1); // CC right joystick static bool StickReady = true; ActionButton = wp->btns_h & WPAD_CLASSIC_BUTTON_A; SwordButton = wp->btns_h & WPAD_CLASSIC_BUTTON_B; @@ -1241,7 +1242,7 @@ u32 MinishCapInput(unsigned short pad) { u32 gc = PAD_ButtonsHeld(pad); u32 pressed = PAD_ButtonsDown(pad); - signed char gc_px = PAD_SubStickX(pad); + s8 gc_px = PAD_SubStickX(pad); if (gc_px > 70) J |= VBA_SPEED; ActionButton = ActionButton || gc & PAD_BUTTON_A; PullButton = PullButton || gc & PAD_TRIGGER_R;