C128 z monitorem monochromatycznym...
C128 z monitorem monochromatycznym...
Ostatnio intensywnie zgłębiam zagadnienie wyświetlania obrazów w różnych trybach C128 i można podłączyć
monochromatyczny monitor do C128 na kilka sposobów:
1. W trybie 40-kolumn, z C128 można wysłać sygnały ze złącza AV: Monochrome Video, Audio Out i GND, bezpośrednio do
wejścia monitora. Uzyskamy obraz monochromatyczny we wszystkich odcieniach szarości (monochromatyczności).
2. W trybie 80-kolumn, z C128 możemy wysłać ze złącza RGBI sygnał Composite Video i GND oraz ze złącza AV Audio
Out, bezpośrednio do wejścia monitora. Masy (GND) ze złącz AV i RGBI z C128 trzeba połączyć przed wysłaniem do
monitora. Jest to bardziej skomplikowane, ale mamy wyższą rozdzielczość, niestety tylko 3 poziomy
szarości/monochromatyczności (brak poziomu, średni i maksymalny). Tu tracimy trochę danych obrazu, ale do wielu
rodzajów pracy wystarczy.
3. Teoretycznie istnieje jeszcze jeden sposób na podłączenie w trybie 80-kolumn i uzyskanie większej ilości poziomów szarości/monochromatyczności, jeśli to komuś potrzebne.
Na wyjściu RGBI są sygnały HSYNC, VSYNC i GND oraz R, G, B i I. Na wyjściu AV w C128 można wykorzystać sygnały: Audio Out, GND i +5V (jeśli tam jest, a najczęściej powinien tam być).
Masy (GND) łączymy i wysyłamy do monitora, sygnał audio też. Zasilanie użyjemy do układu scalonego 74LS86, do spreparowania scalonego sygnału synchronizacji, a z sygnałów R, G, B i I, za pomocą rezystorów można przetworzyć 4 sygnały TTL, na różne poziomy napięcia, symulując różne odcienie szarości/monochromatyczności i odpowiednio połączyć ze scaloną synchronizacją, uzyskując scalony sygnał wideo, tyle że monochromatyczny.
Jasność (luminancję/odcień "szarości") można obliczyć:
Y = 0.3 R + 0.59 G + 0.11 B
Jak wprowadzimy jeszcze rozróżnienie, że każdy z 8 kolorów bazowych (tylko R, G, B i ich kombinacje) może mieć 2 intensywności, np. 100% i 66% (albo 100% i 50%), można opracować ścisły matematyczny wzór na jasność wyjściową.
Ta tabela, to tylko przykład, ale obrazujący, jak to można zrobić.
Przyjąłem 100% jasności (255) i 66,66% (170), wyjątek dla ciemnego szarego (jasnego czarnego), 33,33% (85).
Wzór na liczenie odczienia szarości, użyty w tabeli:
Y=[(R/255)x0,3+(G/255)x0,59+(B/255)x0,11]x255
monochromatyczny monitor do C128 na kilka sposobów:
1. W trybie 40-kolumn, z C128 można wysłać sygnały ze złącza AV: Monochrome Video, Audio Out i GND, bezpośrednio do
wejścia monitora. Uzyskamy obraz monochromatyczny we wszystkich odcieniach szarości (monochromatyczności).
2. W trybie 80-kolumn, z C128 możemy wysłać ze złącza RGBI sygnał Composite Video i GND oraz ze złącza AV Audio
Out, bezpośrednio do wejścia monitora. Masy (GND) ze złącz AV i RGBI z C128 trzeba połączyć przed wysłaniem do
monitora. Jest to bardziej skomplikowane, ale mamy wyższą rozdzielczość, niestety tylko 3 poziomy
szarości/monochromatyczności (brak poziomu, średni i maksymalny). Tu tracimy trochę danych obrazu, ale do wielu
rodzajów pracy wystarczy.
3. Teoretycznie istnieje jeszcze jeden sposób na podłączenie w trybie 80-kolumn i uzyskanie większej ilości poziomów szarości/monochromatyczności, jeśli to komuś potrzebne.
Na wyjściu RGBI są sygnały HSYNC, VSYNC i GND oraz R, G, B i I. Na wyjściu AV w C128 można wykorzystać sygnały: Audio Out, GND i +5V (jeśli tam jest, a najczęściej powinien tam być).
Masy (GND) łączymy i wysyłamy do monitora, sygnał audio też. Zasilanie użyjemy do układu scalonego 74LS86, do spreparowania scalonego sygnału synchronizacji, a z sygnałów R, G, B i I, za pomocą rezystorów można przetworzyć 4 sygnały TTL, na różne poziomy napięcia, symulując różne odcienie szarości/monochromatyczności i odpowiednio połączyć ze scaloną synchronizacją, uzyskując scalony sygnał wideo, tyle że monochromatyczny.
Jasność (luminancję/odcień "szarości") można obliczyć:
Y = 0.3 R + 0.59 G + 0.11 B
Jak wprowadzimy jeszcze rozróżnienie, że każdy z 8 kolorów bazowych (tylko R, G, B i ich kombinacje) może mieć 2 intensywności, np. 100% i 66% (albo 100% i 50%), można opracować ścisły matematyczny wzór na jasność wyjściową.
Ta tabela, to tylko przykład, ale obrazujący, jak to można zrobić.
Przyjąłem 100% jasności (255) i 66,66% (170), wyjątek dla ciemnego szarego (jasnego czarnego), 33,33% (85).
Wzór na liczenie odczienia szarości, użyty w tabeli:
Y=[(R/255)x0,3+(G/255)x0,59+(B/255)x0,11]x255
Re: C128 z monitorem monochromatycznym...
Pokaże Wam jeszcze inny pomysł, do wyświetlania obrazu z C128 na monitorze monochromatycznym. Pomysł przyszedł mi do głowy, po dyskusji na discordzie RetroGralni.
Tutaj popatrzymy na dane wyjściowe TTL z informacją jakie składowe są wyświetlane i czy podbijamy jasność (R=Red, G=Green, B=Blue, I=Intensity). Sygnały są cyfrowe, a odpowiednio ułożone, można potraktować jak dane z 4-bitowego licznika. Testowałem różne przypisania wag (8, 4, 2 i 1) dla poszczególnych sygnałów, ale najlepiej wychodzi z przypisaniami: I=8 (2^3 = 2 do potęgi 3), G=4 (2^2), R=2 (2^1), B=1 (2^0). Wydaje się to dość oczywiste i intuicyjne (?!?), bo intensywność najmocniej podbija jasność zdefiniowanego przez sygnały RGB koloru, a jeśli pamiętacie współczynniki jasności barw podstawowych, to układają się właśnie z kolejnością: G=0,59, R=0,30 i B=0,11. Mamy więc po kolei uszeregowane wartości jasności, a dane z RGBI traktujemy jak licznik ("RGBI TTL"). Wartości w polu "VICE", to jasność barw składowych dla odpowiednich kolorów w palecie z emulatora VICE (C128), tak dla przykładu reprezentatywnego kolorów. Pole "Jasność", to wyliczona jasność koloru, ze wzoru ze współczynnikami jasności, a pole "Licznik", to jasność, która odpowiada jasności wygenerowanej przez nasz teoretyczny licznik "RGBI TTL". Wzór tej jasności to: Licznik/15x255 (z zaokrągleniem). Może trochę kontrowersyjny sposób, ale bardzo prosty do realizacji, a dodatkowo równomiernie rozkłada jasności, które będziemy oglądać na monitorze, co może pozwolić lepiej odróżniać "wirtualne barwy" od siebie.
To przypisane Licznik->Jasność, jest liniowe, najbardziej równomierne, ale można jeszcze rozważyć przejście wykładnicze lub logarytmiczne, ale to chyba zbędne...
Tutaj popatrzymy na dane wyjściowe TTL z informacją jakie składowe są wyświetlane i czy podbijamy jasność (R=Red, G=Green, B=Blue, I=Intensity). Sygnały są cyfrowe, a odpowiednio ułożone, można potraktować jak dane z 4-bitowego licznika. Testowałem różne przypisania wag (8, 4, 2 i 1) dla poszczególnych sygnałów, ale najlepiej wychodzi z przypisaniami: I=8 (2^3 = 2 do potęgi 3), G=4 (2^2), R=2 (2^1), B=1 (2^0). Wydaje się to dość oczywiste i intuicyjne (?!?), bo intensywność najmocniej podbija jasność zdefiniowanego przez sygnały RGB koloru, a jeśli pamiętacie współczynniki jasności barw podstawowych, to układają się właśnie z kolejnością: G=0,59, R=0,30 i B=0,11. Mamy więc po kolei uszeregowane wartości jasności, a dane z RGBI traktujemy jak licznik ("RGBI TTL"). Wartości w polu "VICE", to jasność barw składowych dla odpowiednich kolorów w palecie z emulatora VICE (C128), tak dla przykładu reprezentatywnego kolorów. Pole "Jasność", to wyliczona jasność koloru, ze wzoru ze współczynnikami jasności, a pole "Licznik", to jasność, która odpowiada jasności wygenerowanej przez nasz teoretyczny licznik "RGBI TTL". Wzór tej jasności to: Licznik/15x255 (z zaokrągleniem). Może trochę kontrowersyjny sposób, ale bardzo prosty do realizacji, a dodatkowo równomiernie rozkłada jasności, które będziemy oglądać na monitorze, co może pozwolić lepiej odróżniać "wirtualne barwy" od siebie.
To przypisane Licznik->Jasność, jest liniowe, najbardziej równomierne, ale można jeszcze rozważyć przejście wykładnicze lub logarytmiczne, ale to chyba zbędne...
Re: C128 z monitorem monochromatycznym...
Ad2. To jest lepsze tylko niż nic. Do niektórych zastosowań (BASIC, CP/M czy GEOS128) wystarczy i interface można zrobić bardzo łatwo. Zwykłe gniazdo CINCH do obudowy idealnie pasuje do otworu na kabel standardowej obudowy DB9:
GND nie trzeba ciągnąć ze złącza A/V - na złączu RGBI jest dokładnie ta sama masa.
Później jednak zlewanie się kolorów będzie przeszkadzać - lepiej mieć 16 poziomów jasności w ten czy inny sposób.
Jedyna kontrowersja jaką widzę to kolor brązowy zamiast ciemnego-żółtego
GND nie trzeba ciągnąć ze złącza A/V - na złączu RGBI jest dokładnie ta sama masa.
Później jednak zlewanie się kolorów będzie przeszkadzać - lepiej mieć 16 poziomów jasności w ten czy inny sposób.
Jedyna kontrowersja jaką widzę to kolor brązowy zamiast ciemnego-żółtego
Re: C128 z monitorem monochromatycznym...
Może uściślę pewne kwestie.
Tak wygląda obraz kolorowy przez złącze RGBI, uzyskany przez prostą kombinację rezystorów: Tak pewnie mógłby wyglądać, przez przystawkę dla monitora monochromatycznego (symulacja): A tak wygląda obraz w trybie 80-kolumn mono, z takiej przejściówki, jaka pokazał ytm:
Tak wygląda obraz kolorowy przez złącze RGBI, uzyskany przez prostą kombinację rezystorów: Tak pewnie mógłby wyglądać, przez przystawkę dla monitora monochromatycznego (symulacja): A tak wygląda obraz w trybie 80-kolumn mono, z takiej przejściówki, jaka pokazał ytm:
Re: C128 z monitorem monochromatycznym...
Oto nowe fakty z wyliczeń.
Poniższa tabela przygotowana została na podstawie palety CGA i nowego algorytmu "licznikowego".
Co do palety CGA, to odsyłam do wikipedii, a teraz opiszę zmodyfikowany algorytm "licznikowy".
Wartości dla I=0, wyliczane są tak: Jasność=((Gx4+Rx2+Bx1)/7)x170.
Wartości dla I=1, wyliczane są tak: Jasność=((Gx4+Rx2+Bx1)/7)x85+170.
Jasność przyjmuje wartości od 0 do 255, 170=(2/3)x255, 85=(1/3)x255. Prawie idealnie, ale "prawie" robi różnicę.
Trzeba pamiętać, że ta paleta CGA, to ta, która podmienia ciemny żółty na brąz, ale gdyby tego nie robić, to wyglądałoby to tak:
To już jest TO!
W takim razie wydaje się, że wystarczy tylko 1 paleta szarości, ta matematyczno/teoretyczna.
Poniższa tabela przygotowana została na podstawie palety CGA i nowego algorytmu "licznikowego".
Co do palety CGA, to odsyłam do wikipedii, a teraz opiszę zmodyfikowany algorytm "licznikowy".
Wartości dla I=0, wyliczane są tak: Jasność=((Gx4+Rx2+Bx1)/7)x170.
Wartości dla I=1, wyliczane są tak: Jasność=((Gx4+Rx2+Bx1)/7)x85+170.
Jasność przyjmuje wartości od 0 do 255, 170=(2/3)x255, 85=(1/3)x255. Prawie idealnie, ale "prawie" robi różnicę.
Trzeba pamiętać, że ta paleta CGA, to ta, która podmienia ciemny żółty na brąz, ale gdyby tego nie robić, to wyglądałoby to tak:
To już jest TO!
W takim razie wydaje się, że wystarczy tylko 1 paleta szarości, ta matematyczno/teoretyczna.
Re: C128 z monitorem monochromatycznym...
A teraz pokażę Wam, jak wygląda samodzielnie wygenerowany obraz monochromatyczny z C128 w trybie 80-kolum (RGBI).
Ten obraz generowany jest przez dekoder zrobiony z GALa 16v8, który przekształca sygnały RGBI oraz tworzy scaloną synchronizację, a następnie przez odpowiednie dzielniki napięć (taki przetwornik C/A 6-bitowy) składany jest w scalony sygnał wideo (Composite Video) bez kodowania kolorów, tylko poziomy jasności.
To jest obraz przechwycony z mojego C128, przez wejście Composite Video mojej karty TV w PC.
Ten obraz generowany jest przez dekoder zrobiony z GALa 16v8, który przekształca sygnały RGBI oraz tworzy scaloną synchronizację, a następnie przez odpowiednie dzielniki napięć (taki przetwornik C/A 6-bitowy) składany jest w scalony sygnał wideo (Composite Video) bez kodowania kolorów, tylko poziomy jasności.
To jest obraz przechwycony z mojego C128, przez wejście Composite Video mojej karty TV w PC.
Re: C128 z monitorem monochromatycznym...
No i najważniejsze. Podłączenie do monitora Neptun 156, bo przecież to było sedno tego projektu.
Obraz wygenerowany przez mój adapter i przesłany do monitora.
Tak wygląda orientacyjny schemat.
Mówiłem, że to prosty przetwornik cyfrowo-analogowy 6-bitowy, ale jest 7 rezystorów. Ten 7 odpowiada na tzw. poziom czerni, poniżej którego pojawiają się tylko sygnały synchronizacji, a powyżej odcienie jasności.
Obraz wygenerowany przez mój adapter i przesłany do monitora.
Tak wygląda orientacyjny schemat.
Mówiłem, że to prosty przetwornik cyfrowo-analogowy 6-bitowy, ale jest 7 rezystorów. Ten 7 odpowiada na tzw. poziom czerni, poniżej którego pojawiają się tylko sygnały synchronizacji, a powyżej odcienie jasności.
Re: C128 z monitorem monochromatycznym...
Oto krzywa rozkładu ocieni jasności.
Oś X-to jakby numery "kolorów" (16-odcieni);
Oś Y-poziom jasności w 6-bitowym przetworniku C/A.
Jestem z wykształcenia matematykiem, więc podszedłem "naukowo" do zagadnienia. W rejonach małej i dużej jasności rozróżniamy mniej szczegółów, więc odcienie mocniej się od siebie odróżniają, a w strefie średniej już jest liniowo.
Tak wygląda to, jak naniesiemy wyświetlane odcienie, na tle 64 możliwych wartości.
Oś X-to jakby numery "kolorów" (16-odcieni);
Oś Y-poziom jasności w 6-bitowym przetworniku C/A.
Jestem z wykształcenia matematykiem, więc podszedłem "naukowo" do zagadnienia. W rejonach małej i dużej jasności rozróżniamy mniej szczegółów, więc odcienie mocniej się od siebie odróżniają, a w strefie średniej już jest liniowo.
Tak wygląda to, jak naniesiemy wyświetlane odcienie, na tle 64 możliwych wartości.