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!
Adventures of Dino Riki, The
Location |
Description
|
$0089 |
Current health (energy) value. Range $00 to $04
|
$009D |
Active weapon type: $00 = rock, $01 = axe, $02 = boomerang, $03 = torch. Other values result in glitches and/or game crashing
|
$009E |
Wings status: $00 = player lacks wings, $01 or greater = player has wings
|
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) value. Range $00 to $04
|
- The current health (energy) 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)
Legend of Zelda, The
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
Mega Man 2
Location |
Description
|
$004B |
Invincibility timer value. Range $00 to $FF. See below notes
|
- Invincibility timer: the game core decrements this by 1 fairly quickly (a value of $FF will reach $00 in approximately 4 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)
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