3DS:Virtual Console/Extraction
More actions
Virtual Console games are usually identical to the original game, as Nintendo tries to avoid modifying ROMs directly and instead uses patches. And even when modified, these modifications are usually somewhat easy to undo. This means the original game can be extracted and used identically to one that came from a cartridge.
Required Reading
This tutorial works for NES, SNES, GB, GBC, GBA, and Game Gear (WIP) VCs.
Note that ROMs from three consoles are altered in VCs, as follows:
NES VC ROMs use a non-standard TNES header that only works in the Virtual Console, and must be converted back after dumping. This guide walks through how to convert the header.
SNES VC ROMs are altered for more efficient playback in the Virtual Console, and if not restored after dumping the audio will be unusuable in other emulators. This guide walks through how to restore the ROM.
Game Gear VC ROMs are compressed into a unique archive type, and may have patches directly added into the ROM itself. This guide will walk through how to decompress the archive once more info is collected, but as the patches are nondestructive it does not revert them.
Instructions
What You Need
- The latest release of GodMode9 (the GodMode9
.zipfile) - If extracting an NES game: tnes2ines.gm9
- If extracting a SNES game:
- The source code of vcromclaim (obtainable by the Download ZIP option in the Code button)
- snesvcsplit.py
- A version of Python 2.7
- If extracting a Game Gear game: MArchiveBatchTool, obtained from here
Section I - Prep Work
In this section, you will set up the necessary files to extract a VC game.
- Power off your console
- Insert your SD card into your computer
- Copy
GodMode9.firmfrom the GodMode9.zipto theluma/payloadsfolder on your SD card - Copy the
gm9folder from the GodMode9.zipto the root of your SD card - If you are extracting an NES game, copy
tnes2ines.gm9into thegm9/scriptsfolder on your SD card - If you are extracting an SNES game, extract the vcromclaim
.zipinto a folder and placesnesvcsplit.pyinto this folder - If you are extracting a Game Gear game, extract the MArchiveBatchTool
.zipinto a folder - Reinsert your SD card into your console
Section II - Accessing the Game Files
In this section, you will mount the VC game's internal files.
- Hold the START button and power on to open GodMode9
- Press the HOME button, then press A on the Title manager option
- Press A on
[A:] SD CARDand wait for the search to complete - Once it completes, all titles that you have installed will appear
- Find the VC that you wish to extract a ROM from and press A on that title, then choose to Open title folder
- Press A on the main game file - usually named
00000000.app- then choose NCCH image options..., then Mount image to drive and press A again to confirm - The internal files of the chosen game will appear
Section III - Dumping the ROM
In this section, you will copy the ROM out of the VC, and fix its structure if it is an NES/SNES game.
What console does the chosen game originally come from?
- Go into the folder
romfs/rom - Press A to select the file that appears, then choose
Copy to 0:/gm9/out - Press HOME, then go into
Scripts...->tnes2ines - Select the copied file and choose a mirroring if it asks, then let the script run
- Rename the ROM so its file extension is
.nes
| Your ROM is now extracted and can be used in an emulator. |
If you are on Linux, replace py -2 with python2 in the commands. |
- Go into the folder
romfs - Press A to select the file
data.bin, then chooseCopy to 0:/gm9/out - Press R+START to power off the console
- Take the SD card out of your 3DS and put it into your PC
- Copy
data.bininto the vcromclaim folder - Right-click anywhere in the empty space inside this folder and click on the option that opens Command Prompt, PowerShell, or the terminal
- If no such option appears, open this window manually and use
cdor similar commands to move the terminal into this folder
- If no such option appears, open this window manually and use
- Run the following two commands one at a time:
py -2 snesvcsplit.py data.binpy -2 snesrestore.py game.rom game.pcm output.smc
- If desired, change
output.smc's filename to a name of your choice
| Your ROM is now extracted and can be used in an emulator. |
- Go into the folder
romfs/rom - Press A to select the file that appears, then choose
Copy to 0:/gm9/out - Press B until you return to the drive list, then go into
[0:] SDCARD/gm9/out - Place the cursor on the copied ROM, press R+X, and change the file extension to match the console it came from:
.gbfor Gameboy,.gbcfor Gameboy Color - If desired, also change the ROM's filename to a name of your choice
| Your ROM is now extracted and can be used in an emulator. |
- Go into the folder
exefs - Press A to select the
.codefile, then chooseCopy to 0:/gm9/out - Press B until you return to the drive list, then go into
[0:] SDCARD/gm9/out - Press A on the
.codefile, choose GBA image options..., then choose Rename file and press A to confirm
| Your ROM is now extracted and can be used in an emulator. |
These ROMs can only be fully extracted on Windows or Linux. If you do not have access to a PC that runs either of these operating systems, stop after copying the ROM into gm9/out and wait until you have access. |
This section is a work in progress. Notes:
Figure out how to determine the seed and codec for any given game. Can't give a specific command for extracting without that info. |
- Go into the folder
romfs/system/roms - Press A to select the file that appears, then choose
Copy to 0:/gm9/out - Press R+START to power off the console
- Take the SD card out of your 3DS and put it into your PC
- Copy the ROM from
gm9/outinto the MArchiveBatchTool folder - Right-click anywhere in the empty space inside this folder and click on the option that opens Command Prompt, PowerShell, or the terminal
- If no such option appears, open this window manually and use
cdor similar commands to move the terminal into this folder
- If no such option appears, open this window manually and use
- WIP