simphax / Touchmote

Touchmote
GNU General Public License v3.0
114 stars 32 forks source link

Nunchuk stick unresponsive (Win10 64bit) #95

Open megajimx opened 5 years ago

megajimx commented 5 years ago

I am using a Mayflash Dolphin Bar and Nunchuk attached to a Wii Motion Plus controller. No matter what I map to the Nunchuk analog stick, no events are triggered by using it.

I can confirm that the Nunchuk stick works in mode 3 on the Dolphin Bar as a controller left analog stick.

All Analog is working fine on my Classic Controller through Touchmote though.

I am using Touchmote v1.0b15

PipeRojas commented 4 years ago

I'm having the same issue, i´ve tried everything but nothing works, i´m using original WiiRemote/Nunchuk sets with laptop built-in bluetooth adapter and Mayflash Dolphin Bar and everything works except the Nunchuk Stick in Windows 10 x64 Ver. 1909. Please fix this!!!

hammk commented 2 years ago

Same issue here. Literally only the stick is nonfunctional, even the accelerometer works too. Doom 2 just doesn't work with the accelerometer mapped to move/strafing.

On Windows 10 x64 21H2, not using Dolphinbar.

tommylihk commented 1 year ago

I figured out it seems like a bug of WiimoteLib not populating correct values to nunchuk.Joystick.X and Y but the correct values can be calculated from nunchuk.RawJoystick.X and Y. I am testing the fix and will raise a PR to the author.

nunchuk.Joystick.X and Y are always 0, but RawJoystick.X and Y are come with correct values (0-255 according to hardware input)

Screenshot 2023-02-24 at 6 36 57 PM

tommylihk commented 1 year ago

Download the fix here: https://github.com/tommylihk/Touchmote/releases/tag/v1.0b15-nunchukfix

Trihy commented 1 year ago

There are some builds here https://github.com/simphax/Touchmote/issues/65 with many improvements if you want to take a look.

dante3732 commented 1 year ago

Download the fix here: https://github.com/tommylihk/Touchmote/releases/tag/v1.0b15-nunchukfix

Can you please add mouse 4 and 5 buttons in touchmote?

Ryochan7 commented 1 year ago

Interesting that the library does not populate those values for certain Wiimotes. Luckily those backup raw values are available as a workaround.

Ryochan7 commented 1 year ago

Looks like that can only happen when reading the Nunchuk calibration data fails.

https://github.com/simphax/WiimoteLib/blob/da0c7c2a508f61d4362d28999a7329ff561d3db1/WiimoteCS/WiimoteLib/Wiimote.cs#L693

if(mWiimoteState.NunchukState.CalibrationInfo.MaxX != 0x00)
  mWiimoteState.NunchukState.Joystick.X = (float)((float)mWiimoteState.NunchukState.RawJoystick.X - mWiimoteState.NunchukState.CalibrationInfo.MidX) / 
    ((float)mWiimoteState.NunchukState.CalibrationInfo.MaxX - mWiimoteState.NunchukState.CalibrationInfo.MinX);

if(mWiimoteState.NunchukState.CalibrationInfo.MaxY != 0x00)
  mWiimoteState.NunchukState.Joystick.Y = (float)((float)mWiimoteState.NunchukState.RawJoystick.Y - mWiimoteState.NunchukState.CalibrationInfo.MidY) / 
    ((float)mWiimoteState.NunchukState.CalibrationInfo.MaxY - mWiimoteState.NunchukState.CalibrationInfo.MinY);
Trihy commented 1 year ago

The workaround is in your builds? Didn't experience this problem using your builds.

I tried mostly with TR ones. But have some non TR lying around.

Ryochan7 commented 1 year ago

No. I have two Wiimotes (one TR and one non-TR) and the Nunchuk has always worked as intended in Touchmote.

Trihy commented 1 year ago

Cool. Not a big fan of the nunchuk. But been using lately for games like time crisis 5, where you switch from side to side (nunchuk analog stick). Also for reload on some games where "shoot outside the screen" to reload doesnt work. Gets the job done.

Ryochan7 commented 1 year ago

I am now experiencing this as well when using the Dolphinbar; even IR does not work in Touchmote anymore. Something must have changed with some recent Windows updates. Played around with the WiimoteLib code and its test utility. Got it somewhat working after some debugging. The library does not wait for an ACK report from the Wiimote when trying to initialize a connected extension so the expected read buffer will just be empty unless some artificial delays (sleep, breakpoints) are utilized. The proper extension mode will not be set in code either.

The library's Wiimote enumeration routine is not good. Too easy to error out with no graceful way to handle it. An ERROR_GEN_FAILURE error will be received when trying to write to controller slots with no Wiimote connected and WiimoteLib cannot really handle it properly.

This goes to show more how these old Wiimote utilities are getting crusty.

Trihy commented 1 year ago

Hi Ryo. Used touchmote yesterday. IR works fine. On Windows 11 with latest updates. I use a normal IR bar, not dolphin bar. Sometimes dolphin bar turn off the IR leds if no controller is connected. There is a special firmware to avoid that.

I did notice nunchuk doesnt work fine (or some buttons on wiimote stop responding) If you plug it in after turn wiimote on. If I plug the nunchuk before turning wiimote on, dont experience any problem so far.

If I plug nunchuk while wiimote is connected, results seem umpredictable.

dante3732 commented 1 year ago

In the config file, it not possible to reduce the sensitivity so that the mouse cursor does not twitch left and right? As if your hands are shaking after drinking.

Trihy commented 1 year ago

Still there is no way to avoid that.

If it´s just for Desktop clicking, en easy fix will be to have a on/off mouse cursor button. Like some Giro mouse have, with a button you can stop or disable the cursor so you can double click on icons (which the shaking prevents)

You can try Mouse Camera View instead of Mouse Cursor to see if you like, it doesnt shake, but you have to play with values on settings.json to get a mouse feeling.

dante3732 commented 1 year ago

You can try Mouse Camera View instead of Mouse Cursor to see if you like, it doesnt shake, but you have to play with values on settings.json to get a mouse feeling.

I play mostly in lightgun games.

By the way, there is no shake function in touchmote, which allows you to shake and launch any action, as in games with a gyroscope. Of course there is a tilt function, but that's different.

Trihy commented 1 year ago

I was referring to cursor shake.

But as a lightgun you need to use mouse cursor or analog stick mapped to IR, both will suffer from cursor shake.

Trihy commented 1 year ago

I can confirm everything works fine with normal IR bar and touchmote on latest Windows 11 with all the monthly updates.

Tried a TR one and a Nunchuk. All working including Nunchuk stick and IR pointer.

Using ryo's dec22 build.

Ryochan7 commented 1 year ago

I did not change anything but now Nunchuk and IR work in Touchmote again. My computer wants to act weird to irritate me

Trihy commented 1 year ago

Lol. Wiimotelib from touchmote seems solid enough. Not sure why dolphin team didn't use it. The one they use seems to be missing some goodies.

I will try to setup compiling tools to see if I can try some changes.