Witam Wszystkich,
W związku z mającym ostatnio miejsce wysypem konwersji gier w stylu ZX Spectrum chciałbym podnieśc temat nowego trybu graficznego, który idealnie nadawałby się do tego typu gier. Tryb ten wymaga oczywiście przeróbki sprzętowej, lecz stosunkowo prostej. O tym jednak za chwilę. Tryb jest połowicznym rozwiązaniem problemu zależności między kolorami pikseli w najwyższej rozdzielczości. Jak wiadomo, piksele mogą wtedy przyjmowac dwie niezależne jasności lecz mają wspólny kolor. W trybie, który proponuję, jeden kolor jest zawsze czarny a drugi dowolny. Oczywiście ten dowolny kolor można podmieniac przy pomocy duszków. W takim trybie gry jak Jet Set Willy 2007 czy Knight Lore mogłyby byc jeszcze bardziej zbliżone do oryginału. A i gry z serii Dizzy, które, mam nadzieję, również powstana na Atari, możnaby napisac dużo łatwiej.
A teraz przejdźmy do sposobu działania nowego trybu. Mianowicie polega on na tym, ze jeżeli jasnośc piksela wynosi 0 (najciemniejszy) to kolor piksela nie jest podawany na wyjście video, co jest równoznaczne z tym, że jest on czarny. Przeróbka sprzętowa polega tu na tym, że wykrywany jest stan 0 na wszystkich wyjściach luminancji (LUM0-LUM3) układu GTIA i na czas trwania piksela o jasności 0 wyłączany jest sygnał chrominancji. Wyłączenie sygnału, choc może wydawac się rzeczą trudną, w praktyce jest dośc proste i wymaga użycia jednego tranzystora. Nie będę teraz wdawał się w szczegóły ale powiem tylko, że kiedyś wykonałem proof-of-concept tego pomysłu na mojej Atarce i to działało. Zobaczyłem piękne czerwone litery na szarym tle w GR.0. Dlaczego szarym a nie czarnym nie chce teraz tlumaczyc - tak było łatwiej zrobic test bez budowania całego urządzenia. Idąc dalej, urządzenie musi, tak jak wspomniałem, wykrywac jasnośc 0 na wyjściach LUM0-LUM3. Oprócz tego musi wyłączac sygnał koloru tylko w czasie wyświetlania linii obrazu. Tzn. nie może wyłączac koloru w trakcie przerwy poziomej. Wtedy to po linii chrominancji nadawany jest tzw. burst koloru czyli sygnał synchronizujący kolor dla telewizora. Ponadto musi byc mozliwośc programowego włączania i wyłączania takiego trybu, czyli musi byc jakiś rejestr, który pamięta stan włączenia trybu, co z kolei pociąga za sobą dekoder adresów, itd. Idealnie byłoby, gdyby taki rejestr znajdował się gdzieś w przestrzeni układu GTIA a dokładnie powyżej jego pierwszego wystąpienia czyli np.: $D020. I dobrze by było, gdyby ten rejestr dało się też czytac. To umożliwiłoby wykrywanie istnienia rozszerzenia. Ktoś pewnie zauważy, że sprawdzanie sygnału LUM0 jest mało sensowne z uwagi na fakt, że może on przybrac wartosc 1 tylko w trybie 9 GTIA, ale można sobie wyobrazic nowy tryb oferujący "czarny + 15 odcieni dowolnego koloru" a tak to by było tylko "czarny + 14 odcieni dowolnego koloru". Podsumowując, jest to chyba najprostsze rozszerzenie możliwości GTIA jakie można sobie wyobrazic a jednocześnie dające bardzo ciekawe efekty w grafice wysokiej rozdzielczości.
Teraz mam pytanie, co sądzicie o takim trybie, również w kontekście powstających rozszerzeń GTIA. I czy podobny pomysł był już kiedyś dyskutowany? Czy podjąłby się ktoś zaprojektowania i wykonania elektroniki?
Paweł Rosowski