github.com/dborth/fceugx — GPL licensed
FCE Ultra GX is a Nintendo Entertainment System / Famicom emulator for the Nintendo GameCube, Wii, and Wii U, built on FCEUX and the shared libgui UI/driver framework.
FCE Ultra GX is homebrew — it isn't signed by Nintendo, so your console needs to be set up to run unsigned code first. If you haven't done that yet, jump to Installation below; it links to a step-by-step guide for whichever console you have.
- Nightly Builds
- Features
- Installation
- Initial Setup
- Configuration
- File Browser
- Gameplay
- Cheats & Game Genie
- Turbo Mode & Rapid Fire
- Famicom Disk System (FDS)
- VS System
- Famicom 3D System & Anaglyph Games
- Importing and Exporting RAM Saves
- Building from Source
- Credits
- Links
📜 Looking for version notes? They're in the CHANGELOG.md.
Every push builds automatically. Grab the latest continuous-integration build:
| Platform | Status | Download |
|---|---|---|
| Wii / vWii | ||
| GameCube | ||
| Wii U |
The Wii build also runs unmodified in vWii (the Wii U's built-in Wii-compatibility mode), including via Virtual Console-style injection. The Wii U build is a separate, native Wii U (Aroma) application — see Wii U below for how the three options compare.
- Based on FCEUX (compatible with FCEUX 2.6.6+ core behavior)
- Wiimote, Nunchuk, Wii Classic Controller, Wii U Pro Controller, and GameCube Controller support
- Wii U GamePad support — full touch + buttons on the native Wii U build; buttons/sticks and display (no touch) on vWii via Virtual Console-style injection — see Wii U
- Native Wii U version outputs up to 1080p, with a GX2 shader-based ScaleFX upscaler built specifically for the Wii U's GPU
- 1–4 player support, plus Zapper light gun support
- iNES (
.nes), Famicom Disk System (.fds), VS System, UNIF, and NSF (NES Sound Format) ROM support - Famicom 3D System and anaglyph-game support — see Famicom 3D System & Anaglyph Games
- Cheat code support (
.chtfiles) plus Game Genie code support - Cover art / screenshot / artwork preview support
- Auto load/save of save states and RAM saves (in-game battery saves)
- Fully customizable, per-controller button mappings, including independent Rapid Fire bindings for A/B
- SD, USB, DVD, and SMB network share support (modern SMB2/3 via
libsmb2— see Network Shares (SMB)), plus ZIP/7z archive loading and automatic IPS/UPS ROM patching - Auto-detected PAL/NTSC/Dendy timing, 16:9 widescreen correction
- Selectable video output mode including authentic 240p on Wii / GameCube
- A dozen curated color palettes, plus the FCEUX default
- Upscaling filters (hq2x, Scale2x, 2xBR, DDT on GameCube/Wii; ScaleFX on Wii U) plus scanlines
- Configurable and remappable Turbo Mode (distinct from per-button Rapid Fire — see Turbo Mode & Rapid Fire)
- Adjustable screen zoom, screen position, and overscan cropping
- Open source
However you load FCE Ultra GX, it looks for its files in a fceugx folder at the root of your storage device. Format your SD card as FAT32 — it's the most reliable, best-tested option across all three consoles, and the one this guide assumes throughout. USB drives, DVD, and SMB network shares are also supported (see Saving & Loading and Network), but SD is the simplest starting point and works identically on GameCube, Wii, and Wii U.
Once you've placed the loader files for your console (below), also create these folders and drop your content in:
SD:/fceugx/
├── roms/ ← your NES/Famicom ROMs (.nes/.fds/.unf/.nsf, or zipped/.7z)
├── saves/ ← RAM saves and save states
├── cheats/ ← .cht cheat files (see Cheats & Game Genie)
├── screenshots/ ← in-game screenshots and/or screenshot preview images
├── covers/ ← cover art preview images
└── artwork/ ← artwork preview images
Only roms/ needs anything in it to get started — the rest are created automatically the first time they're needed. You can point the emulator at different load/save folders later from Saving & Loading. Two optional add-on files also go directly in fceugx/ (not in a subfolder): disksys.rom for Famicom Disk System games (see Famicom Disk System (FDS)) and gg.rom for Game Genie codes (see Cheats & Game Genie).
- Follow the Wii Homebrew Guide if you haven't already installed the Homebrew Channel. This is a one-time setup per console.
- Download the Wii build (
FCEUltraGX-Wii.zipabove) and extract it to the root of your SD card. This adds two things:apps/fceugx/boot.dol(plus its icon/meta files) — this is what the Homebrew Channel launches.fceugx/— your ROMs and saves folder, per above.
- Insert the SD card, open the Homebrew Channel, and launch FCE Ultra GX.
Your SD card should look like this:
SD:/
├── apps/
│ └── fceugx/
│ ├── boot.dol
│ ├── icon.png
│ └── meta.xml
└── fceugx/
└── roms/
└── ...
A forwarder is a small channel installed to your Wii's actual System Menu that, when launched, simply hands off to a homebrew app on your SD card — it makes FCE Ultra GX show up as its own channel on the Wii Menu instead of something you dig for inside the Homebrew Channel every time.
A common point of confusion: installing the forwarder does not copy the emulator onto the channel itself. The forwarder is just a pointer — boot.dol still needs to exist at apps/fceugx/boot.dol on your SD card every time you launch it. If you update FCE Ultra GX later, you only need to replace that boot.dol (and the fceugx folder if instructed); you do not need to reinstall or recreate the forwarder channel itself. The forwarder only needs to be installed once, ever, per console.
To install the forwarder, use the official channel installer, on the releases page, which points to apps/fceugx/boot.dol on your SD card.
GameCube doesn't have anything like the Wii's Homebrew Channel sitting on the console itself — instead you boot a loader, a small piece of software that then launches your .dol. The de facto standard today is Swiss, a GameCube loader/multitool that can read .dol files straight off an SD card (via an SD Gecko or SD2SP2 adapter) and handles most other loading methods too. This README assumes Swiss.
Exactly how you get Swiss running (modchip, boot-disc exploit, Broadband Adapter, etc.) depends on your GameCube's hardware revision and what you already own — gc-forever.com is the best community hub for GameCube homebrew and hardware guides matched to your exact setup; start there if you're not sure what applies to you.
Once Swiss is running, the recommended setup is an SD Gecko (or SD2SP2) memory-card-slot adapter, using the same FAT32 SD card approach as Wii/Wii U — by far the most reliable and lowest-latency option.
FCE Ultra GX also supports GC Loader and DVD (burned disc) loading, but be aware going in: both are noticeably rougher experiences than SD — GC Loader in particular has had more reported reliability issues in this port, and burned-disc loading is slow to start and inflexible to update. Use them only if SD Gecko/SD2SP2 genuinely isn't an option for your setup.
- Set up Swiss (or another loader of your choice) for your GameCube — see gc-forever.com for hardware-specific guides.
- Download the GameCube build (
FCEUltraGX-GameCube.zipabove) and extract it to the root of your SD card. - Boot Swiss, launch
fceugx-gc.dolfrom your SD Gecko/SD2SP2, and you should land in the same file browser as the other platforms.
SD:/
├── fceugx-gc.dol
└── fceugx/
└── roms/
└── ...
Note that GameCube does not use the apps/ folder convention that Wii/Wii U do — the .dol sits at the SD card root (or wherever your loader expects it), while your ROMs/saves still live in fceugx/, same as every other platform.
Wii U support comes in three genuinely different forms — pick the one that matches what you've set up on your console:
| vWii (Homebrew Channel) | vWii (VC-style injection) | Native Wii U build | |
|---|---|---|---|
| What it is | The regular Wii build, run inside vWii | The same Wii build, launched as its own injected Virtual-Console-style channel | A dedicated Wii U (Aroma) app, .wuhb |
| Requires | Homebrew Channel inside vWii | Homebrew Channel inside vWii, plus a channel built with TeconMoon's WiiVC Injector Mod | Aroma (Wii U homebrew environment) |
| CPU | Standard vWii clock, 1 core | Unlocked, faster single-core clock | Full native Wii U, 4 cores |
| GamePad | Not usable | Usable as an extra controller (buttons/sticks; with display but no touch) | Full support — touch, buttons, second screen |
| Output | vWii-level, up to 480p | Same as plain vWii | Native, up to 1080p |
| Upscaling filters | GX-based (hq2x, Scale2x, 2xBR, DDT) | Same as plain vWii | GX2 shader-based (ScaleFX, Sharp Bilinear) |
| GC/Wii-only settings | Full access — Output Mode switching (NTSC/PAL/240p/etc.), Hardware Softening, and other Wii-side Video options | Same as plain vWii | Not available — these are Wii/GameCube-specific; the native build gets ScaleFX/1080p in their place instead |
| Which download | FCEUltraGX-Wii.zip (Wii build) |
FCEUltraGX-Wii.zip (Wii build) |
FCEUltraGX-WiiU.zip |
If you're not sure which you want: the native build is the strongest experience on a console with Aroma installed — full GamePad, four cores, 1080p, and GPU-based upscaling. VC injection is the best you'll get out of vWii itself (unlocked CPU and a usable GamePad, at Wii-level output), and plain Homebrew Channel vWii is the simplest but weakest of the three.
- Follow the Wii U Homebrew Guide to install Aroma if you haven't already. One-time setup per console.
- Download the Wii U build (
FCEUltraGX-WiiU.zipabove) and copyfceugx.wuhbtowiiu/apps/on your SD card, alongside your other Aroma apps. Also add thefceugx/folder from the same download to the SD card root. - Insert the SD card and turn on your Wii U — with Aroma installed, FCE Ultra GX shows up as its own icon directly on the Wii U Menu, right alongside your other software. No separate app store or launcher step needed; just select it and go.
SD:/
├── wiiu/
│ └── apps/
│ └── fceugx.wuhb
└── fceugx/
└── roms/
└── ...
Note the extra wiiu/ nesting compared to Wii: the native Wii U app folder is kept separate from vWii's own apps/ folder so the two can coexist on the same SD card without colliding.
⚠️ Run the latest Aroma. This port is only tested against, and only intended to work on, whatever the current Aroma release is at the time you're reading this. We can't promise it'll behave — or even boot — on an old Aroma build or an outdated Wii U system version. If something looks wrong, updating Aroma first is the right move before reporting it.
Recommended companions, installed through the same Wii U Homebrew Guide:
- Mocha — an Aroma component that gives Cafe OS access to USB storage (FAT32/exFAT/NTFS). Without it, USB drives simply won't show up as a load/save option on the native build; SD still works fine either way.
- Bloopair — lets you pair non-Nintendo Bluetooth controllers (Switch Pro Controller, Joy-Con, DualShock/DualSense, Xbox controllers, and others) to your Wii U as if they were a Wii U Pro Controller. Handy if you don't have a GamePad or Pro Controller handy. Bloopair works at the system level within the native Wii U environment and doesn't apply inside vWii.
- Follow the Wii Homebrew Guide to install the Homebrew Channel in vWii — the process runs from inside the Wii U's Wii mode and is otherwise the same as on a standalone Wii.
- Follow the Wii instructions above exactly, using the same SD card — the vWii build is the Wii build.
- Boot into vWii on your Wii U (from the Wii U Menu) and launch it from the Homebrew Channel, same as on Wii.
This is the simplest Wii U path, but it's also the most limited one: standard vWii clock speed, and no GamePad. For GamePad support and a CPU unlock without going all the way to the native build, see VC-style injection below.
One thing plain (and injected) vWii keep that the native build doesn't: full access to the Wii/GameCube-side Video settings — Output Mode switching (NTSC/PAL/240p/576p/etc.) and Hardware Softening — since those are tied to the GX video hardware vWii emulates. The native build trades that for GX2-based upscaling (ScaleFX) and native 1080p output instead. See the table above.
Rather than launching FCE Ultra GX from the Homebrew Channel every time, you can package it as its own injected channel using TeconMoon's WiiVC Injector Mod. This installs FCE Ultra GX as a Virtual-Console-style title in your vWii NAND rather than something launched through the Homebrew Channel, which is what unlocks the faster single-core CPU clock and lets you use the Wii U GamePad for display (without touch) and as an extra controller.
At a high level:
- Install the Homebrew Channel in vWii first (see vWii above) — you'll still want it for updates and other homebrew.
- Download and run TeconMoon's WiiVC Injector Mod on a PC, and choose Wii Homebrew Injection (DOL) as the injection type.
- Point it at FCE Ultra GX's
boot.dol(from the Wii build), and pick one of the available GamePad Emulation modes so the injector configures GamePad input for the resulting channel. - Build the injected package and install it to your Wii U's vWii NAND with the tool of your choice (the injector's own documentation covers this step, since it depends on your existing vWii setup).
- Keep the
fceugx/ROMs/saves folder on your SD card exactly as described above — the injected channel reads from the SD card the same way the Homebrew Channel version does.
Consult the injector's own documentation/thread for anything version-specific — like forwarder tooling, this is third-party software this README doesn't track closely.
The first time you run FCE Ultra GX, it writes a new settings.xml next to the app (in apps/fceugx/ on Wii/GameCube, wiiu/apps/ on Wii U) to store your configuration. On launch it auto-detects your storage device and drops you straight into the ROM browser — highlight a game and press A to load it with default settings, or head into Settings first to configure things to your liking.
Press A on the Settings box from the main menu to open the settings screen, which is split into Button Mappings, Video, Emulation, Saving & Loading, Menu, and Network. Reset Settings restores everything to defaults; Go Back returns to the ROM browser.
Configure the NES Controller and Zapper independently, each against whichever input devices you have connected (GameCube Controller, Wiimote, Nunchuk+Wiimote, Classic Controller, Wii U Pro Controller, Wii U GamePad). Pick a device to configure, then click each button in turn — FCE Ultra GX will prompt you to press the physical button you want assigned to it. Sensible defaults are already set for every supported input device, so you generally only need this screen if you want something different.
The NES Controller's mappable buttons include the usual B / A / Select / Start / D-pad, independent B (Rapid) / A (Rapid) bindings for per-button auto-fire (see Turbo Mode & Rapid Fire), and a combined Insert Coin / Switch Disk button that does VS System coin-insert or FDS disk-switching depending on what's loaded. The Zapper's mappable inputs are Fire and Insert Coin.
The Other Mappings screen (reached from Button Mappings) also lets you configure:
| Option | What it does |
|---|---|
| Turbo Mode | On/off |
| Turbo Mode Button | Which button/combo triggers Turbo Mode while held (see Turbo Mode & Rapid Fire) |
| Menu Toggle | Which button/combo brings up the in-game menu |
| Setting | Options |
|---|---|
| Output Mode (GameCube/Wii only) | Automatic (recommended), NTSC (480i), Progressive (480p), PAL (50Hz), PAL (60Hz), Progressive (576p), Original (240p) |
| Aspect Ratio Correction | None, 16:9 |
| Cropping | Off, Vertical, Horizontal, Both — hides overscan pixels the original hardware output but most TVs never showed |
| Palette | Default (FCEUX built-in), plus 11 curated presets: Digital Prime, Smooth, PVM Style D93, Composite Direct, Magnum, NES Classic, PC-10, Sony CXA, Wavebeam, PAL, Restored Wii VC, and Wii Virtual Console |
| Bilinear Filtering | On/Off — has no effect when Sharp Bilinear is selected as the Wii U upscaling filter, since that filter does its own filtering |
| Hardware Softening (GameCube/Wii only) | Off, Auto, Sharp, Soft |
| Upscaling | GameCube/Wii: None, hq2x, hq2x Soft, hq2x Bold, Scale2x, 2xBR, 2xBR-lv1, DDT · Wii U: None, ScaleFX, Sharp Bilinear |
| Scanline Overlay | On/Off |
| Screen Zoom | Adjust horizontal/vertical zoom with the left/right arrows; 100% is default |
| Screen Position | Nudge the output with the on-screen arrows if it isn't centered on your display |
| Option | Notes |
|---|---|
| Game Timing | Automatic (recommended), NTSC, PAL, or Dendy — sets the console timing FCEUX emulates; Automatic detects it from the loaded ROM |
| Sprite Limit | On by default, matching the real NES/Famicom's 8-sprite-per-scanline limit — the cause of the sprite flicker some games show on real hardware. Turning it off removes that limit, eliminating the flicker at the cost of hardware accuracy |
| Zapper Crosshair | On/Off — shows an on-screen crosshair for Zapper light-gun aiming |
| Option | Options |
|---|---|
| Load Device | SD, USB, DVD, Network, Auto |
| Save Device | SD, USB, Network, Auto |
| Load Folder | Opens an on-screen keyboard to set a custom ROM folder |
| Save Folder | Opens an on-screen keyboard to set a custom save folder |
| Cheats Folder | Opens an on-screen keyboard to set a custom cheats folder |
| Screenshots Folder | Opens an on-screen keyboard to set a custom screenshots folder |
| Covers Folder | Opens an on-screen keyboard to set a custom covers folder |
| Artwork Folder | Opens an on-screen keyboard to set a custom artwork folder |
| Auto Load | Off, RAM, State |
| Auto Save | Off, RAM, State, Both |
| Append Auto to .SAV Files | On/Off — when on, auto-created RAM saves get an " Auto" suffix so they don't overwrite a save you made manually |
FCE Ultra GX has two kinds of saves: RAM saves, the in-game battery save (only applicable to games that support it), and save states, real-time snapshots that capture exactly where you are and let you resume later.
| Option | Options |
|---|---|
| Exit Action | Return to Loader, Return to Wii Menu, Power Off |
| Wiimote Orientation | Vertical, Horizontal |
| Music Volume / Sound Effects Volume | |
| Rumble | Enabled/Disabled — on Wii U, the GamePad uses a shorter, reduced-amplitude pattern than the Wiimote |
| Language | See Language & Custom Fonts |
| Preview Image | See Artwork |
| Hide RAM Saving | Hides the RAM save option in the in-game save menu, for games where you only ever use save states |
Set the menu language under Settings → Menu → Language. Supported: English, Japanese, German, French, Spanish, Italian, Dutch, Chinese (Simplified), Korean, Portuguese, Brazilian Portuguese, Catalan, Turkish, and Swedish.
The built-in font only covers Latin-script languages. For Japanese, Korean, or Chinese, you also need to supply a matching font file yourself — this repository ships them in the fonts/ folder:
| Language | Font file |
|---|---|
| Japanese | jp.ttf |
| Korean | ko.ttf |
| Chinese (Simplified) | zh.ttf |
Copy the matching .ttf into your app folder — apps/fceugx/ on Wii, or fceugx/ on the SD card root on Wii U (the same folder as settings.xml) — then select that language from the menu; it switches fonts automatically once both are in place.
This is a Wii and Wii U only feature — the GameCube build can't load external fonts, so Japanese/Korean/Chinese text won't render correctly there.
Cover art, screenshots, or general artwork can be shown on the main menu when a game is highlighted. Pick which one to display under Settings → Menu → Preview Image. Each image lives in its matching folder (fceugx/covers, fceugx/screenshots, fceugx/artwork) and must be a PNG named exactly the same as the ROM (e.g. Excitebike.png for Excitebike.nes), no larger than 640×480. 256×240 — the NES's own native resolution — is the recommended size.
To load or save over your LAN, enter your SMB share settings under Settings → Network: IP, Name (the share name), Username, and Password.
🔑 If your SMB share doesn't have a password, leave the Password field blank — don't type anything into it. An empty password connects as guest.
Network Shares (SMB) uses libsmb2 on all three platforms, with the SMB dialect auto-negotiated (SMB2/3) rather than hardcoded — meaning it talks to modern Windows/Samba shares out of the box. One share can be connected at a time.
The File Browser loads automatically on startup and lists the contents of your fceugx/roms folder (or wherever you've pointed Load Folder — see Saving & Loading). Click a game — uncompressed, or zipped in a .zip/.7z archive — to load it, or click Up One Level to navigate.
Press Home while playing to open the in-game menu (Save, Load, Reset, Controller, Cheats). Select Main Menu to return to the File Browser, or Close to resume play.
- Save offers options to create a new RAM save or a new save state; click either to create one, or click an existing save to overwrite it.
- Load loads a saved RAM save or save state.
- Reset resets the current game.
- Controller toggles which controller drives the game.
- Cheats toggles your loaded cheat codes (below).
Cheats load from fceugx/cheats in the .cht file format, and must be named exactly the same as the ROM they apply to (e.g. Excitebike.nes needs Excitebike.cht).
FCE Ultra GX also supports Game Genie codes, which need a Game Genie patch ROM to work: download a gg.rom file and place it directly in your fceugx folder (alongside disksys.rom, not in a subfolder). With that in place, a Game Genie option appears in the in-game menu where you can enter and toggle codes.
FCE Ultra GX has two distinct speed-up features that are easy to mix up:
- Turbo Mode roughly doubles overall playback speed while active — game logic, scrolling, everything. It's remappable — set which button or combo triggers it under Settings → Button Mappings → Other Mappings → Turbo Mode Button — and can be disabled entirely from the same screen. Hold the assigned button to run at double speed; release it to return to normal playback.
- Rapid Fire (the classic NES-style "turbo" feature) only affects a single button — B (Rapid) and A (Rapid) are separate bindings under Button Mappings that auto-fire that specific button for as long as it's held, at normal game speed. This is the equivalent of a third-party "turbo controller," useful for shooters and other rapid-tap games, and has nothing to do with overall playback speed.
To play Famicom Disk System games (.fds), you need an FDS BIOS file. Download disksys.rom (8KB) and place it directly in your fceugx folder (not in roms/). Once it's there, .fds games load like any other ROM.
Use the Insert Coin / Switch Disk button (configurable under Button Mappings) to switch disk sides on multi-disk FDS games while playing.
VS System arcade games are supported directly — load them like any other ROM. The same Insert Coin / Switch Disk button used for FDS disk-switching also inserts a coin for VS System games that need one to continue.
FCE Ultra GX includes special handling for games designed around the Famicom 3D System (a red/blue anaglyph 3D peripheral) and other anaglyph-rendered NES/Famicom games, rendering them with a red/blue 3D effect you can view with a pair of anaglyph glasses. This support is inherited from the underlying FCEUX core and applies automatically to games it recognizes — no separate toggle is needed.
FCE Ultra GX can load .sav RAM saves created by FCEUX (or compatible emulators) on other platforms (Mac/PC/Linux/etc.), and vice versa.
- To import, make sure the
.savfile's name matches your ROM's filename (aside from the extension). - To export, copy the save from your console's
fceugx/savesfolder over to the other platform — you may need to rename it to whatever that FCEUX build expects.
FCE Ultra GX builds for GameCube, Wii and Wii U from this one repository. The toolchain
and dependencies (devkitPro, libogc2 or wut, and libsmb2, libmocha and
libdvm built from source) are the same for every project that uses libgui,
so they are documented once in the
libgui Building guide.
Follow it through to the end of the dependency steps, then:
git clone https://github.com/dborth/fceugx.git
cd fceugx
make -f Makefile.wii -j3 # Wii -> executables/fceugx-wii.dol
make -f Makefile.gc -j3 # GameCube -> executables/fceugx-gc.dol
make -f Makefile.wiiu -j3 # Wii U -> executables/fceugx-wiiu.wuhbBesides the libgui dependencies, FCE Ultra GX also needs ppc-mxml. This
repository's .github/workflows/build.yml is a working reference for the full
build.
| Role | Credit |
|---|---|
| Coding & menu design | Tantric |
| Menu artwork | the3seashells |
| Menu sound | Peter de Man |
| Logo design | mvit |
| Additional updates/fixes | Zopenko, Burnt Lasagna, Askot, bladeoner |
| FCE Ultra GX GameCube | SoftDev, askot & dsbomb |
| FCE Ultra | Xodnizel |
| Original FCE | BERO |
| libogc / devkitPPC | shagkur & WinterMute |
- FCE Ultra GX Project Page
- FCEUX — the core FCE Ultra GX is built on
- Wii Homebrew Guide
- Wii U Homebrew Guide
- gc-forever.com — GameCube homebrew/hardware hub
- Swiss — the recommended GameCube loader
- TeconMoon's WiiVC Injector Mod
- Mocha — USB storage access for the native Wii U build
- Bloopair — Bluetooth controller pairing for the native Wii U build
- Change History (CHANGELOG.md)