Sign Up connects you to ROM Hackers around the world.
Search all tutorials.
Introduction To ROM Hacking

Introduction To ROM Hacking

Posted By: On August 18, 2012
Comments: 8
Views: 81678
5 Ratings

Hello, I’m linkandzelda and this is my first major guide in ROM Hacking. Some of you may know me as the creator of Pokémon Liquid Crystal or as the webmaster of The Pokémon World. Either way this is the start to my complete guide to ROM Hacking with Pokémon GBA Roms.

I can’t help but notice theres been a lot of amateur hacks floating around especially on other forums which either are low quality or get dumped after a few weeks. My aim is to build new ROM Hackers and to build good ROM Hackers by giving them enough knowledge to be able to create good hacks.

Who is this guide intended for, you're wondering. Well it’s mainly intended for true beginners to hacking. To people who have no idea what to do or where to begin to make a hack. It can also be used as reference purposes for other hackers too if you wish. As this is the first guide, and that its just really a large introduction to ROM Hacking there is a lack of images.

Over the course of Liquid Crystal’s development I’ve learnt a lot of things about ROM Hacking, including the basics and advanced techniques for performing various actions on a ROM allowing the story and visual aspects be changed to suit my needs. Most of you will be reading this guide because you want to learn how to hack Pokémon ROMS, I presume, so this part of the guide will focus with an introduction to ROM Hacking in general. I will make parts later on guiding you from the very beginning on how to ROM Hack.

I believe that if you know how something works you can hack it. And it’s true with anything, I would say. Your probably thinking “Oh LaZ don’t tell us a huge load of stuff about ROMs, we just wanna get hacking right now!” well yea I was the same when I first started hacking in 2007. But I can promise you, after what I’ve learnt and the way I benefited from the inner workings of a Pokémon ROM, you will do yourself good to read this section fully in order to grasp as much information as possible.

The Pokémon Engine
When you create a game you have to first create an engine to power the game. An engine is a large piece of code written in a computer programming language to tell the game how to work and to make things happen. Similar to how you need an engine for a car to move. Without the engine, even if you have the car body it will not move. The same is said for games. The game engine works in the same way. You’re probably wondering why I’m talking about game engines. It’s because Pokémon games also have an engine that they run on. ROM Hacking, can also be considered as game engine hacking as your modifying the inner workings of the game. Although most ROM Hacking is mainly what I like to call surface level hacking.

Surface Level Hacking
These terms such as “engine” and “surface level” might be baffling to you right now, but read on and you will hopefully have a better understanding. Some of the things you might think are irrelevant, but they exist as analogies to help you see the bigger picture and to associate different ROM Hacking aspects with other real world aspects.

I spoke about the game engine being the inner workings of a game before. Well, what about the visual aspects and levels? Are they part of the engine? The answer is no. For every game there Is stored data involved. With game engines the stored data is the engine itself, and then all the resources the engine uses to actually display a game’s visuals, the interfaces used to navigate the menus and the music. The engine is used to display these resources on the screen, and controls how they are displayed and when.

So whats surface level hacking? That’s basically what I like to call hacking the resources of the engine, which is what most ROM Hacking is nowadays. But why is this called surface level? Consider the following example:

I have Red Ferrari which I use to drive around in. It works fine and I can drive the car without a problem. Eventually I got bored of how the car looks, so you take it to the paint spray centre to get it to a new colour, in this case I like purple. So now I have a purple Ferrari. What exactly changes about the inner workings of the car? Nothing, it will still drive the exact same way as it did before, just the surface of the car changed, it looks different now.

What has cars and paint spray got to do with ROM Hacking at all? You can think of the paint spray as changing the palettes on a Pokémon game so they look different. The only thing that changed with the game is how it looks, hence why I name it surface level hacking. It doesn't just cover palette changes, though. It covers everything that doesn't change how the game works. Below is a list of what I believe to be surface level hacking aspects.

The colours used for the visual graphics

The shapes and images used for the games overworld

The events and happenings of the ingame story and functions

The images of all the characters in the game

The design and layout of the games overworld

The visual aspect of the titlescreen when you start the game

Battle Graphics
The graphcis displayed during all battle scenes

