Cemu: The Complete Wii U Arcade Cabinet Guide
Cemu is a free, open-source Wii U emulator capable of running the vast majority of the Wii U library at full speed with enhanced resolution and performance. For arcade cabinet builders, Cemu unlocks an entire generation of Nintendo exclusives: Mario Kart 8, Super Smash Bros. for Wii U, Zelda: Breath of the Wild, Donkey Kong Country: Tropical Freeze, and dozens more.
Beginning: Core Architecture
Rendering Architecture
Cemu operates as a high-level emulator (HLE) that intercepts system calls from game binaries and translates them into native PC instructions. It supports two rendering backends: Vulkan and OpenGL. For cabinet deployments, Vulkan is the only correct choice — it provides parallel shader compilation, lower driver overhead, and better frame pacing. The rendering pipeline operates in two phases: shader compilation (causes stutter on first encounter) and cached execution (stutter-free). Cemu maintains a transferable shader cache (portable across GPUs) and a pipeline cache (hardware-specific, tied to your GPU and driver version).
Game File Formats
Use .wua (Wii U Archive) format exclusively. It bundles base game, updates, and DLC into a single decrypted file. No keys.txt needed, reduced storage, no path corruption in frontend databases. Avoid .wud/.wux (encrypted, requires keys.txt). The .rpx format (folder-based, decrypted) is acceptable but less convenient than .wua for cabinet management.
MLC01 Directory Structure
The MLC01 directory is Cemu's emulated system storage containing save data, user profiles, installed updates, and DLC. Critical rule: never manually copy files into mlc01/usr/title. Always use Cemu's built-in installer (File > Install game title, update or DLC). Manual copies break the internal meta.xml database, causing games to appear with a red background in the title list.
Graphics Packs System
Graphics packs are Cemu's modular enhancement system for per-game resolution, frame rate, anti-aliasing, and shadow quality modifications. The most important pack for cabinets is FPS++ which dynamically adjusts game timing to support 60fps. Combined with VSync set to "Match emulated display (Experimental)," FPS++ delivers smooth 60fps in Breath of the Wild, Mario Kart 8, and Super Smash Bros.
Intermediate: Input and Configuration
Input Mapping Architecture
Cemu supports four controller APIs: SDL2, XInput, DirectInput, and DSU Client. For arcade cabinets, SDL2 is the correct default. Unlike XInput (generic system index) or DirectInput (manual calibration), SDL2 reads unique hardware UUIDs from each device, preventing the "player swap" problem where P1 and P2 controls randomly switch after reboots.
Controller Profiles
Cemu stores controller configurations as plain text files in the controllerProfiles folder. Each profile defines API, device UUID, emulated controller type, rumble, and button mapping. Configure per-game profiles to automatically swap mapping layouts when games launch. Most games use Wii U GamePad; some multiplayer titles require Wii U Pro Controller.
Window Focus Issues
Cemu only polls controller inputs when its window is the active, focused application. Any background notification or system dialog that steals focus freezes all cabinet controls. Prevention: run as Administrator, disable fullscreen optimizations (Properties > Compatibility), and suppress all Windows notification services in the cabinet OS image.
Pretendo Network
With Nintendo's Wii U online services shut down, Pretendo Network provides community-maintained online play. Requires otp.bin and seeprom.bin files dumped from a physical Wii U using the Dumpling homebrew tool. Place in Cemu's root folder. Rules: no active cheats online, never share dump files, power off physical Wii U before Cemu online sessions, never reformat the source console.
Cabinet Killer Traps
- Hard Process Kill Corrupts Shader Cache: Using taskkill /F or SIGKILL prevents cache flush. Causes crashes or 10+ minute shader recompilation. Always use WM_CLOSE for graceful shutdown.
- USB Controller Index Swap: Windows doesn't guarantee consistent USB indexing. XInput/DirectInput controllers can swap P1/P2 on reboot. Fix: use SDL2 (hardware UUID-based).
- Manual MLC01 File Copy: Breaks internal meta.xml database. Games show red background. Fix: always use Cemu's built-in installer.
- Focus Theft Freezes Controls: Background popups steal focus, freezing all input. Fix: run as Admin, disable fullscreen optimizations, suppress notifications.
- VSync Mismatch on High-Refresh Displays: 120Hz+ without proper VSync causes tearing. Fix: "Match emulated display" or disable VSync and use G-SYNC/FreeSync.
- Pipeline Cache Mismatch After Driver Update: GPU driver updates invalidate pipeline cache. Fix: delete pipeline cache only (keep transferable shader cache), let Cemu rebuild.
- OpenGL on Intel Integrated: Missing driver extensions cause crashes. Fix: always use Vulkan on Intel.
- Encrypted Format Without Keys: .wud/.wux without keys.txt causes launch failures. Fix: migrate to .wua format.
Advanced: Production Deployment
CLI Deployment
Cemu supports command-line arguments for frontend integration: -f (fullscreen), -g "[path]" (boot game directly), -a [AccountID] (load specific profile). Example: Cemu.exe -f -g "D:\Games\ZeldaBOTW.wua" -a 80000001. Your frontend should construct this dynamically based on the selected game.
Safe Shutdown Protocol
Never use taskkill /F to terminate Cemu. The correct sequence: intercept exit hotkey, send WM_CLOSE to Cemu's window, wait up to 5 seconds for clean exit, only force-kill as last resort with a logged warning. This preserves shader cache integrity.
OS Calibration
Disable fullscreen optimizations (bypasses DWM composition). Run as Administrator (prioritizes process thread). Set High DPI scaling to "Application" (prevents software scaling). Set audio API to XAudio2 or Cubeb with minimal latency.
Driver-Level Tuning
NVIDIA: set "Power management mode" to "Prefer maximum performance" and "Threaded optimization" to On. AMD: ensure Vulkan multi-threading is active, increase TDR delay if experiencing driver timeouts. Intel: use Vulkan exclusively (OpenGL lacks critical extensions).
Frequently Asked Questions
A game appears with a red background in the title list. How do I fix it?
Delete the corrupt directory from mlc01, then re-install using Cemu's built-in installer. Never manually copy files into mlc01.
I get severe screen tearing on my 120Hz display. What fixes this?
Set VSync to "Match emulated display (Experimental)." If using G-SYNC/FreeSync, disable VSync entirely and let the display handle sync.
Cemu crashes after loading shader cache. What happened?
Pipeline cache mismatch from a driver update. Delete only the pipeline cache file (not the transferable shader cache). Cemu rebuilds it on next launch.
Cabinet controls freeze randomly during gameplay. What causes this?
Focus theft. Run as Administrator, disable fullscreen optimizations, suppress all notification services.
Player 1 and Player 2 swap after reboot. How do I fix this?
Switch from XInput/DirectInput to SDL2 controller API. SDL2 uses hardware UUID instead of system-assigned USB index.
What is the best game format for cabinet deployments?
Use .wua (Wii U Archive) exclusively. Single file, decrypted, includes updates and DLC.
How do I eliminate shader stutter for players?
Pre-warm the shader cache by playing through the first 10 minutes of every game before deploying. The transferable cache persists across driver updates.