Explicit support for Motion Plus controllers

This commit is contained in:
Andrew 2024-05-13 00:33:07 +01:00 committed by Maschell
parent 87ad32516f
commit 87bb3c521f
2 changed files with 7 additions and 5 deletions

View File

@ -111,12 +111,13 @@ DECL_FUNCTION(void, WPADRead, WPADChan chan, WPADStatusProController *data) {
if (!sConfigMenuOpened && data && data[0].err == 0) { if (!sConfigMenuOpened && data && data[0].err == 0) {
if (data[0].extensionType != 0xFF) { if (data[0].extensionType != 0xFF) {
if (data[0].extensionType == WPAD_EXT_CORE || data[0].extensionType == WPAD_EXT_NUNCHUK) { if (data[0].extensionType == WPAD_EXT_CORE || data[0].extensionType == WPAD_EXT_NUNCHUK ||
data[0].extensionType == WPAD_EXT_MPLUS || data[0].extensionType == WPAD_EXT_MPLUS_NUNCHUK) {
// button data is in the first 2 bytes for wiimotes // button data is in the first 2 bytes for wiimotes
if (((uint16_t *) data)[0] == (WPAD_BUTTON_B | WPAD_BUTTON_DOWN | WPAD_BUTTON_MINUS)) { if (((uint16_t *) data)[0] == (WPAD_BUTTON_B | WPAD_BUTTON_DOWN | WPAD_BUTTON_MINUS)) {
sWantsToOpenConfigMenu = true; sWantsToOpenConfigMenu = true;
} }
} else if (data[0].extensionType == WPAD_EXT_CLASSIC) { } else if (data[0].extensionType == WPAD_EXT_CLASSIC || data[0].extensionType == WPAD_EXT_MPLUS_CLASSIC) {
// TODO: figure out the real struct.. // TODO: figure out the real struct..
if ((((uint32_t *) data)[10] & 0xFFFF) == (WPAD_CLASSIC_BUTTON_L | WPAD_CLASSIC_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_MINUS)) { if ((((uint32_t *) data)[10] & 0xFFFF) == (WPAD_CLASSIC_BUTTON_L | WPAD_CLASSIC_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_MINUS)) {
sWantsToOpenConfigMenu = true; sWantsToOpenConfigMenu = true;
@ -223,4 +224,4 @@ function_replacement_data_t method_hooks_static[] __attribute__((section(".data"
}; };
uint32_t method_hooks_static_size __attribute__((section(".data"))) = sizeof(method_hooks_static) / sizeof(function_replacement_data_t); uint32_t method_hooks_static_size __attribute__((section(".data"))) = sizeof(method_hooks_static) / sizeof(function_replacement_data_t);

View File

@ -144,7 +144,8 @@ public:
return false; return false;
} }
if (kpad.extensionType == WPAD_EXT_CORE || kpad.extensionType == WPAD_EXT_NUNCHUK) { if (kpad.extensionType == WPAD_EXT_CORE || kpad.extensionType == WPAD_EXT_NUNCHUK ||
kpad.extensionType == WPAD_EXT_MPLUS || kpad.extensionType == WPAD_EXT_MPLUS_NUNCHUK) {
data.buttons_r = remapWiiMoteButtons(kpad.release); data.buttons_r = remapWiiMoteButtons(kpad.release);
data.buttons_h = remapWiiMoteButtons(kpad.hold); data.buttons_h = remapWiiMoteButtons(kpad.hold);
data.buttons_d = remapWiiMoteButtons(kpad.trigger); data.buttons_d = remapWiiMoteButtons(kpad.trigger);
@ -184,4 +185,4 @@ public:
KPADStatus kpad = {}; KPADStatus kpad = {};
KPADError kpadError = KPAD_ERROR_UNINITIALIZED; KPADError kpadError = KPAD_ERROR_UNINITIALIZED;
KPADChan channel; KPADChan channel;
}; };