Short: NES Game Genie code Decoder/Encoder Author: Chris Covell (ccovell@direct.ca) Uploader: Chris Covell Type: misc/emu Replaces: misc/emu/AmiGenie.lha Architecture: m68k-amigaos This is a program which will convert NES Game Genie codes to CPU addresses and vice-versa. It can be used to change game values for cheating in emulators, as well as for making your own custom Game Genie codes for a real NES. For those of you who weren't into the Nintendo Entertainment System in the late '80s and early '90s, the Game Genie was a device that let you cheat in games by modifying values of a game program plugged into your NES. With this, you could get infinite lives, invincibility, mega-jumps, level codes, and other weird effects. Unfortunately, the code system was a little complicated, as it didn't allow you explicitly to modify chosen CPU addresses with explicit values. Usually, I would just pick words at random and see if they did cool things. What this program will do is tell you, after you enter in a GG code, what ROM and CPU address the code modifies, as well as tell you the value of this modi- fication. You can also give a ROM address and a value, and it will spit out a Game Genie code for you to try out on a real Game Genie. To start the program, just double-click on the GG.exe icon (you can't miss it!) GG.exe will also work perfectly fine if started from CLI. You will be asked whether you want to decode or encode a GG code. First, try out decoding a code by entering it in when it asks you. If you have used a GG in the past, you will know that some GG codes are 6 characters long, while most are 8 long. The differences between the two will be explained further down. Just enter a code that you know for now. I'll enter "ZELGYU", which is the code to start you on level 10 in Bomberman. GG.exe will show you three values. The code value is the easiest to understand. It tells you what value will be placed in the given RAM location. With the code I just entered, the code value will read 'A'. This is hexadecimal (learn it before you do ANY NES hacking!!!) for the number 10. 10 = start on level 10, get it? Next, GG.exe gives you two other values, the ROM address and the CPU address. These numbers represent the location in memory that the code affects. The CPU address will be most useful for people using emulators. In some emulators, you can change the value of a certain memory location while the game is running. The ROM address is the address that the game value is stored in the game ROM, but be warned that with the larger games that use mappers, this ROM address could be one of several locations depending on which location to which the map- per is pointing. But, if you know your stuff, you could potentially use a hex editor on a game ROM, and modify the location, so that you could have a game cheat permanently stored in ROM! Note that the CPU address is the ROM address with 8000h added to it. If you enter an 8-character GG code into GG.exe, you will be presented with an extra value, called the compared value. What this is, is a value that the Game Genie will search for in the given memory location. When the value of that location is the same as the compared value, the GG puts the code value in its place. This means that it will maintain a code value in a memory location for the whole time that you're playing the game, instead of just setting it to the code value at the beginning of the game. Say, for example, I put in "AANAOZGE" into GG.exe. This is a code for MegaMan 2 (a great game!!) that gives you mega jumping ability. What GG.exe gives you is a compared value of 4, and a code value of 8. The ROM address is 'A71', which stores the height of your jumps. So, since your jumping power will always be 8 because of the GG code, you can now jump twice as high. The Game Genie maintains this as your jumping height throughout the entire game. That's how it works. Now, onto the fun part, the encoding of GG codes. When you start up GG.exe and choose to encode a GG code, you will be asked whether you want a compare value. As above, you need a compare value for many games, to keep the GG cheat in mem- ory at all times. But of course, try experimenting codes with and without the compare value. For this part of the program to be useful, you have to know a memory value of a game that you want to modify beforehand. It's always useful to use a code that you already know. Let's modify the MegaMan 2 code to make your character jump four times as high, shall we? This code will put in a val- ue of 16 in place of 4, so we'll put in '4' as the compare value, and '10' as the code value. Please note again, that all these numbers are in hexadecimal, so the '10' which I put in is 10h, or 16 in decimal notation. After we do this, GG.exe will ask for the ROM address. If you are getting the CPU address from your emulator, remember to subtract 8000h, or 32768 in decimal, from the ad- dress before entering it as the ROM address into GG.exe. The ROM address that we got from "AANAOZGE" was 'A71', so we'll put that into the address to be enc- oded. What pops out is "APNAOZGA", a perfectly functional Game Genie code! I hope you enjoy this program. It certainly takes out all the guesswork and drudgery of making your own GG codes. Look in the file "CoolCodes.txt" for some cool GG codes that I've found. E-mail me if you like my program! GG.exe is, by the way, freeware, so you can give it to anybody that you like, but please do not charge any money for it. I've included the source code for the program, so you can recompile it to any platform that you want. Be sure to credit me as the original author of the program, please. Special 'thanks' to: Benzene (demu@wspice.com) for the GG format description. Nintendo. LOOOVE the system! Hate the company!! Codemasters, Camerica, and Galoob, for making the Game Genie, and for sticking it to the big 'N'! Other things of mine which you should check out are: pix/anim/AmiBanner.lha ;An animating GIF banner that supports Amiga. pix/boot/Win95BURN.lha ;My Windows'95 trasher. Burn, baby burn!!! pix/boot/Win95BURN.jpg ;A JPEG version of that pic. pix/boot/WinBURN24.lha ;A 24-bit IFF version of that pic. pix/wb/BeBoxWBs.lha ;Some pics of my WB using the BeIcons. pix/wb/JapanWB.lha ;A Japanese Workbench. ;-) pix/wb/HAMBrowse.lha ;A Pic showing how to browse the WWW in HAM! pix/icon/BeIcons_2.lha ;A set of NewIcons in the BeOS style! (and more!) pix/trace/SidMan*.lha ;Concept Render of a SID-Playing Walkman. pix/trace/SidManLCD.lha ;LCD texture from the SID walkman. gfx/aga/HUGEBench.lha ;Some monitor settings for a HUGE Workbench! text/font/C-64Font.lha ;A Commodore-64 font with European accents. misc/emu/Snd2Mid.lha ;Converts NES PSG songs to MIDI!! And of course, my webpage at http://mypage.direct.ca/c/ccovell/ It has lots of stuff that you might enjoy exploring. See ya!