Apply ROM hacks and translations
There are games which were never officially translated, leading some talented people (this might include you) to take these untranslated ROM images and alter them in a process known as ROM hacking. If successful, they would produce a working English ROM (or whatever the target language was). But how would they distribute it? While Chinese ROM hackers are often seen to behave in a "devil-may-care" fashion, uploading the full translated ROM "as-is," this is regarded as both sloppy and dangerous by most other communities.
Anyone doing this type of work—which invites close scrutiny by the vengeful eye of the holders of the intellectual property rights for any actionable behavior—is all but asking for legal hell by acting so cavalier. The ROM data is copyrighted, and even if they're not selling the product in a particular jurisdiction (or at all) doesn't mean they'll knowingly let someone pirate their games.
ROM hackers smart enough to avoid becoming the respondent to a lawsuit, to the extent they can, often resort to another solution: they upload only a patch for the original ROM image. This is a file containing only a list of the modified bytes and their precise location within the file, and nothing else. When applied to the original ROM, they generate the English-translated ROM created by the hacker. Typically only a few megabytes in size, they're not only very practical to sharing but when distributed without the original ROM, also entirely legal. Without a copy of the original ROM/ISO they were made from they're meaningless and contain no legally-protected material, only the new data made by the translator/patcher.
To apply a patch of this sort, you'll need to follow the following basic process—in some form, at least.
Acquiring the source ROM or ISO
editMost patches are circulated with a README file (though not always bearing that exact name) that informs those who acquire it of which version of a particular ROM they are meant to be applied to. In most instances, this amounts to the following details:
- The name of the game
- The region it was released for: Japan, U.S., Europe, etc.
- The game revision, if not the original release
- The dump style (
[!]in a ROM filename signifies a clean dump of the entire cartridge memory, but other types also exist, such as "No-Intro" dumps, which have altered a pristine copy of the game in some presumably desirable way)
Once you're clear on exactly what ROM file you need to make use of a particular patch, either download it off a trustworthy ROM/ISO web site, use a search engine or, best of all, dump it yourself (if you can).
Game headers
editNES
editConsidering iNES headers are needed for emulation, you will probably want to look for NES ROMs that include them (a/k/a most regular NES ones).
SNES
editIn the early days of SNES emulation, headers were appended to SNES ROMs to help instruct the emulator on how to process the game. Thankfully, SNES emulation has improved immeasurably since then so they're no longer needed and shouldn't present an issue during patching.
Any given patch can only function correctly with either a ROM with a header or one that is headerless; the README file should clarify which type the patch is intended for. The importance of knowing for certain that you're applying a patch to the correct ROM cannot be overstated, since getting this wrong corrupts the entire file in most instances.
Always keep a backup of any ROM you try to patch, that way you can even resort to trying a particular patch on both a headered ROM and a non-headered one, if you have one of each for that game. Only one of the resulting files is likely to playable, and you can then restore the corrupted one from the backup. It is even possible to change whether an SNES ROM is headered or not using the TUSH tool.
Applying patches
editThe first and most crucial step of any ROM patching effort is to make a backup copy of the original ROM!! This includes giving it a filename clearly identifying it as a known, good backup and moving it out of the working directory where you'll be applying the patches. You have only yourself to blame if something goes awry and you lose a working copy of a rare or cherished game that can't be trivially replaced; don't be that guy.
UniPatcher (for Android)
editIn almost all instances, it is the format of the patch you're working with that will dictate the tool(s) that you'll need in order to use it. However, the one major exception to this is on Android devices. There, you have the ability to avail yourself of the UniPatcher app, an invaluable resource that's able to work with all of the following patch types, plus modify SNES headers and perform MD5 checksum fixes…all for free!
- IPS
- IPS32
- UPS
- BPS
- APS (GBA)
- APS (N64)
- PPF
- DPS
- EBP
- XDelta3
International Patching System (IPS)
editThe International Patching System (IPS) is a very common patch file format for third- and fourth-generation ROMs. It replaces bytes at specific addresses in the file with bytes recorded in the patch, so it's not suited to cases where the patch also needs to relocate large sections of the data within the file (for which Xdelta would be much better), because the patch will also end up containing all of those sections as well, at which point you might as well distribute the entire patched ROM.
IPS also doesn't work correctly with ROM that are larger than 16MB, often truncating (a/k/ deleting!) everything from the original ROM over 16MBs.
IPS patching directly
edit- Tool used: Floating IPS
- Open IPS file. Select "Apply Patch". (You can create IPS patches too.)
- Choose IPS file.
- Choose original unpatched ROM file.
- Choose patched ROM filename.
Universal Patching System (UPS)
editThe Universal Patching System (UPS) is intended to improve and replace IPS, using the same basic process but without as many limitations such as the 16MB ROM size restriction. It's not nearly as common and supported though, aside from the GBA projects.
Due to how both formats work, assuming many patches alter different things (as in, they don't conflict and modify the same areas in the ROM) and work on the same base rom, you can apply them in succession. For example, a patch changing only the character sprites, and another changing only the text, should be okay to apply in succession. It's a very bad idea to apply two patches altering the same thing unless you know it's a fix (like a change to an ugly font or a nasty bug). Avoid applying in succession two patches which both change the programming and/or re-arrange the ROM contents (example: more than one fan-translation or hack) since they will conflict; just use common sense.
UPS patching directly
edit- Tool used: upset
There are two fields to fill: the first is for the UPS patch file and the second is for the unmodified ROM. Once you fill them, click "OK".
IPS/UPS patching "on-the-fly"
editSome emulators are compatible with IPS patches. You just need to put the untranslated game ROM in the same folder as the IPS patch, with both of them sharing the same filename (though not the file extension). When you play the game, the emulator applies the translation automatically during gameplay. Some of these emulators include:
- NES: FCEUX
- SNES: bsnes, Snes9x, ZSNES
- Game Boy/Game Boy Color: VisualBoyAdvance
- Game Boy Advance: VisualBoyAdvance, VisualBoyAdvance-M, mGBA
As for UPS, however, it's not as widely supported. Here's a bunch of emulators supporting it:
The ROM itself remains unaltered (untranslated, etc.) during this process.
Not all emulators support patching ROMs on the fly with IPS/UPS patches. Also, you might prefer a single ROM file with the translation. So you can do it the proper way and generate the English-translated ROM!
Xdelta
editThe Xdelta patch file format was developed to solve the shortcoming in IPS/UPS with handling unchanged data that needed to be moved around within a ROM. They just treat all of the moved data as "changes," storing it verbatim in the patch. Xdelta introduced the ability to simply record the original size and position of the data as well as where to reinsert it, bringing the size of the patch files down considerably without any impact to the rest of the changes in the patch. Thus, it's very popular for recent translations on the PSP and DS.
The downside is that almost no emulators support xdelta patching on-the-fly due to the added complexity.
Xdelta patching directly
edit- Tool used: Delta Patcher
- Note: The program will throw an error when the unmodified ROM isn't exactly what it expects, letting you know that you have the wrong ROM for that patch.
Beat Patching System (BPS)
editThe Beat Patching System (BPS) format is the newest entrant to the scene, aiming to fix the shortcomings of both Xdelta and IPS/UPS patches.
In addition to modifications, beat patches can detect data insertions and deletions. Patch formats that can only detect modifications will fail completely, producing file sizes equal or larger to the original file sizes in these cases. This allows for substantially smaller patches on non-ROM based systems and certain ROM types (e.g. Mystic Ark's size is halved using this method). Beat patches can be used to patch either a single file or an entire directory full of files and subfolders, thus allowing the format to handle ROMs, CDs, PC games and more.
BPS patching "on-the-fly"
editBPS patching directly
edit- Tool used: beat
PPF (PlayStation Patch Format)
editThe PlayStation Patch Format (PPF) is an old format for patching game ISOs for disc-based systems, originally conceived for PS1 patches but later expanded to work with other systems.
PPF patching directly
edit- Tool used: PPF-O-Matic
Post-patching tasks
editChecksums
editApplying the patches sometimes result, if the patch author isn't careful enough (which is often the case) in the checksum being wrong. While in the case of SNES games this isn't really a problem with emulators, MD/GEN games will crash to a red screen.
To fix the checksum of MD/GEN ROMS, use the Fix CheckSum tool. You can also fix SNES checksums, if you so desire, but it doesn't make a difference to the emulators.
See also
edit- Mods, hacks, and fan-translations - General info on modding and hacking.
- ROM hacking resources - Tools and info on ROM hacking.
- Homebrew and ROM hacks - List of homebrew software and ROM hacks.
- GBA Rom Patcher - IPS/BPS Patcher and SRAM fix tool.