This commit is contained in:
Extrems 2016-12-09 21:49:26 -05:00
parent 0f3da0dfae
commit 34c74cb91a
15 changed files with 296 additions and 101 deletions

View file

@ -41,20 +41,21 @@ static float getStickValue(joystick_t* j, int axis, float maxAbsValue){
}
enum {
L_STICK_AS_ANALOG = 1, R_STICK_AS_ANALOG = 2, BUTTON_AS_ANALOG = 3,
LSTICK_AS_ANALOG = 1, RSTICK_AS_ANALOG = 2, BUTTON_AS_ANALOG = 3,
};
enum {
L_STICK_L = 0x01 << 16,
L_STICK_R = 0x02 << 16,
L_STICK_U = 0x04 << 16,
L_STICK_D = 0x08 << 16,
R_STICK_L = 0x10 << 16,
R_STICK_R = 0x20 << 16,
R_STICK_U = 0x40 << 16,
R_STICK_D = 0x80 << 16,
LSTICK_L = 0x01 << 24,
LSTICK_R = 0x02 << 24,
LSTICK_U = 0x04 << 24,
LSTICK_D = 0x08 << 24,
RSTICK_L = 0x10 << 24,
RSTICK_R = 0x20 << 24,
RSTICK_U = 0x40 << 24,
RSTICK_D = 0x80 << 24,
};
#define NUM_CLASSIC_BUTTONS 24
static button_t buttons[] = {
{ 0, ~0, "None" },
{ 1, CLASSIC_CTRL_BUTTON_UP, "D-Up" },
@ -72,20 +73,22 @@ static button_t buttons[] = {
{ 13, CLASSIC_CTRL_BUTTON_PLUS, "+" },
{ 14, CLASSIC_CTRL_BUTTON_MINUS, "-" },
{ 15, CLASSIC_CTRL_BUTTON_HOME, "Home" },
{ 16, R_STICK_U, "RS-Up" },
{ 17, R_STICK_L, "RS-Left" },
{ 18, R_STICK_R, "RS-Right" },
{ 19, R_STICK_D, "RS-Down" },
{ 20, L_STICK_U, "LS-Up" },
{ 21, L_STICK_L, "LS-Left" },
{ 22, L_STICK_R, "LS-Right" },
{ 23, L_STICK_D, "LS-Down" },
{ 16, RSTICK_U, "RS-Up" },
{ 17, RSTICK_L, "RS-Left" },
{ 18, RSTICK_R, "RS-Right" },
{ 19, RSTICK_D, "RS-Down" },
{ 20, LSTICK_U, "LS-Up" },
{ 21, LSTICK_L, "LS-Left" },
{ 22, LSTICK_R, "LS-Right" },
{ 23, LSTICK_D, "LS-Down" },
{ 24, WIIU_PRO_CTRL_BUTTON_L3, "L3" },
{ 25, WIIU_PRO_CTRL_BUTTON_R3, "R3" },
};
static button_t analog_sources[] = {
{ 0, L_STICK_AS_ANALOG, "Left Stick" },
{ 1, R_STICK_AS_ANALOG, "Right Stick" },
{ 2, BUTTON_AS_ANALOG, "D-Pad" },
{ 0, LSTICK_AS_ANALOG, "Left Stick" },
{ 1, RSTICK_AS_ANALOG, "Right Stick" },
{ 2, BUTTON_AS_ANALOG, "D-Pad" },
};
static button_t menu_combos[] = {
@ -94,7 +97,33 @@ static button_t menu_combos[] = {
{ 2, CLASSIC_CTRL_BUTTON_HOME, "Home" },
};
static unsigned int getButtons(classic_ctrl_t* controller)
static int checkType(int Control, int type){
int err;
u32 expType;
err = WPAD_Probe(Control, &expType);
if(err != WPAD_ERR_NONE)
return -1;
switch(expType){
case WPAD_EXP_NONE:
controller_Wiimote.available[Control] = 1;
break;
case WPAD_EXP_NUNCHUK:
controller_WiimoteNunchuk.available[Control] = 1;
break;
case WPAD_EXP_CLASSIC:
controller_Classic.available[Control] = 1;
break;
case WPAD_EXP_WIIUPRO:
controller_WiiUPro.available[Control] = 1;
break;
}
return expType;
}
static unsigned int getButtonsCC(classic_ctrl_t* controller)
{
unsigned int b = controller->btns;
@ -103,54 +132,41 @@ static unsigned int getButtons(classic_ctrl_t* controller)
float substickX = getStickValue(&controller->rjs, STICK_X, 1);
float substickY = getStickValue(&controller->rjs, STICK_Y, 1);
if(stickX < -.5) b |= L_STICK_L;
if(stickX > .5) b |= L_STICK_R;
if(stickY > .5) b |= L_STICK_U;
if(stickY < -.5) b |= L_STICK_D;
if(stickX < -.5) b |= LSTICK_L;
if(stickX > .5) b |= LSTICK_R;
if(stickY > .5) b |= LSTICK_U;
if(stickY < -.5) b |= LSTICK_D;
if(substickX < -.5) b |= R_STICK_L;
if(substickX > .5) b |= R_STICK_R;
if(substickY > .5) b |= R_STICK_U;
if(substickY < -.5) b |= R_STICK_D;
if(substickX < -.5) b |= RSTICK_L;
if(substickX > .5) b |= RSTICK_R;
if(substickY > .5) b |= RSTICK_U;
if(substickY < -.5) b |= RSTICK_D;
return b;
}
static int available(int Control) {
int err;
u32 expType;
err = WPAD_Probe(Control, &expType);
if(err == WPAD_ERR_NONE &&
expType == WPAD_EXP_CLASSIC){
controller_Classic.available[Control] = 1;
return 1;
} else {
static int availableCC(int Control){
if(checkType(Control, WPAD_EXP_CLASSIC) != WPAD_EXP_CLASSIC){
controller_Classic.available[Control] = 0;
if(err == WPAD_ERR_NONE &&
expType == WPAD_EXP_NUNCHUK){
controller_WiimoteNunchuk.available[Control] = 1;
}
else if (err == WPAD_ERR_NONE &&
expType == WPAD_EXP_NONE){
controller_Wiimote.available[Control] = 1;
}
return 0;
} else {
return 1;
}
}
static int _GetKeys(int Control, BUTTONS * Keys, controller_config_t* config)
static int GetKeysCC(int Control, BUTTONS * Keys, controller_config_t* config)
{
WPADData* wpad = WPAD_Data(Control);
BUTTONS* c = Keys;
memset(c, 0, sizeof(BUTTONS));
// Only use a connected classic controller
if(!available(Control))
if(!availableCC(Control))
return 0;
WPAD_ReadPending(Control, NULL);
unsigned int b = getButtons(&wpad->exp.classic);
unsigned int b = getButtonsCC(&wpad->exp.classic);
inline int isHeld(button_tp button){
return (b & button->mask) == button->mask;
}
@ -173,10 +189,10 @@ static int _GetKeys(int Control, BUTTONS * Keys, controller_config_t* config)
c->D_CBUTTON = isHeld(config->CD);
c->U_CBUTTON = isHeld(config->CU);
if(config->analog->mask == L_STICK_AS_ANALOG){
if(config->analog->mask == LSTICK_AS_ANALOG){
c->X_AXIS = getStickValue(&wpad->exp.classic.ljs, STICK_X, 80);
c->Y_AXIS = getStickValue(&wpad->exp.classic.ljs, STICK_Y, 80);
} else if(config->analog->mask == R_STICK_AS_ANALOG){
} else if(config->analog->mask == RSTICK_AS_ANALOG){
c->X_AXIS = getStickValue(&wpad->exp.classic.rjs, STICK_X, 80);
c->Y_AXIS = getStickValue(&wpad->exp.classic.rjs, STICK_Y, 80);
} else if(config->analog->mask == BUTTON_AS_ANALOG){
@ -200,6 +216,99 @@ static int _GetKeys(int Control, BUTTONS * Keys, controller_config_t* config)
return isHeld(config->exit);
}
static unsigned int getButtonsWUP(wiiu_pro_ctrl_t* controller)
{
unsigned int b = controller->btns;
float stickX = getStickValue(&controller->ljs, STICK_X, 1);
float stickY = getStickValue(&controller->ljs, STICK_Y, 1);
float substickX = getStickValue(&controller->rjs, STICK_X, 1);
float substickY = getStickValue(&controller->rjs, STICK_Y, 1);
if(stickX < -.5) b |= LSTICK_L;
if(stickX > .5) b |= LSTICK_R;
if(stickY > .5) b |= LSTICK_U;
if(stickY < -.5) b |= LSTICK_D;
if(substickX < -.5) b |= RSTICK_L;
if(substickX > .5) b |= RSTICK_R;
if(substickY > .5) b |= RSTICK_U;
if(substickY < -.5) b |= RSTICK_D;
return b;
}
static int availableWUP(int Control){
if(checkType(Control, WPAD_EXP_WIIUPRO) != WPAD_EXP_WIIUPRO){
controller_WiiUPro.available[Control] = 0;
return 0;
} else {
return 1;
}
}
static int GetKeysWUP(int Control, BUTTONS * Keys, controller_config_t* config)
{
WPADData* wpad = WPAD_Data(Control);
BUTTONS* c = Keys;
memset(c, 0, sizeof(BUTTONS));
// Only use a connected wiiu pro controller
if(!availableWUP(Control))
return 0;
WPAD_ReadPending(Control, NULL);
unsigned int b = getButtonsWUP(&wpad->exp.wup);
inline int isHeld(button_tp button){
return (b & button->mask) == button->mask;
}
c->R_DPAD = isHeld(config->DR);
c->L_DPAD = isHeld(config->DL);
c->D_DPAD = isHeld(config->DD);
c->U_DPAD = isHeld(config->DU);
c->START_BUTTON = isHeld(config->START);
c->B_BUTTON = isHeld(config->B);
c->A_BUTTON = isHeld(config->A);
c->Z_TRIG = isHeld(config->Z);
c->R_TRIG = isHeld(config->R);
c->L_TRIG = isHeld(config->L);
c->R_CBUTTON = isHeld(config->CR);
c->L_CBUTTON = isHeld(config->CL);
c->D_CBUTTON = isHeld(config->CD);
c->U_CBUTTON = isHeld(config->CU);
if(config->analog->mask == LSTICK_AS_ANALOG){
c->X_AXIS = getStickValue(&wpad->exp.wup.ljs, STICK_X, 80);
c->Y_AXIS = getStickValue(&wpad->exp.wup.ljs, STICK_Y, 80);
} else if(config->analog->mask == RSTICK_AS_ANALOG){
c->X_AXIS = getStickValue(&wpad->exp.wup.rjs, STICK_X, 80);
c->Y_AXIS = getStickValue(&wpad->exp.wup.rjs, STICK_Y, 80);
} else if(config->analog->mask == BUTTON_AS_ANALOG){
if(b & WIIU_PRO_CTRL_BUTTON_RIGHT)
c->X_AXIS = +80;
else if(b & WIIU_PRO_CTRL_BUTTON_LEFT)
c->X_AXIS = -80;
else
c->X_AXIS = 0;
if(b & WIIU_PRO_CTRL_BUTTON_UP)
c->Y_AXIS = +80;
else if(b & WIIU_PRO_CTRL_BUTTON_DOWN)
c->Y_AXIS = -80;
else
c->Y_AXIS = 0;
}
if(config->invertedY) c->Y_AXIS = -c->Y_AXIS;
// Return whether the exit button(s) are pressed
return isHeld(config->exit);
}
static void pause(int Control){
WPAD_Rumble(Control, 0);
}
@ -218,20 +327,20 @@ static void assign(int p, int v){
// TODO: Light up the LEDs appropriately
}
static void init(void);
static void refreshAvailable(void);
static void refreshAvailableCC(void);
static void refreshAvailableWUP(void);
controller_t controller_Classic =
{ 'C',
_GetKeys,
GetKeysCC,
configure,
assign,
pause,
resume,
rumble,
refreshAvailable,
refreshAvailableCC,
{0, 0, 0, 0},
sizeof(buttons)/sizeof(buttons[0]),
NUM_CLASSIC_BUTTONS,
buttons,
sizeof(analog_sources)/sizeof(analog_sources[0]),
analog_sources,
@ -257,17 +366,52 @@ controller_t controller_Classic =
}
};
static void refreshAvailable(void){
controller_t controller_WiiUPro =
{ 'P',
GetKeysWUP,
configure,
assign,
pause,
resume,
rumble,
refreshAvailableWUP,
{0, 0, 0, 0},
sizeof(buttons)/sizeof(buttons[0]),
buttons,
sizeof(analog_sources)/sizeof(analog_sources[0]),
analog_sources,
sizeof(menu_combos)/sizeof(menu_combos[0]),
menu_combos,
{ .DU = &buttons[1], // D-Pad Up
.DL = &buttons[2], // D-Pad Left
.DR = &buttons[3], // D-Pad Right
.DD = &buttons[4], // D-Pad Down
.Z = &buttons[7], // Left Z
.L = &buttons[6], // Right Trigger
.R = &buttons[8], // Right Z
.A = &buttons[9], // A
.B = &buttons[10], // B
.START = &buttons[13], // +
.CU = &buttons[16], // Right Stick Up
.CL = &buttons[17], // Right Stick Left
.CR = &buttons[18], // Right Stick Right
.CD = &buttons[19], // Right Stick Down
.analog = &analog_sources[0],
.exit = &menu_combos[2],
.invertedY = 0,
}
};
int i, err;
u32 expType;
static void refreshAvailableCC(void){
int i;
for(i=0; i<4; ++i){
err = WPAD_Probe(i, &expType);
if(err == WPAD_ERR_NONE &&
expType == WPAD_EXP_CLASSIC){
controller_Classic.available[i] = 1;
WPAD_SetDataFormat(i, WPAD_DATA_EXPANSION);
} else
controller_Classic.available[i] = 0;
availableCC(i);
}
}
static void refreshAvailableWUP(void){
int i;
for(i=0; i<4; ++i){
availableWUP(i);
}
}

View file

@ -172,6 +172,9 @@ static int checkType(int Control, int type){
case WPAD_EXP_CLASSIC:
controller_Classic.available[Control] = 1;
break;
case WPAD_EXP_WIIUPRO:
controller_WiiUPro.available[Control] = 1;
break;
}
return expType;
@ -232,14 +235,7 @@ static void rumble(int Control, int rumble){
}
static void configure(int Control, controller_config_t* config){
static s32 analog_fmts[] = {
WPAD_DATA_EXPANSION, // Nunchuk
WPAD_DATA_IR, // IR
WPAD_DATA_ACCEL, // Tilt
WPAD_DATA_ACCEL, // Wheel
WPAD_DATA_BUTTONS, // None
};
WPAD_SetDataFormat(Control, analog_fmts[config->analog->mask]);
// Don't know how this should be integrated
}
static void assign(int p, int v){

View file

@ -106,8 +106,9 @@ extern virtualControllers_t virtualControllers[4];
// List of all the defined controller_t's
#if defined(WII) && !defined(NO_BT)
#define num_controller_t 4
#define num_controller_t 5
extern controller_t controller_GC;
extern controller_t controller_WiiUPro;
extern controller_t controller_Classic;
extern controller_t controller_WiimoteNunchuk;
extern controller_t controller_Wiimote;

View file

@ -42,7 +42,9 @@ virtualControllers_t virtualControllers[4];
controller_t* controller_ts[num_controller_t] =
#if defined(WII) && !defined(NO_BT)
{ &controller_GC, &controller_Classic,
{ &controller_GC,
&controller_WiiUPro,
&controller_Classic,
&controller_WiimoteNunchuk,
&controller_Wiimote,
};

View file

@ -115,9 +115,9 @@ void Focus::updateFocus()
else if (wiiPad[i].btns_h ^ previousButtonsWii[i])
{
u32 currentButtonsDownWii = (wiiPad[i].btns_h ^ previousButtonsWii[i]) & wiiPad[i].btns_h;
if (wiiPad[i].exp.type == WPAD_EXP_CLASSIC)
if (wiiPad[i].exp.type == WPAD_EXP_CLASSIC || wiiPad[i].exp.type == WPAD_EXP_WIIUPRO)
{
switch (currentButtonsDownWii & 0xc0030000) {
switch (currentButtonsDownWii & 0x3c00000) {
case WPAD_CLASSIC_BUTTON_LEFT:
focusDirection = DIRECTION_LEFT;
break;
@ -136,7 +136,7 @@ void Focus::updateFocus()
}
else
{
switch (currentButtonsDownWii & 0xf00) {
switch (currentButtonsDownWii & 0xf) {
case WPAD_BUTTON_LEFT:
focusDirection = DIRECTION_LEFT;
break;

View file

@ -44,7 +44,8 @@ Resources::Resources()
// menuBackgroundImage = new Image(BackgroundTexture, 848, 480, GX_TF_I8, GX_CLAMP, GX_CLAMP, GX_FALSE);
menuBackgroundImage = new Image(BackgroundTexture, 424, 240, GX_TF_I8, GX_CLAMP, GX_CLAMP, GX_FALSE);
controllerEmptyImage = new Image(ControlEmptyTexture, 48, 64, GX_TF_I4, GX_CLAMP, GX_CLAMP, GX_FALSE);
controllerGamecubeImage = new Image(ControlGamecubeTexture, 48, 64, GX_TF_I4, GX_CLAMP, GX_CLAMP, GX_FALSE);
controllerGameCubeImage = new Image(ControlGameCubeTexture, 48, 64, GX_TF_I4, GX_CLAMP, GX_CLAMP, GX_FALSE);
controllerWiiUProImage = new Image(ControlWiiUProTexture, 48, 64, GX_TF_I4, GX_CLAMP, GX_CLAMP, GX_FALSE);
controllerClassicImage = new Image(ControlClassicTexture, 48, 64, GX_TF_I4, GX_CLAMP, GX_CLAMP, GX_FALSE);
controllerWiimoteNunchuckImage = new Image(ControlWiimoteNunchuckTexture, 48, 64, GX_TF_I4, GX_CLAMP, GX_CLAMP, GX_FALSE);
controllerWiimoteImage = new Image(ControlWiimoteTexture, 48, 64, GX_TF_I4, GX_CLAMP, GX_CLAMP, GX_FALSE);
@ -64,7 +65,8 @@ Resources::~Resources()
delete styleAButtonSelectOnFocusImage;
delete menuBackgroundImage;
delete controllerEmptyImage;
delete controllerGamecubeImage;
delete controllerGameCubeImage;
delete controllerWiiUProImage;
delete controllerClassicImage;
delete controllerWiimoteNunchuckImage;
delete controllerWiimoteImage;
@ -107,7 +109,10 @@ Image* Resources::getImage(int image)
returnImage = controllerEmptyImage;
break;
case IMAGE_CONTROLLER_GAMECUBE:
returnImage = controllerGamecubeImage;
returnImage = controllerGameCubeImage;
break;
case IMAGE_CONTROLLER_WIIUPRO:
returnImage = controllerWiiUProImage;
break;
case IMAGE_CONTROLLER_CLASSIC:
returnImage = controllerClassicImage;

View file

@ -48,6 +48,7 @@ public:
IMAGE_MENU_BACKGROUND,
IMAGE_CONTROLLER_EMPTY,
IMAGE_CONTROLLER_GAMECUBE,
IMAGE_CONTROLLER_WIIUPRO,
IMAGE_CONTROLLER_CLASSIC,
IMAGE_CONTROLLER_WIIMOTENUNCHUCK,
IMAGE_CONTROLLER_WIIMOTE,
@ -62,9 +63,9 @@ private:
Image *styleAButtonSelectOffImage, *styleAButtonSelectOffFocusImage;
Image *styleAButtonSelectOnImage, *styleAButtonSelectOnFocusImage;
Image *menuBackgroundImage;
Image *controllerEmptyImage, *controllerGamecubeImage;
Image *controllerClassicImage, *controllerWiimoteNunchuckImage;
Image *controllerWiimoteImage;
Image *controllerEmptyImage, *controllerGameCubeImage;
Image *controllerWiiUProImage, *controllerClassicImage;
Image *controllerWiimoteNunchuckImage, *controllerWiimoteImage;
Image *n64ControllerImage;
};

View file

@ -150,11 +150,22 @@ void InputStatusBar::drawComponent(Graphics& gfx)
#ifdef HW_RVL
case PADTYPE_WII:
s32 err;
err = WPAD_Probe((int)padAssign[i], &type);
err = WPAD_Probe((int)padAssign[i], &type);
controller_WiiUPro.available[(int)padAssign[i]] = (err == WPAD_ERR_NONE && type == WPAD_EXP_WIIUPRO) ? 1 : 0;
controller_Classic.available[(int)padAssign[i]] = (err == WPAD_ERR_NONE && type == WPAD_EXP_CLASSIC) ? 1 : 0;
controller_WiimoteNunchuk.available[(int)padAssign[i]] = (err == WPAD_ERR_NONE && type == WPAD_EXP_NUNCHUK) ? 1 : 0;
controller_Wiimote.available[(int)padAssign[i]] = (err == WPAD_ERR_NONE && type == WPAD_EXP_NONE) ? 1 : 0;
if (controller_Classic.available[(int)padAssign[i]])
controller_Wiimote.available[(int)padAssign[i]] = (err == WPAD_ERR_NONE && type == WPAD_EXP_NONE) ? 1 : 0;
if (controller_WiiUPro.available[(int)padAssign[i]])
{
assign_controller(i, &controller_WiiUPro, (int)padAssign[i]);
// gfx.setColor(activeColor);
// IplFont::getInstance().drawInit(activeColor);
gfx.setColor(controllerColors[i]);
IplFont::getInstance().drawInit(controllerColors[i]);
statusIcon = Resources::getInstance().getImage(Resources::IMAGE_CONTROLLER_WIIUPRO);
// sprintf (statusText, "Pad%d: WUP%d", i+1, padAssign[i]+1);
}
else if (controller_Classic.available[(int)padAssign[i]])
{
assign_controller(i, &controller_Classic, (int)padAssign[i]);
// gfx.setColor(activeColor);

View file

@ -291,6 +291,11 @@ int main(int argc, char* argv[]){
fclose(f);
}
#ifdef HW_RVL
f = fopen( "usb:/not64/controlP.cfg", "r" ); //attempt to open file
if(f) {
load_configurations(f, &controller_WiiUPro); //write out WiiU Pro controller mappings
fclose(f);
}
f = fopen( "usb:/not64/controlC.cfg", "r" ); //attempt to open file
if(f) {
load_configurations(f, &controller_Classic); //write out Classic controller mappings
@ -327,6 +332,11 @@ int main(int argc, char* argv[]){
fclose(f);
}
#ifdef HW_RVL
f = fopen( "sd:/not64/controlP.cfg", "r" ); //attempt to open file
if(f) {
load_configurations(f, &controller_WiiUPro); //write out WiiU Pro controller mappings
fclose(f);
}
f = fopen( "sd:/not64/controlC.cfg", "r" ); //attempt to open file
if(f) {
load_configurations(f, &controller_Classic); //write out Classic controller mappings

View file

@ -208,8 +208,9 @@ ConfigureButtonsFrame::~ConfigureButtonsFrame()
}
static char controllerTypeStrings[5][16] =
static char controllerTypeStrings[6][16] =
{ "GameCube",
"WiiU Pro",
"Classic",
"Wiimote+Nunchuk",
"Wiimote",
@ -218,6 +219,7 @@ static char controllerTypeStrings[5][16] =
enum ActivePadType
{
ACTIVEPADTYPE_GAMECUBE=0,
ACTIVEPADTYPE_WIIUPRO,
ACTIVEPADTYPE_CLASSIC,
ACTIVEPADTYPE_WIIMOTENUNCHUCK,
ACTIVEPADTYPE_WIIMOTE,
@ -248,6 +250,8 @@ void ConfigureButtonsFrame::activateSubmenu(int submenu)
if (virtualControllers[activePad].control == &controller_GC)
activePadType = ACTIVEPADTYPE_GAMECUBE;
#ifdef HW_RVL
else if (virtualControllers[activePad].control == &controller_WiiUPro)
activePadType = ACTIVEPADTYPE_WIIUPRO;
else if (virtualControllers[activePad].control == &controller_Classic)
activePadType = ACTIVEPADTYPE_CLASSIC;
else if (virtualControllers[activePad].control == &controller_WiimoteNunchuk)

View file

@ -186,9 +186,9 @@ void FileBrowserFrame::drawChildren(menu::Graphics &gfx)
{
u32 currentButtonsDownWii = (wiiPad[i].btns_h ^ previousButtonsWii[i]) & wiiPad[i].btns_h;
previousButtonsWii[i] = wiiPad[i].btns_h;
if (wiiPad[i].exp.type == WPAD_EXP_CLASSIC)
if (wiiPad[i].exp.type == WPAD_EXP_CLASSIC || wiiPad[i].exp.type == WPAD_EXP_WIIUPRO)
{
if (currentButtonsDownWii & WPAD_CLASSIC_BUTTON_FULL_R)
if (currentButtonsDownWii & (WPAD_CLASSIC_BUTTON_FULL_R | WPAD_CLASSIC_BUTTON_ZR))
{
//move to next set & return
current_page = (current_page + 1) % max_page;
@ -196,7 +196,7 @@ void FileBrowserFrame::drawChildren(menu::Graphics &gfx)
menu::Focus::getInstance().clearPrimaryFocus();
break;
}
else if (currentButtonsDownWii & WPAD_CLASSIC_BUTTON_FULL_L)
else if (currentButtonsDownWii & (WPAD_CLASSIC_BUTTON_FULL_L | WPAD_CLASSIC_BUTTON_ZL))
{
//move to the previous set & return
current_page = (max_page + current_page - 1) % max_page;

View file

@ -24,7 +24,8 @@
extern u8 BackgroundTexture[];
extern u8 LoadingTexture[];
extern u8 ControlEmptyTexture[];
extern u8 ControlGamecubeTexture[];
extern u8 ControlGameCubeTexture[];
extern u8 ControlWiiUProTexture[];
extern u8 ControlClassicTexture[];
extern u8 ControlWiimoteNunchuckTexture[];
extern u8 ControlWiimoteTexture[];

View file

@ -24,13 +24,21 @@
ControlEmptyTexture_length:
.long (ControlEmptyTexture_length - ControlEmptyTexture)
.globl ControlGamecubeTexture
.globl ControlGameCubeTexture
.balign 32
ControlGamecubeTexture:
ControlGameCubeTexture:
.incbin "./menu/resources/cntrlGC.tx"
.globl ControlGamecubeTexture_length
ControlGamecubeTexture_length:
.long (ControlGamecubeTexture_length - ControlGamecubeTexture)
.globl ControlGameCubeTexture_length
ControlGameCubeTexture_length:
.long (ControlGameCubeTexture_length - ControlGameCubeTexture)
.globl ControlWiiUProTexture
.balign 32
ControlWiiUProTexture:
.incbin "./menu/resources/cntrlWUPro.tx"
.globl ControlWiiUProTexture_length
ControlWiiUProTexture_length:
.long (ControlWiiUProTexture_length - ControlWiiUProTexture)
.globl ControlClassicTexture
.balign 32

View file

@ -470,9 +470,9 @@ void SettingsFrame::drawChildren(menu::Graphics &gfx)
{
u32 currentButtonsDownWii = (wiiPad[i].btns_h ^ previousButtonsWii[i]) & wiiPad[i].btns_h;
previousButtonsWii[i] = wiiPad[i].btns_h;
if (wiiPad[i].exp.type == WPAD_EXP_CLASSIC)
if (wiiPad[i].exp.type == WPAD_EXP_CLASSIC || wiiPad[i].exp.type == WPAD_EXP_WIIUPRO)
{
if (currentButtonsDownWii & WPAD_CLASSIC_BUTTON_FULL_R)
if (currentButtonsDownWii & (WPAD_CLASSIC_BUTTON_FULL_R | WPAD_CLASSIC_BUTTON_ZR))
{
//move to next tab
if(activeSubmenu < SUBMENU_SAVES)
@ -482,7 +482,7 @@ void SettingsFrame::drawChildren(menu::Graphics &gfx)
}
break;
}
else if (currentButtonsDownWii & WPAD_CLASSIC_BUTTON_FULL_L)
else if (currentButtonsDownWii & (WPAD_CLASSIC_BUTTON_FULL_L | WPAD_CLASSIC_BUTTON_ZL))
{
//move to the previous tab
if(activeSubmenu > SUBMENU_GENERAL)
@ -807,6 +807,12 @@ void Func_SaveButtonsSD()
num_written++;
}
#ifdef HW_RVL
f = fopen( "sd:/not64/controlP.cfg", "wb" ); //attempt to open file
if(f) {
save_configurations(f, &controller_WiiUPro); //write out WiiU Pro controller mappings
fclose(f);
num_written++;
}
f = fopen( "sd:/not64/controlC.cfg", "wb" ); //attempt to open file
if(f) {
save_configurations(f, &controller_Classic); //write out Classic controller mappings
@ -847,6 +853,12 @@ void Func_SaveButtonsUSB()
num_written++;
}
#ifdef HW_RVL
f = fopen( "usb:/not64/controlP.cfg", "wb" ); //attempt to open file
if(f) {
save_configurations(f, &controller_WiiUPro); //write out WiiU Pro controller mappings
fclose(f);
num_written++;
}
f = fopen( "usb:/not64/controlC.cfg", "wb" ); //attempt to open file
if(f) {
save_configurations(f, &controller_Classic); //write out Classic controller mappings

Binary file not shown.