Changes

Jump to navigation Jump to search

ROM hacking resources

2,520 bytes added, 09:33, 22 September 2016
Cleaning up and re-organizing, could likely use a look-over and some more work
This page lists concepts, tools and info general information on ROM Hackinghacking. See [[Mods, Hacks and Fan-Translations]] for more general infoinformation.
==General TipsOverview=====What Are BytesNumeral systems=======Decimal====Our normal counting system uses the [[wikipedia:Decimal|decimal base]], that is or base 10. We'll count this way , and goes in the following sequence: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, and so on... and then 10 = The number ten can be mathematically represented in decimal as <code>(1 * 10 ) + (0 * 1 = )</code> or <code>(1 * 10^1 ) + (0 * 10^0)</code>. So if we have something a number like 234 , it actually means can be represented as <code>(2*100 ) + (3*10 ) + (4*1 = )</code> or <code>(2 * 10^2 ) + (3 * 10^1 ) + (4 * 10^0)</code>.
====Hexadecimal====On the other hand, the [[wikipedia:Hexadecimal|hexadecimal base ]] is base 16. So we'll count this wayand goes in the following sequence: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9... and then , A (a single "digit" the hexadecimal base uses for the value meaning tenin decimal), and then B (eleven), C (twelve), D (thirteen), E (fourteen), F (fifteen)... and , then finally 10 (sixteen, that is <code>(1*16 ) + 0 = </code> or <code>(1*16^1 ) + (0*16^0) and </code>), 11 (seventeen, <code>(1*16) +(1*1) and </code>), 12 (eighteen, <code>(1*16) +2</code>), and so on... etc. Actually we should write this 0x10 Typically, hexadecimal numbers are written with the prefixes <code>0x</code> or h10 (sixteen) <code>h</code> so that it's they are not confused with the decimal 10 equivalents (tene.g., <code>0x10</code>, decimal <code>16</code>). If this sounds too complicated, you can load your Calculator in Programmer programmer mode and to do all the converting conversions between our decimal and the game's hexadecimal.
====Binary====The [[wikipedia:Binary number|binary base ]] is base 2. We count this wayand goes in the following sequence: 0, 1... and , then 10 (which is <code>(1*2 ) + 0... </code>, twoin decimal) and , 11 (<code>(1*2) +1... </code>, three) and , then 100 (<code>(1*2*2 ) + (0*2 ) + (0*1 ... )</code>, four), and 101 (<code>(1*2*2 ) + (0*2 ) + (1*1... )</code>, five)... , and so on. As you can see, it gets long and impractical very quickly.
Everything in game ROMs, be it programming, graphics, sound, text, assets and anything else, is written in bits (zero or one), with each group of eight bits called a byte. Out of convenience, bytes are written using the hexadecimal base (any values using this we'll note with the prefix 0x), rather than an inconvenient succession of eight bits (using the binary system).====Comparisons===={| class="wikitable mw-collapsible mw-collapsed"!Decimal!Hex!Binary|-| align="right" |5| align="right" |5| align="right" |101|-| align="right" |6| align="right" |6| align="right" |110|-| align="right" |7| align="right" |7| align="right" |111|-| align="right" |8| align="right" |8| align="right" |1000|-| align="right" |9| align="right" |9| align="right" |1001|-| align="right" |10| align="right" |A| align="right" |1010|-| align="right" |11| align="right" |B| align="right" |1011|-| align="right" |12| align="right" |C| align="right" |1100|-| align="right" |13| align="right" |D| align="right" |1101|-| align="right" |14| align="right" |E| align="right" |1110|-| align="right" |15| align="right" |F| align="right" |1111|-| align="right" |16| align="right" |10| align="right" |1 0000|-| align="right" |17| align="right" |11| align="right" |1 0001|-| align="right" |36| align="right" |24| align="right" |10 0100|-| align="right" |94| align="right" |5E| align="right" |101 1110|-| align="right" |256| align="right" |100| align="right" |1 0000 0000|-| align="right" |1000| align="right" |3E8| align="right" |11 1110 1000|-| align="right" |4096| align="right" |1000| align="right" |1 0000 0000 0000 |-| align="right" |64206| align="right" |FACE| align="right" |1111 1010 1100 1110|}
The value for each byte ranges from 0x00 (===Bits and bytes===Everything in bits: 0000 0000game ROMs — be it programming, graphics, sound, text, assets, and anything else — is written in decimal: 0bits (zero or one) to 0xFF (in , with each group of eight bits: 1111 1111called a byte. Out of convenience, in decimal 255bytes are written using the hexadecimal base (any values using this will be noted with the prefix <code>0x</code>), rather than an inconvenient succession of eight bits using the binary system.
===Text Editing with Hex Editors===Hexadecimal editorsThe value for each byte ranges from <code>0x00</code> (bits: <code>0000 0000</code>, also called hex editors or binary data editorsdecimal: <code>0</code>) to <code>0xFF</code> (bits: <code>1111 1111</code>, can open ANY file, and display its contents as bytes written using the hexadecimal base. You can also edit said bytesdecimal: <code>255</code>).
Hex ===Editing text with hex editors===Hexadecimal editors, also called hex editors come with three elements usually: The part with the or binary dataeditors, an address (also called offset) on the far-left which tells us the location of this byte in the can open any file (and is useful), anddisplay its contents as bytes written using the hexadecimal base..You can also edit said bytes.
The third area in Hex editors usually come with three elements: the window is where "text data" is supposed to appear. It tries to interpret part with the hex binary data as text, by matching each an address (also called offset) on the far-left which tells us the location of this byte value to a specific character in the ASCII setfile (and is useful), and.. So if there's the 0x41 byte for example, the matching character on the right side would be upper-case latin A.
Practice: Go and check The third area in the US version of Link's Awakening (either window is where "text data" is supposed to appear. It tries to interpret the GB or GBC version, doesn't matter), open it with any hex editor available online (data as text by matching each byte value to a specific character in the ROM of course, not the ZIP archive), and try modifying MarinASCII set. So if there's dialog at the very beginning. You'll have to search <code>0x41</code> byte for a whileexample, but you'll eventually find itthe matching character on the right side would be upper-case Latin <code>A</code>.
However..For practice, go and check the US version of Link's Awakening (either the GB or GBC version). Most of Open the timesROM with any hex editor available online, and try modifying Marin's dialog at the text data area is gibberish nonsensical symbolsvery beginning. Why? OftenYou'll have to search for a while, but you'll eventually find it's because:.
* The specific portion of However, the file / ROM you're viewing isn't actually text data but something else. So you'll have to use the search feature or browse further down the file.* The text is encrypted (if the developers wanted on purpose to make it unreadable by hex editors: this area is the case for 3DS ROMs when they're encryptedusually gibberish, or games with anti-modding measures like Gods Eater 2 PSP (JP) and Youkai Watch save files)nonsensical symbols. Fortunately, this This is impractical and mostly uncommon.* The text is compressed. Compression is a data transformation operation intended to save space. There are numerous schemes, and some games have their own unique flavors. Either by studying the file structure blindly, or reverse-engineering the game's programming during runtime as it makes use of this compressed file, you'll need to figure out the actual compression pattern, and decompress the text so that you can actually edit it (then recompress it and feed it back to the game).often because:
But sometimes it can be none * The specific portion of the above reasonsfile/ROM you're viewing isn't actually text data but something else. So you'll have to use the search feature or browse further down the file.* The text is encrypted. Sometimes, the developers do this on purpose to make the ROM unreadable by hex editors, as is the case for encrypted 3DS ROMs or games with anti-modding measures like God Eater 2 (PSP, JP) and Youkai Watch save files. Fortunately, this is impractical and mostly uncommon.* The text is compressed. Compression is a data transformation operation intended to save space. There are numerous schemes, and some games have their own unique flavors. But rather You'll need to figure out the fact actual compression pattern either by studying the file structure blindly or by reverse-engineering the game's programming during runtime as it uses a custom character encoding the compressed file. Once accomplished, you can decompress the text so that's not it can be edited then recompress it and feed it back to the ASCII standardgame.
But sometimes, none of the above may apply. Instead, a custom character encoding is used that doesn't conform to the ASCII standard. Why is this the case? Because many of these games were made in Japanese, using JP Japanese characters, and as such the devs developers had no reason to respect the ASCII standard (where 0x21 means !, 0x31 means 1, 0x41 means A, 0x61 means a, etc...) but were more concerned about how to make the best out of the limited memory available. So you could have the letter A at <code>0x00</code>, <code>x01</code>, <code>0x0A</code>, <code>0x10</code>, <code>0x21</code>, <code>0x41</code>, <code>0x81 </code>, or anything really, elsewhere depending on the game and what the devs developers felt like.
However this This poses a problem. None of the mainstream hex editors really give a damn about this enough to account for cases other than the ASCII standard, so... Youyou'll have to find a specialized hex editor geared more towards ROM hacking. The feature you'll need here is the ability to load custom character sets, stored in what's called table files (extension .TBLtbl, though they're actually just renamed regular .txt files).
A table file for a game using the ASCII standard would look likethis:
<pre>
4A=J
4B=K
...and so on
</pre>
And so on. For many games, you'll need to figure out their table files, using table file building tools , also commonly referred to as "Relative Searchrelative search" tools. Choice ones are [http://www.romhacking.net/utilities/998/ RSEARCH ] and monkeymoore[http://www. You know for romhacking.net/utilities/513/ Monkey-Moore]. For example , The Legend of Zelda 1 has "IT'S DANGEROUS TO GO ALONE" , so you load the ROM in monkeymoore Monkey-Moore and search for the word "DANGEROUS". It will give you many options (assuming the text is uncompressed, and the programmers at least had the decency to respect alphabetic order -otherwise you'll need to use the "custom set" option, which you'll need in case your game is in Japanese). One of these options should guess the rest of the words of that sentence, with some unknown characters in between (like the spaces). Check that option and create your table with it. Under WindHex, a hex editor with TBL support (there's also Crystaltile2 -which also had a few standard encodings for Japanese (Shift-JIS and UTF-8)- and Tinke), open the ROM, the load the table file you just created with the relative search tool, and then the text will be visible and editable if you scroll to that area of the ROM. You can see the byte equivalents for the missing characters (spaces, punctuation) and add them to the TBL file with Notepad (or WindHex's Table Editor).  Make sure also to identify control codes, that is bytes used to tell the game to do special stuff (like text color, speed, writing the hero's name, line breaks, telling the game where the text ends...) and add them to the TBL file too. Sometimes the game will use a dictionnary to make the game's text shorter in order to save space, so some byte values will replace letter combinations or entire words. Add those to the TBL file too. Don't be afraid to experiment, even if this corrupts your ROM, so that you confirm any of your observations! Of course, you'll need to make sure to keep a safe backup copy of the unaltered ROM as well as the ROM revisions with your main hacking progress.
===Text Dumping and Insertion Tools===Editing or translating a whole game with Using [http://www.romhacking.net/utilities/291/ WindHex], a hex editor is tiresomewith TBL support, open the ROM. Next, load the table file you just created with the relative search tool, and then the text will be visible and editable if you scroll to that area of the ROM. You can't even exceed see the byte equivalents for the original length missing characters (since spaces, punctuation) and then add them to the extra text would just overwrite the next notTBL file with Notepad (or WindHex's table editor). Similar programs include [http://www.romhacking.net/utilities/818/ Crystal Tile 2], (supports Shift-text data JIS and corrupt the gameUTF-8 encodings)and [http://www.romhacking.net/utilities/817/ Tinke].
The solution is Make sure to find identify the gamecontrol codes as well. These are bytes used to define special text properties (text color, text display speed, displaying the hero's pointersname, line breaks, end-of-text, etc. You know you can note down ) and add them to the address on TBL file too. Sometimes, the left side of the hex editor game will use a dictionary to know where you are in make the ROM. The game does just like that's text shorter in order to save space, it has pointers telling it where so some byte values will replace letter combinations or entire words. Add those to the text isTBL file too.
But... Pointers donDon't look be afraid to experiment, even if this corrupts your ROM, so that you confirm any of your observations! Of course, you'll need to keep a safe backup copy of the same way unaltered ROM along with the address in ROM revisions with your hex editor does. Each system has its quirks and rule for calculating the pointers, so look it upmain hacking progress.
Practice: GBA pointers for ====Text dumping and insertion tools====Editing or translating a whole game with a specific address are 4-bytehex editor is tiresome. Replace You can't even exceed the leftmost byte with 08, original length because the extra text would just overwrite the next not-text data and invert corrupt the order of the bytes so that (byte1)(byte2)(byte3)(byte4) becomes (byte4)(byte3)(byte2)(byte1)game. Why invert? Because GBA The solution is a Little Endian system. Open a GBA Pokémon to find the game, find Professor Oak's dialog in pointers. You can note down the hex editor, find its starting address (you click on the first letter and then see its address for that byte in left side of the sidebar of your hex editor) and calculate the pointer as detailed above. Use WindHex's feature for searching hex data to find that pointer. It should appear know where you are in the hex data and look ROM. The game does just like what you calculatedthat, using pointers to tell it where the text is. You may modify it to an But pointers don't look the same way the address in your hex editor does. Each system has its quirks and rule for calculating the very end of the ROMpointers, in an empty area where you'll try writing new textso look it up. If you can pull out this, this means you could repoint that text pointer!
With CartographerFor example, GBA pointers for a commandspecific address are 4-line toolbyte. Replace the leftmost byte with <code>08</code>, you can indicate and invert the order of the bytes so that <code>(byte 1)(byte 2)(byte 3)(byte 4)</code> becomes <code>(byte 4)(byte 3)(byte 2)(byte 1)</code>. Why invert? Because the GBA is a [[wikipedia:Endianness#Little-endian|little endian system]]. Open a ROMGBA Pokémon game, a TBL filefind Professor Oak's dialog in the hex editor, find its starting address (you click on the first letter and then tell see its address for that byte in the program sidebar of your hex editor) and calculate the pointer as detailed above. Use WindHex's feature for searching hex data to start extracting textfind that pointer. It should appear in the hex data and look just like what you calculated. You could tell may modify it to extract an address in the very end of the ROM in bulk an empty area where you'll try writing new text and garbage data alike from and until given addresses (RAW mode). But if If you found a pointer, or even better, a succession of pointers (also called pointer tables), like in the Pokémon example abovecan pull this off, this means you can extract repoint that text data in a more organized manner to a text file.pointer!
With Atlas, another the command-line tool[http://www.romhacking.net/utilities/647/ Cartographer], assuming you went with the second (can indicate a ROM and more proper) method, you may re-insert that text TBL file (after you modified it) in the ROM, and then tell the tool will take care of updating the pointersprogram to start extracting text. You can for example could tell it to start inserting extract bulk text in an empty yet comfortable and garbage data alike from and until given addresses (and more importantlyRAW mode). But if you found a pointer — or even better, within reach - this depends on the a succession of pointers (called pointertables) location , like in the end of ROM. The possibilities are endlessPokémon example above — you can extract text data in a more organized manner to a text file.
CommandWith another command-line tools may sound scary, with their black MS-DOS dialog boxes flashing quickly and disappearingtool called [http://www. They're actually easy to useromhacking. Just put all the needed files in the same foldernet/utilities/224/ Atlas], make a new txt you may re-insert that text file where you write the command detailed (after modifying it) in the tool's readmeROM, and save that file as one with the tool will take care of updating the pointers.bat extension. If you double-click on itYou can, for example, tell it will execute that tool to start inserting text in an empty yet accessible location at the end of the way you wanted it with little effortROM. The possibilities are endless.
===Graphical Editing Command-line tools may sound scary, with Tile Editors===Hex editors interpret binary data as raw bytes or texttheir black MS-DOS dialog boxes flashing quickly and disappearing. They're actually easy to use. Tile editors do something similarJust put all the needed files in the same folder, but instead interpret binary data as graphicsmake a new . Of course, this means if txt file where you're using write the command detailed in the wrong mode or looking at an area thattool's not supposed to be graphical data or readme, and save that file as one with the graphics are compressed.bat extension. If you double-click on it, it will execute that tool the way you'll just see garbagewanted it with little effort.
Among the best ===Editing graphics with tile editors out there are TileMolester and Crystaltile2===Hex editors interpret binary data as raw bytes or text. For newer 3D-based systems howeverTile editors do something similar, but instead they may interpret binary data as graphics. Of course, this means if you're using the wrong mode or looking at an area that's not help by much and then specialized supposed to be graphical converters will be neededdata or the graphics are compressed, you'll just see garbage.
In older Among the best tile editors out there are TileMolester and Crystal Tile 2. For newer 3D-based systems, in order to save spacehowever, graphics were usually stored in parts:specialized graphical converters may be required.
In older systems, in order to save space, graphics were usually stored in parts. First , there's the tile data: The , or the actual drawings, and what that you may edit with tile editors. They're divided into small pieces that , when assembled , make a big picture. The instructions to build the big picture are tile maps (in the case of backgrounds) or sprite attribute tables for sprites.
The instructions tile data uses indexed colors. Using Mario's shirt as an example, it isn't colored "red" but rather colored with "color 1". NES Mario games, like most NES games, happen to build use the big picture are tile maps NES 2BPP mode (that is, two bits per pixel). A bit is either zero or one. With two bits, we can write <code>00</code>, <code>01</code>, <code>10</code> and <code>11</code>. This technically gives us four possible colors in total. However, there are actually three colors since "color 0" is transparency, used around Mario's sprite so that the case of backgrounds) or sprite attribute tables (for sprites)behind him are visible and unobstructed.
The tile data uses indexed colors actually, so in How can we tell what actual color Mario's example his shirt isn't colored is instead of just "color 1"? We do this through [[wikipedia:Palette_(computing)|palettes]]. Palettes are hex data consisting of three bytes, and each byte is the ID for a specific color: "red", but rather colored with "color 1blue". NES Mario games, like most NES games"yellow", happen to use the NES 2BPP mode"purple", that is the 2 bits per pixel mode. A bit is 0 or 1. With two bits we can write 00"light blue", 01, 10 and 11so on... so 4 possible (There are just under 60 valid choices in the NES, but later systems have a much larger selection of colors in total. Or actually 3, since "color 0" is transparency, used around ) We know Mario's sprite so that clothes change color after eating various items, but the tile data drawings are stored just once in the backgrounds behind him ROM. There are visible unobstructedseparate palettes telling the game to colorize the same drawing differently for different situations.
How can we tell what color Mario's shirt is, since it's just "color 1"? Palettes. Palettes are hex data consisting of 3 bytes, and each byte is the ID for a specific color: "red", "blue", "yellow", "purple", "light blue", and a few others (just under 60 valid choices in the NES, but way more in later systems)... We know Mario's clothes change color after eating various items. But the tile data drawings are stored just once in the ROM. There's separate palettes telling the game to colorize the same drawing differently each time. ==Emulators for ROM Hackinghacking==
Not all emulators are made equal. Often, you'll need to study the game as it runs, for the following reasons:
* '''Cheats:''' You modified some text and graphics in the final stage, and but can't be bothered to replay the whole game legitimately. In case the emulator doesn't support this natively, you might want to consider using [http://www.cheatengine.org/ Cheat Engine].* '''Save States, Rewindingrewinding, Fast-Forwardfast forward, Frame Advanceframe advance, Pausepause:''' You modified something appearing in a very narrow timeframe, or you just want to take clean screenshoots of the game.* '''Debuggers w/ ''' with the following features:** '''Breakpoints:''' A breakpoint throws a fit and pauses the game if a specific address is tampered with (of . Of course, to know WHICH which address it is, you need to find it first with a Cheat Search cheat/ RAM Search)search. ** '''Debuggers w/ Disassembler:''' Translates the last few lines of programming executed from hex code to known opcodes telling which instruction is which (LDA/LDR/LD (load to accumulator/register), STA/STR/ST (store to accumulator/register), NOP (do nothing)..., and so on). After a breakpoint, it gives you the programming line (in assembly) directly responsible for altering the address the breakpoint was guarding against reading/writing/executing attempts. This is incredibly invaluable to understand the game's programming.** '''Debuggers w/ Assembler:''' Allows the user to write their new lines of programming, which are then converted to the corresponding hex data. It's rare that emulators include this, assemblers . Assemblers are often separate tools affecting the ROMs or to be inserted manually by users in ROMs.** '''Debuggers w/ Tracers:''' The emulator logs ALL all programming lines executed, from since you started logging, to a text file. It can get huge pretty quickly, so it's best used with breakpoints and frame advance features to better locate what you're looking for.* '''Memory Viewers w/ viewers''' with the following features:** '''Hex editors:''' Views the RAM (and possibly other memory areas like SRAM, VRAM, ROM..., and so on) as the game is being executed. Either the window is read-only, or it can be edited.** '''Memory Viewers w/ Tile Editorseditors:''' Views the VRAM (and possibly other memory areas) and interprets its content as visual data. Emulators of 3D systems can also have model viewers and texture viewers.* '''Background / OAM Viewersviewers/Dumpersdumpers:''' View the graphics as they are arranged in-game. Can be useful occasionally. Often , often used for dumping graphics by sprite rippers.This can be useful occasionally.
===Emulators===
! scope="col"|Version
! scope="col"|[[Accuracy]]
! scope="col"|Save Statesstates! scope="col"|Cheat Supportsupport! scope="col"|Frame Optionsoptions
! scope="col"|Breakpoint
! scope="col"|Conditional BP
! scope="col"|Assembler
! scope="col"|Tracer
! scope="col"|Memory Viewview! scope="col"|Tile Viewview! scope="col"|BG/OAM Viewview
! scope="col"|Useful?
|-
| style="text-align: center;"|Gieger's r1.51
| style="text-align: center;"|High
| style="text-align: center;"|Y| style="text-align: center;"|Y| style="text-align: center;"|Y
| style="text-align: center;"|Address
| style="text-align: center;"|N| style="text-align: center;"|Y| style="text-align: center;"|N| style="text-align: center;"|Y| style="text-align: center;"|Y| style="text-align: center;"|N| style="text-align: center;"|N
| style="text-align: center;"|Yes
|-
| style="text-align: center;"|Main
| style="text-align: center;"|Cycle
| style="text-align: center;"|Y| style="text-align: center;"|Y| style="text-align: center;"|Y
| style="text-align: center;"|Range
| style="text-align: center;"|N| style="text-align: center;"|Y| style="text-align: center;"|N
| style="text-align: center;"|Read-only
| style="text-align: center;"|Y| style="text-align: center;"|Y| style="text-align: center;"|N
| style="text-align: center;"|Unstable
|-
| style="text-align: center;"|1.6
| style="text-align: center;"|Mid
| style="text-align: center;"|N| style="text-align: center;"|N| style="text-align: center;"|N
| style="text-align: center;"|Address
| style="text-align: center;"|N| style="text-align: center;"|Y| style="text-align: center;"|N| style="text-align: center;"|Y| style="text-align: center;"|Y| style="text-align: center;"|Y| style="text-align: center;"|Y
| style="text-align: center;"|Detailed
|}
==General Resourcesresources== *[http://romhacking.net ROMHacking.net] - This is like a hub where the various hacking communities meet.  It hosts a large variety of major ROM hacks and translations.  Also hosts numerous FAQs and tools to help aspiring hackers get started.*[http://datacrystal.romhacking.net/ Data Crystal] - A wiki hosted by ROMHacking.net.  While it is a bit outdated at this point, it is 's still a good resource for information about different editors and links to a handful of prominent hacks.*[http://fusoya.eludevisibility.org/ FuSoYa's Niche] - Site of the creator of the popular Super Mario World editor, Lunar Magic.  Also hosts a set of tools for ROM expansion, patching, compression, etc.*[http://www.zophar.net Zophar's Domain] - A site that hosts lots of smaller patches, such as spoofs, as well as a significant amount of major ones.  Hosts It hosts a lot of content that can't be found on ROMHacking.net
==Programs==
===General purpose 2D graphics/tile editor===
* [http://www.romhacking.net/utilities/109/ Tile Molester] – Works with Java, practically can edit any game.
 
===Hex editors===
* [http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm XVI32]
* [http://www.romhacking.net/utilities/219/ Translhextion]
 
==Game-specific==
===EarthBound===
* [http://www.starmen.net Starmen.net] – Home of the hacking utility [http://starmen.net/pkhack/ PK Hack], an editor for modifying the EarthBound/Mother 2 ROM. Has an active hacking community in the PK Hack section of its forums, where links to completed hacks can also be found.
 
===Final Fantasy VI===
* [http://www.ff6hacking.com/forums/portal.php FF6 Hacking] – Home to a large community of Final Fantasy VI hackers, complete with active forums, links to patches, and FAQs and guides for those looking to get into hacking the game.
 
===Final Fantasy Tactics===
* [http://ffhacktics.com/ Final Fantasy Hacktics] – Community for FFT hacking with a variety of completed hacks, patches, and resources.
 
===Fire Emblem===
* [http://www.feshrine.net/hacks.html Fire Emblem Shrine] – An active and prominent Fire Emblem hacking community. Hosts a variety of completed hacks and FAQs to get you started.
* [http://serenesforest.net/forums/index.php?showforum=8 Serenes Forest] – Another active and prominent Fire Emblem hacking community, though perhaps a bit more active than Fire Emblem Shrine.
===The Legend of Zelda: A Link to the Past===* [http://wwwforum.romhackingmetroidconstruction.netcom/utilitiesindex.php/109/ Tile Molesterboard,27.0.html?PHPSESSID=c83e531bb78ed7c6a3a4de5b45756595 Zelda Construction]– Despite its huge popularity, the hacking community for ALttP is relatively small. Works with Java This is mainly due to the lack of a truly good editor, practically can edit any gamethough one is in the works. This community is a spin-off of Metroid Construction devoted to hacking of ALttP and other games in the series.
===<br />Hex EditorPokémon===* [http://www.pokecommunity.com/forumdisplay.php?f=37 The PokéCommunity] – Very active (and helpful) Pokémon hacking community.
===Sonic the Hedgehog===* [http://www.chmaasinfo.handshakesonicretro.de/delphiorg/freeware/xvi32/xvi32.htm XVI32Sonic_hacks Sonic Retro] or [http://www.romhacking.net/utilities/219/ Translhextion]. You can edit – The largest resource for hacks and modifications of the bytes of Sonic series (primarily focused on the ROMs, i.e. everything. Some values are obvious and some text is already ASCIIGenesis games).
==Game Specific==
===Super Mario World===
[[File:MainLunarMagic-1-.png|thumb]]
*[http://www.smwcentral.net Super Mario World Central] - The largest site dedicated to SMW hacking.  Hosts hundreds of hacks and is a resource for SMW hacking utilities and knowledge.  Also has a very active community and forums.*[http://www7.atpages.jp/smw/view.cgi X-Mario] - Prominent Japanese site that hosts a variety of hacks.  Worth noting is that Japanese hacks are usually more reliant on creating challenging gameplay and are less flashy or graphically modified than their Western cousins.*[http://talkhaus.raocow.com/ Raocow's Talkhaus] - The community for the most prominent let's player in SMW hacking.  Whether or not you enjoy his commentary, this site remains a great resource for discovering hacks, as the community here is generally focused on hacks that the SMW Central community doesn't cover.*[http://www18.atwiki.jp/sm4wiki_mix/ VIP Wiki] - Japanese wiki dedicated to the development of 2channel's series of popular hacks, the VIP & Wall Mix series.  Hosts the 5 current installments and news about the sixth, currently a work in progress. ===Super Mario World 2: Yoshi's Island===* [http://www.smwcentral.net Super Mario World Central] – In addition to Super Mario World, smwcentral is a budding hub for Yoshi's Island hacking. While it only hosts a few complete hacks, the community is very active, and new content is being produced at a consistent pace.* [http://yihacking.wikia.com/wiki/Yoshi%27s_Island YI Hacking Wiki] – A knowledge base for Yoshi's Island hacking.
===Super Metroid===
[[File:Fetch-1-.png|thumb]]
*[http://metroidconstruction.com Metroid Construction] - The most prominent and active Super Metroid hacking community currently.  Hosts a large variety of hacks, resources, FAQs, and an active community and forum.  Originated in m2k2 before becoming its own dedicated site.*[http://wiki.metroidconstruction.com/doku.php Metroid Construction Wiki] - As its name implies, a wiki created by the Metroid Construction community.*[http://www.metroid2002.com/ Metroid 2002] - The former most prominent and active Super Metroid hacking community previously.  While it has since been foregone in favor of Metroid Construction, it can still be a valuable resource for knowledge about the more advanced mechanics and inner workings of Super Metroid (as well as other games in the series).===The Legend of Zelda: A Link to the Past===*[http://forum.metroidconstruction.com/index.php/board,27.0.html?PHPSESSID=c83e531bb78ed7c6a3a4de5b45756595 Zelda Construction] - Despite its huge popularity, the hacking community for ALttP is relatively small.  This is mainly due to the lack of a truly good editor, though one is in the works.  This community is a spin-off of Metroid Construction devoted to hacking of ALttP and other games in the series. ===EarthBound===*[http://www.starmen.net Starmen.net] - Home of the hacking utility [http://starmen.net/pkhack/ PK Hack], an editor for modifying the EarthBound/Mother 2 ROM.  Has an active hacking community in the PK Hack section of its forums, where links to completed hacks can also be found.===Yoshi's Island===*[http://www.smwcentral.net Super Mario World Central] - In addition to Super Mario World, smwcentral is a budding hub for Yoshi's Island hacking.  While it only hosts a few complete hacks, the community is very active, and new content is being produced at a consistent pace.*[http://yihacking.wikia.com/wiki/Yoshi%27s_Island YI Hacking Wiki] - A knowledge base for Yoshi's Island hacking.===Final Fantasy VI===*[http://www.ff6hacking.com/forums/portal.php FF6 Hacking] - Home to a large community of Final Fantasy VI hackers, complete with active forums, links to patches, and FAQs and guides for those looking to get into hacking the game. ===Final Fantasy Tactics===*[http://ffhacktics.com/ Final Fantasy Hacktics] - Community for FFT hacking with a variety of completed hacks, patches, and resources.===Fire Emblem===*[http://www.feshrine.net/hacks.html Fire Emblem Shrine] - An active and prominent Fire Emblem hacking community.  Hosts a variety of completed hacks and FAQs to get you started.*[http://serenesforest.net/forums/index.php?showforum=8 Serenes Forest] - Another active and prominent Fire Emblem hacking community, though perhaps a bit more active than Fire Emblem Shrine.===Pokémon===*[http://www.pokecommunity.com/forumdisplay.php?f=37 The PokéCommunity] - Very active (and helpful) Pokémon hacking community.===Sonic the Hedgehog===*[http://info.sonicretro.org/Sonic_hacks Sonic Retro] - The largest resource for hacks and modifications of the Sonic series (primarily focused on the Genesis games).
==Downloads==
* [https://mega.co.nz/#F!R8RCnZZY!Zxyqoynu9GVWIwFHCISK2Q!og53jJJL ROM Hacks]
[[Category:FAQs]]

Navigation menu