ndeadly / MissionControl

Use controllers from other consoles natively on your Nintendo Switch via Bluetooth. No dongles or other external hardware neccessary.
GNU General Public License v2.0
2.38k stars 137 forks source link

Wii Motion Plus + Nunchuk: No waggle/motion controls, inverted axis' #832

Open GodBryanEarthDestroyer2 opened 4 days ago

GodBryanEarthDestroyer2 commented 4 days ago

Switch Firmware Version

18.1.0 (Latest)

Atmosphère Version

1.7.1 (Latest)

Mission Control Version

0.11.1 (Latest)

Boot Method

Hekate

Issue Description

After pairing Nintendo Wii remotes with built-in Wii Motion Plus sensors, some controllers will function with waggle whereas others may not. For example, shaking the controller while playing Super Mario Galaxy will allow Mario to perform a spin; when tested on one Wii remote, this action functioned flawlessly however, future pairings have not delivered similar results. Motion controls are no longer functional however, gyro remains possible. It is possible to use pointer controls in the Super Mario 3D All-Stars version of Super Mario Galaxy (albeit with inverted axis'). Still, motion only works some of the time depending on the controller.

Error Report

No response

Additional Context

Initial testing was performed with a Wii Remote with built-in Wii Motion Plus in handheld mode. Pairing this controller was slightly difficult with shoddy pointer/gyro functionality. However, motion controls did function.

After testing, I decided to purchase my own Wii remote with the same setup, nunchuck and all. At home, I can get the controller to connect without issue however, motion controls seem to no longer function. Gyro pointer control may prove somewhat troublesome but seems to work itself out after spamming the recenter button during regular gameplay.

ndeadly commented 4 days ago

Motion plus controllers need to be laying button side down on a flat surface when you power them on in order to calibrate properly. If they're not, you'll get all kinds of weird things happening with the motion controls. On Wii games, the game was able to prompt you to do this and wait for the motion control reading to stablise before continuing. On Switch, controllers store their own calibration onboard so this step isn't required, and games aren't waiting for you to do the calibration.

There is also a certain probability that the motion plus isn't initialised properly on connection and doesn't work at all. This seems to be timing related. I was never able to get to the bottom of it as I don't own one. I had someone debugging remotely and grew frustrated and called it good enough. If someone who owns the controller were to come along with a solution , I would welcome their contribution. In any case, power cycling the controller can make it come good again.

GodBryanEarthDestroyer2 commented 4 days ago

I can report that with Dolphin, motion controls and the gyro pointer work without issue nor any need for a sensor bar.

On Switch, is there anything that I can do to prompt the Motion Plus sensor to initialize properly? I have tried many a time to reconnect without any luck. Furthermore, is there a way that I could just invert the axis' for motion for this one controller to avoid the frustration regarding gyro pointers? Provided that flipping the remote upside down provides mixed results at best.

I am no developer but I would be happy to try and help figure out some solution. It is a shame it cannot be as easy as porting Dolphin's Wii remote capabilities.

Edit: Rebooting the system and then connecting the Wii remote with the recommended method has provided solid results. The only issue remains the waggle function not working.

ndeadly commented 4 days ago

Dolphin working correctly is more likely to be Dolphin running software that was designed for use with the Wii remote. The software on switch doesn't expect to have to do any calibration, as this is all handled by the hid module using the stored calibration data for official controllers. It also has different ways in which games can opt to use the motion data coming from the controller. This is something that we don't have any control over. You've also got the wii remotes sending data at a different rate to that of official controllers, so any assumptions the switch makes about sample spacing may be broken.

I am no developer but I would be happy to try and help figure out some solution. It is a shame it cannot be as easy as porting Dolphin's Wii remote capabilities.

I need a developer to look at this by themselves. I've done the whole back and forth with making changes and having someone test remotely with the hardware in the past and it's incredibly time consuming and frustrating.