Drobne uwagi o kolorach by Kaz 2008-08-12 03:22:39

Nie, to jeszcze nie kolejny odcinek warsztatów o Graph2Font. Za to rzecz związana z tematem, choć zupełnie drobna, dla wielu oczywista i niegodna zauważenia. Zaawansowani Atarowcy mogą sobie odpuścić czytanie, rzecz bowiem o kolorach Atari na... pececie. Kilkukrotnie otrzymałem zapytanie: jakiej palety używać pod emulatorem i w G2F, skoro jest ich tyle do wyboru, rysunki w G2F wyglądają „inaczej” niż pod emulatorem Atari, a programy na emulatorze wyglądają inaczej niż na prawdziwym Atari...

Dawno, dawno temu, gdy pisałem konwerter grafiki małego Atari na ST/STE potrzebowałem stworzyć tablicę, która zawierałaby dane, jak tłumaczyć kolory z malucha na odpowiadające im wartości w skali RGB, która była używana na dużym Atari. Nie mając pojęcia o teorii modelowania kolorów zrobiłem to sposobem domowym, całkowicie amatorskim, w sposób wręcz wariacki - porównując kolory dużego i małego Atari, „na oko”.

Atari STE podłączyłem do kolorowego monitora Philips CM8833-II za pomocą własnoręcznie wykonanego kabelka RGB. Do tego samego monitora, ale przez wejście composite video, dopiąłem Atari XL/XE. W ten sposób miałem zapewnione wyeliminowanie różnic wynikające z ustawień monitora, gdybym porównywał kolory na różnych ekranach.

Prosty program w Basicu generował kolejne kolory Atari, a ja przełączałem monitor w tryb STE niewygodnym przełącznikiem z tyłu monitora i za każdym razem dobierałem do niego odpowiedni kolor w systemie RGB – metodą prób i błędów. Niektóre kolorki wymagały wielokrotnych prób, inne poszły szybciej... pełny hardcore! W każdym razie wygenerowanie tabelki dla 256 kolorów zajęło mi kilka dni nieprzerwanej, żmudnej pracy. Dziś trudno mi samemu uwierzyć, że człowiek miał czas na takie bzdury... :). Tak powstała tablica kolorów, która jest użyta w programie Kameleon dla ST/STE, który napisałem do konwersji grafiki małego Atari.

Z podobnym problemem spotykają się twórcy oprogramowania pecetowskiego, które musi w jakiś sposób wyświetlać grafikę małego Atari. Są to przede wszystkim emulatory, ale i programy graficzne. Pierwsza bodaj powszechnie znana paleta kolorów małego Atari została zrobiona dla emulatora X-Former. I niestety, jest ona daleka od doskonałości, co spowodowało modę, a może raczej wymusiło, tworzenie własnych palet. W ten sposób powstała paleta znana pod nazwą „laoo” oraz „jakub” czy „real”. Emulator Atari800Win PLus ma tą zaletę, że oprócz własnej, domyślnej palety pozwala na wczytanie i ustawienie dowolnej z dysku. To samo tyczy się programu Graph2Font, który jest obecnie podstawowym narzędziem do rysowania grafiki Atari na PC. Możemy więc wybierać zestaw kolorów, który najwierniej odpowiada rzeczywistości czyli kolorom prawdziwego Atari. Ale który zestaw jest najlepszy?

Postanowiłem wczytać wszystkie te zestawy do G2F, porównać i zobaczyć, czym się one różnią. Poniżej widzicie wyniki i możecie sami wyciągnąć wnioski.

atari800Win.act / xformer.act / jakub.act


real.act / laoo.act / g2f.act


Od razu widać, że paleta emulatorów Atari800Win PLus oraz X-Former jest daleka od doskonałości. Aby mieć kolory zbliżone do tych z prawdziwego sprzętu należałoby używać innych zestawów. Kolega Waldemar „Laoo” Pawlaszek zapewne poleca swój zestaw o nazwie „laoo.act”, zazwyczaj używa go też najlepszy grafik atarowski Adam „Powrooz” Powroźnik. Z kolei Tomasz „TeBe” Biela korzysta i poleca paletę wykorzystywaną w jego świetnym programie G2F - oczywiście paletę „g2f.act”. Obie różnią się nieznacznie, ta druga jest jaśniejsza. Jeżeli ściągnęliście plik z emulatorem ze strony atarionline.pl to w katalogu „Palette” znajdziecie niewielki programik autorstwa Laoo pod nazwą „paletka.xex”, który generuje pełną paletę barw Atari, jest też plik „paletka.png”, który może posłużyć za wzorzec kolorów.

