• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Forum moderator applications are now open! Click here for details.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Guide: ROM Hacking: Getting Started

10,078
Posts
15
Years
  • Age 32
  • UK
  • Seen Oct 17, 2023

If at any point you become stuck, or can't find a tutorial to help you out, there are some extra places you might want to ask for help.
Quick Questions and Answers for little questions and confirmations.
Script Help Thread for double checking your XSE/PKSVUI/etc. scripts, finding errors and making improvements.
The ASM and Dissembly Help Thread for any routine checks or advice.
Beginner's Lounge where you can create your own thread to discuss a problem or idea, if you think it is needed.​
 
Last edited by a moderator:
10,078
Posts
15
Years
  • Age 32
  • UK
  • Seen Oct 17, 2023
[READ THIS] ROM Hacking: Getting Started

ROM Hacking: Getting Started

As one of the most popular sections on PokéCommunity, ROM Hacking is often greeting new users who want to try their hand at learning how to manipulate the games. This thread acts as a directory for links, tools, tutorials and general advice for those trying to start off. For a more 'in-depth' guide, try Deokishisu's post.


1. What can I achieve with ROM Hacking?

Whilst the possibilities are near endless, here is a summary of the changes you could make without an indepth knowledge of the workings of ROMs:
Map editing - including inserting brand new tiles to create completely original maps.
Script editing - purposing the game coding to create your own events, NPC characters, Gym Leaders, and so on. This allows you to create your own story, as different from the original game as you'd like.
Pokémon Editing - changing evolution, changing moves or inserting completely new Pokémon! There's plenty to do. Completely custom sprites can even be inserted.​
And much, much more. Hex-Editing and ASM use help open the door to new features and unique functions. As you develop as a ROM hacker you may start to look into those yourself.


2. What do I need to get started?

VisualBoy Advance-M - Standard emulator to run ROM files.
Lunar IPS, NUPS - A patching tool.
AdvanceMap 1.95 or Version 1.92 by LU-HO - Used to create new maps and insert new tiles.
XSE 1.1.1 by HackMew (unofficial link) - Most common scripting tool, for scripting NPCs and events. **RECOMMENDED TUTORIAL**
Gen 3 ROM Hacking Suite by karatekid552 - Able to edit Pokemon data.
Free Space Finder (FSF) by HackMew - A useful sidetool for finding empty space in your ROM file.
Nameless Sprite Editor 2.X by link12552 - Allows you in edit/insert sprites.
GBA Graphics Editor by nintenlord - Helps to retrieve and insert other graphical elements.
Hopeless Trainer Editor by Lost Heart - Allows you to edit trainer information and their teams.​
These tools are mere suggestions - there are other alternatives out there. You can find many other useful tools here.

If you're looking for new tiles, overworlds or other graphical add-ons check out The Resources Thread. Remember to check out the link to the previous thread in the first post.


3. How do I do all these things?

Tutorials! We are lucky to have a myriad of tutorials here at PokéCommunity. Along with the one linked with XSE, there are many more in our Tools, Tutorials and Resources section. To select just tutorials, to help find something you're looking for, click the prefix [tutorial] or use this link.

If you would like to recommend any additional tools, tutorials or resources to include please VM/PM me, or post below and I shall add them in.​
 
Last edited by a moderator:
This post is aimed toward those new to the Pokémon ROMHacking scene and to provide an easy to use directory and dictionary of terms commonly used in the ROMHacking community. It assumes that its readers are familiar with the Pokémon games and will recognize and understand terminology unique to the Pokémon World, but will define and explain terms that are obscure or ROMHacking exclusive. As such, this post will be written to the lowest level of understanding that I can imagine someone having. Therefore, you may want to skip right to the directory if you feel that you don't need basic concepts explained to you.

