From 9e32525bb5bee85dbc61afddd609e83b7f5dbfba Mon Sep 17 00:00:00 2001 From: Zarithya Date: Mon, 11 Aug 2025 23:38:49 -0700 Subject: [PATCH 1/2] Properly clear used/active Wiimote bitmask --- wiiuse/wpad.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/wiiuse/wpad.c b/wiiuse/wpad.c index a9c5a98eb..61dc4c3e8 100644 --- a/wiiuse/wpad.c +++ b/wiiuse/wpad.c @@ -1738,6 +1738,9 @@ s32 WPAD_Shutdown(void) __wpads_listen[i].sock = NULL; } + __wpads_active = 0; + __wpads_used = 0; + __wiiuse_sensorbar_enable(0); _CPU_ISR_Restore(level); From d72be93fdd6517f7ede6e7755716ed84a5683c9b Mon Sep 17 00:00:00 2001 From: Zarithya Date: Mon, 11 Aug 2025 23:42:50 -0700 Subject: [PATCH 2/2] Ensure slot can always be taken by proper owner --- wiiuse/wpad.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wiiuse/wpad.c b/wiiuse/wpad.c index 61dc4c3e8..d9f96358c 100644 --- a/wiiuse/wpad.c +++ b/wiiuse/wpad.c @@ -950,9 +950,10 @@ static s8 __wpad_connreqCB(void *arg,struct bd_addr *pad_addr,u8 *cod,u8 link_ty if(!bd_addr_cmp(pad_addr,BD_ADDR_ANY)) { confslot = GetActiveSlot(pad_addr); if (confslot < CONF_PAD_MAX_ACTIVE) { + BD_ADDR_FROM_BYTES(&bdaddr,__wpad_devs.active[confslot].bdaddr); name = (u8 *)__wpad_devs.active[confslot].name; WIIUSE_DEBUG("Active pad '%s' found in slot %d", name, confslot); - if (!(__wpads_used & (1<