Hello everyone, welcome to my tutorial on how to make accurate Virtual Console injections for the 3DS. This guide is a bit reading heavy, but it's actually rather simple in practice.
The first thing you must do is acknowledge that the actual Virtual Console emulators are not perfect and often are flawed with some particular games, and thus, even if you do everything correctly, there is a chance your game may not work anyway, or portions may not be emulated correctly. This is especially the case for Super Nintendo, Game Gear, and to a certain extent, the Game Boy Advance.
To create official looking Virtual Console injects for the 3DS you will need several tools.
First of all, you will need the injector for the console you wish to create Virtual Console Injects for. All of these Injectors are by @Asdolo and are the only injection methods I will be supporting with this guide. These tools currently only support Windows platforms.
Alternatively you may use any other injector you'd like. @cots currently has a series of great, more complicated injectors for NES, SNES, and GBA. However, because they're more complex, I will not be covering how to use these to keep in line with the n00b-friendly nature of this guide. Make sure if you have questions about those injectors specifically, to ask on their respective development threads, not here.
Next you will need some other stuff:
For demonstration purposes, I will be using the Game Gear with the game, Legend of Illusion Starring Mickey Mouse.
Section II: Icons and NamesPrerequisites.
Next, you should google the title of the game you are creating an inject for to find 2 pieces of information. You want to find it's exact title and publisher (not developer). The easiest way to do this is to google the exact title of the game.
As you can see from the image above, the exact title, based on the description of the game is "Legend of Illusion Starring Mickey Mouse" and the publisher is "Sega". While it says "Sega" the actual information you would put it would be "SEGA" as this is the official name of the company.
Now that you have this information, it's a good idea to put the information into the boxes.
Here are some general guidelines for inputting this information that are based on the official virtual console titles.
Long Name:
Once you're satisfied, click "Next Step".
Prerequisites.
To start, simply open the project template I provided above and edit away following these rules the best you can.
If you downloaded the PhotoShop template, read the Readme for how to use that template instead, though I think this stuff still applies in that template too, with little variance.
Suggested Rules for All Text:
here are some examples of good footer images
Once you have something you think looks good, export it as a PNG file with GIMP and import it by ticking the "import and use custom footer image" box and feeding it the PNG you just made.
Section IV: Options
How you handle these pages is up to you. Each injector has unique options for each console and as such, it's a good idea to figure out what you yourself like the most. This is all up to you.... unless you're doing a GBA game.
Before getting into the more complex patch options, there one extra patch called the sleep patch, which allows you to add a button combo to the game that puts the GBA game into sleep mode. Personally, I can't attest to it actually saving any power, but it does work and it does what it says it does. Some games will crash with it enabled, so use this at your own discretion.
Anyhow, GBA Games oftentimes will work fine without needing any patches at all. But, sometimes, they won't. And that's what this section is for.
Some games, when using the default settings will not save properly when injected, and return errors or crash when starting when you try to play them due to a saving problem. Here is a short, very incomplete list of games that do this:
These errors are most common for games that use EEPROM saving, so if your game's saving doesn't work and it detects as EEPROM, chances are, the SRAM patch will fix it for you. Additionally, some of these EEPROM games may appear to save properly but when you exit and restart them from the Home Menu the saves will no longer be present. It is important you check and make sure. Trial and Error is key.
These games will require you tick the "SRAM Patch" box and depending on the type of rom, enable multiple applications of this patch. In particular, multicarts tend to need multiple passes, like Dr. Mario & Puzzle League which needs 3 whole passes to have the whole game save properly. Again, Trial and Error is key.
Next we have games that absolutely need custom patches to save or work properly. Here is a list of games that you absolutely need these IPS patches for.
Simply tick the IPS patch box and pick these files on page 4 of the injector and your games should save properly.
Now, for Super Mario Advance 4. This game basically requires you grab the USA, Australia Rev1 copy of that rom. (That's how it's labeled in the No-Intro Collection.)
This is the patch for the rom.
After applying this in step 4 of the injection, the game will softlock when creating a save file, from there, just use Start+Select+A+B to reset the game, and then from there, play the game, only using 1 save file and don't use the Quick Save option in the pause menu. For World E there's no additional work needed, it works fine. The game will also complain of corruption on start up, which is normal, Unfortunately, there's not really any way around this yet. Sorry.
Once you're satisfied, hit finish to export your rom. It'd be wise of you to include the product code and TitleID in the file name, just so you can replace it without creating a new title if you realize you messed something up. From there, pop the CIA on your SD card or a web server and install it with your favorite CIA installer and you're all set.
And just like that, you have something that to the untrained eye, looks like it came right from the eShop itself. Enjoy your retro gaming, everyone. If you have any questions or concerns, feel free to voice them in the thread below. Hopefully this helped some of you out there.
Afterword.
I'd like to thank a few people, as this guide wouldn't be as fleshed out as it is without them:
@Asdolo for making these injectors and being an awesome dev
@Asia81 for making threads with guides for hex editing roms (which I've turned into IPS patches)
@AmeenX for some pokemon patches
@Tdam01 for some more pokemon patches
@yafeee for making the patch for Mystery Dungeon Red Rescue Team, which I ported to the USA version
The first thing you must do is acknowledge that the actual Virtual Console emulators are not perfect and often are flawed with some particular games, and thus, even if you do everything correctly, there is a chance your game may not work anyway, or portions may not be emulated correctly. This is especially the case for Super Nintendo, Game Gear, and to a certain extent, the Game Boy Advance.
Section I: What you need
To create official looking Virtual Console injects for the 3DS you will need several tools.
First of all, you will need the injector for the console you wish to create Virtual Console Injects for. All of these Injectors are by @Asdolo and are the only injection methods I will be supporting with this guide. These tools currently only support Windows platforms.
- Game Boy Color: Ultimate GBC VC Injector for 3DS
- Game Boy: Ultimate GB VC Injector for 3DS
- Sega Game Gear: Ultimate GG VC Injector for 3DS
- Nintendo: Ultimate NES VC Injector for 3DS
- Game Boy Advance: Ultimate GBA VC Injector for 3DS
- Turbografx 16/PC Engine: Ultimate TG16 PCE VC Injector for 3DS
- Super Nintendo: Ultimate SNES VC Injector for 3DS
Alternatively you may use any other injector you'd like. @cots currently has a series of great, more complicated injectors for NES, SNES, and GBA. However, because they're more complex, I will not be covering how to use these to keep in line with the n00b-friendly nature of this guide. Make sure if you have questions about those injectors specifically, to ask on their respective development threads, not here.
Next you will need some other stuff:
- Some method of attaining screenshots of the games you wish to create injects for.
Possible Solutions: Google Images, Emulators + ShareX. - Roms of the games you wish to inject. I can't help you with this, obtain them on your own from your own sources on the internet.
For demonstration purposes, I will be using the Game Gear with the game, Legend of Illusion Starring Mickey Mouse.
Section II: Icons and Names
- Screenshot of the title screen of the game you are going to be creating an inject for.
- It is recommended that this screenshot be pixel perfect and in PNG format.
- Basic Googling Skills.
- A character counting tool.
Next, you should google the title of the game you are creating an inject for to find 2 pieces of information. You want to find it's exact title and publisher (not developer). The easiest way to do this is to google the exact title of the game.
As you can see from the image above, the exact title, based on the description of the game is "Legend of Illusion Starring Mickey Mouse" and the publisher is "Sega". While it says "Sega" the actual information you would put it would be "SEGA" as this is the official name of the company.
Now that you have this information, it's a good idea to put the information into the boxes.
Here are some general guidelines for inputting this information that are based on the official virtual console titles.
Long Name:
- This field appears on the top screen in the bubble containing the name of the game on the present icon on the top screen before it's unwrapped, above the name of the publisher. It appears in the speech bubble above the icon on the 3DS home menu that appears only while the home menu icons are all the way zoomed in. It appears while the software is suspended in the home menu on the top screen, and lastly, it also appears when you click on the title in the data management menu.
- The full title of the game goes in this box.
- You are allowed 2 lines.
- Each line is allowed to go up to 32 characters.
- This means your full title should not exceed 64 characters. (technically the actual field allows up to 128, but this is not recommended, as it will cause some distorted, unprofessional appearance throughout the 3DS system.)
- Place line breaks in long titles up at appropriate locations. Often times longer game titles have a main title and a sub-title. The point after the main title would be an appropriate breakpoint.
- Some good examples of long names for games with long titles:
- This field appears in the data management menu in the listing of games. It also is the title used for Title listings in FBI and JKSM.
- A shortened version of the long name goes in this box, when it is necessary.
- Titles that are less than 32 characters will be exactly the same as the Long Name field.
- You are allowed only 1 line.
- You are not to exceed 32 characters. (technically the field allows up to 64, however exceeding 32 causes odd wrapping in the data management section of the system settings. No official titles exceed 32 characters.)
- Don't be lazy! Make your short name descriptive, you don't want multiple games using the same short name.
- If you can't think of a good way to shorten the name, an adequate option would be to type the first 29 characters followed by an ellipsis. (an ellipsis is a series of 3 periods, or ... for those unaware.)
- Some good examples of short names for games with long titles:
- This field appears on the top screen in the bubble containing the name of the game on the present icon on the top screen before it's unwrapped, beneath the long name of the title. It also appears in the speech bubble above the icon on the 3DS home menu that appears only while the home menu icons are all the way zoomed in.
- This field contains the company that published the game originally.
- Don't list the developer here accidentally! There's is a difference.
- Sometimes Wikipedia lists the name of some companies such as SEGA incorrectly cased to appear more proper in text. Remember to use the correct casing that is consistent with official titles where possible.
Section III: Title Cards/Footers
Prerequisites.
- GNU Image Manipulation Program (GIMP) or Adobe PhotoShop and basic knowledge of how to use either.
- The SCE-PS3 fonts installed. (The font license states they are free for Personal and Commercial use, so download away!)
- This GIMP Project Template or This PhotoShop Project Template (thanks Xyllon!)
To start, simply open the project template I provided above and edit away following these rules the best you can.
If you downloaded the PhotoShop template, read the Readme for how to use that template instead, though I think this stuff still applies in that template too, with little variance.
Suggested Rules for All Text:
- Font must be SCE-PS3 Rodin LATIN Bold.
- Text must be center justified.
- After you have the number of lines finalized, correctly center the text vertically using the top border of the text box.
- These are only suggestions. Do whatever looks best, study official VC title cards of the type of console you are creating an inject for. Do what you must to attain the level of quality you want.
- Up to 2 lines of text are permitted. 1 line is preferred when possible within the rule set below.
- Text size must be between 15px and 11px. Sizes below 13px work as well but look significantly worse, the smaller you get. If you need to get any smaller to crunch more text in, consider adding a second line if you haven't already, additionally you may adjust letter spacing to -1 on one of the lines to make everything fit, having 2 lines is preferred to having text crunch, in most cases.
- GBA Games do not have this line at all, as the only officially released GBA games were part of the Nintendo 3DS Ambassador program and released before these apparent standards were in place.
- This line refers to the year that the game was released ON the physical media the Virtual Console is emulating.
- For games that haven't been released officially on physical media for the original console, like Rom Hacks or Unofficial Translations, input "Not Released." for this line.
- The font must have letter spacing set to 1 for the entire line. (It must be set to 2 for text that reads "Not Released.")
- Text size must be 14px or 13px. 13px tends to be used for games that have more than one line for the name.
- If you're a real stickler for accuracy, you may need to adjust the spacing between the colon and year slightly, and possibly on the year itself, this is a trait inconsistent among official virtual console but I decided to mention it anyway since Xyllon brought it up to me on reddit.
here are some examples of good footer images
Once you have something you think looks good, export it as a PNG file with GIMP and import it by ticking the "import and use custom footer image" box and feeding it the PNG you just made.
Section IV: Options
Section Q: GBA Games
First of all, if you're just here for the IPS patches, here: Pokemon & Super Mario Advance 4.
Before getting into the more complex patch options, there one extra patch called the sleep patch, which allows you to add a button combo to the game that puts the GBA game into sleep mode. Personally, I can't attest to it actually saving any power, but it does work and it does what it says it does. Some games will crash with it enabled, so use this at your own discretion.
Anyhow, GBA Games oftentimes will work fine without needing any patches at all. But, sometimes, they won't. And that's what this section is for.
Some games, when using the default settings will not save properly when injected, and return errors or crash when starting when you try to play them due to a saving problem. Here is a short, very incomplete list of games that do this:
- 2-in-1: Dr. Mario & Puzzle League (needs applied 3 times)
- Crash Bandicoot 2: N-Tranced
- Crash Bandicoot: The Huge Adventure
- Crash Nitro Kart
- Donkey Kong Country
- Donkey Kong Country 3
- Doom
- Doom II
- Dragon Ball Z: Supersonic Warriors
- Grand Theft Auto Advance
- Green Eggs and Ham
- Ice Age 2: The Meltdown
- Nicktoons: Freeze Frame Frenzy
- Ninja Five-O
- Rayman 3
- Shrek: Hassle at the Castle
- Spider Man
- Spider Man 2
- Spider Man 3
- Spider Man Battle for New York
- Spyro Season of Ice
- Spyro Super Pack: Spyro: Season of Ice & Spyro 2: Season of Flame (needs applied 2? times)
- Super Ghouls 'n Ghosts
- Super Mario Advance
- Super Mario Ball / Mario Pinball Land
- Super Monkey Ball Jr.
These errors are most common for games that use EEPROM saving, so if your game's saving doesn't work and it detects as EEPROM, chances are, the SRAM patch will fix it for you. Additionally, some of these EEPROM games may appear to save properly but when you exit and restart them from the Home Menu the saves will no longer be present. It is important you check and make sure. Trial and Error is key.
These games will require you tick the "SRAM Patch" box and depending on the type of rom, enable multiple applications of this patch. In particular, multicarts tend to need multiple passes, like Dr. Mario & Puzzle League which needs 3 whole passes to have the whole game save properly. Again, Trial and Error is key.
Next we have games that absolutely need custom patches to save or work properly. Here is a list of games that you absolutely need these IPS patches for.
- Pokemon Ruby
- Pokemon Sapphire
- Pokemon Emerald
- Pokemon FireRed
- Pokemon LeafGreen
- Pokemon Mystery Dungeon: Red Rescue Team
- Super Mario Advance 4: Super Mario Bros. 3
Simply tick the IPS patch box and pick these files on page 4 of the injector and your games should save properly.
Now, for Super Mario Advance 4. This game basically requires you grab the USA, Australia Rev1 copy of that rom. (That's how it's labeled in the No-Intro Collection.)
This is the patch for the rom.
After applying this in step 4 of the injection, the game will softlock when creating a save file, from there, just use Start+Select+A+B to reset the game, and then from there, play the game, only using 1 save file and don't use the Quick Save option in the pause menu. For World E there's no additional work needed, it works fine. The game will also complain of corruption on start up, which is normal, Unfortunately, there's not really any way around this yet. Sorry.
Section V: Completion!
Once you're satisfied, hit finish to export your rom. It'd be wise of you to include the product code and TitleID in the file name, just so you can replace it without creating a new title if you realize you messed something up. From there, pop the CIA on your SD card or a web server and install it with your favorite CIA installer and you're all set.
Afterword.
I'd like to thank a few people, as this guide wouldn't be as fleshed out as it is without them:
@Asdolo for making these injectors and being an awesome dev
@Asia81 for making threads with guides for hex editing roms (which I've turned into IPS patches)
@AmeenX for some pokemon patches
@Tdam01 for some more pokemon patches
@yafeee for making the patch for Mystery Dungeon Red Rescue Team, which I ported to the USA version