just for some reason fceux gives the wrong hex value for 0C
OK I feel compelled to explain this, even though it doesn't really matter.
Feel free to ignore this post if you don't really care.
As I'm sure you know, NES graphics are 2bpp, which means that any one tile can consist of no more than 4 colors. 3 of those colors are drawn normally -- but one ("color 0") is reserved as transparent and is never actually drawn. This allows for transparent sprites so that they don't all have to be box-shaped. It also allows for transparent backgrounds so that sprites can appear behind the nametables.
Therefore, since only 3 colors are drawn, you only need 3 colors per palette. However, the NES provides 4 colors because it's just easier to work with multiples of 4 than it is multiples of 3. The result of this is there are completely worthless
entries in the palette that are never actually used*. $3Fx4, $3Fx8, and $3FxC in the palette are never
rendered on screen*, even though they actually exist on the actual system.* Technically you can get the system to draw them, but it's tricky and complicated and not useful.
be just as useless, except the NES uses it as the overall backdrop color. So it never is rendered as part of a BG or sprite tile -- but is rendered when both BG and sprite pixels are transparent. If you were to layer NES graphics it'd look like this:
Foreground sprite pixels <- drawn on top
Nametable pixels <- drawn if no foreground pixel or if that pixel is transparent
Background sprite pixels <- drawn if NT pixel is transparent
Color $3Fx0 <- drawn if all of the above are transparent
To make matters even more confusing, $3F00 and $3F10 are mirrored. There is only 1 backdrop color, even though there are two entries in the palette. So $3F00 and $3F10 are both the same palette entry. Effectively, whichever one the game writes to last
is the one that changes the backdrop color.
This is probably why SMB3 uses $FF for color 0. When it sets those palettes in the PPU, it probably skips the $FF entries so it doesn't overwrite the backdrop color by accident. Since the game probably would want the backdrop color set by the NT palettes, not the sprite palettes.
So how does FCEUX fit in with all of this? Well it draws the palettes incorrectly sort of. Because it uses the backdrop color ($3F00) for all
the $3Fx4, $3Fx8, and $3FxC entries in the palette, even though those entries may contain something different.
So why does it do that? Because those colors are never visible, so showing them "properly" would be confusing for most people. Let's imagine for a moment a game has $0F black for the backdrop color ($3F00), but puts red in $3F04 for some reason. And let's say that red appears nowhere else in the palette. Now, if the PPU viewer showed red in the palette, and red in the NT view, and red in the pattern table view -- that would be really confusing and misleading because you would never
see red in the actual game.
Long-winded explanation over. So yeah -- forget about the transparent color.