Please Note: This document refers to hacking the main series GBA games only. I have no knowledge of the Gameboy or Gameboy Color games in the Pokémon series (which are also hackable). Therefore, if you're looking to hack Red, Green, Blue, Yellow, Gold, Silver, or Crystal, you'll have to look elsewhere. Likewise, the DS and 3DS Pokémon games are still not widely understood, so I will not be covering them either. If you're looking to hack Diamond, Pearl, Platinum, Heartgold, Soulsilver, Black, White, Black2, White2, X, Y, Omega Ruby, or Alpha Sapphire, I'm sorry but I can't help you.


This thread is not the place to ask questions!
This place is! Post them here!
Please limit your posts in this thread to constructive criticism of this document so that it may be improved upon.

Table of Contents:
[alink id=toolstuts]Useful Tools and Tutorials Directory[/alink id]
---
[alink id=intro]Introduction[/alink id]
[alink id=rival]Naming Your Rival: The Walls You Will Hit[/alink id]
[alink id=begins]Your Adventure Begins: What is ROMHacking Anyway?[/alink id]
[alink id=romchoice]Choosing your first Pokémon... ROM[/alink id]
[alink id=vba]Your First Battle: An Emulator[/alink id]
[alink id=efour]Training to Master the Elite Four: Mandatory Tools, Tutorials, and Concepts[/alink id]
[alink id=champ]Becoming the Champion: Where Do I Go From Here?[/alink id]
[alink id=credits]Rolling the Credits: Some Final Advice[/alink id]


[a id]intro[/a id]Introduction
Hello new hacker, and welcome to the world of Pokémon ROMHacking! My name is Deokishisu, and I'll be explaining basic terminology and dispensing general advice before sending you off through a directory to tutorials that you'll want to read. First off, are you a boy or are you a girl? Or perhaps something else?
→Before We Start, Some Terms Used in This Document That You May Not Know
Spoiler:
[a id]rival[/a id]Naming Your Rival: The Walls That You Will Hit
Before anything else, I'd like to impart upon you, my hackers in training, what is perhaps the most important advice I could give you. Arceus helps those who help themselves. This community is incredibly helpful, welcoming, and open. However, you cannot expect others to make your hack for you. You may have the best idea ever, but you won't get anywhere if you throw up your hands and give up without starting. Thus, we're naming your Rival Laziness. It may seem a little harsh, but Laziness will be the insidious cause lurking behind most of your problems starting out. Hacking is a hobby, but none of us can pretend that it isn't work. And sometimes that work is hard and tedious. Sometimes learning the skills required to hack is hard and tedious. Luckily, this community has compiled more tutorials, has made more tools, and has more welcoming arms willing to help than you can shake a stick at. However, you are expected to search for the solution to your problem before you ask for help. Many of the questions that intermediate-to-veteran level hackers get asked are incredibly simple and fully explained by others in threads that are abundant and easily searched for. If you're having trouble with PokéCommunity's search (trust me, you will) you can use Google. Here is the appropriate search syntax that I use when Googling issues:
Code:
site:pokecommunity.com [I]keywords[/I]
Replace "keywords" with several words or phrases pertaining to your issue. Beating Laziness in a ROMHacking battle is easy if you dig in your heels and search for the solution to your problem. If you still can't find anything, a post in the Quick Questions and Answers Thread will probably be your best bet, as helpful members of the community are always combing through it and answering questions. If you made it through this paragraph and still want to ROMHack, congrats! You're ready for the whole concept of it!

[a id]begins[/a id]Your Adventure Begins: What is ROMHacking Anyway?
For our purposes, ROMHacking is the process of editing a Pokémon game. The Pokémon "games" that we edit are ROM images dumped from a retail cart. Basically, someone dumped the contents of their retail gamecart using special hardware and software and a ROM was the main output file. Thus, changing those files is called ROMHacking. There are a plethora of ways to obtain a ROM to begin hacking, but the only "legal" way is to dump it from your own gamecart. Virtually no one actually does this. Therefore, Google is, again, your go to tool for finding and downloading a ROM to start working on.

