Tutorial  Updated

Create tiny GBA forwarders for EmuNAND

Background: When you try to launch a GBA Game through your EmuNAND (Whether it's downloaded from the eShop through the Ambassador Program or a custom GBA game installed through a CIA), the system reboots before it loads the title. Once it reboots it will look for the title in SysNAND, and you'll get an error message if you haven't also installed the game there.

Once you have the game installed in both SysNAND and EmuNAND, everything is hunky-dory and working, but I didn't like that I had to install the same title to my system twice and take up double the space on the SD card. That's where this method comes in. (I know GBA games aren't that big, it just bothered me) I wasn't planning on writing this up, but someone requested it so here it is.

What we're doing: We are going to create two CIA files. The actual game, which will be installed in SysNAND, and a forwarder of sorts that will be installed in EmuNAND.

Please Note: This tutorial partially assumes that you are already familiar with running GBA games through EmuNAND. If you are having trouble running GBA games through EmuNAND normally, this tutorial is not the place to start.


What you will need:

I originally tested this procedure with Mario & Luigi: Superstar Saga, so I'll be using that as my example game for the most part.

Steps:
  1. Download all the tools above, and extract each of them to their own folder.
  2. Using the 3DS Simple GBA Converter, create a CIA using your GBA ROM, Generated Footer, Icons and Banners like you normally would.
  3. Copy the resulting CIA to the PackEnglishV4.8\PackHack folder.
  4. Remove spaces and special characters from the CIA filename to avoid problems with the tool. I.e: Mario & Luigi.CIA -> MarioLuigi.CIA
  5. Launch HackingToolkit3DS.exe, and enter CIA.
  6. Type the name of your CIA into the program without the extension.
  7. Your CIA will be unpacked. At "Decompress the code.bin file" choose N for No.
  8. Once this is complete you can close the HackingToolkit. We are done with the original CIA we made for now, so move it to a safe place and rename it to something distinguishable. I.e: Mario & Luigi - Superstar Saga - SysNAND.CIA
  9. Open the ExtractedExeFS folder, and delete the existing code.bin file. (This is essentially the rom)
  10. Create a blank file (Right Click -> New -> Text Document will do) and rename it to .code.bin (Two dots intentional, don't forget to get rid of .txt)
  11. Launch HackingToolkit3DS.exe again, and this time enter 3DSB to open the 3DS Builder.
  12. Click "Open RomFS" and choose the ExtractedRomFS Directory, and do the same for Open ExeFS.
  13. When you choose the ExtractedExeFS Directory, it will ask you if you want to Compress the code.bin file. Choose yes for this, and click through any remaining prompts.
  14. Select "Open ExHeader" and choose the DecryptedExHeader.bin file.
  15. When you choose "Save Location..." choose the "roms" directory within 3DS Simple CIA Converter. Don't forget to save your file with the .3DS Extension for now.
  16. Before we click "Go", we need to get our Serial #. Open the DecryptedExHeader.bin file with any text editor, and the first 4 letters will be what we need. For example, if we were doing this with Mario & Luigi: Superstar Saga, the first 4 letters would be AYNE. Therefore, we would want our Serial to be CTR-P-AYNE.
  17. Click "Go", and it will generate a GHASTLY HUGE 128 MB 3DS FILE. Don't worry, the point of this guide was to reduce used space on the SD card remember?
  18. Launch the 3DS Simple CIA Converter, and check the box that says FW Spoof.
  19. Select "Convert 3DS ROM to CIA" and choose the roms directory that we saved our 3DS file to.
Woohoo! Open the cia directory within the 3DS Simple CIA Converter folder, and we'll have our forwarder CIA weighing in at about 500 KB! Rename this to something like Mario & Luigi - Superstar Saga - EmuNAND.CIA

At this point you should have two files:
  1. Mario & Luigi - Superstar Saga - SysNAND.CIA (The CIA we created in Step 2)
  2. Mario & Luigi - Superstar Saga - EmuNAND.CIA (The Forwarder CIA we just made)
Install the 1st CIA to SysNAND, and the 2nd to EmuNAND using your CIA Installer of choice (I personally use FBI with PastaCFW for SysNAND and FBI with ReiNAND for EmuNAND). If you followed everything properly, your game will load!

Problems?
  • Make sure you've patched AGB_FIRM properly for both SysNAND and EmuNAND!
  • Make sure your GBA game will even run with the normal method of installing the full game to EmuNAND and SysNAND
  • Read the directions again carefully!
  • Go setup your 3DS with A9HL and bypass the need for a EmuNAND

I'll write this later. Mostly the same steps as with custom games, but you'll get your official CIAs using FunkyCIA2 and deep decrypt them using Decrypt9WIP instead of using 3DS Simple GBA Converter

Tested with the following games:
  • All of the Ambassador GBA Titles
  • Mario & Luigi: Superstar Saga
 
Last edited by TeconMoon,
I'll like to report that I made an official GBA VC forwarder just doing a deep decrypt with decrypt9 and then doing the regular process from step 3 onwards.

Neat, glad my breadcrumbs were enough :D I'll probably finish writing out the ambassador part of the guide eventually.
 
This is probably my lacking knowledge of 3DS to CIA converter, but shouldn't you first create ncchinfo.bin and create xorpads with that using i.e. Decrypt9 before actually converting the .3ds to .cia?
 
This is probably my lacking knowledge of 3DS to CIA converter, but shouldn't you first create ncchinfo.bin and create xorpads with that using i.e. Decrypt9 before actually converting the .3ds to .cia?

Not necessary since the 3DS files produced through this guide are not encrypted. The 3DS to CIA converter only needs xorpads to work with encrypted .3ds files.

Edit: This statement is not entirely true. The converter program usually requires dummy xorpads even if the 3ds is decrypted, but for some reason 3ds files built using the PackHack don't need anything else.
 
Last edited by TeconMoon,
Thanks for the tutorial. It is easy to follow and it works, although I got stuck at 12. for a few minutes because at 10. I didn't immediately realize that I had to put the .code.bin in the ExtractedExeFS folder. Only took me a minute or two to realize that.

Another thing, I downloaded the hackingtoolkit3DS that you are mirroring, but the hackingtoolkit from that package doesn't unpack my cia game. So I closed my virusscanner for a minute, downloaded Asia81's package and that one did the trick. I don't know why the mirrored 4.8 version doesn't work for me.

Finally, in which way is the procedure for ambassador games or original GBA eshop games different?

Edit: nevermind, figured the ambassador games out (just deep decrypt the ambassador CIA and go further with step 3). :lol:
 
Last edited by retroguy,
Yea sorry I never really worked on this guide much. I've abandoned this approach in favor of A9LH + AuReiNand SysNAND
 
I can imagine that. ALH9 still is one step too far for me, I'm just getting used to Emunand with all the goodies that it brings to my N3Ds. Building confidence is key now, and making the ALH9 jump before Summer I will. B-)
 

Site & Scene News

Popular threads in this forum