Soft Patching is a technique used in emulators which allows translation patches or hack patches to be used on a game console ROM without having to actually modify the ROM file.

The problem with the traditional method (hard patching, ie using an ips patch to permanently alter the data in a ROM) is that often, a patch will be updated over time - for example, a translation group will first release a beta patch, followed by a final patch, and there are possibly revisions after that*. If you hard patch your ROM, then you either need to keep a backup copy for future ROM revisions, or you'll have to download a new, clean ROM every time a new patch comes out. A possible third way is that you could create an ips patch which changed a patched ROM to a clean ROM, but this is entering the "God, who could be arsed" stages of effort. Naturally, a method to avoid this was soon created.

Soft patching works by having the emulator scan a predetermined directory for an ips file each time they load a game. If an ips file with a name matching the ROM name is found, the emulator patches the ROM and holds it in volatile memory (ie, it does not actually change any of the data in the saved ROM on your hard disk) before playing it. This means you don't have to keep any backup ROMs, and if a new version of a patch comes out you simply replace the ips file. Simple and quick. Naturally, that hasn't stopped it becoming one of the biggest newbie questions for emulation boards all over the place. Almost every translation group board will have a heap of topics about "I can't get it to patch will you tell me how plz kthanx." Usually, the spelling is even worse. So now, to avoid any questions, here is exactly how to do it.

How to soft patch a ROM

  1. First, you need an emulator compatible with it. I know that Snes9x and Zsnes are, but I'm not sure about the others. I suspect that SNEeSe is as well.
  2. You will also need a ROM. It can be zipped, but you'll need to know the filename of it inside the zip.
  3. You will also need an ips patch that is made for your ROM.
  4. Define a save directory in your emulator. All your save files and ips patches go here. This is not technically necessary, unless you're playing ROMs on a read only medium (like a CD-R) but it does keep everything organised.
  5. Place the ips in the save directory. Make sure that before the .ips extension, the file has the same name as the ROM. For example: if SMW.smc** is the file extension, rename the ips to SMW.ips, and put it in the save directory. Start the emulator and the file will be detected if you've done it right. In the case of zipped files: SMW.zip containing Super Mario World.smc, then rename the ips patch to Super Mario World.ips.

Simple, although that doesn't stop the crowds of annoying people on emulation boards. If you can't get it to work, give me a bell.


* - Don't ask me what you call patches that come after final patches.
** - .smc is a common SNES copier file extension.