tidy up code

This commit is contained in:
dborth 2009-10-15 07:43:25 +00:00
parent 58d3adde97
commit 04df044637
5 changed files with 50 additions and 92 deletions

View File

@ -196,11 +196,19 @@ class GuiTrigger
//!\param wiibtns Wii controller trigger button(s) - classic controller buttons are considered separately //!\param wiibtns Wii controller trigger button(s) - classic controller buttons are considered separately
//!\param gcbtns GameCube controller trigger button(s) //!\param gcbtns GameCube controller trigger button(s)
void SetButtonOnlyInFocusTrigger(s32 ch, u32 wiibtns, u16 gcbtns); void SetButtonOnlyInFocusTrigger(s32 ch, u32 wiibtns, u16 gcbtns);
//!Get X/Y value from Wii Joystick (classic, nunchuk) input //!Get X or Y value from Wii Joystick (classic, nunchuk) input
//!\param right Controller stick (left = 0, right = 1) //!\param stick Controller stick (left = 0, right = 1)
//!\param axis Controller stick axis (x-axis = 0, y-axis = 1) //!\param axis Controller stick axis (x-axis = 0, y-axis = 1)
//!\return Stick value //!\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 //!Move menu selection left (via pad/joystick). Allows scroll delay and button overriding
//!\return true if selection should be moved left, false otherwise //!\return true if selection should be moved left, false otherwise
bool Left(); bool Left();

View File

