Advertiser Content

Guide ROM Hacking: Getting Started

Started by Mana January 4th, 2015 7:28 AM
  • 29534 views
  • 3 replies

Mana

Age 28
Male
UK
Online now
Posted August 7th, 2019
10,072 posts
10.7 Years

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.

Mana

Age 28
Male
UK
Online now
Posted August 7th, 2019
10,072 posts
10.7 Years

ROM Hacking: Useful Links


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.

Deokishisu

Mr. Magius

Male
If I'm online, it's a safe bet I'm at a computer.
Seen January 9th, 2019
Posted March 4th, 2018
859 posts
13.6 Years
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.



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:
These are general definitions of terms that you will need to know to continue reading, but may not know already. A more complete dictionary will be at the bottom of this post.
  • hacker - noun - someone who hacks; someone who changes or edits games
  • hack - noun - the game made by a hacker by hacking a base game
  • to hack - verb - the act of changing or editing a game
  • base game/base ROM - noun - the game that the hacker started their hack on (for example, Firered or Emerald). Often shortened to just "base"; or used colloquially as "ROMbase".
  • ROM - noun - another term for "game". Often used as "a Firered ROM"; or "an Emerald ROM". This is technically not an absolutely correct definition, but it is good enough to get started with.
  • to port - verb - to take a feature from one game and convert it so that it can be used in another. Used mostly when talking about features missing from one game, but present in another.

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:
site:pokecommunity.com keywords
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!

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.

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:
  • Features Distinct to Each Game

    Emerald has several features built-in that have not yet been replicated or ported to Firered. Among those are its Contest System, fully functional Battle Frontier, the effects of several abilities that have out-of-battle uses (Intimidate lowering the chance of encountering Wild Pokémon, for example) , the ability to have a regional Pokédex, Secret Bases, the PokéNav, and possibly other features introduced in Emerald and not included in the earlier 3rd Generation Pokémon games. You, as a new hacker, are very unlikely to be able to port these features to Firered yourself, though it is technically not impossible with enough knowledge and effort.

    Firered has the ability to name your Rival, more space for text in several of its interfaces (Such as, more space for item, ability, and attack descriptions.) (How interfaces look can technically be changed, but doing so is likely out of reach for newer hackers and poorly understood by a majority of veterans, which is why I'm including it here.), a built-in help system for the player, and Oak's tutorial battle (Help with the first battle with the Rival which can be overwritten and used for a variety of things and hasn't been ported to Emerald to my knowledge.)

  • Ease of Access

    In the recent past, it was no secret to those in the hacking community that Firered was generally considered the easier ROM to hack. This is because it had a much wider support base than Emerald.

However, that is no longer true. While there are many holdouts from that era who will swear that Firered is easier or better to hack than Emerald, the reality is that both games are equally fine bases to start with.

  • Tools Available

    Most all of the tools currently available will work with both Firered and Emerald. There are, however, many older and outdated tools still floating around that people still sometimes use. In general, the older tools are not always fully compatible with Emerald. This will not hamper an Emerald hacker's efforts, as the modern equivalents eclipse the outdated ones in almost every way. I felt it was worth mentioning in the case that you, as a new hacker, run into an outdated tool that you want to use.


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.

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.

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:

Advance Map is the program that 99% of hackers use to edit the areas that the player will be walking around in, which are called "maps" in the hacking scene. Advance Map gives the player the ability to change the map, allowing players to edit where anything is (houses, people walking around, paths, signs, what Wild Pokémon appear, literally anything) on a map.

The graphics that make up a map are in the format of pieces called "tiles", and the tiles are arranged to form the overall map, like pieces to a puzzle. Even the graphics that make up the tiles can be rearranged or replaced entirely with this program. On top of the tiles, are the people walking around on a map. These are called "person events". Everything from the pattern that they walk in, which person they are (from a Lass to a Youngster to your Mom), and what text they are pointed to say can be edited. Similarly, the events that control what signs (or anything, really) say when interacted with are behind-the-scenes and on the same layer and are called "signpost scripts" or "signpost events". They are placed on top of tiles and are triggered when the player interacts with the tile they are on top of. These type of events also control hidden items that are found with the Itemfinder. Another type of behind-the-scenes event that is on this layer is called a "warp", and they are the entities that control the doors and map changes. They basically warp or move the player to another map. The last type of behind-the-scenes event is the "script tile". These entities trigger when the player walks on top of them. (For example, when the player tries to walk out on to Route 1 without a Pokémon, it is a script tile that triggers Prof. Oak to walk up and intervene.) What tiles the player can or cannot walk on is generally not inherent to the tile itself, and is instead determined on another level, and is referred to as the map's "movement permissions".

There are many more uses for Advance Map that are explained better in tutorials, but I wanted to make sure that you, the new hacker, know the basic terminology behind what you'll be using Advance Map to do the majority of the time. Needless to say, it is an incredibly powerful tool and you will use it for a majority of your workload.

Please Note: Advance Map is ubiquitous enough that you won't have to ask its creator directly how to work with it (in fact, the creator of Advance Map seems to have left the hacking scene). Any ROMHacker who is even slightly more skilled than you will be able to help you if you have problems with it. But again, search before you ask, as your question has likely already been answered.


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 tool for creating and inserting new dialogues that people say when the player interacts with them, among other things. The term for what this creates is called a "script". Scripts are what entities like the aforementioned person events, signpost events, and script tiles run when interacted with. They're basically a set of instructions that tell the game step-by-step what to do when a script is activated. This can be for something as simple as talking to someone in game, to something much more complicated than Prof. Oak preventing you from leaving Pallet Town without a Pokémon. You, as the hacker, can do pretty much anything you want on a map with a script. Do you need a person event to take two steps to the left, say something, and then warp the player to another map? You can do that. Do you want to create a legendary Pokémon battle with a Mew that flies away if you lose? You can do that. Do you want to script up something ridiculous and outlandish like a dance-off between a person event and the player? You can do that! Through scripting, your story and plot come to life. Basically, anything more than a basic person talking script or a signpost script is referred to as an "event". The Rival coming down and battling you on the S.S. Anne would be considered an event, and it is done through a script. Most everything that the player interacts with on a map is handled by scripting.

Scripting has its own basic language and syntax that you will have to follow for your script to function. Because of the freedom that scripting allows the hacker to have in crafting player interactions, I will not go into specific detail in this document. I will say that much of your scripting work will be copy-pasted from a template, outside of your big events of course. That is because signs and people generally only say one thing and never change, and the basic structure used to do that can be copy-pasted.

Inserting a script into your ROM is called "compiling" your script. A script is compiled into a specific space depending on its length. The length of a script (and anything else that is stored in the ROM) is measured in "bytes", while the name of the specific space that a script is compiled into is called its "offset". An offset can be thought of as a kind of street address that the ROM can visit to read what's stored there. Therefore, there must be enough "freespace", that is, enough bytes that are not already used, at the offset you're compiling your script into, or you may overwrite other bytes with your script. You must also take note of the offset you are using when compiling, as you will need to know it to assign it to your person events, signpost events, and script tiles (your hack must know what street address or offset to visit or point to when your player interacts with these events). Fortunately, XSE will automatically search for freespace and compile your script into it when you compile. Instead of using defined offsets, you would instead use what is called a "dynamic offset" while scripting. It's a dynamic offset because it's not a fixed offset until XSE compiles it and assigns it one.

When scripting, there will be a lot of overlap between XSE and Advance Map, as you will have to assign the script offsets that XSE replaces your dynamic labels with to the person events (etc.) in Advance Map. In fact, XSE can be integrated right into Advance Map if you define it as your script editor in Advance Map's settings. From there, it can be used to open scripts right from Advance Map's interface! Together, these two programs will probably be your most used tools when working on the meat of your ROMHack.

Please Note: While there are other scripting programs out there, XSE is nearly as ubiquitous as Advance Map, and most hackers use it exclusively. Therefore, like Advance Map, you can ask most hackers about scripting and they'll automatically be giving you advice that pertains to XSE. Furthermore, if you post a script that you're writing that you need help with, XSE's syntax is a dead giveaway and you shouldn't have to explicitly state that that's the program you're scripting in. As a sidenote, HackMew is also gone from the hacking scene, so any questions aimed that way will fall on deaf ears. Luckily, there's a specific Script Help Thread that I will link outside of this 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:

There are many Trainer editors floating around, but I believe this one to be the most feature-complete and most usable. While Trainer battles are called in a script on a map, what Trainer is battled and their party can be edited with this tool. Everything from the Trainer's name and gender, to what image they use, to the prize money they give out, to their Pokémon and their levels can be modified with this.

As you've probably guessed, this Trainer editor will not be used as often as you use the last two tools I listed, but Trainer battles are still a pretty big part of a Pokémon game, so I've included a Trainer editor as mandatory.

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:

While not strictly for developing your ROMHack, this program is the avenue by which you can legally distribute it. LIPS is a patching utility that will allow you to create and apply patches. A "patch" is a file that contains information on all of the changes made to a base file. Basically, if you direct LIPS to whatever your base ROM was (so an unhacked or "clean" ROM of Firered or Emerald), then direct it to your hack, it can create a patch of your hack. This patch will contain all of the changes, as well as the location of those changes, that you made to the base ROM to create your hack. If you distribute that patch, people can use LIPS and apply it to their clean ROMs, and LIPS will simply use the patch as a template to build them a copy of your hack. And both creating and applying patches can be done in seconds!

LIPS is also useful for creating backups of your hack. Instead of storing a full copy of your ROM as a backup, you can create a patch and save a significant amount of space. While hard drive space is generally not a concern in our current computer climate, it is another use of the program.

There are other patching utilities and formats, such as the UPS format, but IPS patches still seem to be the most common format, so this is the one I advise you to use until you're ready to explore the pros and cons of the others.



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.

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.

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:
Firstly, I suck, and so do you. No matter how hard I try, I can not pick up Advance Map and XSE and create a masterpiece in a reasonable amount of time. I can nearly guarantee that I suck less than you right now, but I have had several years of sucking hard at ROMHacking to get to this point that you don't. The difference is, if I started a new, full hack right now and worked on it until it was finished, it'd probably come out okay. Okay is probably the most you can expect of single hackers when it comes to their projects. They can excel in some aspects, and not be too great in others. That's just how it is when you're developing something like this on your own. However, if you were to start a new, full hack right now, it will be awful. Your first couple of projects will likely also be awful. And that's completely normal and understandable. Seriously. I have a veritable graveyard of hacks from when I started hacking that I couldn't or didn't want to finish for several reasons. The number is well over twenty. There will be times where you hit walls that you can't climb over, or find bugs that are unfixable, or dream up a feature that you can't possibly deliver on. That's okay. What's important is that you're constantly looking at where you're failing and learning from those experiences. You could memorize a hundred tutorials and not learn this. It comes from experience. Not being awful comes from experience. And if I learned not to be awful, you can too, and probably much more quickly than me.

On a lighter note, the second nugget of wisdom that I wanted to impart upon you is that you need to learn to work-around. There are going to be things that you want to do that you don't know how to do the elegant or the technically correct way. Well, screw that. Your players are not going to be looking at how you are implementing things, they're just going to see the end result. Here's a recent example from my own hacking escapades: I needed to change the animation that plays when the player heals their Pokémon at a Pokémon Center. I'm not ashamed to say that I had no idea where to even start, looking at the script didn't give me any hints and--but wait! The script! I realized, dear new hacker, that while I didn't know how to edit the animation, I did know how to remove it from the existing script. I also knew how to use scripting to change the tiles that are used on a map in real-time. So what did I do? I drew up some new tiles for the healing machine with and without Poké Balls on it, imported those tiles with Advance Map, wrote a brand new script with XSE, and instructed the script to change the tiles on that machine to the ones I drew while playing all of the appropriate sound effects. I even made it count the amount of Pokémon the player had on them so that the right amount of Poké Balls were placed on the machine, and pause for half a second between each ball being placed so that it wasn't all done at once. It even blinks the balls and plays the healing jingle! Yes, it's clunky as hell behind the scenes, and it took me some time to get just right, but it looks absolutely perfect when playing. You can't even tell that I did it in the most unintuitive way imaginable in game. This is not the only time I've worked around a gap in my own knowledge. You should try to be sly and do the same. Sometimes that unattainable thing is within your grasp if you look at it not as "I don't know how to this," but instead as "How close can I get to this using my current skillset?"


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).

Scripting:
XSE Download

Diegoisawesome's MEGA-HUGE XSE Scripting Tutorial
Creating Level Scripts

Post with ASM routine with new movements for scripts for FR (with patch) (source code for EM)

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 Resource

ASM/C Programming:
Tools are linked in tutorial threads.

FBI's directory of ASM tutorials
Touched's MEGA-HUGE ASM Tutorial
Hacking Firered in C
General GBA Programming

ASM Resource Thread
[Closed] Old ASM Help Thread

Sound:
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)
For ROMHackers, PokeCommunity is dead after the scandal. If you enjoy the ROMHacking scene, come with the rest of us to Silph Co. It is a forum by ROMHackers, for ROMHackers. None of the bloat of PC, and staff that knows what our subset of the community needs.
Advertiser Content