ROM/ISO Information

This field is here to give users more information on the specific ROM or ISO that the patch requires.

Many hacks and translations need to be patched to a very specific game in order to function. For instance, many hacks of Final Fantasy III are intended for the original release of the game, whereas some require the 1.1 version of the ROM. Wouldn't it be great to be able to tell, at a glance, which specific ROM works with which patch, without having to carefully check the hack's description or scour its readme? Why, you bet it would!

How to use

The easiest and preferred method is to simply download RHDN's ROM Hasher, and copy and paste the generated information. All of the hard stuff is figured out automatically and already provided in RHDN's preferred formats.

Each bit of information should go on a single line. Each line should also have an identifier to show where the information was obtained (CRC32, No-Intro, Pocketheaven, PS serial number, etc). Preferably, names taken from ROM databases will have the database's version number or release date, since ROM databases are quite prone to changing names for ROMs at a whim.

Good (kind of overkill though, but the more the better):

Country: USA
Internal checksum 8A60
CRC32 C0FA0464
MD5 544311E104805E926083ACF29EC664DA
SHA-1 057ADA1C641E3E0B3CA34E6E4F4EB1B05A87143A
SHA-256 10ECCC5D2FAB81346DD759F6BE478DCB682EEF981E8D3D662DA176E1F9A996BC

Final Fantasy III (U) (V1.1) [!] (GoodSNES 2.04)
Final Fantasy III (USA) (Rev 1) (No-Intro 2013-03-05)
Final Fantasy III (NTSC)(Eng)(1.1) (Zapatabase 20121221)

Bad:

Use the US 1.1 ROM.
C0FA0464

The ROM/ISO Information field can be pretty easily split among two basic types: checksums, and identifying names.

Checksums?

In simplest terms, a checksum is a number, usually in hexadecimal, that is unique to a file. An algorithm is run on the file that compares all of its binary data, and produces a unique number as a result. Modifying a single byte, or even a single bit, in a file can completely change its checksum.

Because checksums are (mostly) completely unique, they're a great way to quickly compare files to make sure that all of the data in each file are one-hundred-percent exactly identical. This way, if you have a ROM with a checksum that matches the checksum provided on Romhacking.net, you're (mostly) guaranteed to have the correct ROM for the patch you want.

I say "mostly" because the numbers can't all be exactly, perfectly unique. The most commonly-used checksum algorithm is called CRC32, and produces an eight-digit hexadecimal number for a checksum. An eight-digit hexadecimal number can only count from zero to 4,294,967,295, though, and there are WAY more files than that out there on the internet. So, in mathematical terms, you *can* have two completely different files with the same checksum, but in the practical world, you only have a one in four billion chance of it actually happening to you.

There are many different checksum algorithms out there, and as a general rule, the more digits it's able to generate, the more unique the number is. CRC32 is the most common algorithm, but the most preferred ones here at RHDN are SHA-1 or SHA-256. MD5 is also popular.

That's fine, you say, but how do I actually calculate the checksum myself, right? If you're using Windows, the simplest method is to install a shell extension. HashTab is my favorite, but there are many others. Once it's installed, you can just right-click any file and choose Properties to see the checksum in a new tab. Easy! There's checksum calculators for other OS's too, but a method everyone can use is going to a website such as this one and uploading the file to the site. It will list many popular checksums for the file for you, right there on the page.

An alternate method is to use near any hex editor. For a quick example, download this hex editor, HxD. Open your source ROM. Click Analysis -> Checksums -> Highlight CRC32, SHA-1, SHA-256, MD5, and click OK. Copy that Information! Those file hashes will unmistakeably identify the ROM your patch is intended for!

Identifying names?

"Identifying name" is a good general descriptor of any particular name that identifies a certain game as being different from others. No rules! Anything to set it apart is fine, as long as it's easy to tell where it came from. Since RHDN deals with games on cartridge pretty frequently, ROM databases will likely be used the most often.

ROM databases first gained popularity in the late 90s (I think?) with GoodNES, a tool that could scan all those ROMs you downloaded from all those weird FortuneCity sites, and would compare each ROM's checksum with an internal database. From the database, GoodNES could determine what game you have, what country it came from, whether or not it was a bad dump, whether someone hacked it or added a trainer, and so on. All that information is easy to take for granted nowadays, but when you're on an FTP downloading hundreds of games that only have eight-letter filenames, sometimes you have no idea what game is which, even (for the Japanese games) when you sit down and start playing them. Just think, for years you could've been playing Super Mario Bros. without a title screen and never know something was wrong, without ever realizing that pressing Select could make Mario swim through the air! Emulation was pretty weird back then.

Cowering, the creator of GoodNES, then went on to create databases for most other game systems, but with not nearly as clever names: GoodSNES, GoodGen, GoodMSX, and so on. Other databases have also come along, with different functions and purposes. Romhacking.net's recommended database is No-Intro, though it's hard to figure it out if you're not intimately familiar with the arcade ROM curation community and the programs they use. The "GoodTools" are far more popular, though they're very seldomly updated, and only by one guy who insists on keeping his databases from the public. This makes them easy to use, though, so long as you're familiar with the command line. There's also the Zapatabase, which you don't really ever see, but it's open and very easy to use, if that's your thing.

ROM databases aren't the only identifying names, though! You can use the official filename if it's a Windows file, or the program's version number. Or, you can use the Pocketheaven release number for Nintendo handhelds, because you still see those sometimes! Or, PlayStation games can use their serial number! For instance, the limited-edition version of Tokimeki Memorial: Forever with You for PS1 has a serial number of SLPS-00064! No other PlayStation game has that serial number!