Game cheats
Throughout the years I've reverse-engineered a lot of games, as well as Game Genie or Pro Action Replay/Rocky codes, to figure out the internals. In most cases I do this because I don't want have to "grind" -- given enough time, I'd be able to accomplish the task at hand, so why not skip all that nonsense? A good example is gold/currency. I paid my dues sitting in front of a TV for hours as a kid, so I think I've earned the right. :-)
Anyway, I wanted to make a list of games and memory locations locations of such things. I tend to focus on just zero page/RAM data and not stuff in ROM, but technically any memory location can be used (the tricky part with NES games is being precise about which PRG page has the cheat applied to it -- that's one of the reasons many emulators have a "Compare" field alongside "Location" and "Value"!).
All below games are assumed to be the NTSC versions. I'll try to denote differences between game versions (e.g. PRG0 vs. PRG1) if it applies.
1943 - The Battle of Midway
Location |
Description
|
$0410 |
Current energy, ones place. Range $00 to $09
|
$0411 |
Current energy, tenths place. Range $00 to $09
|
$0412 |
Current energy, hundredths place. Range $00 to $09
|
- For infinite energy, setting $0410, $0411, and $0412 all to $09 is needed -- just $0412 by itself is insufficient: you CAN die in some situations!
Code Name: Viper
Location |
Description
|
$06E0 |
Handgun bullet count. Range $00 to $80
|
$06E2 |
Machine gun bullet count. Range $00 to $80
|
$06F8 |
Current health (energy points) value. Range $00 to $04
|
- Current health (energy points) value can exceed the number of health containers (ex. if health container count is 2 and $06F8 = $04, then player will actually have 4 health)
River City Ransom
Location |
Description
|
$04C7 |
Player 1 money, cents value. BCD encoded. Range $00 to $99
|
$04C8 |
Player 1 money, dollars value. BCD encoded. Range $00 to $99
|
$04C9 |
Player 1 money, 100-dollars value. BCD encoded. Range $00 to $09
|
- Money example: for player 1 to have $367.49, you'd need $04C7 = $49, $04C8 = $67, $04C9 = $03
Zelda 1 (The Legend of Zelda)
Location |
Description
|
$04F0 |
Invincibility timer value. Range $00 to $FF. See below notes
|
$0658 |
Current bombs. Range $00 to $10, though game core will work with values up to $FF
|
$066D |
Current rupies. Range $00 to FF
|
$066E |
Current keys. Range $00 to $09, but game core will work with values up to $FF
|
- Invincibility timer: the game core decrements this by 1 fairly quickly (a value of $FF will reach $00 in approximately 8 seconds). For "visually accurate" permanent invincibility, use a value $FF with a compare value of $00 (i.e. timer resets to $FF once reaching $00)
- Details of how the bomb/rupie/key printing code works