Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mapping Analog Sticks no longer working in Citra or perhaps a larger problem. #10

Open
MrL360 opened this issue Jul 10, 2020 · 19 comments

Comments

@MrL360
Copy link

MrL360 commented Jul 10, 2020

When launching joycond-cemuhook and connecting my controller after Citra is open, motion control and all other controls can be mapped appropriately; however, the analog sticks don't appear to be working.

I thought the problem would be as simple as Citra not appropriately recognizing the controller at launch, so I connected my controller and opened joycond-cemuhook and then all the controls worked except the motion controls weren't working. What I found out is that Citra is refusing to connect to the cemuhook server when it's opened before Citra.

So now I am in this constant loop of:

If I open Citra first, the analog sticks don't work.
If I open the cemuhook server first, Citra refuses to connect to it.

What is annoying is that I have never run into this issue in the past month I've been using joycond-cemuhook, so I'm not entirely sure what has caused the issue.

Changing the ports that both of them use does not fix it.

Unfortunately, I don't know enough about cemuhook servers or Citra to troubleshoot further.

@joaorb64
Copy link
Owner

I'll try to replicate this bug. Did you test this on other emulators?

@potatoeggy
Copy link
Contributor

I have a similar issue (analog sticks are not detected), but it seems to be yuzu- and Citra-specific since the analog sticks work with Dolphin and Cemu.

This issue occurs even when just joycond is used.

@joaorb64
Copy link
Owner

joaorb64 commented Jul 18, 2020

After a test I have the same results: on Citra, even though I can configure the analog sticks, they won't work ingame (for Zelda OoT 3d I couldn't move but motion in first-person view works). Dolphin gets analog input from both the original merged joycons device and the DSU device.
Maybe it's a bug from a recent Citra update? Yuzu and Citra share a lot of code, so I could see the same issue being replicated in Yuzu.
And I also opened joycond-cemuhook before Citra and it connected properly...

@potatoeggy
Copy link
Contributor

potatoeggy commented Jul 18, 2020

Sorry, I forgot to mention that I can't reproduce connection issues between Citra and joycond-cemuhook, either.

@potatoeggy
Copy link
Contributor

potatoeggy commented Jul 20, 2020

citra-emu/citra#5466

Analog stick issue is confirmed to be a Citra issue since it occurs without joycond-cemuhook running, going all the way back at least since April from my testing.

@joaorb64
Copy link
Owner

Passing by to note that this bug only happens with Combined Joycons. Tested with a Pro Controller and it works fine with both analogs and motion input. @potatoeggy 's bug report on Citra citra-emu/citra#5466 shows a workaround for the time being (change the GUID on qt-config.ini).

@MrL360
Copy link
Author

MrL360 commented Jul 23, 2020

I should clarify that I am using a Pro Controller. Despite what you say @joaorb64 , I still run into this issue. Upon inspection of my qt-config, my GUID is the same for each input. Perhaps I am misunderstanding. How do I find what GUID joycond is assigning the controller?

@potatoeggy
Copy link
Contributor

I grabbed sdl2-jstest-git from the AUR to get what SDL was assigning the Joy-Cons.

@MrL360
Copy link
Author

MrL360 commented Jul 23, 2020

It seems to be using the appropriate GUID then. I'm not sure what's wrong.

@MrL360
Copy link
Author

MrL360 commented Jul 23, 2020

I don't have this issue if the controller is connected before launching Citra, but, as I said, Citra refuses to connect to the Cemuhook server. It can ping it, but its as if it times out.

@potatoeggy
Copy link
Contributor

potatoeggy commented Jul 23, 2020 via email

@MrL360
Copy link
Author

MrL360 commented Jul 23, 2020

citra_log.txt
Here's my Citra log. Testing Super Mario Galaxy, seems to work on Dolphin.

@potatoeggy
Copy link
Contributor

[   0.865140] Frontend <Info> citra_qt/main.cpp:GMainWindow:182: Citra Version:  | master-ea99f1c

It seems like you're using the Lutris runner for Citra, which dates back to 7 April 2020. Try using the latest Canary or Nightly builds, instead?

Otherwise, this part seems to be the only relevant bit, but I don't know enough about the protocol to comment more:

[ 151.631087] Frontend <Error> citra_qt/configuration/configure_motion_touch.cpp:operator():187: UDP input test failed
[ 156.784940] Input <Info> input_common/udp/client.cpp:StartCommunication:198: Starting communication with UDP input server on 127.0.0.1:26760
[ 163.145482] Input <Error> input_common/udp/protocol.cpp:Validate:61: UDP Packet payload length doesn't match. Received: 32 PayloadLength: 16 Expected: 84
[ 179.348388] Frontend <Info> citra_qt/configuration/configure_motion_touch.cpp:operator():183: UDP input test success
[ 182.584670] Input <Info> input_common/udp/client.cpp:StartCommunication:198: Starting communication with UDP input server on 127.0.0.1:26760

@MrL360
Copy link
Author

MrL360 commented Jul 23, 2020

This happens on all versions of Citra that I use. Doesn't matter if I'm using Lutris or not. I had actually downloaded the Lutris runner in hopes that maybe it would help. Also, while I had the game running and the motion was working without analog working, I had ran the SDL2 test and suddenly the sticks started working. The problem is when I got stick control back, the motion control stopped again. It's almost like it's fighting itself.

@potatoeggy
Copy link
Contributor

If you start joycond-cemuhook first and then start Citra, can you provide a log of Citra being unable to connect to the Cemuhook server?

@MrL360
Copy link
Author

MrL360 commented Jul 23, 2020

citra_log.txt

@potatoeggy
Copy link
Contributor

Unfortunately, I have no idea what could be happening anymore. Sorry for not being able to help more.

@joaorb64
Copy link
Owner

I'm also having a hard time figuring out where the issue might be 😞

@Jangberry
Copy link

Jangberry commented Feb 9, 2021

I think I found the issue (and good news for you, it seems to come from joycond) (BTW I tried it on Yuzu)

For some reason, only the IMU controler appears in Yuzu if joycond was running before linking the joycon (even if sometimes IMU doesn't appear in the name)
So my analysis is that for some reason joycond either put a kind of lock on the non-IMU contoler or delete this device trying to make only one (and (i think) mixing analog values in the process) I don't know enough to about joycond/linux drivers to tell...

However, if you stop joycond, pair the joycon, then restart joycond, it works. Finally, I don't really understand how come, but the stick on the second joycon isn't usable as a stick in Yuzu (but this issue probably comes from Yuzu as this stick still works when set as a button...)

EDIT: This comment may be the answer to why it does it...
EDIT2: After a bit more testing I found that not starting joycond at all gave the best result, even allowing me to use the second joycon's stick properly

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants