v1993 / linuxmotehook2

Cemuhook UDP server for WiiMotes on Linux

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Problem with wiimote v1

FlyingPC opened this issue · comments

I've been using linuxmotehook2 for some time with Cemu. Thanks a lot for this job, I greatly appreciate it.

It works well but I had to make a modification to the source code of gcemuhook/src/Server.vala so that the movement of my wiimote is correctly taken into account.

In the "normal" case, I had to modify the accelerometer consideration in this way (l. 449 of gcemuhook/src/Server.vala):
"""
case NORMAL :
//retour accel;
retourner MotionData() {
x = -accel.x,
y = -accel.y,
z = accel.z
"""

Without this modification, I have to flip my wiimote in order to be able to play Mario Kart 8 but I didn't quite understand why.

Despite these changes, there is still a problem and that is why I am sending you an email.

When I hold my wiimote flat (in this way: ---), I notice while playing Mario Kart 8 that the kart does not go straight but turns slightly.And to go straight, I have to turn my wiimote a little bit. I think there is a calibration problem.

I would like to know if it is possible to somehow calibrate the accelerometers with linuxmotehook2. I couldn't find anything in the .ini file or the source about this.

Now I am testing new commit under dolphin. But it seems to not work properly. I am trying to play Mario Kart Wii but the kart doesn't turn. But it is maybe a configuration problem. In the input configuration panel, I see accelerometer moving but I don't understand what I am looking at.

With the new commit there is still a problem with the neutral position. with Cemu

commented

Please post screenshot of dolphin's motion input tab.

Here a 6 screen shots of accelerometer position see by dolphin in 6 positions of the wiimote.
dolphin_test

1 : correspond to the wiimote placed on a table face up.
2 : correspond to the wiimote rotated 90° to the left in relation to position 1
3 : again 90° to the left (so the wiimote is face down
4 : again 90° to the left.
5 : wiimote placed vertically (power button at the top)
6 : wiimote placed vertically (power button at the bottom)

Everything of that with the last commit.

commented

Can you try changing this line to if (true) { and test dolphin again (with screenshots)? It would seem that orientation for gen2 was correct all along.

Hi,

I am trying to run the command ninja -C build but I get the error below
FAILED: subprojects/gcemuhook/src/libgcemuhook-0.1.a.p/AbstractPhysicalDevice.c subprojects/gcemuhook/src/libgcemuhook-0.1.a.p/Constants.c subprojects/gcemuhook/src/libgcemuhook-0.1.a.p/Server.c subprojects/gcemuhook/src/libgcemuhook-0.1.a.p/Utils.c subprojects/gcemuhook/src/libgcemuhook-0.1.a.p/WrapperPhysicalDevice.c subprojects/gcemuhook/src/gcemuhook-0.1.h subprojects/gcemuhook/src/gcemuhook-0.1.vapi subprojects/gcemuhook/src/gcemuhook-0.1.gir
valac -C --pkg zlib --pkg gee-0.8 --pkg gio-2.0 --target-glib ' 2.50' --pkg glib-2.0 --color=always --directory subprojects/gcemuhook/src/libgcemuhook-0.1.a.p --basedir ../subprojects/gcemuhook/src --library gcemuhook-0.1 --header subprojects/gcemuhook/src/gcemuhook-0.1.h --vapi ../gcemuhook-0.1.vapi --gir ../gcemuhook-0.1.gir ../subprojects/gcemuhook/src/AbstractPhysicalDevice.vala ../subprojects/gcemuhook/src/Constants.vala ../subprojects/gcemuhook/src/Server.vala ../subprojects/gcemuhook/src/Utils.vala ../subprojects/gcemuhook/src/WrapperPhysicalDevice.vala
../subprojects/gcemuhook/src/Server.vala:545.7-545.7: error: syntax error, expected identifier

Hi,

I am trying to run the command ninja -C build but I get the error below FAILED: subprojects/gcemuhook/src/libgcemuhook-0.1.a.p/AbstractPhysicalDevice.c subprojects/gcemuhook/src/libgcemuhook-0.1.a.p/Constants.c subprojects/gcemuhook/src/libgcemuhook-0.1.a.p/Server.c subprojects/gcemuhook/src/libgcemuhook-0.1.a.p/Utils.c subprojects/gcemuhook/src/libgcemuhook-0.1.a.p/WrapperPhysicalDevice.c subprojects/gcemuhook/src/gcemuhook-0.1.h subprojects/gcemuhook/src/gcemuhook-0.1.vapi subprojects/gcemuhook/src/gcemuhook-0.1.gir valac -C --pkg zlib --pkg gee-0.8 --pkg gio-2.0 --target-glib ' 2.50' --pkg glib-2.0 --color=always --directory subprojects/gcemuhook/src/libgcemuhook-0.1.a.p --basedir ../subprojects/gcemuhook/src --library gcemuhook-0.1 --header subprojects/gcemuhook/src/gcemuhook-0.1.h --vapi ../gcemuhook-0.1.vapi --gir ../gcemuhook-0.1.gir ../subprojects/gcemuhook/src/AbstractPhysicalDevice.vala ../subprojects/gcemuhook/src/Constants.vala ../subprojects/gcemuhook/src/Server.vala ../subprojects/gcemuhook/src/Utils.vala ../subprojects/gcemuhook/src/WrapperPhysicalDevice.vala ../subprojects/gcemuhook/src/Server.vala:545.7-545.7: error: syntax error, expected identifier

This should be posted on a forum or some other issue. That would make this thread clearer.

Can you try changing this line to if (true) { and test dolphin again (with screenshots)? It would seem that orientation for gen2 was correct all along.

Ok, I'll try tomorrow. Thanks for your help !

Here is the test :
dolphin_test2

commented

Judging from this picture old original orientation was indeed correct all along, oh well. I went ahead and reverted last commit. So this suggests that something is off in your cemu setup. I've asked this in email - are you emulating gamepad or wiimote there? If gamepad, can you try connecting motion plus (assuming you have it)?

Have you ever try to disable gyroscopes in linuxmotehook2 to "simulate" the behaviour of a wiimote v1 ?
I ask that because, from what I have understood, a wiimote Motion Plus is a wiimote v1 with gyroscopes. So maybe disable gyros will generate same issue.

My wiimote doesn't have motion plus and in Cemu, I'm using this config in Cemu :
cemu_config

commented

The thing is - clients tend to offer limited support for no-gyro motion sources due to significantly reduced amount of information available. Some (yuzu and likely dolphin/cemu too) run their own simulation of movement rather than directly pass input values to program, which worsens data quality in no-gyro situations. On my end lack of motion plus only makes linuxmotehook2 report that gyro is missing - and that's about it.

That said, this shouldn't lead to incorrect axis mapping like you're describing. Sadly, I don't have any wiimote-accepting games on WiiU to test this, but this sounds like a potential issue on cemu's side, possibly hidden by testing only with motion servers that have gyros. Judging by Dolphin screenshots, there's nothing wrong with data I'm sending.

I have posted an issue in cemu github.

commented

Closing this issue as apparently not caused by us, will reopen if needed.