Please download these if you haven’t already.
Refer to the previous lecture notes for more info.
Character encoding is the method of representing a collection of characters with a digital medium. For example, Morse code and Braille.
In computer science, the digital medium is binary. But which numbers should go to which letters?
We could have each letter be represented by the code needed to light up a sixteen-segment display.
As of 1963 a standard was introduced: the American Standard Code for Information Interchange (ASCII). ASCII was the first successful attempt at ensuring that all text used the same mapping from binary to characters.
Since 1963, there have been several more character encodings released such as ISO 8859-1 and UTF-8, but nearly all character encodings are based off ASCII.
Considering that the NES was released in 1983, you would expect that NES games would use a variation on ASCII for their text encoding. For games like Wrath of the Black Manta, you would be correct: However, not all game developers chose to make life easier for hackers by using the standard character encoding. Actually, most games developed by Nintendo use a custom character encoding. Fortunately, hackers have reverse engineered many text encodings from their favorite games:
Gold Finger is an easy-to-use, bare bones hex editor, that allows custom character encodings. Simply load the Super Mario Bros. ROM file and encoding table file, search for "MARIO" "16 0A 1B 12 18"
, and edit away.
International Patching System (IPS) is a method for sharing ROM hacks legally. IPS files only store CHANGES to a ROM file, not the entire ROM file. IPS files are the standard for sharing hack of ROMs less than 16MiB in size. You should get into the habit of archiving your work as IPS files, not as ROMs.