It took two years, but in the end the developer exrap officially released the stable 2.1 version of Cemu, the emulator of the Wii U console for Windows PC, MacOS and Linux.

This release is an important release that incorporates changes to all 93 experimental versions released from version 2.0.
Starting from this version, Cemu will have a single release channel, eliminating the distinction between stable and experimental versions.
Users will now be able to choose whether to receive immediate updates, which may contain unresolved, or with a slight delay, to allow developers to fix any issues.
Among the main changes is the introduction of the “Receive untested updates” option, which allows you to enable or disable the reception of the most recent updates.
This change simplifies the release process and reduces the workload of managing separate channels and writing detailed changelogs.
From now on, the versions will be numbered in sequence (2.1, 2.2, 2.3, etc.) and each one will be accompanied by a changelog published on GitHub.
For C/C++ developers who want to contribute
If you are interested in contributing or simply ask questions based on Cemu code, you can visit the Discord channel.
Requirements
- OpenGL 4.5 or Vulkan 1.1.
- Operating system: Windows 7 (or higher) 64-bit.
- RAM: Minimum 4 GB, and recommended from 8 GB or more.
- Microsoft Visual c++ 2017 X64 redistributable: vc-redist.x64.exe
Characteristics of
- Mounts encrypted images of the Wii U (WUD).
- Internal resolution at 1920×1080 (if supported by the game).
- It does not contain any optimization at the moment. Expect slow framerates and long loading times.
- Only for Windows x64 (other platforms will be supported later).
- Requires OpenGL v4.1 or higher.
Compatibility of graphics cards
- NVIDIA GPU tested: Works well with the latest drivers.
- AMD GPU tested: It runs as expected most of the time with updated drivers, it could crash occasionally.
- Intel GPU tested: Unofficially supported with heavy visual defects.
FAQ
Question: How can I install games?
Answer: Consult the official guide for dumping.
Question: Have I updated from an older version of Cemu and some of my games have disappeared?
Answer: First of all, check all settings again. In particular, check the paths of the game folders and the mlc. If you are sure the paths are correct, it could be owed to corrupted game files. Since version 1.27.0 of Cemu we no longer support the so-called “united headlines”. These are games in which the update files were copied and pasted over the base files. If you are interested, please re-acquire the unfull files.
Question: I get a mistake when trying to run games in format .wud
or, or, .wux
?
Answer: These formats require that the correct decoding key be inserted into the keys.txt file. Since these keys are protected by copyright, we cannot provide them with Cemu and it is the user’s job to acquire and set them correctly. We recommend using games in .wua format, which is much smaller and does not require keys.
Question: Is there a game compatibility list?
Answer: You can consult the wiki for more information about compatibility and known issues with specific games.
Question: How to update or manually downgrade Cemu?
Answer: If the automatic update is not available (for example, you are not using Windows or moving from 1.x.x to experimental 2.0), you can manually update your Cemu installation. To do this, download the .zip file of the version you want to use, and then extract all the files in your existing Cemu folder. When asked if you want to replace files, click yes. Updating in this way should keep your settings intact. We recommend that you first make a backup copy of your Cemu folder so that you can easily restore it if something goes wrong.
Question: How can I see the screen of the GamePad?
Answer: The GamePad screen can be displayed by holding down the Tab key or mapping it to a controller button. You can also switch between screens by pressing Ctrl + Tab. In addition, the display of the GamePad can be displayed in a second window.
Question: Is there any support for online functionality?
Answer: Cemu supports most online features and has experimental support for Pretendo (only in experimental versions 2.0). To connect to official servers, you need to capture some system files from a Wii U console. You can find a guide here.
Question: What are the chart packages?
Answer: The graphical packages are similar to the game mods, which allow you to edit or customize various aspects of a game. Despite the name, they go far beyond simply editing the charts. To use the chart packages, open the Chart Packs window using Options -? ? Chart Packs. Then press the “Download the latest community charts” button in the bottom right corner of the window. After that, you can configure and enable them.
Question: How can I get the best performance?
Answer: The default settings should give you a good starting point. For most games, no other adjustments are required, but we recommend using the Vulkan graphics API and enabling the “Asynchrone Shatterr Completion” to reduce the stuttering of shaders. For some games, graphics packages are also available that improve performance. For example, Breath of the Wild has “FPS++” and Paper Mario Color Splash has a “Improving Performance” package.
Question: Will MacOS ARM be supported? Will the Metal API support?
Answer: Our experimental versions currently run on ARM via Rosetta emulation, which comes with a cost in performance. As a long-term goal, we plan to support ARM natively in the future. There are currently no plans to directly support the Metal API.
Question: Will Android support in Cemu be added?
Answer: Even if Android isn’t in the program, we’re slowly moving towards supporting multiple platforms. If you find websites that advertise Cemu for Android (“Cemu’s APK”), know that it is a scam.
Changelog
New important additions
- Added releases in AppImage and Flatpak for Linux format.
- Added an experimental release for macOS, available only for x86-64 at the moment, but executable on Mac ARM via Rosetta 2 emulation. MoltenVK is used as a graphic backend.
- Added a tool to emulate USB portals for Skylanders and Disney Infinity.
- Added support NFC/NTAG. The Pokémon Rumble U figures can now be scanned from a file, similar to the existing Amiibo scan.
- Added support for titles stored in formats
.wuhb
(Wii U homebrew) and.app
(NUS). - Added support for connection to network services Pretendo.
- Cemu on Windows is now no more portable by default just for new installations. All data and configuration files will be stored in
%appdata%/Cemu
. . This makes installing on Windows similar to that on other platforms. Existing installations will not be affected. - Added portable mode by creating a directory called “portable” next to the Cemu executable. Cemu will then store the data and configuration files in this folder. This works on all platforms.
General
- Added the setting to disable the screen saver.
- Added command line parameter
--title-id
to start games via Title ID. - Added desktop links to the game list.
- Added experimental support for the GamePad microphone.
- Improved Unicode character support across the application, including chart package names and descriptions.
- Cemu will no longer refuse to start if the MLC route is invalid.
- Fixed several issues related to the size of the GamePad window.
- Fixed a regression issue that caused an infinite loop in renderer. This previously caused the blockade at the start of Tokyo Mirage Sessions and Pokkén Tournament.
- Fixed a regression issue that caused some games to crash without Mii system files. The well-known games were Sonic Lost World and Super Mario 3D World.
- Initial support for the stock exchange.
- Improved compatibility with the Wii U menu, which can now be run and start games.
- Games with launchers, such as Ryo ga Gotoku 1 & 2 HD and Steamworld Collection, are now playable.
- This function is experimental. Once stabilized, the option to exit the games without closing Cemu will be added.
- Fixed a crash that could occur when the Title Manager attempted to display system data titles.
- The full-screen mode can now also be activated with the F11 key.
- The GamePad view will now show the specific game startup screen.
- The rich presence on Discord will use the name of the translated title that corresponds to the language of the console, instead of predefining English.
- Fixed an issue where error dialog boxes in a game (erreula) could not be interactive if the GamePad window was open.
- Updated the default game profiles.
- Reduced the latency of the H264 decoder by decoding the frames asynchronously.
Windows
- Reactivated the IPR awareness.
- Fixed a crash that occurred when no audio devices were available.
Linux
- Added support for Wayland.
- Added support for storing MLC and gaming files on case-sensitive filesystem.
- Added an option to enable GameMode.
- Take the online features to the same level as the Windows versions.
- Enabled support for DSU controllers.
- Emulated games now can access the host’s HID devices via libusb (e.g. Skylanders portal).
- Numerous changes to improve the robustness of the Linux build.
- Added debugging option to create core dump in case of crash.
- Improved diagnostic logging in case of crashes or other exceptions. Cemu now includes symbols to show feature names in tracebacks.
- The CPU and memory statistics in the overlay now work on Linux.
- The background colors of the game list now match the brightness of the window theme instead of always using bright colors.
- Fixed an issue where closing the GamePad window blocked Cemu.
- Fixed a bug where the GamePad window didn’t do anything with OpenGL.
- Fixed an issue where some UI dialog boxes caused Cemu to crash after closing.
- Fixed many small user interface issues specific to WxWidget’s backend wxGTK.
User interface
- Added the “Receive untested updates” option in the general settings. More information here.
- Added “Open Cemu folder” and “Open MLC Folder” options to the File menu.
- Added new options by right clicking on a game in the game list:
- Copy the title ID, name, or icon of a game.
- Delete the cache shader of a game.
- Added a column to the position in the Title Manager.
- The items in the game list were separated into their own concealable column.
- Fixed empty title names in the Title Manager if the console language is set to anything other than English.
- Fixed an issue where custom game names were not displayed in the game list when the icon mode was set.
- Fixed an issue where an additional “c” entry appeared in the drop-down menu to import/export the saves in the Title Manager.
- Fixed an incorrect error message that could occur during the installation of the games due to an error in the calculation of available disk space.
- The font size of the text in the overlay now scales according to the display DPI.
- Fixed a crash that occurred when you clicked on the Format column header in the Title Manager.
- The list of games now uses long names instead of short names. This has been changed due to some games with short names cut off.
- User interface elements for options that cannot be edited at runtimes are now turned off when a game is running.
- Simplified the “Started” dialog.
- Various small adjustments and UI restructuring to make Cemu more user-friendly.
CPU
- Improved the emulation of PowerPC overflow condition. Improve compatibility with some Unity and DS Virtual Console games.
The Core GPU (Latte)
- Added support for multiple shader instructions, some of which are required for homebrew shaders compiled with CafeGLSL.
- Optimized the output of the shader decompiler, slightly reducing the time of filling the shaders.
- Removed the min option for the accuracy of the multiplication of the shaders since it has no measurable benefits compared to the other options.
- Used a better hashing for buffer cache to avoid hash collisions. It fixes a bug in Breath of the Wild in which the effect of the wake of weapons sometimes turned into a solid red color for a single frame.
- Added support for a missing vertex format used by Rabbids Land.
- Fixed the calculation of
FragCoord.w
. . Fixes rendering issues in DS Virtual Console games. - Fixed several problems whereby the shader decompiser could generate incorrect GLSL. Corrects rainbow colors on characters in Tekken Tag Tournament 2.
- Various small optimizations.
OpenGL
- Removed command line parameter
-legacy
, which was not functional for a long time. Originally, it disabled some features to avoid crashing on pre-2015 Intel GPU drivers. - Cemu should no longer crash if the initialization of OpenGL fails.
- Fixed a regression issue whereby the cache of Cemu’s pre-compiled shaders for OpenGL was not actually used.
- Reduced the latency of the readback of textures. This fixes severe drops in FPS in Breath of the Wild every time something is burned.
Vulkan
- The “Asynchronous shader task” option is now enabled by default.
- Compiling the multi-threaded pipeline during the shader cache loading screen is again enabled on Nvidia drivers, which involves much faster pipeline loading.
- Fixed incorrect decoding of the R4G4 texture format when
VK_FORMAT_R4G4_UNORM_PACK8
It is not supported. Corrects the invisible rupee counter in Twilight Princess HD. - Several changes to better align Cemu with Vulkan specifications.
- Avoid crashing if the validation layer is enabled but not installed.
- Improved the accuracy of the emulation of the mobile point in shaders when the extension
VK_KHR_SHADER_FLOAT_CONTROLS
It is available. This solves problems with out-of-place arts in Minecraft mobs. - Added support for texture format
R32_X8_FLOAT
. . - Allow the RGBA16F texture format with SRGB bit. Fixes a crash in Sonic Transformed.
- Fixed the front mask of the stencil that used the value of the back mask.
- Improved synchronization of drawing calls involving textures read and written simultaneously. Fix a problem with defective heightmaps in Breah of the Wild on the Mesa RADV driver.
- Fixed a crash that occurred when the pipeline cache couldn’t open due to corruption or other problems.
Online Functionality
- Corrected online connectivity for accounts in the North American region after the Wii U 5.5.6 system is updated.
- Added the option to switch between Nintendo servers, I’re Pretendo or custom.
- The online mode and server selection can be set per account instead of globally only.
- The Download Manager will always connect to Nintendo servers even if the current account is set to Pretendo or custom server. This avoids the inconvenience of having to temporarily change the server settings to use the Download Manager.
- Fixed the issue where SpotPass downloads didn’t work on Linux/MacOS and improved the robustness of SpotPass downloads in general.
- Properly set the current app in the friendly state so that it no longer appears as “???” to other friends.
- Added rudimentary proxy support (currently only configurable by changing
settings.xml
).
Input
- Added an association tool for the Wiimotes.
- Added support for Wiimote on Linux and MacOS.
- Fixed a crash at the start of Cemu caused by the DSU initialization that occurred when you were not connected to any network.
- Added support for analog triggers for DSU API controllers.
- Fixed the incorrect calculation of CRC in the DSU protocol.
- Fixed an issue where the user interface allowed you to configure multiple controllers of a particular type of technically supported.
- Updated the user interface of the input settings when a different controller profile is selected.
- Upload a controller profile in the input settings, then change the name and save it again creates a new profile under the new name.
- Simulate the behavior of the Wii U input driver by returning no input data when questioned too quickly. Fixes the problem of the extra controllers not detected in Affordable Space Adventures.
- Increased frequency of WPAD/KPAD sampling callbacks. This solves the high latency of the controllers in Pokémon Rumble U.
Audio
- Added a default device to the Cubeb device selection.
Localization
- More parts of Cemu are now translatable.
- Although some languages have been updated with new translations, most translations remain incomplete. In the future, we are considering simplifying the translation process.
Graphic Packs and Patch
- The function to change the pixel format of a texture (
overwriteFormat
inrules.txt
) now works correctly on Vulkan. - Fixed a problem in the parser for patch assemblies where commas inside the strings were treated as delimiters.
- Games will now see new files added via graphics. Previously, when a game washered to a directory, it only saw the files that matched the names of the game’s original files and not the new files added from the charts.
Debugging
- Added a GDB support to connect external debuggers.
- Added a simplified PPC profiler to the PPC Threads view.
- Fixed the problem of the log window that did not update in the PPC debugger on Linux/MacOS.
- Added breakpoints of logging.
- Added support for memory reading/write breakpoints on Linux.
- The PPC stack trace in
log.txt
They will show the names of the functions if available. - Added the type of log for invalid use of APIs. This type of log is intended for homebrew developers and informs about the incorrect use of some API functions.
- Named a name for all Cemu threads. The main thread is now called “cemu”.
- Added a window to display real-time logging output (
Debug -> Open logging window
). - Various small fixes for the PPC debugger.
Technical improvements of CafeOS and HLE
- Fixed a bug in
nn_save
which prevented a title from accessing the rescues of other securities. This is often used for bonus content like Captain Toad Treasure Tracker or demo versions of games. - Fixed access outside the limits of memory in
sndcore
. . - Rework the APIs
coreinit
related to the creation of threads (OSCreateThread
,OSCreateThreadType
). - Added HLE implementations for
nfc.rpl
,ntag.rpl
and andproc_ui.rpl
. . - Implemented the API
coreinit FSA
, used by homebrews compiled with WUT 1.3.0 or later. - Reworked
nsyshid
to support different backends (currently backends are:libusb
, Windows HID API and emulated portals). - Stub for
drmapp PatchChkIsFinished
,AocChkIsFinished
,TicketChkIsFinished
and andnn_sl.GetDefaultWhiteListAccessor
to avoid errors and crashes in the Wii U menu. - Stub for
sysapp.SYSSwitchToEManual
to avoid blockages when you accidentally open the manual in any game. - Fixed a regression whereby most functions
OSAtomic
It returned the wrong value. - Fixed problems that Mii names were handled with the wrong endianness, causing the visualization of distorted text in some games.
OSReport
and andOSConsoleWrite
They are now thread-safe and their parallel call does not cause corruption of logs or crashes.- Various improvements to APIs
coreinit OSDynLoad
. . - Rework memory mapping APIs
coreinit
( (the (OSAllocVirtAddr
,OSMapMemory
, etc.). - Optimized the thread scheduler
coreinit
to avoid a deadlock in Just Dance 2019. - Fixed an issue where the emulated PowerPC threads sometimes immediately ended their allotted time interval.
- Added support for references to the parent directory (“..”) in the FS/FSA file paths.
- Fixed an issue where the FS/FSA working directory was ignored for some file operations.
- Implement other parts of
nn_olv
. . Mario Kart 8 tournaments and ranking loads now work. - Completely reworked implementation of the friendly service
nn_fp
. . - Implemented
va_list
and andva_arg
for PPC. Also, rework the functions that depend on them. - Fixed calculation of UTC in
GetUtcOffset/GetUtcOffsetEx
. . - Manage permissions for correctly
FSGetMountSource
. . This solves the freeze problem when you start One Piece: Unlimited World Red. - Work has started on a new modularized approach to the management of HLE modules. This will eventually simplify the change of title and will be a prerequisite for multi-process emulation.
- Improved accuracy of
OSSwitchCoroutine
. . Fixes a crash in Injustice: Gods Among Us during startup. - Implemented the minimum code for
KBDGetKey
. . Fixes the block of the MSX Virtual Console games during startup. - Properly Treaty the target in
GX2CopyColorBufferToScanBuffer
Like a bitmask and not as an ID. - Avoiding a crash in
nsysnet.recvfrom
when the peer address is null. - Added support for
SO_TYPE
innsysnet.getsockopt
. . - Added support for
SO_BIO
and andSO_ENOTCONN
innsysnet
. . - Properly set the visibility status of the Wiimote position in
KPADRead
. . This solves the problem of the invisible Wiimote cursor in Little Inferno. - Fixed a crash that occurred when
KPADGetUnifiedWpadStatus
He was called while the input logging was enabled. - Improved API management that should gracefully fail offline (e.g.
nn_act.AcquireNexToken
). - Implement additional APIs from CafeOS:
coreinit
:OSIsDebuggerPresent
,OSGetForegroundBucketFreeArea
,OSGetSystemTick
,MCP_GetTitleId
nsysnet
:inet_ntop
nn_act
:GetTransferableId
nn_acp
:ACPGetTitleMetaXml
,ACPGetOlvAccesskey
zlib125
:deflateInit_
Disclaimer
The specific games mentioned in this changelog are well-known examples that have received improvements, but the list is not exhaustive.
Other games might benefit from these changes, but may not have been noticed during testing. By nature, all changes are independent of the game.
Download: Cemu v2.1 (MacOS-12-x64)
Download: Cemu v2.1 (Ubuntu-20.04)
Download: Cemu v2.1 (Windows x64)
Download: Cemu v2.1 (AppImage)
Download: Source code Cemu v2.1
Source: github.com