Other Graphics
Any other graphics such as the Pokémon menu or textbox design

The sounds and music to all the places in the game

What this boils down to is, anything that we see and hear as a game player is considered surface level hacking. For instance we don’t see “how” the Pokémon game shows a sprite on the screen do we? To us as the players we just see the sprite on the screen with no idea how it actually got there, in a technical sense I mean.

If your interested in all aspects of game development and rom hacking then you would be interested in how this is all done. Of course, once the full surface level hacking guide is completed I will create the inner workings hacking guide to the Pokémon engine. This will detail a lot of how things work, and how to change them to suit your needs.

To summarise, this guide will be available in 2 parts: surface level hacking and hacking the inner workings of the ROM. I will be starting with very easy things to begin with, coupled with the technical aspect of what you’re actually doing to the game.

What This Guide Will Do
This guide is more than just a “I will teach you to use a tool” type of guide, like most of the guides that already exist. This guide is a full on “how to make a hack” guide. You will learn the basics and advanced features of all ROM Hacking tools and how to use them on the ROM. You will also learn how to make good hacks, how to pick a good story and how to make good scripts. You will learn a ton of things in this guide which by the end of it you will be able to produce a good quality hack.

What Makes A ROM Hack
This is a good question and its important that beginners understand the expectations of hack players today. When you hack your goal is to obviously change things in the game. Your aim as a ROM Hacker is to think of how you can manipulate and change an existing Pokémon game and make it into your own creation. Once following each part of this section, it would do good use to write everything down. You can always change it later instead of forgetting it later. Countless times had I thought of a good idea for Liquid Crystal and had not written it down, resulting in me forgetting it completely later on.

Planning A Hack
In order for you to have a successful ROM Hack it needs to be different than the original ROM that you decided to hack. Different in what way? Well, a good hack is when you create a completely new story, with new looks and new features. You can aim to create your own new region and Pokémon totally separate from the official regions or you can use an official region, but create a new story over it. The choice is yours really, but make sure the story has a good plot to it, something that has twists and something that you think will appeal to other Pokémon players.

When creating a plot for a new game you have to consider the official “Pokémon” things such as their being 8 Gym Badges to collect and then an Elite 4 + Champion. Most new hacks all feature this same set + or - the amount of badges. I have two views to this approach. I’m happy with the traditional Gym Badges story line as it’s what we all know and love, but theres also another aspect to this. This Gym system can be total reinvented and reused to create a different environment and gameplay experience. How about a ranking system? You could play as a covert operative in a secret organisation who needs to beat his commanding officers in a battle, in order to win their rank and command the organisation. Just an example of how it could be used.

When thinking of a hack and ROM Hacking, a major part to it is innovation: how can I make this hack innovative? How can I make it different from every other hack? How can I make the best use of the features that are given to me? Consider all these points and think about all the aspects and features of each Pokémon game. A necessity for a ROM Hacker is to know the ins and outs of all the GBA Pokémon games. If you know everything about them you will know that on Cape Brink on FireRed theres a woman who will teach you the ultimate elemental moves to your starter Pokémon. If you knew that you can reuse this in your hack and start to already think how can this be changed to make it different? That was just an example though, theres many more specific features in the Pokémon games that can be reused and have new life breathed into them.

After you have thought of a general plot overview you need to expand upon it and think of characters, and who will control the main events of your story. How Thinking of characters before you start creating allows you to plan ahead, get a feeling and personality for each one and then possibly even write down some of the text your characters will say in game. Future planning is important as its one of the biggest stoppers in making a ROM Hack. Not planning at the start will get you lost when you start and you will rely on your imagination to think of something on the spot. If you can’t then you are stuck.

Another aspect of Pokémon is to have a rival battler who can be friend or family who you get to challenge throughout the game. This provides the feeling or the simulation that someone is playing with you throughout the game as their levels and Pokémon change throughout the story. You need to consider who your rival will be and what role they will play. Will they be a normal passer by? A brother who just plays through the events with you? Or perhaps the key to the whole plot you thought of, somewhere along the line. As I said before you need to make the plot as awesome as possible to get players interested. Also think of the possibility of multiple rivals who could be linked, or not know each other at all. Determining when the rival first appears will also have an impact on the players starting experience.