@ -87,7 +87,7 @@ void GuiTrigger::SetButtonOnlyInFocusTrigger(s32 ch, u32 wiibtns, u16 gcbtns)
* Get X/Y value from Wii Joystick (classic, nunchuk) input * 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 #ifdef HW_RVL
@ -98,7 +98,7 @@ s8 GuiTrigger::WPAD_Stick(u8 right, int axis)
{ {
case WPAD_EXP_NUNCHUK: case WPAD_EXP_NUNCHUK:
case WPAD_EXP_GUITARHERO3: case WPAD_EXP_GUITARHERO3:
if (right == 0) if (stick == 0)
{ {
mag = wpad->exp.nunchuk.js.mag; mag = wpad->exp.nunchuk.js.mag;
ang = wpad->exp.nunchuk.js.ang; ang = wpad->exp.nunchuk.js.ang;
@ -106,7 +106,7 @@ s8 GuiTrigger::WPAD_Stick(u8 right, int axis)
break; break;
case WPAD_EXP_CLASSIC: case WPAD_EXP_CLASSIC:
if (right == 0) if (stick == 0)
{ {
mag = wpad->exp.classic.ljs.mag; mag = wpad->exp.classic.ljs.mag;
ang = wpad->exp.classic.ljs.ang; ang = wpad->exp.classic.ljs.ang;
@ -139,6 +139,16 @@ s8 GuiTrigger::WPAD_Stick(u8 right, int axis)
#endif #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() bool GuiTrigger::Left()
{ {
u32 wiibtn = GCSettings.WiimoteOrientation ? WPAD_BUTTON_UP : WPAD_BUTTON_LEFT; u32 wiibtn = GCSettings.WiimoteOrientation ? WPAD_BUTTON_UP : WPAD_BUTTON_LEFT;

View File

@ -37,10 +37,10 @@ GuiTrigger userInput[4];
static int rumbleCount[4] = {0,0,0,0}; static int rumbleCount[4] = {0,0,0,0};
#endif #endif
bool cartridgeRumble = false, possibleCartridgeRumble = false; static bool cartridgeRumble = false, possibleCartridgeRumble = false;
int gameRumbleCount = 0, menuRumbleCount = 0, rumbleCountAlready = 0; 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 u32 btnmap[5][10]; // button mapping
void ResetControls(int wiiCtrl) void ResetControls(int wiiCtrl)
@ -299,71 +299,14 @@ void systemGameRumbleOnlyFor(int OnlyRumbleForFrames) {
gameRumbleCount = OnlyRumbleForFrames; gameRumbleCount = OnlyRumbleForFrames;
} }
void systemMenuRumble(int RumbleForFrames) { u32 StandardMovement(unsigned short chan)
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 J = 0; u32 J = 0;
signed char pad_x = PAD_StickX (pad); s8 pad_x = userInput[chan].pad.stickX;
signed char pad_y = PAD_StickY (pad); s8 pad_y = userInput[chan].pad.stickY;
#ifdef HW_RVL #ifdef HW_RVL
signed char wm_ax = WPAD_Stick ((u8)pad, 0, 0); s8 wm_ax = userInput[0].WPAD_StickX(0);
signed char wm_ay = WPAD_Stick ((u8)pad, 0, 1); s8 wm_ay = userInput[0].WPAD_StickY(0);
#endif #endif
/*** /***
Gamecube Joystick input, same as normal Gamecube Joystick input, same as normal
@ -714,10 +657,10 @@ u32 DecodeNunchuk(unsigned short pad)
{ {
u32 J = 0; u32 J = 0;
#ifdef HW_RVL #ifdef HW_RVL
WPADData * wp = WPAD_Data(pad);
for (int i = 0; i < MAXJP; i++) 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]; J |= vbapadmap[i];
} }
#endif #endif
@ -749,9 +692,8 @@ u32 PAD_ButtonsHeldFake(unsigned short pad)
{ {
u32 gc = 0; u32 gc = 0;
#ifdef HW_RVL #ifdef HW_RVL
WPADData * wp = WPAD_Data(pad); if (userInput[pad].wpad->exp.type == WPAD_EXP_CLASSIC) {
if (wp->exp.type == WPAD_EXP_CLASSIC) { gc = CCToGC(userInput[pad].wpad->btns_h);
gc = CCToGC(wp->btns_h);
} }
#endif #endif
return gc; return gc;
@ -760,9 +702,8 @@ u32 PAD_ButtonsDownFake(unsigned short pad)
{ {
u32 gc = 0; u32 gc = 0;
#ifdef HW_RVL #ifdef HW_RVL
WPADData * wp = WPAD_Data(pad); if (userInput[pad].wpad->exp.type == WPAD_EXP_CLASSIC) {
if (wp->exp.type == WPAD_EXP_CLASSIC) { gc = CCToGC(userInput[pad].wpad->btns_d);
gc = CCToGC(wp->btns_d);
} }
#endif #endif
return gc; return gc;
@ -771,9 +712,8 @@ u32 PAD_ButtonsUpFake(unsigned short pad)
{ {
u32 gc = 0; u32 gc = 0;
#ifdef HW_RVL #ifdef HW_RVL
WPADData * wp = WPAD_Data(pad); if (userInput[pad].wpad->exp.type == WPAD_EXP_CLASSIC) {
if (wp->exp.type == WPAD_EXP_CLASSIC) { gc = CCToGC(userInput[pad].wpad->btns_u);
gc = CCToGC(wp->btns_u);
} }
#endif #endif
return gc; return gc;

View File

@ -40,7 +40,6 @@ void DoRumble(int i);
void systemGameRumble(int RumbleForFrames); void systemGameRumble(int RumbleForFrames);
void systemGameRumbleOnlyFor(int OnlyRumbleForFrames); void systemGameRumbleOnlyFor(int OnlyRumbleForFrames);
void updateRumbleFrame(); void updateRumbleFrame();
s8 WPAD_Stick(u8 chan,u8 right, int axis);
u32 GetJoy(int which); u32 GetJoy(int which);
bool MenuRequested(); bool MenuRequested();
void SetupPads(); void SetupPads();

View File

@ -23,6 +23,7 @@
#include "audio.h" #include "audio.h"
#include "video.h" #include "video.h"
#include "input.h" #include "input.h"
#include "gui/gui.h"
#include "gameinput.h" #include "gameinput.h"
#include "vbasupport.h" #include "vbasupport.h"
#include "wiiusbsupport.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 // but with R as the B button like in Twilight Princess
} else if (wp->exp.type == WPAD_EXP_CLASSIC) { } else if (wp->exp.type == WPAD_EXP_CLASSIC) {
J |= StandardDPad(pad); J |= StandardDPad(pad);
signed char wm_sx = WPAD_Stick(pad,1,0); // CC right joystick s8 wm_sx = userInput[pad].WPAD_StickX(1); // CC right joystick
signed char wm_sy = WPAD_Stick(pad,1,1); // CC right joystick s8 wm_sy = userInput[pad].WPAD_StickY(1); // CC right joystick
static bool StickReady = true; static bool StickReady = true;
ActionButton = wp->btns_h & WPAD_CLASSIC_BUTTON_A; ActionButton = wp->btns_h & WPAD_CLASSIC_BUTTON_A;
SwordButton = wp->btns_h & WPAD_CLASSIC_BUTTON_B; 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 // Gamecube controls are based on Twilight Princess for the Gamecube
{ {
u32 gc = PAD_ButtonsHeld(pad); 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; if (gc_px > 70) J |= VBA_SPEED;
ActionButton = ActionButton || gc & PAD_BUTTON_A; ActionButton = ActionButton || gc & PAD_BUTTON_A;
PullButton = PullButton || gc & PAD_TRIGGER_R; 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 // but with R as the B button like in Twilight Princess
} else if (wp->exp.type == WPAD_EXP_CLASSIC) { } else if (wp->exp.type == WPAD_EXP_CLASSIC) {
J |= StandardDPad(pad); J |= StandardDPad(pad);
signed char wm_sx = WPAD_Stick(pad,1,0); // CC right joystick s8 wm_sx = userInput[pad].WPAD_StickX(1); // CC right joystick
signed char wm_sy = WPAD_Stick(pad,1,1); // CC right joystick s8 wm_sy = userInput[pad].WPAD_StickY(1); // CC right joystick
static bool StickReady = true; static bool StickReady = true;
ActionButton = wp->btns_h & WPAD_CLASSIC_BUTTON_A; ActionButton = wp->btns_h & WPAD_CLASSIC_BUTTON_A;
SwordButton = wp->btns_h & WPAD_CLASSIC_BUTTON_B; 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 gc = PAD_ButtonsHeld(pad);
u32 pressed = PAD_ButtonsDown(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; if (gc_px > 70) J |= VBA_SPEED;
ActionButton = ActionButton || gc & PAD_BUTTON_A; ActionButton = ActionButton || gc & PAD_BUTTON_A;
PullButton = PullButton || gc & PAD_TRIGGER_R; 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 // but with R as the B button like in Twilight Princess
} else if (wp->exp.type == WPAD_EXP_CLASSIC) { } else if (wp->exp.type == WPAD_EXP_CLASSIC) {
J |= StandardDPad(pad); J |= StandardDPad(pad);
signed char wm_sx = WPAD_Stick(pad,1,0); // CC right joystick s8 wm_sx = userInput[pad].WPAD_StickX(1); // CC right joystick
signed char wm_sy = WPAD_Stick(pad,1,1); // CC right joystick s8 wm_sy = userInput[pad].WPAD_StickY(1); // CC right joystick
static bool StickReady = true; static bool StickReady = true;
ActionButton = wp->btns_h & WPAD_CLASSIC_BUTTON_A; ActionButton = wp->btns_h & WPAD_CLASSIC_BUTTON_A;
SwordButton = wp->btns_h & WPAD_CLASSIC_BUTTON_B; SwordButton = wp->btns_h & WPAD_CLASSIC_BUTTON_B;
@ -1241,7 +1242,7 @@ u32 MinishCapInput(unsigned short pad)
{ {
u32 gc = PAD_ButtonsHeld(pad); u32 gc = PAD_ButtonsHeld(pad);
u32 pressed = PAD_ButtonsDown(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; if (gc_px > 70) J |= VBA_SPEED;
ActionButton = ActionButton || gc & PAD_BUTTON_A; ActionButton = ActionButton || gc & PAD_BUTTON_A;
PullButton = PullButton || gc & PAD_TRIGGER_R; PullButton = PullButton || gc & PAD_TRIGGER_R;