Soo, I asked Kostas if I could post this and he agreed. I'm Nonibros, and I'm not really known for any hacks/hack I've made. Due to personal reasons, I currently won't be hacking. However, when I was hacking, I was very talented, and if hacking paid the bills, I probably could've made a really great one.
So, to shorten this up, no, I'm not a famous hacker like the creator of <insert name here>, but I feel am qualified to answer adrifts/losts and Kostas questions, and I hope my little, what turned out to be an, article can help you in your quest.
Terms:
ASM -
Assembly Language
ROM -
Read-only memory
VBA - Visual Boy Advance
tl;dr - Too long; didn't read, meaning a summary.
I think I'll start by answering adrifts(lost) questions first, as these seemed to be more background questions to what ROM hacking itself is.. This section is long, so if you're short on time, read the tl;dr's.
Why ROM hacking isn't actual "hacking" like most people think it is:
So, a lot of people might gaze at this and go "What do you mean it's not hacking? Isn't in the name?" and others, as adrift/lost pointed out, might assume that hacking automatically means something negative or even illegal. Number one, it's more like pseudo hacking, or even modification. Yes, you are actually changing things within the game, but
not the game engine itself. For example, if someone takes the fat guy in Pallet Town in Firered and makes him say "I hate technology, but I lllllove cookies!" then they are changing the actual ROM, but not how the game engine itself displays text. Rather, they are using a pre-made function to show their text. Number two, hacking isn't evil, as illustrated with the next point. Part of JPAN's ROM hack for Firered has a new way to make a list of options in which you can select one to do something, like give a different Pokemon based on your choice. He actually sifted through machine code rendered into ASM commands, which can be done with, for example, VBA, and then created his own ASM hook that pointed to his code to change the games built in multichoice code. ie. hacking, which as you can see isn't automatically evil. tl;dr ROM hacking is more like modifying, unless you are changing the code of the game engine itself.
Most beginners believe they are actually 'hacking'. Really, they are 'scripting', which is using an already built-in option to change something. JPAN and FBI for example are actually hacking.
What a ROM actually is:
The acronym ROM stands for Read Only Memory. A ROM, in the case of commercially published GBA games, is source code written by a company, like Nintendo, usually written in C, and maybe some ASM, that is compiled into machine code. Machine code is a "somewhat" human readable format of binary 1's and 0's. These 1's and 0's are things that a CPU or processor can process to make a full fledged game. tl;dr A ROM is code that is complied into machine code which a processor uses to display/create a game.
What differentiates a ROM hack from a fan game:
A ROM hack is editing a ROM that Game Freak/Nintendo has published where as a fan made game is actually programming a new game using ones own coding to make a Pokemon centered game with ones own developed features that may try to imitate an existing Pokemon game, or even create entirely new experiences for their own Pokemon world. tl;dr A ROM hack edits a Game Freak published game where as fan made is making in from scratch.
Some common techniques (keep this section in particular non-technical):
So, some techniques I've used both in ROM hacking and in actual game creation are simple. One is assuming an idea already exists, and then codes/scripting the idea as I go.(
this can be skipped if you don't want an example) For example, in my ROM hack, I wanted a trainer, who would come up through out the game, to have a shiny Pokemon and sort of a story to go behind it. So, I simply already assume that he existed in the game, and I made his Pokemon line up and his story. Then, when I got to him, I saw that I couldn't just use pre-existing code for a trainer. So, I needed to create it. I made his entire set of motions that of a regular trainer, and then by stepping on a tile, he would walk to you, it would activate the ASM, and then, bang, shiny.
Another technique that I've used is organization and
backing up. I personally kept text files of scripts and copies of maps
before I put them in the ROM, so that if there was a mistake, I could fix it by simply re-inserting it else where.
Backing up is
very important. It doesn't matter how little your change is, it is always a good idea to back up. A good idea is to learn a version control system, like Git, so that you can make literal snapshots of your progress at various points. Git is also good for rolling back, in case you made a mistake, or added features that you decided you didn't want. Trust me, it is
well worth the time to learn it.
Ok, sorry that the upper half was so long. They were important questions, and I went for detail over short and sweet.
Now for the Kostas questions.
What is a ROM hack?
A ROM hack is a set of modifications to a ROM game, like Pokemon Firered, that implements new changes like new towns or new people or even new stories. These modifications are typically made into a patch file, which can be free and legally distributed to others, who can patch these patches to their own copies of a ROM.
What ROM do you use?
Personally, I use the Firered ROM, as it currently has the most support, tools, and people hacking it (for support). Some specific advantages are:
- You actually have 4 or so different areas because of the Sevii Islands, so it can be useful for setting up the Elite Four, or a criminal organization on one of these islands away from the main land.
- Many things available in sapphire/ruby/emerald, like the berry system, can be inserted into the game using ASM.
- The trees are just amazing
Is it necessary to have knowledge about programing to make a ROM hack?
No, it is not, for most things. Most of ROM hacking is done using tools like XSE and Advance Map. Creating people is as simple as hitting a button and creating a new script is fairly simple, especially with the support in the community.
With that said, there comes a point where you may wish to learn ASM to make the game richer then you could with scripting and tile inserting alone, as ASM will allow you change the game engine itself.
tl;dr. I've found that a background in programming can help with ROM hacking, but it certainly isn't necessary.
Is it easy for everyone to make a ROM hack?
Yes and No. This really depends what you define as easy, and what may be easy to one person can be difficult to another. This also depends on the time span in which you want to create your ROM hack and how much time you have to put toward it. To say it simply, the question depends on your ambitions. If you want to create the art for new trainers, and a completely new gym system with 12 gym leader instead of 8, and they all have a special tileset for their gym, then yes, it will be hard and time consuming. If you just want to make everyone in viridian city say wise quotes, then no, it's not hard and will take very little time, as it would be a simple copy and paste for ~15 people.
What makes a ROM hack successful?
Though I am not completely qualified to answer this based on my own experience, as my ROM hack isn't complete do to personal reasons, which you can read up on, I
can say why ROM hacks are successful.
Again, successful is dependent on what you define as success. Someone who just made a simple town edit might be really happy that they finished their goal, and in that case, it's a personal success. Success in the sense of being popular is based on a few things.
Before I start, try to understand that ROM hacks themselves are primarily a niche group, meaning they appeal to a certain subset of the population of Pokemon fans. You can even have niche groups in ROM hacking itself. For example,
Crizzle made a fairly successful ROM hack that appeals toward a specific subset of the ROM hacking populace.
Now, the success of a ROM hack is based on a few things.
1. It appeals to a small niche group, like Pokemon Outlaw.
2. It's the only contender in it's niche group, such as Pokemon Brown when it was first released. No other hack had as much depth at the time, and a big part of the reason it succeeded was because it could be said to be the only one outside of the main generation Pokemon games, therefore the only contender. (note that I'm not saying that is the only factor of Browns success, just a big part of it.)
3. It has a feature that makes it stand out from the competition in it's niche group that brings it to the top. For me, in the anime games, the name that immediately comes to mind is Pokemon AshGrey. Even though there are other contenders, it seems to have more anime like features and story plots then they do, and so stands on top.
Of course there are other variables to success that simply can't be quantified. Even a name could make more people play it.
Well, that's it! Thank you for reading and I hope this was helpful and informative!