Dla ciekawskich zrzut dwóch pozostałych palet, które symulują monitory z zielonym i czarno-białym ekranem:

green.act / grey.act


Dla przypomnienia, w emulatorze Atari800Win PLus paletę kolorów można zmieniać i polecam zastosować jedną z dwóch wymienionych powyżej palet - "laoo.act" bądź "g2f.act". W menu „View” należy wybirać opcję „Palette...”. W okienku „Palette Options”, widocznym poniżej, za pomocą „Browse” wczytujemy zewnętrzną paletę, włączamy ją przez odznaczenie opcji „Use external palette”. Możemy też regulować nasycenie kolorów i poziom ich jasności („Adjustment”). W programie G2F w menu „View” też mamy opcję „Palette...” i okienko identyczne jak w emulatorze. Również tutaj można korzystać z tych samych plików z paletami.

_rocky 2008-08-12 09:56:59

z innej beczki...
Na stronce:
http://www.night-modders.com/index.php?module=subjects&func=viewpage&page
id=720
znalazłem artykuł tyczący się Atari...

_rocky 2008-08-12 10:19:02

Co do palety, to orginalna paleta Atari jest po prostu brzydka i programy odpalone pod emulatorem kolorystycznie odstawałyby od kolorów pulpitu, czy innych programów... nie mówiąc o innych emulatorach np. C64 (tam pewnie też trochę podrasowali paletę).

Ja kiedyś napisałem konwerter RGB na paletę Atarowską (użyty w programiku do robienia RIPów). Bazował na algorytmie przeliczania modelu barw RGB do HSV... bo właśnie Atari dysponuje okrojonym modelem HSV (oryginalny ma trzy suwaki)... Analizując to dostaniemy odpowiedź, dlaczego na Atari nie ma koloru czerwonego (bo gdy się nasyca, to się wybiela). Prawdopodobnie TeBe w g2f użył tej palety, jednakrze konwertując w drugą stronę , łatwo popełnić błąd wywodzący się z tego, że jeden odcień Atari ma rozpiętość tonalną 16 w RGB 24bit.. Należało by przyjąć, że Atari nie posiada koloru białego (max. to 239,239,239) lub czarnego... (z tego co pamiętam, to max wartość trybu GR.9 jest jaśniejsza niż max. wartość GR.15) mozna to wypośrodkować, czego raczej g2f nie ma.

_rocky 2008-08-12 10:30:55

..a jeszcze jedna ciekawostka...
Przy pracy nad algorytmem palety odkryłem, że w RGB na TV poszczególne składowe nie mają tej samej jasności... Wystarczyło zmniejszyć nasycenie kolorów w TV (aby obraz się zrobił czarnobiały) i np. na Amidze narysować trzy prostokąty, każdy inną składową o tej samej jasności... każdy miały różne odcienie.. Chyba najmocniej świecił niebieski... Dzięki temu ustaliłem współczynniki dla poszczególnych barw i użyłem w algorytmie..

Kaz 2008-08-12 13:41:31

Rocky - dzieki za uzupelnienie informacji. Dobrze by bylo zebrac to wszystko w jeden artykul, z odpowiednimi tabelkami i ekranami pogladowymi... zreszta wiesz o tym :). Pozdro.

A co do tego, ze kolory z pieca (i to dla emulatora C64 jak i Atari) sa tylko zblizone do oryginalu, a emulacja nigdy nie jest 100%-procentowa, musimy sie pogodzic :). Albo uzywac oryginalnego sprzetu.

_rocky 2008-08-12 16:09:24

Kaz: akurat tu emulator wypada lepiej niż oryginał (chodzi o gry)... zostały podsycone niektóre barwy raczej celowo..
Pozdrawiam

bob_er 2008-08-12 16:18:14

moze do atariki to wlozyc?

tebe 2008-08-12 19:11:18

g2f używa palety JAKUB.ACT z tą różnicą że pierwszy kolor (czarny) ma poprawioną wartość RGB na 0,0,0 i to cała różnica

do odczytywanych plików BMP, PNG, JPG g2f używa konwersji o której wspomniał Rocky, jest to ta sama funkcja którą napisał na potrzeby konwertera RIP-ów, jeśli ma coś do niej to powinien ze sobą porozmawiać :) bo ja nic od siebie tam nie dodawałem

tebe 2008-08-12 19:13:45

porównajcie wg zawartości plik G2F.ACT i JAKUB.ACT i wszystko stanie się jasne

_rocky 2008-08-12 21:13:00

