So I mentioned this briefly in
my other thread, but I thought it might be good to put it here too and maybe answer a few questions for people who want to do this stuff for themselves.
Lesson 1: Hardware LimitationsFirst, if you're going for accuracy you need to know how the NES actually handles graphics. If you don't care about accuracy... well, at least you should know what limitations you're breaking so you know why it doesn't look quite right, or have some idea about just how much you're bending things.
The Nes has a very small palette of colors. This one, specifically, though due to the way the colors were coded they would look slightly different depending on your tv so there is no one-and-only true palette that you can absolutely depend on. I just stick with this version.
The way the NES processes graphics is that it places 8x8 pixel blocks into a grid to form the graphic base, then applies color palettes to them in 16x16 pixel blocks. The graphics seem to be 16x16 in size because of this (and in practical terms for MM8BDM they probably should be anyway), but are actually put together from these smaller pieces which can thus be used in multiple places to create a lot of variety with minimal actual data. Incidentally, the lack of color is the reason why the GB titles could get away with so many thin platforms to stand on. It's actually the exact same graphics engine just with a single universal palette (or two for GBC, one for sprites and one for tiles).
The NES only actually uses four 3-color palettes + a background color they all have in common, which is usually (but not always) black. Every 16x16 area has to fit one of these 4 available palettes... though the later games sometimes changed one of the palettes midway through the stage to broaden that range a bit. The sky in Knightman, for example, or the train cars in chargeman. In general though you should try and stick to just 4 per stage. Also, you ever notice that as you walk forwards sometimes in the old games you can see the tiles are all one color then change quickly? that's because they're all being applied with palatte #1 by default until the hardware finishes rendering them fully and assigns the correct 16x16 palette areas.
Sprites also have the same restriction by the way, though because they often use a black outline and white for highlights they often really only have one other color to work with unless you get into sprite layering.
I'll add more to this thread later, but if there are any questions on what's here so far let me know.
Edit:
Actually here, have a homework assignment as well. Look at this tileset from the MM8FC guys and discuss amongst yourselves what is wrong (several things, actually):