Please Note: Linking to ROMs, edited or not, is against the rules of this forum. Sharing them is likely a violation of the laws of your country. Hacks are distributed in the form of patches, which will be explained in a bit.

ROMHacking is primarily accomplished through the use of programs called tools that normal people like you and I have developed. There are tools designed for a plethora of needs, to editing maps (from the Town Map to the actual towns and routes the player walks through!), to changing starters, to creating new dialogue that people say in the game when the player talks to them. A directory of pertinent tools and their uses will be at the bottom of this post.

[a id]romchoice[/a id]Choosing your first Pokémon... ROM
So you still want to hack, you've somehow found a ROM, and you're ready to go. Hold on there newbie, first you need to know what Pokémon game you want to hack. Basically, you as a new hacker, have two main options. Those are: Firered and Emerald. Each has distinct advantages and disadvantages, and your choice will come down to several factors. Those factors are:
Spoiler:

Other considerations, such as aesthetics (how each ROM looks, the Pokémon graphics, the graphics used to make up the outdoor and indoor spaces, titlescreen, font etc.), music, and whether or not the ROM has and utilizes a Real-Time Clock are changeable with very little difficulty. Nonetheless, you as a new hacker may want to consider those as well.
→But Why Not the Other Pokémon Games?
I'm glad you asked! The other ROMs fall into two categories: Ruby and Everyone Else. Ruby should not be hacked at this point because ongoing support for it is basically non-existent. While it used to be the main base to use if you wanted Hoenn's features (which is why there are tools and research that work for it still lying around), Emerald has eclipsed it in every regard. Ruby, being the first GBA game that Gamefreak coded, is also a mess internally, making research into it difficult. If you want to hack Ruby, hack Emerald instead. As for the Everyone Else category, my first question to you is "Why?" Why would you want to hack Leafgreen over Firered? They're the same games with the same base features. The real reason is that Firered is the one that research has been done on, and Leafgreen was not. They are the same game, but data is placed in different spots. It's the same deal with Sapphire compared to Ruby. Sapphire and Leafgreen are support deadzones, with no tools or research ever being done for them because there's just no point. Stick with Firered and Emerald, to save yourself some trouble.

→There Are Different ROM Versions Available for the Pokémon Games; Which Do I Use?
Another excellent question! You should only use the 1.0 versions of Firered and Emerald. The 1.1 and later releases shuffle important memory locations around, and all of our research and tools are designed to work with the 1.0 versions. The older, outdated Ruby research and tools are also for its 1.0 version if you were wondering, but you should be hacking Emerald if you're tempted to use Ruby.
[a id]vba[/a id]Your First Battle: An Emulator
You cannot play a Gameboy Advance Pokémon ROM on your computer without an emulator. For our purposes, an "emulator" is a program that mimics the workings of a game system. There are many emulators for many consoles, but we'll be needing a Gameboy Advance Emulator specifically. The most popular emulator among hackers is Visualboy Advance or VBA. VBA perfectly emulates Gameboy Advance ROMs and even comes with some fancy tools built right in that advanced hackers use. You will most likely not be needing those tools as a beginner, but know that they are in your toolkit.

This is a direct link to download VBA. You may have to wait a few seconds for the download to begin.

You can open your ROM in VBA by hitting "File", and then "Open GBA" on the menu that drops down. Then select your ROM. As a bonus, VBA can play regular Gameboy and Gameboy Color ROMs as well. VBA is less a tool and more the medium by which you can play games, including your hack. It will be the program that you use to playtest your hack. "Playtesting" is the process that a hacker goes through to test their hack for bugs, general playability, and design flaws. Playtesting is an integral part of ROMHacking. You should generally play through your hack as you are making it to make sure that things are continuing to run smoothly in game.

