In order to edit this wiki, you must register and verify your account.

Motion controls: Difference between revisions

From Cemu Wiki
Jump to:navigation Jump to:search
m (Removed steam controller compatibility segment, as it isn't)
 
(13 intermediate revisions by 4 users not shown)
Line 1: Line 1:
===Motion Data in Wii U and Cemu===
This article provides a list of methods to achieve motion controls within Cemu.
The Wii U provides motion data to games either with the Wii U GamePad or a Wiimote (Plus model). In order to have that in Cemu we can:


a) Use a UDP-based motion server application to send the motion data of a real motion-support controller (that [[Cemuhook]]'s API listens to.)<br>
Cemu is capable of emulating '''motion controls''' within the Wii U GamePad or a Wiimote (MotionPlus model). In order to accomplish that in Cemu, various methods can be attempted, including setting up a UDP-based motion server application to send the motion data of a real motion-support controller (that [[Cemuhook]]'s GamePad Motion Source API listens to), using the emulated Wiimote Controller API in Cemu's input menu in combination with a real Wiimote (MotionPlus model), or using a hacky workaround that involves right clicking and dragging within the Cemu window.
b) Use the emulated Wiimote Controller API in Cemu's Input Menu in combination with a real Wiimote (Plus model.)<br>
c) Use a hacky workaround that involves right-click & dragging within the Cemu window, which isn't recommended if it can be avoided.<br>


Cemu 1.18.0 or later supports the [[Cemuhook]] motion API natively (Input Options > API > DSUClient) and it also adds native motion for the emulated Wiimote Controller API.<br>
Cemu 1.18.0 and later support the Cemuhook motion API natively (<code>Input Options > API > DSUClient</code>) and adds native motion for the emulated Wiimote Controller API.
Note: '''Cemu's DSUClient API option should not yet be used due to some inconsistencies.''' The Wiimote Controller API should still be fine, however.


=== Motion via the Cemuhook API (for the Emulated GamePad and emulated Wii Remote) ===
{{Note|'''Cemu's DSUClient API option should not yet be used due to some inconsistencies.''' The Wiimote Controller API should still be fine, however.}}


The Wii U GamePad and the Wii Remote Plus include a gyroscope and accelometer which are used to provide full motion data to several games (including BotW Shrines). In order to emulate that on Cemu we have several options based on [[Cemuhook]]'s motion API.
==Full-motion solutions==
The following solutions are full-motion because they provide a three-axis gyroscope and three-axis accelerometer.


= Full-motion Solutions =
The following solutions are full-motion because they provide a 3-axis gyroscope and 3-axis accelerometer. Examples of devices with limitations are a DualShock3 (only 1 axis gyroscope) and a non-MotionPlus Wii Remote (only accelerometer).
===DualShock 4 (DS4) or DualSense (DS5)===
===DualShock 4 (DS4) or DualSense (DS5)===
'''Note''': This is a very feature-rich solution because the device also includes a touchpad which can be very useful at games that do heavy usage of the GamePad touchscreen (e.g. SM3DW)
{{Note|This is a very feature-rich solution because the device also includes a touchpad which can be very useful at games that do heavy usage of the GamePad touchscreen, such as [[Super Mario 3D World]]}}


