Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput https://github.com/Davidobot/BetterJoy
Find a file
David Khachaturov 31618200fc - Added a few more app settings.
- CemuHook correctly sees type of connection
2018-03-17 08:38:24 +00:00
BetterJoyForCemu - Added a few more app settings. 2018-03-17 08:38:24 +00:00
.gitattributes Add .gitignore and .gitattributes. 2018-02-27 22:11:54 +00:00
.gitignore Add .gitignore and .gitattributes. 2018-02-27 22:11:54 +00:00
BetterJoyForCemu.sln Added XInput Support using ViGEm. 2018-03-15 17:14:54 +00:00
README.md Update README.md 2018-03-14 21:44:15 +00:00

BetterJoyForCemu v2.0c

Allows the Nintendo Switch Pro Controller to be used with the Cemu Emulator and Cemuhook.

Changelog

v2

  • Added Joycon support
    • Exposes two CemuHook controllers - both have all the buttons, selecting one or the other will just pick whether to use the right or left Joycon for the motion controls
    • Make sure both controllers are connected beforehand
  • Further gyro fixes
  • Code cleanup

v1.51

  • Added USB support
  • Eliminated gyro shaking
  • Improved bluetooth support
    • It's no longer necessary to completely remove and then reconnect the pro controller from your bluetooth devices when you turn it off
    • Pro controller reconnects to computer normally now
  • Added 32-bit release (untested)
  • Cleaned up code
  • v1.51
    • More gyro fixes (runs at max UDP now - as precise as one can get)
    • Especially noticeable in USB mode

v1

  • Initial release

How to use

  1. Make sure CEMU has at least one input profile set up already (so that CemuHook can feed data into it)
    1. If you don't, go into Input settings (under Options) on Cemu and set the first controller to be a Wii U Gamepad, you can leave the rest of the settings blank (or set the device to your keyboard)
  2. Connect pro controller via bluetooth/usb
  3. Run BetterJoyForCemu.exe
    1. If the controller recongised, the first LED should light up.
    2. If not, see the Problems section.
  4. Start Cemu and ensure CemuHook has the controller selected.
    1. If using Joycons, the program will show two controllers - each will give all buttons, but choosing one over the other just chooses preference for which hand to use for gyro controls.
  5. Enable "Also use for buttons/axes"
  6. Please press enter in the console box once you're done with the program - closing it by clicking "x" does not stop the services correctly.

Problems

If the controller does not work after restarting the exe too many times - shut down the exe, disconnect your pro controller and connect it again.

If you get weird lag/stuttering - restart your computer; or try running the program multiple times, closing it properly (by pressing enter) each time.

If something isn't working but it looks like it should be - try running the program as administrator.

Note that for Joycons to work properly, you need a decent Bluetooth adapter that is comfortable with handling 3/4 connections at a time

No Joycons detected

If using Bluetooth - see the "How to properly disconnect the controller" section and follow the steps listed there. Then, reconnect the controller.

If using USB - try unplugging the controller and then plugging it back in, making sure to let Windows set it up before launching the program.

Getting stuck at "Using USB" or "Using factory.."

Close the program and then start it again. If it doesn't work, see the "No joycons detected" section and try that.

CemuHook not recognising the controller

Make sure that CemuHook settings are at their default state, which are -

serverIP = 127.0.0.1
serverPort = 26761

Feel free to open a new issue if you have any comments or questions.

Connecting and Disconnecting the Controller

Bluetooth Mode

Hold down the small button on the top of the controller for 5 seconds - this puts the controller into broadcasting mode.

Search for it in your bluetooth settings and pair normally.

To disconnect the controller - press down the button once. To reconnect - press any button on your controller.

USB Mode

Plug the controller into your computer.

How to properly disconnect the controller

Windows 10

  1. Go into "Bluetooth and other devices settings"
  2. Under the first category "Mouse, keyboard, & pen", there should be the pro controller.
  3. Click on it and a "Remove" button will be revealed.
  4. Press the "Remove" button

Acknowledgements

A massive thanks goes out to rajkosto for putting up with 17 emails and replying very quickly to my silly queries. The UDP server is also mostly taken from his ScpToolkit repo.

Also I am very grateful to mfosse for pointing me in the right direction and to Looking-Glass without whom I would not be able to figure anything out. (being honest here - the joycon code is his)

A last thanks goes out to dekuNukem for his documentation, especially on the SPI calibration data and the IMU sensor notes!