You need to think up what kind of style you want your hack to be in. Will it be an evil dark hack in a rural area? Or will it be a nice bright and tropical island. This will allow you to decide upon the setting for your region based upon the main plot for your hack and its characters. The things need to go together and fit well enough to have the experience maximised for the game play aspect of your hack. For example a large criminal organisation would most likely reside and do dirty work in a city, rather than a forest in the middle of nowhere. Perhaps they could hide in a forest, but not do their main work there, if you see what I mean. The region you pick or create needs to be set in the correct area and contain the correct amount of towns and and cities for it to fit with the plot. This will reflect your whole vision of your hack to the player even better.

You should have a good picture or vision in your head of what the style of your hack will be now. You will need to start thinking about the type of palettes and tiles you would like to use for your hack. This is an important aspect as people like to see custom tiles and palettes in a hack. You could stick with the original graphics for the ROM if you choose too, though.

Consolidating Features & Picking Your Base
Now that you have mostly planned your hacks story and plot you need to consider extra features which you want to create in your hack, and also whether that are possible to make at all. You can post your ideas now that you have created into The Plot and Story Ideas section and get feedback for your plot and ideas there. You will then be able to ask which features are possible to do and which would not be possible or require a very advanced amount of hacking. Once you have those answers, you can record it in your plans which I hope you have written down somewhere to reference to later.

By now, you should have a plot idea, a set of characters and a features list. This is where you can pick your ROM Base to use for your hack. What is a ROM Base? It’s the Pokémon game you will be choosing to hack. Each game has advantages and disadvantaged when being hacked. Currently, each GBA Pokémon ROM has specific features not found in the other game. For example Pokémon Ruby, Sapphire & Emerald contain a berry system where you can pick and plant berries in the ground. This system is not natively available on the FireRed or LeafGreen ROMs. FireRed & LeafGreen contain a move tutor system which allows you to teach moves to different Pokémon. Ruby & Sapphire do not have this system. This might be confusing to know exactly what each ROM has and what the others don’t have.

You could be saying “But can’t I make my own [insert feature here] on FireRed?” You could invest time in making your own system of something that’s already natively available, go ahead. My personal advice though, is to make the best use of what you have provided, and consider the features in your hack and how features in your selected ROM Base could be used to produce them.

Below is a table of all the GBA Pokémon Games and their specific features & items listed. This can help you to quickly pick the ROM of your choice. You basically have 3 choices that you could pick from. If you can’t decide from the information instantly then feel free to think it over and come back to this table later on. If you require more information I will include a small description of each major ROM after the table.

This table should provide adequate information about the different ROM aspects available to you. Below is a short description about the compatibility of tools and hacks available for each ROM currently. Hacks on one ROM can be ported over other ROMs with some work, of course.

Ruby & Sapphire
These 2 ROMs were basically the target of all the first GBA hacking stuff so all tools released would support them. Ruby is the majorly used one out of the two and would support slightly more tools than Sapphire would. The experience is good on these ROMs apart from a smaller main tileset than FireRed & LeafGreen can make your main overworld not as full on as it could be, but the size can most likely be extended.

Emerald is a good ROM and by far the best base available. The problem is there was a misconception about the data storage of Emerald causing all tool makers to create the tools in an *incorrect* way. This requires quite a bit of extra work on your part when creating hacks on this ROM.

FireRed & LeafGreen
These ROMs are the ones chosen by many beginners as it’s dubbed the “easier” of all ROMs to hack. Lot’s of tools support FireRed with it being the main out of the two, with LeafGreen not as supported. Theres a lot of hacks and tweaks available for FireRed ROMs which can provide a lot of extra functionality including a hacked engine and an extra Pokémon patch in the works.

What Now
By now if you followed every word of this guide you would have a plot, characters, setting, region and the ROM you would be using. So the next thing, is to actually start hacking.

Stay tuned for the next part of the guide where we get you hacking your first ROM! I hope you found this guide interesting and anticipate the next guide coming. Don't worry, it will be easy!

How do i start hacking? like how do i hack the game? and how do i start?
where's the table with features?