Beginners Guide to playing ROM hacks

So you've found a ROM hack or two that look interesting, but you're not sure how to actually play it. It's easy! You're going to need 3 things: [1] the hack (which you can get right over here), [2] an original ROM file of the appropriate game (you'll have to find that yourself, perhaps try asking Google), [3] and an emulator (some suggestions are right below, or you can ask Google for more options).


Unless you're a console purist and have a flash cartridge (i.e. SD2SNES or Super Everdrive), you're going to need an emulator in order to play console games on your computer (or phone, or tablet, or homebrew-enabled Wii, or whatever other device you want to use). There is a great variety of emulators available: they differ mainly in how closely they match how the real console behaves (which affects compatibility), what features they have, and what platforms they run on. All of the emulators listed below rate highly in all three categories, so they should be good choices for almost everyone. You'll probably also want a good controller, although some players swear by the keyboard; as this is mostly personal preference, you're on your own here.

For hacks of Super Metroid (and SNES games in general), we recommend Higan or snes9x.

For hacks of Metroid 1 (and NES games in general), we recommend Nestopia or FCEUX.

For hacks of Metroid 2, Metroid Zero Mission, and Metroid Fusion (and GB/GBA games in general), we recommend mGBA or Visual Boy Advance.

For hacks of Metroid Prime 1, 2, and 3 (and Gamecube/Wii games in general), we recommend Dolphin.


Most hacks are distributed as a .IPS file, which is a patch that must be applied to an original ROM of the appropriate game in order to play the hack. Unlike complete ROM files, .IPS files are legal to distribute; they are also much smaller in file size. There are two ways to apply a .IPS patch and get youself playing: soft patching, and hard patching.

In either case, there are 2 important things to remember: be mindful of headers (explained in detail further down), and always make backups of your ROMs in case you screw something up (such as accidentally overwriting your original game ROM, or screwing up the headers).

Soft Patching:

Soft patching means that no changes are written to the ROM file--the patching occurs only in memory. Many emulators will automatically soft patch a ROM when you load it, if the ROM file is in the same directory as a .IPS file with the identical name. To use this method, simply make a copy of your original ROM, and name it the same as your .IPS file--for example, "Hyper Metroid.smc" and "Hyper Metroid.ips".

Emulators known to support soft patching: RetroArch, snes9x, zsnes, FCEUX, Nestopia, and Visual Boy Advance.

Hard Patching:

Hard patching means that the changes are permanently written over the ROM file. This is required for emulators that do not support soft patching, and is preferred by some players because once you patch it you only need to keep one file around instead of two.

The most commonly used tool to apply .IPS patches is Lunar IPS, but you can also use SNES Tool, ucon64, or MultiPatch, among others.

Some patches might come in other formats besides IPS. FLIPS can handle both .IPS and .BPS formats, while xDeltaUI will take care of .xdelta patches. Another option is a web-based patcher like RomPatcherJS (this might particularly help those of you stuck on mobile).

Regardless of which tool you use, the process is the same: you select the .IPS file and an original ROM file, and it will replace the original ROM with a patched ROM. Then simply load up the patched ROM in your emulator of choice. If all goes well, you're done and can delete the .IPS file if you like.


Some SNES ROMs out there have a "header" at the beginning, while other ROMs do not. These headers were meaningful to the specialized hardware used to dump the ROMs from physical cartridges originally, but don't serve any useful purpose today. All emulators can handle both headered and unheadered ROMs, so as far as playing them, there's no concern either way. Where headers DO matter, however, is with creating patches and applying patches.

Fortunately, the rule is simple: If your .IPS file is designed for an unheadered ROM and you apply it to an unheadered ROM, everything is fine. Likewise, if your .IPS file is designed for a headered ROM and you apply it to a headered ROM, everything is fine. If you mix and match, the ROM is likely to not work at all, and you're going to have a bad day.

Most hacks will specify if their patch is for a headered or unheadered ROM (they may use the abbreviations [H] and [UH]); some hacks will provide patches for both. You can generally assume all patches are intended for unheadered ROMs unless it says otherwise, as unheadered is the norm.

If you like to play a lot of hacks, you're better off keeping copies of the original Super Metroid ROM in both headered and unheadered varieties. That way, whenever you download a new hack, you can copy whichever ROM is appropriate and start playing quickly and easily. If you don't already have both variants available, it's easy to convert between headered and unheadered ROMs.

First, identify if your existing ROM has a header or not: an unheadered "Super Metroid (JU) [!].smc" ROM should be 3145728 bytes in size and have an MD5sum matching 21f3e98df4780ee1c667b84e57d88675, while a headered ROM should be 3146240 bytes in size (the MD5sum will vary based on what is in the header, if it is all zeros then it should match 24863a97246994892c138a4c3d6b8749). In either case, make a backup copy first, then use a tool such as SMILE (the option is under Tools -> Header), nsrt, or SNES Tool to add or remove a header. If you're brave, you can even use a hex editor and just delete the first 512 bytes (to remove a header) or insert 512 bytes at the very beginning (to add a header).