Pokémon Omega Ruby & Alpha Sapphire ROM Hacking Guide
Welcome to the Hub for everything related to Omega Ruby and Alpha Sapphire ROM Hacking!
Our aim is to bring everything together relating to ORAS Modding with these pages.
Thanks to @Indigo#7051 from the Pokémon 3DS Modding Discord server, which you can join using this link, for researching and putting together a lot of this information.
Let's start with the basics.
Let's face it - if you're starting anything, you're gonna need to start somewhere.
I'm first of all going to make a really dumbed-down glossary of sorts of different terms that you're going to come across. If things don't make sense right now, that's okay. Don't worry!
ROM - The game file. A file that can be read by an emulator or console.
RomFS - The filesystem which holds things such as game assets.
ExeFS - The filesystem which holds the more techy things, such as shiny odds.
GARC - The files held in the RomFS. Stands for GameFreak Archive. Can be described as a fancy zip folder - basically holds a bunch of files (sometimes up to 8000+) in one.
Texture - An image file (almost always in .png format) which shows on a model.
Model - The assets which the 3D games are built around. A common misconception is the difference between Models and Textures. Models are the 3D assets, Textures are the 2D assets which are linked to models.
TwoCC Container - These are the files you get when you extract GARCs. Think of them as the contents of the fancy zip folder.
Just remember that file formats are, to an extent, irrelevant. It's more technical than whatever the suffix of a file is. So, changing your .3ds file to have the extension .cia (for example) won't do anything. File extensions are there for organisation and to make things easier for you to read and understand.
.3ds - As long as they're decrypted, these files can be played on Citra.
.cia - These can be installed to 3DS consoles or to Citra by going to File > Install CIA.
.bch - Stands for Binary CTR H3D. The general graphics format for 3DS games. ORAS uses v33 of BCH.
.pc - Pokémon Model (or placeholder, you can tell by the file size.)
.pt - Pokémon Texture
.pb - Pokémon Battle Animation
.pk - Pokémon Amie Animation (none for Megas)
.mm - Any overworld model. Stands for Move Model.
.bin - Generic Binary format
Okay, you got all that down?
Now, this isn't a tutorial for how to get CFW on your 3DS, but you'll need it; if you don't know what CFW is, it stands for Custom Firmware. If you want a guide to install CFW, check this out.
Dumping your game
For dumping a game from a digital copy, click here.
For dumping a game from a cartridge, click here.
Dumping is the ONLY legal way to obtain a ROM. If you are found to have obtained your ROM any other way, you will not be supported with any issues you might have.
Extracting Your Game
No matter what you want to do with your ROM hack, you're going to need to be able to access the files. Having a .3ds file isn't gonna cut it.
For this, you'll need to extract your game.
How to extract your game:
Extract the HackingToolkit .rar somewhere convenient.
Place your ROM file in the same folder as the HackingToolkit, and name it something simple (e.g. omega.3ds).
Run SetupUS.exe and follow the setup instructions if prompted.
Run HackingToolkit3DS.exe, and type the letter corresponding to your file type (usually either D for 3DS or CE for CIA).
Type the name of your ROM file without the file extension (e.g. omega) and wait for the extraction to take place.
Once it's finished, your PackHack folder should have a bunch of folders and files, but the most important ones that we'll be using are ExtractedExeFS and ExtractedRomFS.
Congrats, your game is now extracted!
That's the end of the basics section.
From now on, you'll be getting into real modding stuff! Click one of the quick links below to get started with the next level of difficulty.