// WarioWare Twisted u32 TwistedInput(unsigned short pad) { // Change this to true if you want to see the screen tilt. TiltScreen = false; u32 J = StandardMovement(pad) | DecodeGamecube(pad); #ifdef HW_RVL WPADData * wp = WPAD_Data(pad); if (wp->exp.type == WPAD_EXP_NUNCHUK) { TiltSideways = false; J |= StandardDPad(pad); // Pause if (wp->btns_h & WPAD_BUTTON_PLUS) J |= VBA_BUTTON_START; // Select and L do nothing! if (wp->btns_h & WPAD_BUTTON_MINUS) J |= VBA_BUTTON_SELECT; if (wp->btns_h & WPAD_BUTTON_1) J |= VBA_BUTTON_L | VBA_SPEED; if (wp->btns_h & WPAD_BUTTON_2) J |= VBA_BUTTON_L | VBA_SPEED; // A Button if (wp->btns_h & WPAD_BUTTON_A) J |= VBA_BUTTON_A; // B Button if (wp->btns_h & WPAD_BUTTON_B) J |= VBA_BUTTON_B; // Grab an icon and prevent menu from spinning if (wp->btns_h & WPAD_NUNCHUK_BUTTON_Z) J |= VBA_BUTTON_R; // Calibrate if (wp->btns_h & WPAD_NUNCHUK_BUTTON_C) { CalibrateWario = true; } else CalibrateWario = false; } else if (wp->exp.type == WPAD_EXP_CLASSIC) { TiltSideways = false; J |= StandardDPad(pad) | StandardClassic(pad); } else { TiltSideways = true; J |= StandardSideways(pad); if (wp->btns_h & WPAD_BUTTON_B) { CalibrateWario = true; } else CalibrateWario = false; } #endif return J; }
u32 KirbyTntInput(unsigned short pad) { TiltScreen = false; u32 J = StandardMovement(pad) | DecodeGamecube(pad); #ifdef HW_RVL WPADData * wp = WPAD_Data(pad); if (wp->exp.type == WPAD_EXP_NUNCHUK) { TiltSideways = false; J |= StandardDPad(pad); // Pause if (wp->btns_h & WPAD_BUTTON_PLUS) J |= VBA_BUTTON_START; // Select and L do nothing! if (wp->btns_h & WPAD_BUTTON_MINUS) J |= VBA_BUTTON_SELECT; if (wp->btns_h & WPAD_BUTTON_1) J |= VBA_BUTTON_B; if (wp->btns_h & WPAD_BUTTON_2) J |= VBA_BUTTON_A; // A Button if (wp->btns_h & WPAD_BUTTON_A) J |= VBA_BUTTON_A; // B Button if (wp->btns_h & WPAD_BUTTON_B) J |= VBA_BUTTON_B; // Speed if (wp->btns_h & WPAD_NUNCHUK_BUTTON_C) J |= VBA_SPEED; } else if (wp->exp.type == WPAD_EXP_CLASSIC) { TiltSideways = false; J |= StandardDPad(pad) | DecodeClassic(pad); if (wp->btns_h & WPAD_BUTTON_A) J |= VBA_BUTTON_A; } else { TiltSideways = true; J |= StandardSideways(pad); if (wp->btns_h & WPAD_BUTTON_A) J |= VBA_BUTTON_A; if (wp->btns_h & WPAD_BUTTON_B) J |= VBA_SPEED; } #endif return J; }
u32 UniversalGravitationInput(unsigned short pad) { TiltScreen = true; u32 J = StandardMovement(pad) | DecodeGamecube(pad); #ifdef HW_RVL WPADData * wp = WPAD_Data(pad); if (wp->exp.type == WPAD_EXP_NUNCHUK) { J |= StandardDPad(pad); TiltSideways = false; // Pause if (wp->btns_h & WPAD_BUTTON_PLUS) J |= VBA_BUTTON_START; // Select, L & R do nothing! if (wp->btns_h & WPAD_BUTTON_MINUS) J |= VBA_BUTTON_SELECT; if (wp->btns_h & WPAD_BUTTON_1) J |= VBA_BUTTON_L | VBA_SPEED; if (wp->btns_h & WPAD_BUTTON_2) J |= VBA_BUTTON_R | VBA_SPEED; // Jump if (wp->btns_h & WPAD_BUTTON_A) J |= VBA_BUTTON_A; // tongue if (wp->btns_h & WPAD_BUTTON_B) J |= VBA_BUTTON_B; // Crouch, butt stomp if (wp->btns_h & WPAD_NUNCHUK_BUTTON_Z) { J |= VBA_DOWN; // Crouch J &= ~VBA_UP; } // Camera if (wp->btns_h & WPAD_NUNCHUK_BUTTON_C) { J |= VBA_UP; } } else if (wp->exp.type == WPAD_EXP_CLASSIC) { TiltSideways = false; J |= StandardDPad(pad); // A bit stupid playing with the classic controller, but nevermind. if (wp->btns_h & WPAD_CLASSIC_BUTTON_PLUS) J |= VBA_BUTTON_START; if (wp->btns_h & WPAD_CLASSIC_BUTTON_MINUS) J |= VBA_BUTTON_SELECT; if (wp->btns_h & WPAD_CLASSIC_BUTTON_X) J |= VBA_BUTTON_B; if (wp->btns_h & WPAD_CLASSIC_BUTTON_Y) J |= VBA_BUTTON_R; if (wp->btns_h & WPAD_CLASSIC_BUTTON_B || wp->btns_h & WPAD_CLASSIC_BUTTON_A) J |= VBA_BUTTON_A; if (wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_L || wp->btns_h & WPAD_CLASSIC_BUTTON_ZL) J |= VBA_DOWN; if (wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_R) J |= VBA_UP; if (WPAD_CLASSIC_BUTTON_ZR) J |= VBA_SPEED; } else { J |= StandardSideways(pad); TiltSideways = true; } #endif return J; }
u32 MarioLand2Input(unsigned short pad) { u32 J = StandardMovement(pad) | DecodeGamecube(pad); #ifdef HW_RVL WPADData * wp = WPAD_Data(pad); bool run = false; run = (wp->exp.type==WPAD_EXP_NUNCHUK && wp->exp.nunchuk.js.mag> 0.83) || (wp->exp.type==WPAD_EXP_CLASSIC && wp->exp.classic.ljs.mag> 0.83); run = run && ((J & VBA_LEFT) || (J & VBA_RIGHT)); if (wp->exp.type == WPAD_EXP_NONE) J |= StandardSideways(pad); else if (wp->exp.type == WPAD_EXP_CLASSIC) { J |= StandardDPad(pad); // Pause if (wp->btns_h & WPAD_CLASSIC_BUTTON_PLUS) J |= VBA_BUTTON_START; // Select if (wp->btns_h & WPAD_CLASSIC_BUTTON_MINUS) J |= VBA_BUTTON_SELECT; // Jump if (wp->btns_h & WPAD_CLASSIC_BUTTON_B) J |= VBA_BUTTON_A; // Run, pick up, throw, fire if (wp->btns_h & WPAD_CLASSIC_BUTTON_X || wp->btns_h & WPAD_CLASSIC_BUTTON_Y || run) J |= VBA_BUTTON_B; // Spin attack if (wp->btns_h & WPAD_CLASSIC_BUTTON_A) J |= VBA_DOWN | VBA_BUTTON_A; // Camera if (wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_L) J |= VBA_DOWN | VBA_BUTTON_B; if (wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_R) J |= VBA_UP | VBA_BUTTON_B; // Crouch if (wp->btns_h & WPAD_CLASSIC_BUTTON_ZL && (!(wp->btns_h & WPAD_CLASSIC_BUTTON_A))) { J |= VBA_DOWN; // if the run button is held down, crouching also looks down // which we don't want when using the Z button J &= ~VBA_BUTTON_B; J &= ~VBA_UP; } // Speed if (wp->btns_h & WPAD_CLASSIC_BUTTON_ZR) J |= VBA_SPEED; } else if (wp->exp.type == WPAD_EXP_NUNCHUK) { // Pause if (wp->btns_h & WPAD_BUTTON_PLUS) J |= VBA_BUTTON_START; // Select if (wp->btns_h & WPAD_BUTTON_MINUS) J |= VBA_BUTTON_SELECT; // Jump if (wp->btns_h & WPAD_BUTTON_A) J |= VBA_BUTTON_A; // Run, pick up, throw, fire if (wp->btns_h & WPAD_BUTTON_B || run) J |= VBA_BUTTON_B; // Spin attack if (fabs(wp->gforce.x)> 1.4) J |= VBA_DOWN | VBA_BUTTON_A; // Camera if (wp->btns_h & WPAD_NUNCHUK_BUTTON_C) J |= VBA_BUTTON_B; if (wp->btns_h & WPAD_BUTTON_UP) J |= VBA_BUTTON_B | VBA_UP; if (wp->btns_h & WPAD_BUTTON_DOWN) J |= VBA_BUTTON_B | VBA_DOWN; if (wp->btns_h & WPAD_BUTTON_LEFT) J |= VBA_BUTTON_B | VBA_LEFT; if (wp->btns_h & WPAD_BUTTON_RIGHT) J |= VBA_BUTTON_B | VBA_RIGHT; // Crouch if (wp->btns_h & WPAD_NUNCHUK_BUTTON_Z && (!(wp->btns_h & WPAD_BUTTON_A))) { J |= VBA_DOWN; // if the run button is held down, crouching also looks down // which we don't want when using the Z button J &= ~VBA_BUTTON_B; J &= ~VBA_UP; } // Speed if (wp->btns_h & WPAD_BUTTON_1 || wp->btns_h & WPAD_BUTTON_2) J |= VBA_SPEED; } else J |= DecodeWiimote(pad); #endif return J; }
u32 MarioLand1Input(unsigned short pad) { u32 J = StandardMovement(pad) | DecodeGamecube(pad); #ifdef HW_RVL WPADData * wp = WPAD_Data(pad); bool run = false; run = (wp->exp.type==WPAD_EXP_NUNCHUK && wp->exp.nunchuk.js.mag> 0.83) || (wp->exp.type==WPAD_EXP_CLASSIC && wp->exp.classic.ljs.mag> 0.83); run = run && ((J & VBA_LEFT) || (J & VBA_RIGHT)); if (wp->exp.type == WPAD_EXP_NONE) J |= StandardSideways(pad); else if (wp->exp.type == WPAD_EXP_CLASSIC) { J |= StandardDPad(pad); // Pause if (wp->btns_h & WPAD_CLASSIC_BUTTON_PLUS) J |= VBA_BUTTON_START; // Select if (wp->btns_h & WPAD_CLASSIC_BUTTON_MINUS) J |= VBA_BUTTON_SELECT; // Jump if (wp->btns_h & WPAD_CLASSIC_BUTTON_B) J |= VBA_BUTTON_A; // Run, pick up, throw, fire if (wp->btns_h & WPAD_CLASSIC_BUTTON_X || wp->btns_h & WPAD_CLASSIC_BUTTON_Y || run) J |= VBA_BUTTON_B; // Spin attack if (wp->btns_h & WPAD_CLASSIC_BUTTON_A) J |= VBA_BUTTON_B; // Crouch if (wp->btns_h & WPAD_CLASSIC_BUTTON_ZL || wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_L) { J |= VBA_DOWN; J &= ~VBA_UP; } // Speed if (wp->btns_h & WPAD_CLASSIC_BUTTON_ZR || wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_R) J |= VBA_SPEED; } else if (wp->exp.type == WPAD_EXP_NUNCHUK) { J |= StandardDPad(pad); // Pause if (wp->btns_h & WPAD_BUTTON_PLUS) J |= VBA_BUTTON_START; // Select if (wp->btns_h & WPAD_BUTTON_MINUS) J |= VBA_BUTTON_SELECT; // Jump if (wp->btns_h & WPAD_BUTTON_A) J |= VBA_BUTTON_A; // Run, pick up, throw, fire if (wp->btns_h & WPAD_BUTTON_B || run) J |= VBA_BUTTON_B; if (fabs(wp->gforce.x)> 1.5) J |= VBA_BUTTON_B; // Crouch if (wp->btns_h & WPAD_NUNCHUK_BUTTON_Z) J |= VBA_DOWN; // Speed if (wp->btns_h & WPAD_NUNCHUK_BUTTON_C || wp->btns_h & WPAD_BUTTON_1 || wp->btns_h & WPAD_BUTTON_2) J |= VBA_SPEED; } else J |= DecodeWiimote(pad); #endif return J; }
u32 Mario1DXInput(unsigned short pad) { u32 J = StandardMovement(pad) | DecodeGamecube(pad); #ifdef HW_RVL WPADData * wp = WPAD_Data(pad); bool run = false; run = (wp->exp.type==WPAD_EXP_NUNCHUK && wp->exp.nunchuk.js.mag> 0.83) || (wp->exp.type==WPAD_EXP_CLASSIC && wp->exp.classic.ljs.mag> 0.83); run = run && ((J & VBA_LEFT) || (J & VBA_RIGHT)); if (wp->exp.type==WPAD_EXP_NUNCHUK) { // Pause if (wp->btns_h & WPAD_BUTTON_PLUS) J |= VBA_BUTTON_START; // Select if (wp->btns_h & WPAD_BUTTON_MINUS) J |= VBA_BUTTON_SELECT; // Jump if (wp->btns_h & WPAD_BUTTON_A) J |= VBA_BUTTON_A; // Run, pick up if (wp->btns_h & WPAD_BUTTON_B || run) J |= VBA_BUTTON_B; // Starspin shoots when using fireflower if (fabs(wp->gforce.x)> 1.5) J |= VBA_BUTTON_B; // Camera (must come before Crouch) if (!(wp->btns_h & WPAD_NUNCHUK_BUTTON_C)) J &= ~(VBA_DOWN | VBA_UP); if (wp->btns_h & WPAD_BUTTON_UP) J |= VBA_UP; if (wp->btns_h & WPAD_BUTTON_DOWN) J |= VBA_DOWN; // Crouch (must come after Camera) if (wp->btns_h & WPAD_NUNCHUK_BUTTON_Z) J |= VBA_DOWN; // Speed if (wp->btns_h & WPAD_BUTTON_1 || wp->btns_h & WPAD_BUTTON_2) J |= VBA_SPEED; } else if (wp->exp.type == WPAD_EXP_CLASSIC) { // Pause if (wp->btns_h & WPAD_CLASSIC_BUTTON_PLUS) J |= VBA_BUTTON_START; // Select if (wp->btns_h & WPAD_CLASSIC_BUTTON_MINUS) J |= VBA_BUTTON_SELECT; // Jump if (wp->btns_h & WPAD_CLASSIC_BUTTON_B) J |= VBA_BUTTON_A; // Run, pick up, throw, fire if (wp->btns_h & WPAD_CLASSIC_BUTTON_X || wp->btns_h & WPAD_CLASSIC_BUTTON_Y || run) J |= VBA_BUTTON_B; // Spin attack if (wp->btns_h & WPAD_CLASSIC_BUTTON_A) J |= VBA_BUTTON_B; // Camera J &= ~(VBA_DOWN | VBA_UP); if (wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_L) J |= VBA_DOWN; if (wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_R) J |= VBA_UP; // Crouch if (wp->btns_h & WPAD_CLASSIC_BUTTON_ZL) { J |= VBA_DOWN; J &= ~VBA_UP; } // DPad movement/camera if (wp->btns_h & WPAD_CLASSIC_BUTTON_UP) J |= VBA_UP; if (wp->btns_h & WPAD_CLASSIC_BUTTON_DOWN) J |= VBA_DOWN; if (wp->btns_h & WPAD_CLASSIC_BUTTON_LEFT) J |= VBA_LEFT; if (wp->btns_h & WPAD_CLASSIC_BUTTON_RIGHT) J |= VBA_RIGHT; // Speed if (wp->btns_h & WPAD_CLASSIC_BUTTON_ZR) J |= VBA_SPEED; } else J |= StandardSideways(pad); #endif return J; }