In computers, colors are stored as 3 byte RGB values. However, the NES cannot not store each pixel as its full 3 byte color value. The pictures would take up WAY too much data.
For context, all of SMB1 takes up 40,976 bytes. In the entire game, 31,488 sprite pixels are stored, which would take up 231% of the game's entire data... We need a form of compression.
One method is just to limit the amount of colors. The NES actually limits itself to just 60 colors, instead of the 16,777,216 that computers today use.
This brings down the number of bytes used to 31,488. But this is still 77% of the game’s capacity used.
Another way to limit each picture to only 3 colors, and then store which colors are used as a palette. This is a technique called paletting And this is the strategy NES game developers used.
This brings down our number of bytes used to 7,872, or just 19% of the game’s capacity used. Much better!
We break down these 3-color images into chunks of 8 × 8 pixels called sprites. Sprites can be combined to create meta sprites.
A sprite stores each pixel with 2 bits, and a row of pixels with 2 bytes. Since there are 8 rows, each sprite takes up 16 bytes.
The FCEUX PPU viewer lists each of the palettes and sprites that are currently loaded. Use this to find the value of a palette.
Search for this palette value in Gold Finger and edit it to your new desired palette.
Tile Layer Pro is a hex editor, similar to Gold Finger, except it displays colors instead of hex values.
TLP is very nice because it lets you open multiple NES ROM files and you can click and drag a sprite from one file into another file. You can use this to edit a sprite in the game.