Paleta kolorów karty graficznej #CGA to ciekawy przykład kreatywnego rozwiązywania problemów. Otóż, jak zapisać kolor w przestrzeni RGB na czterech bitach?
Na trzech prosto — dajemy po bicie na każdy kanał, i dostajemy osiem kolorów; trzy podstawowe i ich kombinacje: czarny, czerwony, zielony, niebieski, cyjan, różowy, żółty i biały. Co jednak zrobić z czwartym bitem?
Moglibyśmy go dodać do któregoś kanału, ale wówczas dostalibyśmy dosyć niesymetryczną paletę — np. RGB211 oferuje trzy odcienie czerwieni, zieleni, jakieś fiolety, ale brak pomarańczu.
Zamiast tego, CGA używa przestrzeni #RGBI — bity odpowiadające kolorom podstawowym odpowiadają ⅔ jaskrawości koloru, a czwarty bit dodaje ⅓ "intensywności" do wszystkich kolorów. Tak więc dostajemy 8 "ciemnych" kolorów, jak wymienione wyżej, i 8 "jasnych": czerwony i jasnoczerwony, zielony i jasnozielony, itd.
A dlaczego ⅔ i ⅓, a nie po połowie? Bo gdyby dawać po połowie, to kolor szary by się powtórzył, jako "jasny czarny" i "ciemny biały". A tak dostajemy dwa odcienie szarości.
Na tym jednak pomysłowość się nie kończy. Oryginalnie, ciemny wariant żółtego był "brzydki", jak najwyraźniej uznano. Dlatego też ten jeden kolor obniża jaskrawość zieleni do ⅓, dając kolor brązowy.
Trzeba tu zaznaczyć, że przy większych rozdzielczościach (czyli większych niż 160x100), CGA nie była w stanie w pełni wykorzystać 16 kolorów. Niemniej, ślady tej podstawowej palety widzimy do dziś, chociażby w niektórych implementacjach konsolowych sekwencji kolorów ECMA-48.
https://en.wikipedia.org/wiki/Color_Graphics_Adapter#Color_palette
#retro