Installation and details:  
Cemu supports the motion control capabilities within the DualShock 4 and DualSense natively by setting the API to the SDLController API on Windows. On Linux, [https://github.com/epigramx/ds4drv-cemuhook ds4drv-cemuhook] is needed (rumble should also work with Wine's XInput emulation).


Windows: [https://cemu.cfw.guide/controller-configuration Motion Control Guide]
===Wiimotes===
{{Note|Original Wiimotes only contain an accelerometer, so their functionality is limited, e.g. as a "Wii Wheel" for [[Mario Kart 8]].}}
Motion for the emulated Wiimote Controller API option is supported out of the box when the Wiimote API is used with a real Wiimote in Cemu's input options. This is necessary for games that absolutely require a Wiimote.


Linux: [https://github.com/epigramx/ds4drv-cemuhook ds4drv-cemuhook] (rumble should also work with wine's xinput emulation by enabling it in cemu's options) or see section "Various controllers on Linux "
====Alternative methods====
Third-party alternatives exist for motion control support via Wiimotes (MotionPlus model), including [https://epigramx.github.io/WiimoteHook WiimoteHook] ([http://drive.google.com/uc?export=download&id=123Lq-uX2lwL2Y42iiYi6fUJVwTawiHU9 mirror]).


===Motion via the native support of Wiimotes===
On Linux, [https://github.com/v1993/linuxmotehook linuxmotehook] exists. WiimoteHook, depending on your setup, may work on Linux if wineconsole and .NET 4.5.2 or better are installed.
Motion for the emulated Wiimote Controller API option should be supported (or should be supported eventually) out of the box when the Wiimote API is used with a real Wiimote in Cemu's input options. This is necessary for games that absolutely require a Wiimote.


===3rd Party Alternative for Wiimotes (Plus model)===
===Nintendo Switch controllers===
Installation and details:  
Cemu supports the motion control capabilities within Nintendo Switch controllers natively by setting the API to the SDLController API on Windows. On Linux, [https://github.com/joaorb64/joycond-cemuhook joycond-cemuhook] works.


Windows: [https://epigramx.github.io/WiimoteHook WiimoteHook] ([https://forum.cemu.info/showthread.php/140 forum thread], [https://web.archive.org/web/20190524182502/https://forum.cemu.info/showthread.php/140 mirror of thread], [http://drive.google.com/uc?export=download&id=123Lq-uX2lwL2Y42iiYi6fUJVwTawiHU9 download URL])(it may also run on Linux with wineconsole if .NET 4.5.2 or better is installed)
===Various controllers on Linux===
Since Linux allows its drivers to expose motion data to userspace, it is possible to read it from such modern drivers for multiple devices. This also means ever-expanding list of supported devices as drivers for them become available. Please note that only motion feature is provided, neither buttons nor touchscreen are mapped even if present. Supported devices currently include the Nintendo Switch Joy-Cons and Pro Controller, as well as the DualShock 3, DualShock 4, and DualSense controllers via [https://github.com/v1993/evdevhook evdevhook].


Linux: [https://github.com/v1993/linuxmotehook linuxmotehook]
===Mobile devices===
{{Note|Not all mobile devices include a gyroscope. Some only include a magnetometer, which runs slow within Cemu; certain devices only include an accelerometer, which does not allow for yaw motion}}


===Steam Controller===
===iOS===
Installation and details: [https://cemu.cfw.guide/controller-configuration Motion Control Guide]
Beginning with the iPhone 4, a gyroscope is included in every iPhone. The recommended method to utilize your iPhone for motion controls in Cemu is through [https://github.com/hjmmc/WebGyroForCemuhook WebGyroForCemuhook], which requires [[Cemuhook]]. Download the latest version, aand set the GamePad motion source to DSU1. Using your iPhone's browser, navigate to the URL provided by Gyro.exe.


===Nintendo Switch Controllers===
Alternatively, the [https://github.com/shiftinv/MotionSourceiOS MotionSourceiOS] app can be sideloaded to your iPhone.


Installation and details:
===Android===
The [https://files.sshnuke.net/net.sshnuke.dsu.MotionSource-1.1.2.apk MotionSource] app is capable of providing gyroscope data to Cemu via Cemuhook.


Windows: [https://cemu.cfw.guide/controller-configuration Motion Control Guide]
===Windows phones===
The only way to set up motion controls with Windows phones in Cemu is through the [https://mega.nz/file/doRQ3a6D#yB5CEL4GjCKkUhIwCdwH7BgHtvoSwAFR2CrH9ZkVNGw UWP MotionSource] app.


Linux: [https://github.com/joaorb64/joycond-cemuhook joycond-cemuhook] or see section "Various controllers on Linux"
==Full-motion solutions with limitations==
 
===Various Controllers on Linux===
 
Since Linux allows its drivers to expose motion data to userspace, it is possible to read it from such modern drivers for multiple devices. This also means ever-expanding list of supported devices as drivers for them become available. Please note that only motion feature is provided, neither buttons nor touchscreen are mapped even if present. Supported devices currently include:
 
* Nintendo Switch JoyCons/ProCon
* DualShock 3/4 and DualSense controllers
 
Installation and details: [https://github.com/v1993/evdevhook evdevhook]
 
=== Phones/Tablets that include a gyroscope ===
 
Note: not all phones include a gyroscope; some include a magnetometer which is sluggish or even only an accelerometer in which case there will be no yaw motion at all.
 
[[File:Safair Iphone.png|thumb|left]]
 
===Iphone===
 
Download releases Gyro.exe (1.9) [https://github.com/hjmmc/WebGyroForCemuhook Gyro.exe]
 
Double click Gyro.exe
 
Run Cemu.exe and Checked Options->GamePad mation source->DSU1->By Slot
 
Use your Iphone's browser (safair or chrome) open http://'''your.pc.ip''':8080 (example http://192.168.1.100:8080)
 
Load the game and enjoy it =)
 
'''Tested on Iphone 6 IOS 12.4.5 and CEMU 1.18.0b'''
 
===Installation and details: ===
 
Android: [https://cemuhook.sshnuke.net/padudpserver.html MotionSource]
 
Any phone type via the browser: [https://github.com/hjmmc/WebGyroForCemuhook WebGyroForCemuhook]
 
Windows Phones: [https://www.reddit.com/r/cemu/comments/77ovce UWP MotionSource]
 
iPhones via an app: [https://github.com/shiftinv/MotionSourceiOS MotionSourceiOS]
 
<br><br><br><br><br><br><br><br><br>
 
= Full-motion Solutions with Limitations =


=== DualShock 3 ===
=== DualShock 3 ===
Note: This full-motion solution has the limitation that the ds3 gyroscope provides only yaw axis data; this makes it more responsive at yaw-turning when the device is at the standard orientation
{{Note|The DualShock 3 only provides yaw axis data.}}
 
Cemuhook's [https://cemuhook.sshnuke.net/padudpserver.html ScpToolkit patch] is capable of utilizing the gyroscope within the DualShock 3 to use in Cemu on Windows.
Windows: [https://cemuhook.sshnuke.net/padudpserver.html Cemuhook's ScpToolkit patch]
 
Linux: see section "Various controllers on Linux".
 
=== Phones/Tablets that have a magnetometer instead of a gyroscope ===
Note: these phones have full motion but it's sluggish at the yaw axis motion compared to hardware-gyroscope phones
 
Installation: Refer to the full-motion section URLs
 
= Partial solutions =
===Phones/Tablets that don't even have a magnetometer===
Note: Some low-end phones have only an accelerometer, making it impossible to have a yaw axis; that makes them unusable in several cases
 
Installation and details: Refer to the full-motion section URLs
 
===Wii Remotes without MotionPlus hardware===
Note: the original Wii Remotes had only an accelerometer so they can be only useful partially, e.g. as a "Wii Wheel" for MK8
 
Installation and details: Refer to the full-motion section URLs


===Xbox controllers / Analog Stick motion emulation ===
==Partial solutions==
===Xbox controllers===
{{Note|This method emulates motion data using the analog stick on the Xbox controllers; it is counter-intuitive in several cases and not recommended}}


Note: This solution emulates motion data with analog sticks of controllers; it is counter-intuitive in several cases; it is common to combine a phone with such controllers instead
To set up an Xbox controller with motion data, download [https://github.com/quinton-ashley/cemu-no-gyro cemu-no-gyro] and Cemuhook and set the GamePad motion source to DSU1.


Installation and details: [https://github.com/quinton-ashley/cemu-no-gyro/blob/master/README.md cemu-no-gyro]
===Mouse===
Hold down the right button in a game and move the mouse allows for a full degree of movement. Control third axis scrolling the mouse wheel. This method is not recommended.


===Out of the box mouse solution===
[[Category:List of tutorials]]
For this solution just right click on the game and move the mouse (including the wheel of the mouse). It is very counter-intuitive so you might want to avoid it.

Latest revision as of 21:47, 26 January 2024

This article provides a list of methods to achieve motion controls within Cemu.

Cemu is capable of emulating motion controls within the Wii U GamePad or a Wiimote (MotionPlus model). In order to accomplish that in Cemu, various methods can be attempted, including setting up a UDP-based motion server application to send the motion data of a real motion-support controller (that Cemuhook's GamePad Motion Source API listens to), using the emulated Wiimote Controller API in Cemu's input menu in combination with a real Wiimote (MotionPlus model), or using a hacky workaround that involves right clicking and dragging within the Cemu window.

Cemu 1.18.0 and later support the Cemuhook motion API natively (Input Options > API > DSUClient) and adds native motion for the emulated Wiimote Controller API.

Note
Cemu's DSUClient API option should not yet be used due to some inconsistencies. The Wiimote Controller API should still be fine, however.

Full-motion solutions

The following solutions are full-motion because they provide a three-axis gyroscope and three-axis accelerometer.

DualShock 4 (DS4) or DualSense (DS5)

Note
This is a very feature-rich solution because the device also includes a touchpad which can be very useful at games that do heavy usage of the GamePad touchscreen, such as Super Mario 3D World

Cemu supports the motion control capabilities within the DualShock 4 and DualSense natively by setting the API to the SDLController API on Windows. On Linux, ds4drv-cemuhook is needed (rumble should also work with Wine's XInput emulation).

Wiimotes

Note
Original Wiimotes only contain an accelerometer, so their functionality is limited, e.g. as a "Wii Wheel" for Mario Kart 8.

Motion for the emulated Wiimote Controller API option is supported out of the box when the Wiimote API is used with a real Wiimote in Cemu's input options. This is necessary for games that absolutely require a Wiimote.

Alternative methods

Third-party alternatives exist for motion control support via Wiimotes (MotionPlus model), including WiimoteHook (mirror).

On Linux, linuxmotehook exists. WiimoteHook, depending on your setup, may work on Linux if wineconsole and .NET 4.5.2 or better are installed.

Nintendo Switch controllers

Cemu supports the motion control capabilities within Nintendo Switch controllers natively by setting the API to the SDLController API on Windows. On Linux, joycond-cemuhook works.

Various controllers on Linux

Since Linux allows its drivers to expose motion data to userspace, it is possible to read it from such modern drivers for multiple devices. This also means ever-expanding list of supported devices as drivers for them become available. Please note that only motion feature is provided, neither buttons nor touchscreen are mapped even if present. Supported devices currently include the Nintendo Switch Joy-Cons and Pro Controller, as well as the DualShock 3, DualShock 4, and DualSense controllers via evdevhook.

Mobile devices

Note
Not all mobile devices include a gyroscope. Some only include a magnetometer, which runs slow within Cemu; certain devices only include an accelerometer, which does not allow for yaw motion

iOS

Beginning with the iPhone 4, a gyroscope is included in every iPhone. The recommended method to utilize your iPhone for motion controls in Cemu is through WebGyroForCemuhook, which requires Cemuhook. Download the latest version, aand set the GamePad motion source to DSU1. Using your iPhone's browser, navigate to the URL provided by Gyro.exe.

Alternatively, the MotionSourceiOS app can be sideloaded to your iPhone.

Android

The MotionSource app is capable of providing gyroscope data to Cemu via Cemuhook.

Windows phones

The only way to set up motion controls with Windows phones in Cemu is through the UWP MotionSource app.

Full-motion solutions with limitations

DualShock 3

Note
The DualShock 3 only provides yaw axis data.

Cemuhook's ScpToolkit patch is capable of utilizing the gyroscope within the DualShock 3 to use in Cemu on Windows.

Partial solutions

Xbox controllers

Note
This method emulates motion data using the analog stick on the Xbox controllers; it is counter-intuitive in several cases and not recommended

To set up an Xbox controller with motion data, download cemu-no-gyro and Cemuhook and set the GamePad motion source to DSU1.

Mouse

Hold down the right button in a game and move the mouse allows for a full degree of movement. Control third axis scrolling the mouse wheel. This method is not recommended.