Game Genie
The Game Genie is a video game peripheral designed by Codemasters and first sold by Galoob in 1990. It allows you to make slight variations to the ROM of a video game by entering in various codes. Codes could be read from the included code book, or you could attempt to generate your own codes. These codes directly altered areas of the game's programming and usually resulted in changes that could have a large affect on the game. For example, there were many codes for unlimited lives, keep a power-up, higher jumps, start on the final level, and so on. Game Genie devices were released for the NES, SNES, Game Boy, Genesis, and Game Gear.
Contents
Personal
My brother either borrowed a Game Genie from a friend or bought one, because I remember having one in our NES for quite some time. I loved the gold metallic paint which matched the color of The Legend of Zelda cart. We purposely broke the handle off of ours because the Game Genie had an interesting side effect of making the NES much less likely to glitch, and even if we didn't want to cheat, we could skip entering a code.
I spent a fair amount of time trying to make up custom codes. I did this by randomly entering codes into the Game Genie before the game started, writing down the codes I had entered, and then seeing if they made any differences to the game. Anyone who understands how the Game Genie works would realize how terrible a method this is for discovering good codes, but I did find a few interesting codes.
In the early 2000s, I found out that you could enter Game Genie codes into NES emulators, and I spent some time trying to figure out how they work. I eventually figured out what was going on in the ROM, and started making my own codes, and later created a web site for hacking games, though, I now use hex codes through emulators rather than the encoded Game Genie values.
How it works
A Game Genie's only function is to change a byte in a game's ROM from one value to another. Each code entered changes one byte, so, since the NES Game Genie can use up to three codes, it can change up to three bytes in a game's ROM. A Game Genie can't directly change the byte in the ROM (because it is read-only memory), instead, it monitors when the console tries to access one of the affected addresses and, gives it a specified replacement value instead correct value from the ROM. It's able to do this because it sits between the console and the cartridge.
For example, when the game Super Mario Bros. starts up, it reads from many different ROM address including 36,970. This address contains the value 2, and is the number of lives a player starts with. By entering a specific code, you can have the Game Genie give the console a different value, like 99.
Game Genie codes are purposely encoded to look confusing, but they really just contain two or three numbers: a ROM address, a replacement value, and, sometimes, an optional compare value. When decoded into human-readable values, a Game Genie code might look something like this:
- ROM Address: 36,970
- Replacement Value: 99
- Compare Value: 2
These numbers are equivalent to the Game Genie code: ZTVOZAZA, which, when used in Super Mario Bros., causes the player to start with 99 lives.
The compare value isn't necessary for NES codes, but, for games which use bank switching (which is the majority of them), it makes the Game Genie code far less likely to affect other areas of the game and cause undesirable results.
Finding new Game Genie codes without having to resort to random code and hoping for the best, requires being able to monitor how a game utilizes its memory and tracing the code as it runs on the console. When the Game Genie was first being produced, this was very difficult, but, with modern emulators, it has become much easier.
Media
Photos
Documentation
Screenshots
Fan Art
Videos
Links
- gamegenie.com/cheats/gamegenie/index.html - Huge online code database.