Changing a NES Game's Text for Beginners |
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 complex ROM hacking procedures, and who has brought you such hacks as Tecmo Bowl 97 and Dragon Warrior XXX (text anyhow), comes this new document on how to change the text in a NES ROM. No, I'm not talking about changing the way the text looks, either. That is just a matter of changing the sprite tables. 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. For example, instead of people trying to get their title screen to have "FUCK" in it by just changing the a D to look like an F, and then things like "ANF" show up in the game instead of "AND" and other things of the like that I've seen in so many ROM hacks. 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. Procure a copy of Hexposure from my Hacker's Guide in the Utilities section. Download it and extract the zip file into the same directory that your ROM is in which you will be editing. While you're at it, grab a copy of my default table file and throw it in the same directory. This will make things even easier than this wonderful program has made it already. You see, Hexposure is a standard Hex Editor, but with the ability to let you replace standard hexadecimal tables and corresponding asci characters - with those of your own. What does this mean? This means you tell the program how to make the characters of the file you are editing look like you want them to. How is this handy in changing a game's text? A ROM's text is encrypted in it's hex coding! But you don't need to even learn hexadecimal through this process at all if you use my default table file from above. If you don't use my default file then please read the program's README about how to create your own files. Moving right along...once you have a copy of the default table file, the ROM you want to edit, and the latest version of Hexposure - the process is simple!!! Hopefully you have multi-tasking capabilities - it makes things easier. First, make a copy of the default table file (default.tbl) that I have nicely provided and rename it to match the name of the ROM (keep the .tbl extension tagged on the end). If your ROM was smb1.nes, you'd want to copy default.tbl and rename it smb1.tbl. This is so that Hexposure will instantly load the smb1.tbl file anytime you load smb1.nes with it. Load the ROM up in NESticle and use the menu bar to view the Pattern Tables. Get to a point in the game where you can see the section of the pattern tables that the text is located at. Here's where the beef of the stuff comes in. For each character of text (numbers, letters, symbols, etc.) - use the mouse to click on the tile and determine the 2 digit hex code for each. This will be shown at the top of the new window that pops up when you click on the tile. Remember this number, and switch back over to Windows. Open up your table file (<romname>.tbl) in Notepad and scroll down through the file to find the line that has the same 2 digits as the ones you just viewed in NESticle. On that line, replace the existing . with that character. For example, in SMB1 - if you click on 9 you will see 09 at the top of the window as the hex value. So in Notepad, when looking at your table file - you would find the line that starts with 09 and replace the . with 9. This tells Hexposure that a 09 in the hex coding is a 9 when you look at it. The reason for all the .'s is so that when you look at the ROM in Hexposure, you will see nothing that you don't already want to see - characters that you are NOT working with will only be .'s =). Repeat this process for each and every character/letter/number you plan to work with in the ROM. Now you are ready to get down to business. Save your table file and exit both Notepad and NESticle. Run Hexposure and highlight the name of the NES file you want to edit. Press enter to load it into the editor interface and you will be set! If you created a table file (*.tbl) with the same name as the ROM then you won't have to take the extra step of pressing F6 to bring up the prompt and type in the name of the table file you want to load. Now, just scroll through the hex coding with the PageDown key and look to the right column for familiar English text. Can you guess what comes next??? Highlight the character or letter that you want to change by using the left and right arrow keys, then press the Tab key. This is important because, by default, if you try to start typing - it will assume you want to change the hex coding in the middle column and not the ascii text representation. Once you pressed Tab, use your keyboard like you're in typing class and replace all the existing text with whatever you want!!! And no, you only have to press Tab that first time to set the MAIN cursor in the right column. When you are done, press F5 to save your work and Esc to exit! Next, for the most important information - unless you know how to add space to a ROM you must remember not to replace the original text with a string of text that is LONGER. This will screw up the ROM's coding and it will not load properly. For example, if you have an 8 letter word for an item - the new name for it can't be more than 8 letters unless you know how to add space to a ROM (and don't ask me how because I don't know, completely...I know a method that works on *some* ROMs but not all). This is an important rule and must be followed. Another rule I will mention - most people who read this document and realize how easy this process is - instantly want to jump to translating Japanese games thinking it will be the same. It's NOT, at least not ALWAYS. Your best bet is to stick with simple games and just make the text funny. Why is this? Most Japanese games (especially RPG's) have the text characters compressed or encrypted format that will not be recognizable by using the method mentioned here. The hex values for this compressed font format are different from the actual values that correspond to the character's location in the pattern tables. This means that the value NESticle returns in its pattern table editor is the hex location of the character within the tiles. But the hex VALUE of the character is most likely totally different. Also, if you are wanting to translate Japanese games - you must realize that you have to actually change the appearance of the Japanese characters to resemble US letters before you try translating. Some people mistakenly think they will find US letters in a Japanese ROM. This just means you'll have to use X-Late or Font Mania though (since NESticle doesn't support pure ROM hacking only VROM hacking), and spend a little time doing graphic hacking. If you ARE interested in translating ROMs like this - first at least try this method to see what you can do. As I said, not *ALL* Japanese games or RPG's use this special compression but most of the more popular ones DO. If the method mentioned in this document doesn't work though, visit Demi's site for other information, links, and a message board to post your questions at. Try to get information from experienced translators so that you can learn like I need to about how to crack this annoying extra of Japanese text. Just follow this link HERE to take a shot. Anyhow, that's it!!! You're done!!! If you have any questions or can help me explain this document, please let me know by dropping me a line at jasonl@ipa.net 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!!!!! |