tebe: nie muszę rozmawiać sam ze sobą, a ty jesteś złośliwy i się chaczysz już któryś raz.. nie będę się zniżał reagował na to.. bo to głupie i niczemu nie służy...
Co do palety to ja zrobiłem konwersję RGB to Atari, a ty to stablicowałeś i zacząłeś odczytywać w drugą stronę.. i tu się pojawia dylemat, czy odcień 1 atari to 15 czy 31 w RGB .. róznica jest spora... Pamiętasz, że zwróciłem na to uwagę przy obrazkach na dopalonego GTIA.. tam było o 16 odcieni za wysoko.

CharlieChaplin 2008-08-12 21:14:15

Ah,
the old "256 color palette problem" again. Having converted hundreds of pictures (which originated from PC, ST and Amiga) to the A8 using various converter programs, I always had those problems with the colors. On real NTSC machines colors look different than the same colors on real PAL machines...

Naturally one might say, but to make things worse the colors even look different from machine to machine, e.g. on 400/800, 1200XL, 600XL, 800XL, XE series, XEGS all seem to have different color settings (and even if one uses the built-in color trimmer the color of an XE machine never looks like the color of an XL machine)...

Its nice to have different emulator palettes - just for fun I already converted many pics with Epi`s Tipconv. 1.00 on the PC... I used all available palettes (for one and the same picture) and believe it or not on my 800XL none of the converted pictures look like (they were displayed) on the PC...

So I guess you have to live with the fact that colors will always look different on various A8 machines and/or the emulator. At least one can be happy if a red color on a real NTSC machine also appears as a red color on a real PAL machine (quite often it appears as brown) or that a blue color appears as blue (and not as purple)... -Andreas Koch.

P.S.: To me the Xformer color palette looks awful (and the laoo palette is a little bit too green). The Tipconv. by Epi also shows this (while Jakub and G2F palette look *almost* the same)...

xxl 2008-08-12 21:48:09

nie dopatrywalbym sie zlosliwosci w slowach tebego, raczej delikatnie polaskotal Twoje ego piszac, ze wlasnie Twoj algorytm uzyl w swoim programie... a tak poza tym, jaka palete (czy mozna ja podkrecac) jest zaszyta w vbxe?

Kaz 2008-08-12 22:54:10

CharlieChaplin - thanks for additional info. Right, I forgot about NTSC machines. As Tebe said, g2f palette is really almost jakub.act - with different RGB code for black colour.

tebe 2008-08-12 23:50:42

tutaj jest funkcja Rocky-ego realizująca zamianę RGB na kolor Atari

http://atariarea.krap.pl/forum/viewtopic.php?id=6060

wykorzystuje ją G2F jak i konwerter RIP-a

nie wiem skąd Rocky bierzesz swoje informacje ale sugerowałbym Ci nie być tak pewnym swoich podejrzeń

_rocky 2008-08-13 07:11:41

tebe: wszystkiego dokładnie już nie pamiętam bo minęło już sporo czasu stąd moje przypuszczenia.. bynajmniej nie mam zamiaru Ciebie atakować, a jeśli uraziłem to przepraszam.
OK. g2f korzysta z konwertera w celu przerobienia bitmapy na format Atari, ale w drugą stronę stosujesz paletę stablicowaną. Można spróbować pokusić się o konwersję odwrotną, która by zwróciła jakiś zbiór, zakres barw dla każdego koloru Atari, po czym powybierać te najciekawsze...
Może by powstała jakaś jedna wypracowana, obowiązująca paleta, bo to co się teraz porobiło jest uciążliwe... zgłaszam postulat... ewentualnie można by się zgodzić na dwie: realistyczną, najbardziej oddającą orgnalne Atari oraz podrasowaną (nasyconą), bardziej przyjemną dla oka pod emulator (ale nie przekłamującą)..
Te różnice, o których pisał CharlieChaplin to pewnie są wynikiem tolerancji elektroniki czy ustawienia tego małego potencjometru na spodzie komputera... jednakże na żadnym nie ma nasyconej czerwieni.
Pozdrawiam

electron 2008-08-13 11:51:06

w VBXE jest "podkręcona" paleta laoo.act

W tej chwili nie można jej zmieniać ale to się ... zmieni ... tak jak już kiedyś było. ..

laoo 2008-08-13 12:02:59

Moją paletę zrobiłem na karcie TV (pixelview na bt848) ze wszystkimi kalibracjami ustawionymi na zero. Zrzut to właśnie paletka.png. Napisałem program, który automatycznie uśredniał kolory z każdego bloku i zapisywał od razu paletę i wyszło co wyszło :) Paleta jest zatem tak wierna, jak wiernie działała karta TV. Ale obiektywnie to jest trochę za ciemna. Co do VBXE, to jest w nim moja paleta właśnie trochę rozjaśniona.