[a id]efour[/a id]Training to Master the Elite Four: Mandatory Tools, Tutorials, and Concepts
While there are many many tools, techniques, and tutorials for ROMHacking, very few are absolutely necessary to make a full hack. For the purposes of this document, a full hack means that it is set in a region that is either completely new or edited from the regions that Firered and Emerald are set in, contains some new dialogue for characters that the player runs into, and has new or edited events from the base game. You may need even less tools, or different ones if the hack you're making doesn't fall into this definition. To start out, the new hacker will need at minimum four tools, and should probably focus their efforts on mastering those four before branching out. (Expand the spoilers for a basic description of the program and the common terms you will need to know to work with them.) These tools are:
  • Advance Map 1.92 by LU-HO
Spoiler:
Here is a beginner's tutorial on using Advance Map. While an intermediate user will find this tutorial too simple, it is very good at explaining what Advance Map does to the beginner and has pictures of everything. However, I would personally advise you not to create maps the way it is explained in the tutorial. Most hackers edit an existing map instead of creating and inserting a new one. Likewise, don't delete maps in the way that the tutorial advises. Firstly, the way the tutorial is doing it is incorrect. Secondly, you don't technically need to delete maps. My advice would be to never try to delete a map. Just make sure your hack never warps or connects to the maps you don't want to use. Otherwise, this tutorial is great. (You'll be happy to know that I found it with a Google search. Learn from my example and any tutorial will be at your fingertips.)

This is a direct link to download Advance Map 1.92 from its creator's website. There is a reason I linked to Advance Map 1.92 instead of the other versions that are available. 1.92 is the least buggy and most feature complete version currently available. Version 1.95 should not be used, as it is incredibly unstable and will slowly corrupt your ROM.

  • eXtreme Script Editor often shortened to XSE by HackMew
Spoiler:

This is a link to the ONE TRUE XSE tutorial. I'm serious, this tutorial will explain nearly every command in XSE's language and how to use it correctly. With the knowledge provided in this tutorial, you could probably fool the veterans into thinking that you know how to script complicated events. When I am scripting, I have this tutorial open and constantly refer to it. It is that good. This tutorial, complemented by studying and learning to understand the scripts that are already in the game, will teach you everything you need to know about scripting.

If that doesn't help your script, this is a link to the appropriate subforum to post a question thread in. Be sure to include your script in your thread and what you suspect may be wrong with it. This subforum is watched by helpful hackers; and, as a bonus, taking a look at the corrected scripts from other script question threads is a good way to learn what things do.

Finally, this is a direct download link for XSE. I would normally link you directly to a tool creator's website or release thread, but HackMew has been inactive for so long that most of the links are down. This version fixes some bugs and oversights with HackMew's original release, and was put together by Gamer2020.

  • G3T's Trainers Editor by Kurapika
Spoiler:
The Trainer editor functionality comes bundled in with several other tools that I didn't mention. Once you start the program, you will see what I mean. I don't have a tutorial for you for this tool, but its use is largely self-explanatory. How to assign an edited Trainer to a script is covered in the scripting tutorial I linked, so you don't have to worry about that. When Googling tutorials to include here for the Trainer Editors, there was a noticeable lack of options. Fortunately for you, the new hacker, that means that a majority of people didn't need help learning how to use these tools and the learning curve will not be too steep for you.

This is a link to the Gen 3 Tools thread, which has some information on the Trainer editor as well as the other tools that come bundled in with the program.

This is a direct link to the tool from the PokéCommunity attachment at the bottom of the G3T thread's first post. Your download should start automatically
  • Lunar IPS often shortened to LIPS by FuSoYa
Spoiler:

LIPS will literally direct you on how it is used to both create and apply patches. Basically, to create a patch, you select your base clean ROM. Then you select your hack. Then you tell it where to save and what to name your patch. To apply a patch you select your patch, than select the base clean ROM to apply it to. Very simple.

This is a direct link to LIPS. LIPS' creator has, to my knowledge, never taken part in the Pokémon ROMHacking scene. So you will not see FuSoYa around here. Fortunately the program is so simple that you probably won't need to ask for help. If you do, literally everyone else knows how to use it. Don't worry about getting lost with this program.
→Wait, That's All That I Need to Make a Full ROMHack?
Yes. Well, no. Actually, just let me explain. Those four tools are the ones that I would consider as mandatory to create a full Pokémon ROMHack and share it. If you've been following along, you're able to (or are more likely just learning to) map, script, edit Trainers, and distribute your work to the rest of us. That, my new hacker friend, is literally 90% of the craft. I have simplified a bit, absolutely, but if you handed this document to a Game Freak employee and told them to script out Firered's story and map out Firered's Kanto (but not copy its distinct features like the Help System) using Emerald as a base ROM, they'd be able to do it with just these four tools and the tutorials I linked. Likewise, if you have a story to tell and a region in mind, you could use these four tools and actually do it. I'm serious. You could start right now. Pretty cool feeling, right? There are, of course, other tools that you'll want to use, such as an image editor that allows you to change the hero that your player plays as, or import your own Trainer or Pokémon images. But the majority of your hacking will be done with the Elite Four of Tools I laid forth and explained here.​
[a id]champ[/a id]Becoming the Champion: Where Do I Go From Here?
While this document covers the basics, teaches you a bit about the Elite Four of Tools, and gives you the know-how to do a majority of the legwork towards completing a full ROMHack, you're no doubt hungry for a little more. Luckily, the dictionary and tools/tutorials I will link to will give you something to chew on for quite a while. However, you are certainly not limited by what I can link to or explain here. I would encourage you to look around this forum and start absorbing knowledge on your own. There are still many concepts and skills that you do not know about that are useful if you're looking to do something more advanced than many hackers today aspire for.

[a id]credits[/a id]Rolling the Credits: Some Final Advice
We've come a long way new hacker, haven't we? Before I end this overview of ROMHacking, I'd like to give you some final advice and some truths, hacker to hacker.
Spoiler:


[a id]toolstuts[/a id]Useful Tools and Tutorials Directory:
This is a list of what I consider to be the most useful tools, tutorials, and resource documents we have available for ROMHacking organized by topic. These are the resources that I use when I need to brush up on a concept or need a refresher on some obscure aspect of hacking. They are organized in this format: Tool links, tutorial links, misc resource links (if applicable).
Graphics:
Wichu's Advance Series (Pokémon Sprite Editor)
NSE - Nameless Sprite Editor 2.X (General Sprite Editor)
NSE Classic - Nameless Sprite Editor Classic (Overworld Sprite Editor)
NTME - Nameless Tilemap Editor

How to Palette Edit Anything
Making Tilesets from Tilemaps: The Super Easy Way
Inserting Battle Backgrounds

The DS-Style 64x64 Sprite Pokémon Resource
The Accurate FireRed Overworld Sprite ResourceSound:
Check GoGo's MEGA-HUGE Sappy Tutorial for many sound-related tools.
Cry Editor

GoGo's MEGA-HUGE Sappy Tutorial

ipatix's High Quality Sound Mixer (With Documentation)
 
Last edited:
1
Posts
5
Years
  • Age 23
  • Seen Aug 7, 2022
Thank you a bunch for this!
Not knowing where to start on any given topic can be one of the hardest aspects to getting into something.
But you have shredded that!

I will definitely make my passion project come into reality, and very determined to make something this year!
Thanks again for your guide!
 

Asith

Uwao
237
Posts
3
Years
  • Age 22
  • Seen yesterday
Thank you a bunch for this!
Not knowing where to start on any given topic can be one of the hardest aspects to getting into something.
But you have shredded that!

I will definitely make my passion project come into reality, and very determined to make something this year!
Thanks again for your guide!

The hacking tools in this thread are fairly outdated, I would recommend using HexManiacAdvance to replace all of them except AdvanceMap and XSE
 
88
Posts
1
Years
  • Age 31
  • Seen yesterday
I'm making a rom hack based of Pokemon Gold with FireRed and adding cross-gen evolutions, fairy-type, and gen iv-vi moves. How do I add maps, delete old-ones, and create events?
 
Back
Top