Стандартните възможности на CGA
Всички, които помнят този вече древен хардуер, асоциират CGA с графика с резолюция 320х200 пиксела с палитра от четири цвята, които са доста особени. Пример за това са игрите от 1983 година Alley Cat, J-bird, Lode Runner и Tapper:
Но ограничението от 3200х200 пиксела и 2 бита на пиксел се налага заради обема на графичната памет, който в тези времена бе едва 16 KB. Всъщност, възможно е възпроизвеждането на изображение с резолюция 640x200x4bpp, при което пикселите са доста издължени вертикално. Това се използва например в текстов режим с 80х25 символа с 16 цвята и фон, като символната матрица има 8х8 пиксела. Лесно може да се пресметне, че в този случай екранният буфер заема 80x25x2 = 4000 байта. Но ако решим да извеждаме изображение с „висока резолюция“ 640х200 пиксела, то тези 16 KB памет са достатъчни само за черно бяло изображение. Именно този режим поддържаше операционната система Windows до версия 3.0 включително.
CGA адаптерите извеждаха цифров сигнал, за който бе специално измислен RGBI интерфейса: две линии за синхронизация подават сигналите за началото на кадъра и за началото на реда за вертикалната и хоризонталната развивки, а още четири извода за видеосигнала подават 4-битовия цвят на текущия пиксел. Но мониторите, които можеха да приемат на входовете си и да използват цифровия RGBI сигнал през 1981 не бяха много, а и самата IBM започна да произвежда цифрови монитори от подобен тип чак през 1983 година.
Но за домашните потребители CGA картата има втори изход: това е изходът с композитен видеосигнал, с който създателите на видеоигри правеха истински чудеса. С помощта на обикновен RF модулатор сигналът можеше да се подаде на телевизорите, поддържащи телевизионната система NTSC. Но някои телевизори имаха специален композитен вход, който можеше да се използва за включването на видеомагнетофон, като по този начин не се налага използването на тунер и се избягва ненужната модулация и демодулация.
Част от CGA видеокартата, формираща NTSC сигнала, бе предвидена като преходен етап, докато всички притежатели на персонални компютри не си вземат цифрови монитори. А следващата графична карта на IBM — EGA (1984 година), имаше само цифров вече 6-битов изход, като в RGBI започнаха да се използват два от свободните изводи. Освен това, режимите с „висока резолюция“ не се препоръчваха да се използват с композитния сигнал, понеже 640 пиксела по хоризонтала е повече от възможностите на американската телевизионна система NTSC. Да си припомним как се размазваше текста в режим с 80 колони при използването на CGA графична карта с композитен изход:
Възможностите на телевизора
Чернобялата телевизия е съвсем праволинейна: електронният лъч обхожда екрана ред след ред, а амплитудата на видеосигнала директно управлява мощността на лъча. По време на обратния ход между редовете и между кадрите лъчът се изключва, а видеосигналът подава синхронизиращите импулси. И понеже сигналът е изцяло аналогов, неговата хоризонтална резолюция не е определена точно: яркостта може плавно да се променя през цялата дължина на реда. От друга страна, вертикалната резолюция е твърдо зададена – 243 реда за NTSC.
Изображението, внимателно създадено с помощта на MS Paint, много добре показва как изглежда видеосигналът на един кадър, който показва само две вертикални линии. В горната част на това изображение е показан сигнала за един ред, а под него сигналът за последователност от редове. Може да видим, че преди всеки ред се подава синхроимпулс, който е „по-черен от черното“.
Когато се създаваше цветната телевизия, особено важно бе вече съществуващите черно-бели телевизори приемливо да показват цветния сигнал. Американските специалисти измислиха следния трик: информацията за цветността се подава във вид на подносещ хармоничен сигнал, който се добавя към сигнала на яркостта. В този случай, черно-белият телевизор, който не може да филтрира и отдели тази подносеща хармоника, ще показва всеки пиксел с яркост, съответстваща на средното значение на сигнала за всеки пиксел. Ако подносещата честота е достатъчно висока, то този допълнителен сигнал няма да окаже влияние на средното значение – тоест, на показваната яркост. Самите основни цветове се кодират чрез фазовото изместване на сигнала за отенъците на цвета и чрез амплитудата на подносещата, която определя неговата наситеност. Разделянето на цветовете на яркост, отенък и наситеност съответства на YIQ цветовия модел.
Второто изображение схематично показва видеосигнала на един ред от кадъра, който включва цветни вертикални линии. Между синхроимпулса и началото на реда се подава сигналът за цветна синхронизация color burst, който настройва телевизионния приемник на фазата, спрямо която ще се извършват фазовите измествания на подносещата. Сега плоските участъци на сигнала (с нулева амплитуда на подносещата) съответстват на сива вертикална линия (с нулева наситеност), а участъците, където подносещата съответства по фаза на color burst – ще бъдат жълти вертикални линии с различна наситеност в зависимост от амплитудата на носещата. Участъкът, в който подносещата на цветността е в противофаза относно color burst, ще образува синя вертикална линия. Но тъй като средното ниво на сигнала във всички участъци е еднакво, то черно-белият телевизионен приемник ще покаже всички тези вертикални линии с един и същ отенък на сивото.
Според NTSC стандарта, цветовата подносеща трябва да е синусоидален сигнал, но това не е толкова важно. Показният на изображението правоъгълен сигнал (меандър) е съставен от хармонични честоти с необходимите честота и фаза плюс високочестотни съставки, които се игнорират от телевизионния приемник. Амплитудата на тези хармоники е по-голяма от амплитудата на меандъра с 4/π пъти, но тъй като телевизорът използва амплитудата на подносещата не по абсолютно значение, а относно амплитудата взета от color burst, то на изображението не оказва влияние замяната на синусоидалния сигнал с правоъгълен. А CGA и другите подобни примитивни цифрови устройства генерират именно правоъгълни сигнали.
За да се улесни разделянето на основния сигнал за яркостта от допълнителната подносеща за цветността, NTSC стандартизира подносещата да бъде точно 227,5 пъти по-висока от честотата на хоризонталната развивка – тоест, на всеки телевизионен ред се падат 227,5 периода на цветовата подносеща.
По този начин NTSC телевизионната система има сравнително точно известна цветова хоризонтална резолюция – яркостта както преди може да се променя плавно по време на целия ред, но честотата на промяна на цветовия отенък е ограничена от цветовата подносеща – тоест, цветовете в NTSC не могат да се променят много бързо. И ако телевизорът получи видеосигнал с резолюция 640 пиксела, то на всеки пиксел съответства около една трета от периода на подносещата и примитивният филтър от това време не успява коректно за всеки пиксел коректно да отдели от сигнала фазовото изместване и амплитудата на подносещата. Това води до доста неочаквани резултати – от размиване до получаване на артефактни цветове, които не са по възможностите на CGA картата.
Именно с превишаването на хоризонталната резолюция е свързан този типичен за CGA бъг – в режим 640х200 пиксела, както и при аналогичния режим с 80 колони текст, изображението на композитния монитор е чернобяло. Заобикалянето на този бъг е добре известно – изображението трябва да се обгради с кафява рамка.
Работата е в това, че при формирането на синхронизиращите импулси от страна на CGA, тяхната дължина се определя от вътрешните тактовете на тази графична карта. В режим 640х200 тези тактове са двойно по-къси в сравнение с режима 320х200 и по този начин синхронизиращият сигнал между редовете на кадъра е двойно по-къс, отколкото се изисква при NTSC стандарта. В резултат от това color burst не успява да се предаде. Но ако около изображението има кафява рамка (кафявия цвят има почти нулево фазово изместване, ниска яркост, а наситеността почти точно съответства на color burst амплитудата), то мониторът възприема лявата страна на рамката за color burst, не я показва на екрана и коректно настройва фазата на подносещата.
Устройство на композитния сигнал, подаван от CGA
Въпреки че цифровият сигнал, генериран от CGA може да име хоризонтална резолюция до 640 пиксела – тоест, 640 промени в нивата на цифровите сигнали в рамките на един ред, композитният сигнал може да бъде представен като поредица от 1280 субпиксела, независимо от включения видео режим. Това означава, че на всеки пиксел в режим 640х200 се падат по два субпиксела, а в режим 320х200 – по четири. Нивата на сигналите (във волтове), възпроизвеждани от графичната карта за текущия субпиксел, се изчислява по формулата:
U=0,41+I⋅0,3+C⋅0,75,
където битът I (intensity) се взима директно от цвета на текущия пиксел, а сигналът C (chroma) се избира от мултиплексора в зависимост от трите останали бита за цветността (R, G, B):
На хроматичните цветове съответства сигналът chroma с период от осем субпиксела с фазово изместване, което е най-близо до кратното на 45° – тоест, към цяло число субпиксела. А благодарение на използването на леки изкуствени латентности в CGA (в пределите на ±10°), се постига по-голямо съответствие с NTSC стандарта за цветовете.
По този начин, от 227,5-те периода на подносещата в рамките на един ред, 160 се използват за показване на видимото изображение, а останалите за обратния ход със синхроимпулса, color burst и рамката около изображението. Важно е да се знае, че от color burst до първия пиксел на реда има нецял брой на периоди на подносещата: първият пиксел започва да се подава при фаза 45°, така че ако редът започва с четири жълти пиксела, то сигналът chroma по време на подаването на съответстващите осем субпиксела, ще бъде със значение 11100001.
Яркостта на пиксела (luma) – тоест, средното значение на нивото на сигнала за периода на цветовата подносеща, ще бъде
където
за хроматичните цветове и 0 за черния и 1 за белия цвят. А това означава, че на черно-белия композитен монитор, първата версия на CGA, изляла през 1981 година, може да покаже само шест отенъка на сивото. В по-късните версии на FGA, започнали да излизат през 1983 година, непериодичната добавка към цветовата подносеща, вече зависи от всичките четири бита за цветност, като яркостта се изчислява по по-сложна формула:
L=0,29⋅Cavg+0,1⋅R+0,22⋅G+0,07⋅B+0,32⋅I
Това вече дава възможност на черно-белия монитор, за всяко едно от 16-те значения за цветността да бъде показан собствен отенък на сивото. В резултат от това усъвършенстване и в цветния монитор с композитен вход започват да се показват цветове с различна яркост, които са много близки до цветовете, показвани от цифровия цветен монитор.
Хардуерните бъгове и недоглежданията във формирането на композитния сигнал показват, че разработчиците на CGA не са се интересували особено много как ще изглеждат цветовете при висока резолюция на един монитор с композитен сигнал. Но именно това съчетание на най-различни характеристики и особености даде възможност на истинските майстори на игри и демонстрационни сцени да постигнат невъобразимото.
В следващата заключителна част ще разгледаме интересните, скрити и съвсем неочаквани възможности на CGA картата в графичен, в смесен и в текстов режим и как тя успява да покаже изображение с резолюция 1024 пиксела по хоризонтала.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!







