mirror of
https://github.com/extremscorner/not64.git
synced 2024-05-29 01:07:58 -04:00
This commit is contained in:
parent
0f3da0dfae
commit
34c74cb91a
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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){
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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[];
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
BIN
menu/resources/cntrlWUPro.tx
Normal file
BIN
menu/resources/cntrlWUPro.tx
Normal file
Binary file not shown.
Loading…
Reference in a new issue