1.23.0c / 05-06-2021





Cemu is a closed source emulator for WiiU which is considered to be in experimental state. That said, it's able to play quite a few number of games very smoothly without major issues and graphics packs can even be injected into games. Please check compatibility list for more details.




  • GamePad input source override for cemu, including full motion sensing support (requires additional software, see the guide)

  • Adds code/data patching to your games at load-time, which you can activate and share the same way you do graphic packs!

  • Think of it like a pcsx2 plugin, implementing something not in the core

   Cemu Graphics Pack

  • Community Graphic Packs which is used to upscale and change your Wii U games


  • Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with the Cemu Emulator and System-Wide


Windows: 7+

Other requirements

OpenGL 4.1 minimum (4.6 is used, if available)
RAM: 4 GB minimum, 8 GB or more recommended
Microsoft Visual C++ 2017 X64 Redistributable

Most Recent Changes

New in 1.23.0c
general: The game list will now automatically detect demos and system titles installed to MLC
        It will also detect demos stored in game paths

general: Improvements to the download manager
        - Fixed system titles getting installed to usr/title/ instead of sys/title/
        - Fixed a bug where multiple updates would be displayed for a single title
        - Installed updates are no longer always hidden and instead there is now a checkbox to hide installed entries
        - Fixed a bug where content files with unusual size would fail to verify and cause the download to get stuck (e.g. Nintendo Land update)
        - The game list should now update after installing any title or update

New in 1.23.0b
general: Improved robustness of download manager and fixed a few bugs that could occur during the installation step

New in 1.23.0
general: It is now possible to download purchased Wii U eShop games, system titles and updates via our new Download Manager!
        Like other online functionality, it requires dumped online files from a Wii U
        You can access the new Download Manager window under Tools -> Download Manager
        Currently supported features:
          - Downloading purchased eShop games and demos (owned games will be shared between your Wii U and Cemu)
          - Buying games on eShop using the eShop Wii U application and downloading them via Cemu's interface. No game dumping required
          - Downloading the latest updates for your owned titles
          - Downloading some system titles (Friend list, eShop)

        Note that DLC downloading is not yet supported but will be added very soon.

general: New FST reader (FST is the filesystem used for WUD, WUX and .app files)
        Internal support for NUS content (.app) which ties into the Download Manager
        Much higher read throughput than the previous implementation, may boost loading times on
        lower end CPUs where FST processing sometimes became be a bottleneck
coreinit: Fixed thread cancelling not working correctly
         This resolves an issue where browser based applications would softlock when trying to load any page


New in 1.22.13b

  • general: Fixed an issue where some installed DLC would not be detected
    Vulkan: Fixed a rare crash that could happen randomly during gameplay

