Story of Famicom’s colors
In 1982, Masayuki Uemura needed to design the system of the Nintendo’s new console. Called the Family Computer (Famicom) in Japan or NES for US and Europe. During the development of the Famicom console, Masayuki Uemura was looking to find solutions to minimize the console’s price, which is the cause of the color’s limitation. The space for settings are expansive, and each color also. The tasks was to make a selection of different colors that the console can show on a TV-screen.
He decide to ask an artist (who was working already for Nintendo) to choose the colors. This task was hard and maybe an artist could find better solutions for this colors selection nightmare.
This artist was Shigeru Miyamoto (creator of Donkey kong, Mario bros, Zelda…). It was complicated for him to set the full palette and to choose the number of colors. Enough color to make something nice but not a lot to avoid the high price of production. Each decision about a color will influence Game’s apparences on this console. At the end, they decide to make 56 different colors. You can say “Only 56! ” but in 1982, it was an amazing evolution for a 8-bit console. And now, we need to work with it! So if you have some complaint, write to Shigeru Miyamoto hehe!
If you want to read more about the development of the Famicom, I advise you to read the excellent serie of The History Of Nintendo by Florent Gorges, Omake books edition. The famicom is in the 3rd Vol. (only in french for the moment).
Here’s the Famicom / NES color Palette
You can see a lot of blue colors. Shigeru Miyamoto wanted many types of blues to help Developers when they will need to make different blues values for skies and water.
We have a lot of Blues but only 1 Red. The color choice of Shigeru Miyamoto influence a lot of creations. The most famous example is Mega-Man. At Capcom Company, Akira Kitamura decide to change the original color of his Mega-Man (Rockman in Japan). He change the original color from red to blue, to make him look different from various background elements. With many Blues, we can still see the main character even if the BG needs to use some other blue colors.
Between TV, emulator or type of console, the color can be a little bit different. It’s always good to remember this. It will be necessary for a game to be checked on different systems. You can be surprise by color smashing… with an NES French pal tv, it’s a disaster.
You can find different type of color palettes online.I always use different tools to see how it looks and correct it afterwards.
this palette is numbered in a hexadecimal way. This is the hexadecimal system:
Binary is : 0, 1.
Decimal is 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Hexadecimal is : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
In hexadecimal, the value A is in decimal … 10
the value hexadecimal E is in decimal 14
And the value hexadecimal 14 is in decimal 20
If you still understand, you are really good ^^
It’s a little bit complicated, but for the moment we don’t need to use it.
Now you can see the palette of 56 colors with hexadecimal values
The color 1D is particular, it’s a dark grey and people don’t use it because there is not a big difference with the black on TV. At the end, we have 55 colors
The Famicom/NES uses 4palettes for BG and 4palettes for Sprites
Each palette is compose of 4color but.. the 4th color is special.
The 4th color is the BG color, for a sprite this color is transparent, for the BG this color is the same for each palette.
If i choose pure black (0F), the 8 palettes will look like this:
The 0F will be transparent for Sprites. The 3 others colors 17, 28, 39 will be use for the sprite.
The 0F will be a color for the Background. Each background palette will use it. It is important to carefully choose this 4th color. In another part, i will explain how to choose this color. It’s depend on the project and type of game.
You can see the number of colors are in hexadecimal. In Assembler ASM6502, to set palette, you need to write the values in a variable.
Only to show you a part of the code:
PaletteData: .db $0F,$17,$28,$39,$0F,$35,$36,$37,$0F,$39,$3A,$3B,$0F,$3D,$3E,$0F ;background palette data .db $0F,$1C,$15,$14,$0F,$02,$38,$3C,$0F,$1C,$15,$14,$0F,$02,$38,$3C ;sprite palette data
But we won’t use this yet, it’s just to make you understand how it’s working. Later, it will come in a post only about Assembly.. or many posts maybe ^^
If you have interest for ASM 6502, go directly to the Nerdy Nights.
If you just want to see more ASM code for color go to the Nerdy Nights week 4.
Thanks for reading, and sorry for my bad english writing