This document was written by: Tony Hedstrom t_hedstrom@yahoo.com This document explains how to make new NES Game Genie codes for different versions of a game. For example, if you have a Game Genie code for Super Mario Bros, and you tried the code on the SMB/Duck Hunt/Track Meet cart and the code didn't work, this document will show you an easy way to make a new code that will work on the 3-in-1 cart. Here are some examples of when this document would be useful: To make new codes for different versions of the same game. For multi-game carts that don't have any GG codes, but there are GG codes for the individual games. For when people make new GG codes for one version of a game but you have a different version of that game. Also, although I have only tried this method on NES games, I see no reason why it shouldn't also work on SNES, GameBoy, Genesis, Game Gear, etc... The only real drawback to this method is that you need to find ROMs for both versions of the game, but once you find them, the rest is pretty easy. Make sure that you use copies of the ROMs so you won't mess up your originals. I'm going to divide this document into 2 seperate parts. The first part will explain the procedure for 6 letter NES Game Genie codes, and the second part will explain the same thing for 8 letter NES GG codes. Here is a list of what you will need: 1) ROMs for both versions of the game (or the ROM for the seperate game, and the ROM for the multi-game). Don't ask me for ROMs because I won't send them. 2) A hex editor (I will be using Hex Workshop v 2.54) You can get a free trial version of Hex Workshop here: http://www.bpsoft.com/ 3) A Game Genie code converter program (that changes GG codes into hex codes). You can get one from my website (in the "Download" section): http://www.angelfire.com/games2/codehut/ ----------------------------------------------------- This section explains the method for 6 letter NES Game Genie codes. NOTE: If you try the method explained below for your 6 letter NES Game Genie code and the new code doesn't work, chances are that you will need to convert the 6 letter GG code into an 8 letter code and use the method described for 8 letter codes instead. You can find out how to convert a 6 letter NES GG code into an 8 letter code by reading my document titled "How to convert a 6 letter GG code into an 8 letter code". You can find it at my website (in the NES section): http://www.angelfire.com/games2/codehut/ Usually, 6 letter NES GG codes that are from the GG code book, don't need to be converted to 8 letter codes, but if you have a 6 letter code that is not from the GG code book (ie. made by someone else), and the game that it's for is larger than 40k in size, then you will probably need to convert it to an 8 letter code and use the instructions for the 8 letter codes instead. For this example, I will be trying to make a new GG code for Super Mario Bros. I made a code for SMB (VGYOKK) that lets you start with 900 seconds (instead of 400). The problem is that the code didn't work on all versions of the game. So I want to make a new code that will work on the version that the other code didn't work on. My GG code worked OK on the version of SMB without a title, but it doesn't work on the version with a title. Here's how: 1) Convert your 6 letter NES Game Genie code into a raw hex code using the GG to hex conversion program described above. For this example, if I convert my GG code into hex, this is what I get: VGYOKK = 1C7C:CE (write the new hex code down.) 2) Open up the ROM (that the code does work on) with a hex editor. In this example, my GG code worked OK on the SMB ROM without a title, so that's the ROM I open first. 3) Delete the 1st row of numbers (the first 16 bytes) from the ROM. (The row you want to remove should start with: 4E 45 53.) (Make sure you do this on a copy, and not on the original ROM.) 4) Now, find the address (that you wrote down earlier) in the ROM file. In this example, it's 1C7C. (The address is the first 4 digits of the hex code.) 5) Starting at that address (1C7C), write down the value for that address and the next 3 or 4 addresses in a row. In this example, the value at the address 1C7C is 8D, and the value at the next address (1C7D) is 15, and the value at the next address (1C7E) is 07, and the value at the next address (1C7F) is C8. Write down all of these values in the same order that they appear in the ROM file. So in this example, it would be: 8D 15 07 C8. 6) Close the ROM file that you currently have open and open the other ROM file with the hex editor. So the ROM that you now have open should be the one that the codes don't work on, or the one that you want to make new codes for. In this example, it's SMB with a title. 7) Remove the first row of numbers just like you did in step 3 above. 8) Using the search feature in the hex editor, search for all of the values that you wrote down before in step 5, making sure that you type them all in, and in the same order. So in this example, I would do a search for: 8D1507C8. Don't include any spaces between the numbers. 9) With any luck, there should only be one match for your search. When you find the match, write down the address of the first value. In this example, I searched for 8D1507C8, so I would want to write down the address for the first value, which is 8D. The address for 8D is: 1E7C. 10) Now all you have to do is replace the old address (1C7C) with the new address (1E7C) and you will have your new code! The original hex code was 1C7C:CE, so our new hex code would be 1E7C:CE. 11) Now, just convert the new hex code into a Game Genie code using the GG to hex conversion program and you're all done. In this example, the new hex code (1E7C:CE) converts into VGYOKV. NOTES: If you get more than one match in step 9, you can either try making a new code for each match and use trial and error to find the right one, or you can try adding more values to the search. If you don't get any matches in step 9, try using only the first 3 values instead of 4 or 5. If you still don't get any matches, then this method probably won't work for that particular game. ---------------------------------------------------- This section explains the method for 8 letter NES Game Genie codes. For this example, I will be trying to make a new GG code for Super Mario Bros. I made a code for SMB (VGNOKKSE) that lets you start with 900 seconds (instead of 400). The problem is that the code didn't work on all versions of the game. So I want to make a new code that will work on the version that the other code didn't work on. My GG code worked OK on the version of SMB without a title, but it doesn't work on the version with a title. Here's how: 1) Convert your 8 letter NES Game Genie code into a raw hex code using the GG to hex conversion program described above. For this example, if I convert my GG code into hex, this is what I get: VGNOKKSE = 1C7C?8D:CE Write the new hex code down. 2) Open up the ROM (that the code does work on) with a hex editor. In this example, my GG code worked OK on the SMB ROM without a title, so that's the ROM I open first. 3) Delete the 1st row of numbers (the first 16 bytes) from the ROM. (The row you want to remove should start with: 4E 45 53.) (Make sure you do this on a copy, and not on the original ROM.) 4) Now, find the address (that you wrote down earlier) in the ROM file. In this example, it's 1C7C. (The address is the first 4 digits of the hex code.) 5) It gets a little tricky here, so pay attention. When you find the address for your hex code, see if the value at that address matches the number in your hex code that is between the "?" and the ":". I hope I didn't lose you there. Let me explain a little more. On most NES games, there are several different address that the GG code can modify, and we have to figure out which address is the right one. Luckily, that's pretty easy to do. There is a value in the hex code (converted GG code) that tells us which address is the right one. That value is called the Check Value (or Compare Value). The Check Value is the number between the question mark, and the colon in the hex code. In this example (1C7C?8D:CE), the number between the "?" and the ":" is 8D, so that's our Check Value. So to find the right address, go to the address given in the hex code (remember, the address is the first 4 digits of the hex code). In this example, the address is 1C7C, so go to 1C7C and see what the value is at that address. In this example, the value at that address is 8D, so we know that we have found the right address. But if the value at the address for your particular ROM is not the same as the compare value in the hex code, then you have to add $8000 (hex) to the address and go to that address and see if the value there matches your check value. Here's an example: If your hex code is 25B7?04:19, your address would be 25B7, and your compare value would be 04. If you checked the address 25B7 and the value there was 23, you would know that this is not the right address because 23 does not match our check value (which is 04) so you would add $8000 (hex) to the original address and then try that new address. $25B7 + $8000 = $A5B7. So the next address to check would be A5B7. If the value at that address is 04, then that is the right address, but if the value is different than 04, then you have to add $8000 again and see if that is the right address. $A5B7 + $8000 = $125B7. So the next address to check would be 125B7. Keep doing this until the values match, then that will be the right address. If you don't know how to add in hex, you can use the Windows (or Mac) calculator to do it for you. You can find the Windows calculator by clicking on: Start/Programs/Accessories/Calculator. 6) Once you find the right address, write down the value there (it should be the same as the Check value) (in our example, it's 8D), then write down the value for the next 3 or 4 addresses in a row. In this example, the value at address 1C7C is 8D, and the value at the next address (1C7D) is 15, and the value at the next address (1C7E) is 07, and the value at the next address (1C7F) is C8. Write down all of these values in the same order that they appear in the ROM file. So in this example, it would be: 8D 15 07 C8. 7) Close the ROM file that you currently have open and open the other ROM file with the hex editor. So the ROM that you now have open should be the one that the codes don't work on, or the one that you want to make new codes for. In this example, it's SMB with a title. 8) Remove the first row of numbers just like you did in step 3 above. 9) Using the search feature in the hex editor, search for all of the values that you wrote down before in step 6, making sure that you type them all in, and in the same order. So in this example, I would do a search for: 8D1507C8. Don't include any spaces between the numbers. 10) With any luck, there should only be one match for your search. When you find the match, write down the address of the first value. In this example, I searched for 8D1507C8, so I would want to write down the address for the first value, which is 8D. The address for 8D is: 1E7C. 11) Now all you have to do is replace the old address (1C7C) with the new address (1E7C) and you will have your new code! The original hex code was 1C7C?8D:CE, so our new hex code would be 1E7C?8D:CE. 12) Now, just convert the new hex code into a Game Genie code using the GG to hex conversion program and you're all done. In this example, the new hex code (1E7C?8D:CE) converts into VGNOKVSE. NOTES: If you get more than one match in step 10, you can either try making a new code for each match and use trial and error to find the right one, or you can try adding more values to the search. If you don't get any matches in step 10, try using only the first 3 values instead of 4 or 5. If you still don't get any matches, then this method probably won't work for that particular game. Well, That's it. I hope this helped some. If you have any questions, feel free to email me at: Tony Hedstrom t_hedstrom@yahoo.com Also, be sure to visit my website at: http://www.angelfire.com/games2/codehut/