Skip to content

Instantly share code, notes, and snippets.

@Prof9
Last active March 26, 2023 11:55
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Prof9/ed3d0e70d8f8a3116a5f5db29b54873d to your computer and use it in GitHub Desktop.
Save Prof9/ed3d0e70d8f8a3116a5f5db29b54873d to your computer and use it in GitHub Desktop.
Dumping GBA ROMs from Wii U Virtual Console

Dumping GBA ROMs from Wii U Virtual Console

Virtual Console games sold on the Wii U eShop are basically emulators that come prepackaged with a single ROM. If your Wii U is on an exploitable system version, then you can dump this ROM from memory and play it on a conventional emulator like VisualBoy Advance.

In this guide I'll be giving a brief rundown on how to dump the ROMs from your purchased GBA Virtual Console games. Although the steps are fairly simple, you will need some technical know-how for some parts. So if the thought of using a console or a hex editor scares you, turn back now. You've been warned!

This guide covers Windows PCs only. I believe any version from Windows XP onwards will work, but I've only tested this on Windows 10.

Preparation

First we need to gather up some tools and information that we're going to need later.

  • Update your Wii U to version 5.5.1 if it is not already.
  • Start up the eShop, purchase the game that you want to dump, and install it to your Wii U.
  • Install a hex editor; in this tutorial I will be using HxD but you can use whichever hex editor you like.
  • Install the Java 8 runtime from java.com.
  • Make sure the .NET Framework is installed. Normally you don't have to worry about this.
  • Download the RomDumpingKit.zip from this link and extract it to C:\WiiU.
  • If you use Skype:
    • Open Skype options from Tools -> Options.
    • In the link hand menu, go to Advanced -> Connection.
    • Remove the checkbox next to Use port 80 and 443 for additional incoming connections.
    • Restart Skype.
  • If you are using any other program that uses port 80, close it and make sure port 80 is not in use.
  • Find the local IP address of your PC:
    • Press Windows+R, type cmd and hit Enter.
    • Type ipconfig and hit Enter.
    • Locate the entry that says IPv4 Address and make a note of it. Usually it starts with 192.168.
  • Find the local IP address of your Wii U. This one's a bit tricky. One way to do this is to retrieve your Wii U's MAC address from the System Settings, then check your router's configuration panel and find the list of DHCP leases, and find your Wii U's MAC address in the list.

Setting up TCPGecko

The next thing to do is set up an environment on the Wii U that enables it to communicate with your PC. We'll be setting up TCPGecko which allows for remote debugging and memory dumping.

  • On your PC, start HaxServerUS.jar, HaxServerEU.jar or HaxServerJP.jar depending on the region of your Wii U.
  • Start your Wii U.
  • Open the Internet Browser.
  • Close any open tabs (if needed).
  • Go to Settings, scroll down and click Delete Cookies (only needs to be done the first time).
  • Restart the Internet Browser (if any tabs were closed or cookies deleted).
  • Enter the following URL: http://192.168.x.x/hax?kexploit31, where 192.168.x.x is your PC's local IP address. Make sure to include the http://!
  • The screen should turn green and show the kernel exploit being activated with some humorous Illuminati text. Afterwards the Internet Browser will be closed and you will be in the HOME menu.
  • Restart the Internet Browser again.
  • Enter the following URL: http://192.168.x.x/hax?tcpgecko, where 192.168.x.x is your PC's local IP address.
  • If all goes well, you will be kicked back to the HOME menu again.
  • TCPGecko is now set up and will be activated when you launch a game or app.

Dumping the ROM.

Now that TCPGecko is set up, we'll be connecting the PC to the Wii U via the network and dumping the part of RAM that houses the Virtual Console ROM.

  • Start the Virtual Console game that you want to dump.
  • On your PC, open the GeckoDnet folder and start Gecko dNet.exe.
  • At the bottom there will be a button that says Connect to Gecko with a text field below. Type your Wii U's local IP address into the text field.
  • Click Connect to Gecko and wait until it's connected.
  • Open the Tools tab.
  • Find the section labeled Memory dumping. Click the dropdown menu and change it from to 01 to 10. The Start and End values will now change to 10000000 and 50000000 respectively.
  • Set the Start and End values to 40000000 and 48000000 respectively.
  • Click the Dump button.
  • TCPGecko will now dump part of the Wii U's RAM to your PC. By default it will be saved as DUMP01.bin in the GeckoDnet folder.
  • Wait until TCPGecko finishes dumping (the length depends on the quality of your connection).

Extracting the ROM.

With the RAM dumped, we now need to find and extract the ROM from it.

  • Go to the Dat-O-Matic website, set it to Nintendo - Game Boy Advance and look up the game that you're trying to dump.
  • When you've found the right game page, take note of the Size number in the ROM data table.
  • Open DUMP01.bin in HxD.
  • Press Ctrl+F, set the Datatype to Hex-values and search for the following bytes: FF 24 51 AE 9A 69 21 A2.
  • Press Ctrl+E and click the dec radio button at the bottom (this will change the start-offset and end-offset numbers).
  • Click the radio button next to Length. In the text field below, enter the ROM size that you found on Dat-O-Matic.
  • Click OK and a large block of bytes will be selected. If done correctly, the selection should end with a lot of FF FF FF FF bytes (though this may not always be the case).
  • Press Ctrl+C to copy the selection to the clipboard.
  • Create a new file with Ctrl+N, and press Ctrl+V to paste in the selection. If done correctly the offset in the lower left corner should be a nice round number after pasting.
  • Save the file with Ctrl+S. Name it rom.gba.
  • Copy the rom.gba file to the same folder as byteswap.exe.
  • Press Windows+R, type cmd and hit Enter.
  • Type cd /d C:\WiiU and hit enter. The line should now start with C:\WiiU>.
  • Type byteswap rom.gba romout.gba and hit Enter. Important: if you're not using the rom.gba and romout.gba names, make sure that the output file has a different name that the input file, otherwise the ROM will be ERASED!

Finished!

The romout.gba file is your dumped ROM file -- you can delete rom.gba. Load it up in an emulator like VisualBoy Advance to see if it works.

Note that in some cases the game may not actually boot, most notably if the Virtual Console version of the game has added motion blur. In such cases, you will need to patch out the motion blur in order to get the game to boot in a conventional emulator, but this is not covered by this guide.

As long as you don't shut down your Wii U, you can start up different Virtual Console games and dump them to your PC with TCPGecko. When doing so, hit the Disconnect button in tcpGecko dotNET before you shut down the current Virtual Console game, and hit Reconnect to Gecko after the new game has been launched.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment