Long ago there were computers with limited, hard-wired color palettes. The older BBC Micro had only 8 colors, whilst the NES could pick colors from a larger palette (though individual sprites could only use 3 or 4 colors). 16 colors is a good palette size because it's half a byte (4 bits) and thus suitable for a chunky/nibble mode. 8 and 32 colors likely need to be bitplaned.
Generally, early palettes were just a result of simple circuit design, full blast on red, green and blue signals, sometimes halved by a resistor or something. RAMDACs which could control colors came later. Computers were also made to display text in readable colors, but many ended up being used a lot for gaming instead and the palettes worked poorly for that. The C64 is a bit of an exception with its more muted 16 color palette, which I heard was deliberately designed. Unsure about the video chip used in e.g. MSX.
The C64 palette is nice but still bothered me a bit, so back in 2007 I decided to do my own 16 color palette. After some great input from the guys over at the Pixelation forums, I eventually arrived at this current version, 20:
Now a summary of the reasoning behind my color choices. Why so many darks? I like games with black backgrounds that don't interfere with the foreground characters, but it would be nice to be able to paint in some details, and I wanted both cold and warm choices here. Where's the light skin tone? I had a plain pink-ish skintone in the early version, but ended up having to merge it with the yellow. Yellow can be used as a stand-in and will come off as more pink with pink shading. There's no mid blue? I opted for a sky blue and ocean blue instead, because I thought they'd be more useful in games. No purple? This is not a text console palette, and I think purple is a somewhat obnoxious color which is too exotic to warrant a place here.
' Arne Palette v20 Function FUseColor(i) Select i Case 0 SetColor 0, 0, 0 Case 1 SetColor 157, 157, 157 Case 2 SetColor 255, 255, 255 Case 3 SetColor 190, 38, 51 Case 4 SetColor 224, 111, 139 Case 5 SetColor 73, 60, 43 Case 6 SetColor 164, 100, 34 Case 7 SetColor 235, 137, 49 Case 8 SetColor 247, 226, 107 Case 9 SetColor 47, 72, 78 Case 10 SetColor 68, 137, 26 Case 11 SetColor 163, 206, 39 Case 12 SetColor 27, 38, 50 Case 13 SetColor 0, 87, 132 Case 14 SetColor 49, 162, 242 Case 15 SetColor 178, 220, 239 Default SetColor 255, 0, 255 ' Out of bounds, Magenta. End Select End Function
0 - color:#000000; 1 - color:#9D9D9D; 2 - color:#FFFFFF; 3 - color:#BE2633; 4 - color:#E06F8B; 5 - color:#493C2B; 6 - color:#A46422; 7 - color:#EB8931; 8 - color:#F7E26B; 9 - color:#2F484E; 10 - color:#44891A; 11 - color:#A3CE27; 12 - color:#1B2632; 13 - color:#005784; 14 - color:#31A2F2; 15 - color:#B2DCEF;
16pal_v20.act - Photoshop can load this file, but it's just 772 bytes of raw data. According to myself a the point of writing this, the format is 256 colors * 3 R,G,B bytes = 768 + three bytes ending the file, 16, 255, 255, where 16 is the amount of colors actually used (the rest are zeroed).
I might be mistaken, but this palette seems to have been used quite widely. I had never really thought a palette could be popular like that. Feel free to use it, and modify like I've seen some people do. Personally I've grown a bit bored with this 16 color palette, but I did use it recently for an Amiga AMOS project that I might post at some point.
Below are some other palettes that I've done, but there might be more on my other hardware / Amiga / Famicube pages, etc. Note that these palettes are not final. I need to check them on different monitors as I'm unsure about my calibration. The Famicube palette was made on Gamma 1.8 and 2.0 so I need to lighten it up a tiny bit (Might be done at version 10 or so). My blues may be a bit miscalibrated overall as well.
I've added 16 more colors, filling in some of the gaps, but it's very rough atm. Did a few mockups to try the colors out. I could probably do a better 32 color palette from scratch so I might abandon this project.
I sort of like the Armstrad CPC palette, but it's a bit too in my face with saturation madness. How does it look desaturated? Well, Photoshop changes the values a bit when desaturating, but I went in and did some manual tweaking. Only 27 entries, so I added a A Gameboy screen gradient at the end. Unsure about ordering. Version is at 3 or 4 now.
There was some activity over at the pixeljoint forums (I'm not registered though) to do a 16 color palette with character. I took this to mean that the palette should have a heavy focus on some colors, and less on others. This palette is made for Eroge games and cold-warm ramp games like Xenon II, Killing Gameshow, Paradroid 90. Because of the Eroge focus, I've included two warm / skin tone ramps. The green should ramp into the dark teal.
Another cold-warm ramp palette, more focused on tech. RGB extras.
Psygnosis often used palettes in the muddy range (It was often the copper skies which added a touch of color). This particular one was inspired by the game Ork. I meant to program the game ("Deathmask") for Amiga but couldn't come up with good tile scroller code.
This started as an edit of a Windows 3.1 screenshot, but once I used the palette on screenshots I had to make major revisions because I had optimised it for icons. I tried judge the intent behind the color an artist used in a game, and then give that color retroactively. Obviously, with these new tweaked colors, artists would often make different choices than they do with the original palette.
It's almost a crime to touch the C64 and MSX palettes, but I had to do it just to have them here. I see mine as parallel universe versions, and if I'm gonna change something, I'm gonna make them my own and not tip-toe around. I'm not sure if I'm going in the right direction here though.
When people get really dithery in their pieces, it can be an indication that they didn't find the right colors in the palette, and C64 pieces are indeed often very dither-wanky, even in the areas which are supposed to be flat. I think the C64 palette has a good reputation because it's almost the only one that isn't neon colors. I don't care much for the gray "bridge" colors ("None of the colors are what I need so I'm gonna dither-wank with the grays") so I had some fun changing those. I might have ended up nudging the colors too far towards my usual color tones overall, but I don't think I completely killed the character of the palette.
I decided to be a little crazy with the non-white, because people seemed to have a lot of problem approaching a full white, and it adds some character to my version. I tried to preserve the lime yellow and gray teal somewhat, but couldn't tolerate the original light green.
I wanted to do the MSX palette because it has some character. I suppose there aren't any "official" RGB colors for it though. Working with the MSX sprite restrictions is quite an interesting challenge / puzzle. Each 8px line of a tile can only have two colors out of the 16 (which includes a transparent first index). The restrictions dictate how the characters are formed, so good animation is an even bigger puzzle than static poses!
The girl-portrait does not follow restrictions. Also, only the background tiles can have multiple colors, apparently the sprites are solid. Castle Excellent got around this by using BG tiles for movable characters, and I think some overlay sprites for skintones.
Did a Sonic mockup just for fun.
As I understand it, older displays, like CRTs, need analog signals. This means that the palette RGB values have to be converted with a DAC (Digital to Analog Converter). A DAC with a lower resolution is likely cheaper, so I wanted to see how low one can go without destroying the palette. Here I'm trying out 8 bits total, which means one channel only gets 2 bits. Truncating the values required an unexpected amount of footwork (code). It's possible to just hand-pick each colour too of course. I think 4 bits per channel (12 total) is as low as I'd like to go.