NES Hacking

This page is dedicated to hacking games for the NES by altering the ROM data of games or the memory of the NES.

FCE Ultra Debugger

 

The FCE Ultra NES emulator has a powerful debugger which is especially helpful in hacking NES games. It allows you to view exactly how the NES runs through the game's code, you can check how it pages the memory, you can even step through each line of code as it is processed. Also with the memory viewer you can hack the game as it's running!

Using the debugger and the memory viewer you can figure out the internal workings of the game and hack it to get what you want out of it. If you want to start hacking NES games, the debugger is a very useful tool that you should become familiar with. I'll write a basic tutorial for hacking soon, but for now I just wanted a place to put my hacking notes for various games.

Some of these notes give ROM offsets which can be used for altering the ROM itself. Some of them contain memory information which are helpful for decompiling to source.

NES NTSC Color Palette

This is the NES NTSC color palette using the same algorithm used for displaying NTSC colors, so it should look identical to what you would see on an NTSC television. You'll notice that the NES palette is actually quite terrible as far as game palettes go. The visible color merges are blocky and uneven, there isn't a good yellow, the grayscale is terrible, and there are ten color entries used for black.

Download the Palette
Plain Text
Corel PhotoPaint/Draw X3*

* Note, because Corel doesn't allow multiple palette entries with identical color values, the multiple shades of black are slightly different, yet still unnoticeable.

Game Notes

Abadox: The Deadly Inner War

Text Table
Memory Offsets

Bad Dudes

Text Table
Memory Offsets

Bionic Commando

Text Table
The Bionic Commander Editor Program

Blaster Master

Text Table
Memory Offsets

City Connection

Memory Offsets

Contra

Text Table
Memory Offsets

Gauntlet

Text Table
Memory Offsets

Goonies

Text Table
Memory Offsets

Guerrilla War

Memory Offsets

Gun.Smoke

Text Table
Memory Offsets

Kid Icarus

Text Table
Memory Offsets

Life Force

Text Table
Memory Offsets

Little Nemo: The Dream Master

Text Table
Memory Offsets

Mad City

ROM and Memory Offsets

Marble Madness

Text Table
Memory Offsets

Mega Man

Text Table
Memory Offsets

Mike Tyson's Punch-Out!!

Memory Offsets

Rampage

Text Table
Memory Offsets

Salamander

Memory Offsets

Section Z

Text Table
ROM and Memory Offsets

Soccer

Text Table
ROM Offsets

Spy Hunter

Text Table
ROM Offsets

Super C

Text Table
ROM and Memory Offsets

More Weapons

The flame thrower has a special ability where you can hold down the fire button for a second and then let go to release a huge fireball that breaks into eight flames instead of four. The cheat codes below will let use use special aspects of the flame thrower. The first one is a mini flame thrower that only shoots out about a third of the width of the screen. What it appears to be is one of the mini fireballs that the normal flame thrower explodes into. It's kind of cool with a turbo controller, you basically create a powerful laser of flames in front of you. The second cheat gives to the big charged fireball constantly. It starts out as a machinegun bullet, increases into a normal flame thrower ball, then then two thirds across the screen it becomes a huge fireball that explodes into eight mini fireballs upon impact. It also goes right through enemies like a laser and is extremely powerful. It can destroy most turrets in a single hit, and bosses are rapidly annihilated. You can even keep enemies at bay by merely firing at the ground and creating a circle of flames all around you.

To make things easy here are the cheat codes to get them. Open up FCE Ultra, load Super C, and go to the "NES" menu option and click "Cheats". Over on the cheats column and enter one of the following cheats:

Name: Keep Mini Flame Thrower P1, Address: 00B8, Value: 134 Compare: 134.
Name: Keep Super Flame Thrower P1, Address: 00B8, Value: 133, Compare: 133.

Then click "Add". This will make it so you always have the weapon specified (with rapid fire) even when you die or pick up a different weapon. If you want this to work for player 2, just change the address to 00B9. Check out the pictures below to see what the weapons look like.

Teenage Mutant Ninja Turtles II: The Arcade Game

Text Table
ROM Offsets

Tetris

Text Table
ROM Offsets

Tiger-Heli

ROM Offsets

Top Gun

Text Table
ROM Offsets

Ultima: Exodus

Text Table and Dungeon Table
ROM Offsets

Links

nesdev.parodius.com - Tons of NES hacking links.
romhacking.net - A large ROM hacking site for several different platforms.
games.technoplaza.net/ggencoder/java/applet - A very useful Game Genie to Hex encoder and decoder.
elazulspad.net/matrixz - Matrixz' page. Lots of NES hacking stuff.<