New in 1.22.13

  • OpenGL/Vulkan: Better detection of cache invalidation for compressed textures
                  This fixes multiple issues where textures would sometimes not update correctly. Examples:
                  - Emblems in Mario Kart 8 (#501)
                  - Character portaits in Hyrule Warriors (#174)
                  - Level preview images in Pokken Tournament

    Vulkan: Added support for Latte GPU special state 5 (fast depth to color conversion)
           Shadows in Tokyo Mirage Sessions #FE and Pokkén Tournament render correctly now

    coreinit: Added API MEMDestroyFrmHeap
             This resolves Color Splash crashing during some loading screens

    coreinit: Further improved stability of TaskQueue API
             This should resolve some softlocks in Tokyo Mirage Sessions


New in 1.22.12c

  • Vulkan: Fixed regression introduced with 1.22.12b that caused broken graphics on some GPUs/drivers

New in 1.22.12b

  • general: Fixed a crash that could occur when opening the general settings window
    input: Fixed an issue where WGI would not show up in the input APIs

New in 1.22.12

  • Vulkan: Async shader and pipeline compilation is now multi-threaded
           This speeds up background compilation and shortens the duration of missing visuals

    mmu: Emulate the scratch memory region at the end of the address space (0xFFFFFFE0 - 0xFFFFFFFF)
        Fixes a crash that would occur during some loading screens in Fatal Frame 5 (#347)

    input: Fixed an issue where WGI (Windows.Gaming.Input) would sometimes cause Cemu to not close properly
    input: Generally improved robustness of WGI
    input: Improved performance when using GC controller API (#513)

    gfxPacks: Added a new option to rules.txt:
             If specified, the graphic pack will be enabled by default
             This is intended to be used for workaround packs when there are no side-effects

    logging: There is now a logging option to toggle log output for coreinit logging (OSReport, OSConsoleWrite and similar)


  • New in 1.22.11c
    internal: Reworked internal code that handles file paths to improve robustness when paths include unicode characters

  • New in 1.22.11b
    general: Fixed regression where some operations would use broken file paths by omitting the slash between mlc path and the subfolder

  • New in 1.22.11
    general: Added a warning message when launching Cemu through steam. This is to inform the user that
            Steam's shader pre-caching is known to cause broken graphics in combination with our async Vulkan shader compiler

    general: Added command line options to overwrite web service URLs
            --act-url <url>   (default: https://account.nintendo.net)
            --ecs-url <url>   (default: https://ecs.wup.shop.nintendo.net/ecs/services/ECommerceSOAP)

    nn_boss:  Correctly handle HTTP errors when downloading SpotPass files
             This fixes a crash when trying to play the 100 Mario challenge in Super Mario Maker

    OpenGL: Avoid a crash that could occur when clearing depth textures
           Fixes Smash 4 crashing under OpenGL

    input: Improved stick axis handling when the resting state is slightly off-center
          Resolves an issue where sticks sometimes couldn't reach the edge at default range multiplier
    input: Fixed an issue where DirectInput would not detect all buttons (#47)
    input: Show more sensible button names for disconnected DirectInput controllers (now displaying actual names instead of numbers)

    logging: When using Vulkan write the exact driver version to log
    logging: Keep up to 3 previous log files

--New in 1.22.10b--

  • general: Fixed a crash caused by the separate GamePad view

New in 1.22.10

  • general: Vulkan is now the default render API
    general: Added game profile option to overwrite the render API (#238)
    general: Games installed via the file menu will now appear in the game list automatically (previously it was necessary to manually refresh it)
    general: Fixed 'meta.xml missing' error that could occur when trying to install games/updates/dlc

    gfxPack: Fixed a bug where graphic pack logging output would be garbled

    Vulkan: Reduced number of Vulkan image views created by roughly 50%
           Prevents crashes on drivers that have a low image view limit

    coreinit: Tweaked behavior of MPWaitTaskQ() to prevent it from starving other threads of all CPU time
             This fixes random softlocks in Yoshi's Woolly World (#474)

    debugger: Fixed incorrect encoding of CR register with non-zero index in compare instructions
    debugger: Graphic pack codecaves now show up in the module list
    debugger: Added condition registers to the register view

--New in 1.22.9d--

  • general: Internal tweaks to Windows.Gaming.Input
    UI: Minor improvements to graphic pack window

New in 1.22.9c

  • UI: Fixed cut off dropdowns in the graphic pack window

New in 1.22.9b

  • general: Fixed a regression where the mlc path would be processed incorrectly, leading to Cemu not being able to load some mlc files

New in 1.22.9

  • input: Added support for Windows.Gaming.Input (Available only for Windows 10 or above)
          Two new API options:
          WGI GamePad        Mirrors XInput but without the 4 controller limit
          WGI RawController  Mirrors DirectInput
          Both of these usually have more stable drivers and should be preferred over regular XInput/DirectInput

    input: Various smaller improvements to input settings
          Stick preview now has a circle to indicate where 100% range of the emulated controller is

    general: Fixed a crash that would occur when refreshing the game list when it contains WUD images without keys

    coreinit: Implemented API OSIsHomeButtonMenuEnabled() and OSEnableHomeButtonMenu()
             Fixes Disney Infinity 2.0 crashing on launch. It relies on specific behavior for correct initialization

    OpenGL/Vulkan: Resolved an issue where depth buffer clears would use incorrect clear values
                  Fixes rendering bugs in Mario vs Donkey Kong: Tipping Stars
                  Fixes invisible UI in Dragon Quest X

    OpenGL/Vulkan: Improved tracking and synchronization of overlapping memory in texture cache
                  Fixes black screen issue in CoD: Black Ops 2

    OpenGL/Vulkan: Implemented support for shader instruction SAMPLE_C_L
                  Fixes missing lighting in CoD: Black Ops 2

    nsysnet: Resolved an issue where recv() would starve other threads of CPU time
            Fixes a rare softlock that could happen in various third party games
    (#xx) refers to resolved bug tracker issues. See http://bugs.cemu.info/projects/cemu/

--New in 1.22.8--

  • general: Fixed a recent regression where -mlc command line parameter would be parsed incorrectly

    UI: Display a scrollbar if a graphic pack has more options than can fit into the window

    HLE: Prevent Wind Waker HD from softlocking when using single-core recompiler

    HLE: Prevent dynamic resolution scaling in Super Mario 3D World
        This fixes a long standing issue where mirror effects in Level 1-5 would
        cause the texture cache to be flooded, leading to stutter and sometimes even crashes if
        not enough VRAM is available

    coreinit: Optimized niche cases in Cafe OS synchronization primitives
             This should improve performance in Paper Mario Color Splash when using multicore recompiler
             The issue has not been entirely solved yet and further improvements are planned

    Vulkan: Fixed a crash that could occur when a game supplied invalid texture sampler parameters
           Resolves a crash in Super Meat Boy (#479)

    GX2: Corrected a bug in the calculation of texture pitch for the tiling aperature
        Fixes corrupted textures in Super Meat Boy (#479)

    GX2: Improved robustness of OSScreen API and made it compatible with GX2
        Previously drawing any frames with GX2 would disable OSScreen output permanently
        Required by some homebrew applications which mix OSScreen and GX2

    coreinit: Implemented API MEMRecordStateForFrmHeap, MEMFreeByStateToFrmHeap
             Used by WUT homebrew

--New in 1.22.7--

  • general: The default vsync frequency (emulated refresh rate) is now 59.94 to match the actual console
            Graphic packs can still set it to a flat 60

    general: Fixed various small memory leaks

    Vulkan: Revised internal swapchain management and fixed some synchronization bugs in the process
           Double-buffered vsync should no longer cause graphical artifacts

    Vulkan: Added a new experimental vsync mode
           If enabled, Cemu will match the vblank event timing of the emulated display to the physical monitor on which Cemu is displayed
           This reduces latency and avoids tearing by piggybacking on the emulated game's vsync implementation
           For *perfect* results, the vsync rate in Cemu should be equal or slightly higher than the monitor refresh rate
           As an example: When playing BotW on a 60 Hz monitor you want to set FPS++ to either 60 FPS or the next higher option. This is assuming stable 60 FPS can be maintained.
           Alternatively, any integer ratio (1:2, 1:3, 1:4...) should give good results as well. E.g. 30 FPS on 60 Hz, 36/72 FPS on 144 Hz

           Even for non-integer ratios (30 FPS on 144 Hz) this mode of vsync should perform at least as well as the Vulkan-native double buffered vsync mode
           While this is only available for Vulkan right now, we plan on adding this to OpenGL in the near future

    Vulkan: Cemu's internal shaders no longer show up in the overlay statistic ('Compiled x shaders'). Unlike game shaders they do not get cached and also do not cause any stutter

    H264/DXVA2: Fixed incorrect handling of mismatching frame pitch
               This should fix broken video playback in Mario Party 10 and Pikmin 3 on some GPUs

    GX2: Fetch shaders with a size of zero won't cause a crash anymore (regression introduced with 1.22.6)
        Resolves Minecraft crashing on launch

--New in 1.22.6c--
       general: Made command line parameter parsing more robust
        Short name option for fullscreen (-f) should work again

  • New in 1.22.6b
    GX2: Fixed a graphic regression that was introduced by the fetch shader rewrite

  • New in 1.22.6
    coreinit: More potential fixes for a mystery crash related to file operations and callbacks
             The crash can most often be observed when loading saves in BotW but also can happen randomly during gameplay

    coreinit: Avoid a race condition in thread deallocators
             Fixes random crashes in various games

    coreinit: Added a safeguard to prevent a state corruption when a game uses MPTaskQ improperly
             Fixes Tokyo Mirage Sessions freezing or crashing shortly after launch (#472)

    coreinit: Fixed a race condition in spinlock implementation
             Improves stability of Tokyo Mirage Sessions and likely some other games

    coreinit: Fixed OSScreenClearBufferEx() clearing a much larger data area than it should
             This change should fix flickering and random crashes due to memory corruption in some homebrew titles

    coreinit: Fixed an issue where the priority of default core threads was too high, leading to CPU starvation of other threads
             Fixes random softlocks in Yoshi's Woolly World

    GX2: Reworked GX2 event queue implementation to match behavior of actual console more closely
        This resolves random softlocks in games that rely on GX2 events

    GX2: Reworked fetch shader generation (GX2InitFetchShaderEx) to match behavior of actual console more closely
        Improves compatibility with games that are picky about correct shader size. E.g. The Fall is now playable and no longer crashes on boot
        Shader caches and graphic packs are not affected by this change

    OpenGL/Vulkan: Fixed generation of invalid shader code when accessing integer texture samplers with certain parameters
                  Fixes an issue where the game screen was invisible in Virtual Console DS titles

    debugging: wxWidgets errors are now written to log.txt instead of showing an error message box
    debugging: Added --force-interpreter command line parameter to always force interpreter regardless of any game profile settings

Check Previous Changes