Changing a NES Game's Text

written by aStROcReEp 2000

NOTICE : If you'd like a text version, click HERE


From the same ROM hack master that brought you many other documents on various ROM hacking procedures, and who has brought you such hacks as Tecmo Bowl 97 and the in-progress Dragon Warrior XXX, comes this new document on how to change the text in a NES ROM. No, I'm not fucking talking about changing the way the text looks, either. Actually, I've written this document to PREVENT more people from changing the way text looks in order for one part or another of a game to say something they want it to. This document is on how to change the occurence of a string of text in a game...to some other string of text. To keep away from these "1 Playeck Games"and other things of the like that I've seen in so many ROM  hacks. All because someone wanted to change one R in the game to CK.

It's quite a simple process, especially if you know hex well and can comprehend my document on changing a NES file's palette. First, you'll need your Hex editor program, obtain Hex Workshop from my Hacker's Guide to the World of NES Emulation in the Utilities section. Download it, install it, set up, and run it. Then use it to Open up the NES file you wish to modify by clicking on the Open icon, which looks like an open folder. Or click in File from the menu bar and click on Open. You can approach this other ways as well, such as right-clicking your mouse on the NES file from within Windows Explorer and moving down to the option "Hex Edit".

Now that you've got the file open in the hex editor, use multi-tasking capabilites to open up NESticle or whatever emulator you may use. Load the ROM into play as if you were normally going to play it, then pause the CPU emulation (under CPU from the menu bar or Alt-P will do as well). View the Pattern Tables for the game by pressing F2 or clicking on View from the menu bar and moving down to Pattern Tables. Somewhere amongst the garbled junk of game sprites and tiles, you should see text. Plain and simple as daylight, it will look just like the text does in the game.

Get an idea first of what you want to change in the game. For example, let's say you want to change MARIO in SMB to read STINKY. First of all, with changing text in a game, you must keep in mind that the new string of text must be SHORTER THAN (in which case you need to fill the extra spaces with blanks) or equal to the original string of text, unless in some games where the string of text does not directly end where the text does. For example, with Tecmo Bowl, when I created Tecmo Bowl '97, every player's last name in the Roster was 8 characters, if the last name was less than 8 characters, the 8 character string was filled up with spaces. In this case, I was able to make names longer than the original, so long as they were within the 8 character range.

Back to the example above, you'll realize that STINKY is one letter longer than MARIO, so let's shorten that down to STNKY instead. Okay? So by now you should have your SMB ROM open in NESticle and should have the large window for the game's Pattern Tables. You'll notice text for the game is on the right. If you click on any of the letters, you'll get a 2-digit number, which is the hexadecimal representation of the letter/number (hmm, hex editor, hexadecimal...making sense yet?). So for each letter in the string of text, click on the letter from the Pattern Tables and write down the 2-digit number you get, writing it down next to each other as a string (see below). Disregard what's in parentheses. In the MARIO-STNKY example, for Mario you should have the following written down :

16OA1B1218 (16 is for M, 0A is for A, 1B is for R, and so forth)

Now you need to obtain the equivalent for STNKY. Click on S, write down the 2-digit code for it. Then on T, etc., and continue write each successive 2-digit code next to each other, as a string. When you are done, you should have the following :

1C1D171422 (1C for S, D for T, 17 for N, and so forth).

Now is when you need to get back to the hex editor program. You need to do a search from within the hex editor program (being sure that the NES file for the game you are wanting to change is still open). Click on the magnifying glass icon or Click on Edit, then Replace from the menu bar. Either way, you'll be brought up a window with 2 fields - the text to look for and the text to replace it with. The text you're looking for is the text you wanted to change. However, this is the hex editor, you must type in the hex representation for the string of text, as obtained earlier. For example, with the MARIO-STNKY thing, you'd type the following in the first field :

16OA1B1218

The second entry field is for entering the hex code for the new string of text to replace the old one with. In our case, we wanted MARIO to become STNKY. So we use the coding we wrote down earlier, as follows :

1C1D171422

From this point, your best bet is to click on "Find Next", unless you know FOR SURE that you would like to replace EVERY occurence of MARIO in the game with STNKY. Or whatever the case might be. In this case, just click on Replace All, and all occurences will be replaced. Otherwise, click on Find Next to search through the game's hex coding to find the specific occurence of the text you are looking for. How do you know if it's the occurence you're looking for? Look at the coding that is surrounding the string of hex, see if you can spot other words of text that might help you figure out if this is the occurence you are looking for. When you find what you're looking for, click on Replace. Continue until you're done, then click on Cancel. Now for some reason when you click on Cancel in Hex Workshop, it will delete a 2 digit section of hex. In this case, DO NOT YET save your progress, but click on Edit, then Undo Delete. THEN you can save your progress. Otherwise your ROM will not load anymore =( And good luck to you if you can find where the deleted hex code was and add in what is needed.

For long, long strings of text, like when modifying RPG games...just do a search for as much of the string of text as you can, making sure you find the "proper" code representation for spacing in the game, etc. Once you've found part of the long string of text, search through the hex coding for the beggining of the entire string and just use the delete key and type in the new hex codes as you go along. Just DO NOT delete more hex than you replace, or vice versa. This will fuck up the ROM and it will not load anymore!

Whenever you are done, or when you have made one or 2 replacements of text, you NEED to save your progress!!! Sometimes Hex Workshop likes to crash if you try and change too much text at one time, I remember with Tecmo Bowl 97 I had to save after EVERY name I changed or it would crash on me. To save, just click on File, then save from the menu bar, or click on the disk icon. You *should* be prompted to make a backup, if not, you need to change your preferences. You ALWAYS want to make a backup in case you've screwed up somewhere. In that case, you can rename the backup file's extension, BAK, to NES. To change Preferences, click on Options from the menu bar, then Preferences. Click on the General Tab and make sure there is a check in "Prompt for backup (*.BAK) when saving files".

Anyhow, that's it!!! You're done!!! Now you know the Japanese games like FF 2 and FF 3 are translated (though there's much more to it than that), and now you know how Tecmo Bowl 97 was possible, as well as some of my other infamous text hacks like my title screen and/or ending for Super KKK Bros. =) If you have any questions or can help me explain this document, please let me know by dropping me a line at [email protected] Enjoy, and feel to distribute this document, in any form, to anyone, so long as my name remains on it and credit is given unto me. Not unless you want to be hunted down by a gang of huge black boxers to pound your ass into a bloody pulp. Take it easy, happy hacking, and do some quality work, for the sake of the scene!!!!!


CONTACT ME