66 lines
3.1 KiB
Org Mode
66 lines
3.1 KiB
Org Mode
#+TITLE: Nintendo Wii U
|
|
#+FILETAGS: :guides:emulation:nintendo:
|
|
#+AUTHOR: bparodi
|
|
We use [[./cemu.org][CEMU]] to emulate the Wii U platform and play the games on the pc.
|
|
The biggest difference compared to other emulators is the workflow to play a
|
|
game:
|
|
- spun up a [[./nus.org][NUS]] downloader that fakes itself as a console
|
|
- download and decrypt the target game
|
|
- load it into CEMU and apply fixes if needed
|
|
** Controllers
|
|
Use SDL api whenever possible. Either use the most recent Playstation
|
|
controllers or one from the 8bitdo line. Xbox controllers don't have support for
|
|
motion control.
|
|
*** Wii U Pro controller
|
|
[[./files/img/wiiupro.jpg][Controller.jpg]]
|
|
|
|
*** Wii U Classic controller
|
|
[[./files/img/wiiuclassic.jpg][Controller.jpg]] The Classic Controller is a game controller designed for use with
|
|
the Wii console. It has a similar layout to a traditional gamepad, with two
|
|
analog sticks, a D-pad, four face buttons, and four shoulder buttons. It also
|
|
features a built-in rumble function and can be plugged into a Wii Remote for
|
|
wireless connectivity.
|
|
*** Motion control
|
|
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.
|
|
|
|
** Optimizing CEMU
|
|
For the best performance, we'll be using the Vulkan graphics API. This tends to
|
|
run faster than OpenGL and allows us to use features such as asynchronous shader
|
|
compilation.
|
|
1. open the CEMU main menu
|
|
2. click Options -> General settings on the top bar
|
|
3. navigate to the Graphics tab
|
|
4. change the "Graphics API" to Vulkan if it is not already
|
|
|
|
Windows
|
|
|
|
Set "VSync" to Match emulated display (Experimental)
|
|
If you use a display with variable refresh rate (G-SYNC), set this to Off instead
|
|
This feature is experimental and may cause issues
|
|
Enable Async shader compiler
|
|
Navigate to the Audio tab
|
|
Under General, change "API" to XAudio2
|
|
*** Asynchronous Shader Compilation
|
|
When running games in Cemu, graphical shaders need to be re-compiled to work on
|
|
a desktop GPU. This can take some time, which causes small stutters in the game
|
|
every time a new one is sent to the emulator.
|
|
|
|
Doing this asynchronously allows the emulator to run the process in the
|
|
background. This means that when the shader is first called, it skips being
|
|
rendered to the screen, and is instead stored for the next time it's used,
|
|
providing a much smoother experience.
|
|
*** VSync Matching
|
|
Vulkan also allows us to use a new experimental VSync technique which allows
|
|
Cemu to use the game's built-in frame-pacing instead. This avoids tearing and
|
|
reduces input latency compared to previous methods.
|
|
** Related articles
|
|
- [[../cemu.org][CEMU]]
|
|
- [[../nus.org][NUS Downloader]]
|