Apply ROM hacks and translations

From Emulation General Wiki
Jump to navigation Jump to search

There are games which were never translated officially. Some talented people (this might include you) took these untranslated ROM images and altered them in a process known as ROM Hacking. They produced, in the end, a working English ROM (or whatever their language is).

But how would they distribute it? While Chinese ROM hackers don't give a shit and just upload the translated ROM as-is, the rest of the world is another matter. Anyone doing this, especially ROM hackers since they're more... under the vengeful watchful eye of the publishers for the first legal slip, would be asking for legal hell. The ROM data is copyrighted data to the original company, and them not selling their product here doesn't mean they'll let someone pirate their games.

ROM hackers not dumb enough to risk having their asses sued resort to another solution.

They upload just a patch. It's a file containing only the modifications, and nothing else. When applied to the original Japanese ROM, it produces the English-translated ROM the hacker has on their computer. Only a few megabytes generally, so very practical for sharing. This patch on its own is legal, it's meaningless without a copy of the ROM/ISO and hence harmless on its own.

To apply a patch you'll need to do the following steps:

Get the ROM / ISO[edit]

You need to read the readme included with the patch to know what ROM version you exactly need:

  • The game name
  • The region: Japanese, US, Europe...
  • The revision
  • The dump: [!] means a good dump, but you can get a No-Intro dump for that.

Either download it off a search engine or dump it yourself if you can.

NES Games[edit]

Considering iNES headers are needed for emulation, you might want to look for NES ROMs including them (aka most regular NES ones, but not your personal dumps assuming you go through such trouble).

SNES Games and headers[edit]

In the early days of SNES emulation, headers were appended to SNES roms to help the emulator doing what it should do. However in these days, they're not needed and hence aren't expected to be included in ROMs nowadays.

The patch needs to be either on a headered ROM (with a header) or a headerless ROM (without a header). Readme file should clarify this. It's really important because if you get it wrong, the patch corrupts everything in-game.

Keep a backup ROM and try applying the patch on a headered ROM than a non-headered ROM. You can change whether the ROM is headered or not using the tush utility.

Apply the Patch[edit]

It depends on which format the patch is in. Make a backup copy of the original untouched ROM just in case!

Also if you're on Android, try this IPS/UPS/BPS/PPF patcher with SNES header / MD checksum fixes!

IPS and UPS[edit]

IPS is a very common patching format for third and fourth generation ROMs. It replaces bytes at specific addresses in the file with bytes from the translation, so it's not suited to cases where the translation swaps huge quantities of data around (xdelta would be better) because then it would just include the data as-is in the patch and you might then as well distribute the ROM.

IPS doesn't work properly with ROM sizes bigger than 16MB, in which cases it deletes the parts of the file past the 16MB mark.

UPS works just like IPS, though it doesn't have the 16MB ROM size limitation. Not as nearly as common and supported though, aside from GBA projects.

Due to how UPS and IPS 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.

Emulators Supporting IPS/UPS patching on the fly[edit]

Some 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 sans 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
  • GB: VBA
  • GBA: VBA, VBA-M, mGBA

As for UPS, however, it's not as widely supported. Here's a bunch of emulators supporting it:

  • SNES: bsnes
  • GBA: VBA-M, mGBA

The ROM itself remains unaltered (untranslated, etc) during this process.

Applying the Patch directly on the ROM[edit]

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!

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

UPS - Tool Used: Tsukuyomi UPS

There are three fields to fill. The first is for the UPS patch file. The second is for the unmodified ROM. The third is for where you want to save a copy of the ROM with the translation applied. Once you fill them all, click "Apply Patch".

xdelta[edit]

One of the main IPS/UPS format shortcomings is how they couldn't handle unchanged data moving around, and would just treat the whole data as "changes" and include all of it in the patch. xdelta solves this issue, bringing the size of the patch down considerably. Thus, it's very popular for recent translations on the PSP and DS.

Almost no emulators support xdelta patching on the fly.

Applying the Patch directly on the ROM[edit]

xdelta - Tool Used: Delta Patcher (Lite version)

Note the program will throw an error when the unmodified ROM isn't exactly what it expects it to be so that you know that you got the wrong ROM for patching.

PPF (PlayStation Patch Format)[edit]

Old format for patching game ISOs on disc-based systems, originally conceived for PS1 patches but also expanded for other systems.

PPF - Tool Used: PPF-O-Matic

BPS (Beat Patching Format)[edit]

The newest patching format in the scene. It aims 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 (eg Mystic Ark is half the size this way.) 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, etc..

Emulators Supporting BPS patching on the fly[edit]

  • SNES: bsnes
  • mednafen

Applying the Patch directly on the ROM[edit]

BPS - Tool Used: beat

After Applying the Patch[edit]

Checksums[edit]

Applying 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 this tool. You can also fix SNES checksums if you so wish but it doesn't make a difference in emulators.