Dolphin, the GameCube and Wii emulator - Forums

Full Version: Joy-con problems: SDL input lag on one controller, DirectInput not working
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
So, I am trying to get my Switch joy-cons connected to my Windows laptop and working with emulators, namely Dolphin and CEMU. I am trying to get them working both separately, and together in the joy-con grip. However, I am running into many strange problems. Here is a summary of what I have noticed and done so far. My ultimate questions are about Dolphin, but I will also explain my experience with CEMU for relevant context:


When I connect the joy-cons to my PC via Bluetooth and do not do anything else (no third party apps), a few options become available in both Dolphin and CEMU:
  • In CEMU, the joy-cons show up separately using both the SDL and DirectInput APIs. Despite them being recognized separately, CEMU allows you to use multiple controllers at once, allowing me to use the joy-cons together in the grip. With SDL, they are called "Nintendo Switch Joy-Con Left/Right", and with DirectInput, they are both called "Wireless Gamepad".
  1. When I use SDL, the first joy-con I connected to Windows always has input lag, and the second one does not. It is hard to describe the amount of lag, but it is enough to ruin ramp tricks in Mario Kart 8, for example.
  2. When I use DirectInput, this problem does not occur. However, DirectInput treats the analog sticks like D-pads, so it only recognizes eight discrete input directions. But this is not really an issue for me. The bigger problem with DirectInput is that it connects quite inconsistently. Normally, it does not work at first, but for some reason it works if I first test out SDL and then try DirectInput.
  • In Dolphin, the two joy-cons show up as a single SDL input called "Nintendo Switch Joy-Con (L/R)". They also show up separately as WGInputs, with the name "HID-Compliant Game Controller", and as DirectInputs (DInputs), with the name "Wireless Gamepad", the same as in CEMU.
  1. When I use SDL, I get the same input lag problem as in CEMU, namely that the first controller I happen to have connected to Windows experiences noticeable input lag, while the second does not.
  2. The WGInputs and DirectInputs do not work at all. They simply do not recognize my button presses.

I also tried using BetterJoy, in which case some more options appear in both Dolphin and CEMU, both in combined and separate joy-con mode:
  • In CEMU, I get one or two controllers (depending on the mode) called "Controller (Xbox 360 for Windows)" under DirectInput, one or two controllers called "Xbox 360 Controller" under SDLInput, and one or two controllers called simply "Controller (1/2)" under XInput.
  • In Dolphin, I get one or two controllers called "Xbox 360 Controller for Windows" as WGInputs, and one or two controllers called "Gamepad" as XInputs.
The problem is, the input lag problems appear with all of these options. I would prefer to use DirectInput without BetterJoy, as it seems to be the only option so far that does not have input lag.


The same input lag also appears when I try to use the joy-cons in Steam. As far as I can tell, there is no input lag when the joy-cons are connected wirelessly to the Switch itself. Therefore, it seems to be either a bluetooth connectivity issue on my laptop, or a controllerĀ API issue.


So, I have a few questions:

  1. Is there any way to get DirectInput working with joy-cons in Dolphin the same way it does in CEMU? It hasĀ its problems in CEMU as well, but at least there is a way to get it to work. This would seem to be the easiest way to resolve the input lag issue in Dolphin.
  2. I heard from some other posts that getting an external USB Bluetooth adapter could resolve the SDL and BetterJoy input lag problems. However, I have yet to hear from someone who has actually tried this. Is there anyone who has tried this, and who can confirm whether it works or not?
  3. Is there any other option I am not aware of that could resolve this mess?