Вот как получить 1024 цвета в CGA. И действительно ли они 1024? | ВесьТоп создание и продвижение сайтов

Поддержка сайта

Высокие позиции в поисковой системе, на прямую зависят от развития вашего сайта.

Продвижение сайтов

Эффективность стратегий продвижения подтверждается сотрудничеством с крупными клиентами и отзывами о нашей работе.

Создание сайтов

Мы делаем сайты быстро, недорого и профессионально. От работы с нами, у вас останутся только положительные эмоции.

Вот как получить 1024 цвета в CGA. И действительно ли они 1024?

Вот как получить 1024 цвета в CGA. И действительно ли они 1024?

Стандартные возможности CGA

У всех, кто помнит это древнее железо, CGA ассоциируется с графикой с разрешением 320×200 пикселей с палитрой из четырех цветов, что весьма своеобразно. Примерами являются игры 1983 года: Alley Cat, J-bird, Lode Runner и Tapper:

Вот как получить 1024 цвета в CGA. И действительно ли они 1024?

Но ограничение в 3200×200 пикселей и 2 бита на пиксель накладывается из-за объема графической памяти, который в те времена составлял всего 16 КБ. Фактически можно воспроизвести изображение с разрешением 640x200x4bpp, в котором пиксели довольно вытянуты по вертикали. Это используется, например, в текстовом режиме с символами 80×25 с 16 цветами и фоном, а матрица символов имеет 8×8 пикселей. Несложно подсчитать, что в этом случае экранный буфер занимает 80x25x2 = 4000 байт. Но если мы решим вывести изображение с «высоким разрешением» 640х200 пикселей, то этих 16 КБ памяти хватит только для черно-белого изображения. Именно этот режим поддерживал операционную систему Windows до версии 3.0 включительно.

Вот как получить 1024 цвета в CGA. И действительно ли они 1024?

Адаптеры CGA выводят цифровой сигнал, для которого был специально разработан интерфейс RGBI: две линии синхронизации сигнализируют о начале кадра и начале строки для вертикальной и горизонтальной развертки, а еще четыре вывода видео обеспечивают 4-битный цвет текущего пикселя. Но мониторов, которые могли принимать на свои входы и использовать цифровой сигнал RGBI в 1981 году, было немного, и сама IBM начала производить цифровые мониторы этого типа только в 1983 году.

Но для домашних пользователей карта CGA имеет второй выход: это композитный видеовыход, который заставил производителей видеоигр творить чудеса. С помощью простого радиочастотного модулятора сигнал может быть подан на телевизоры, поддерживающие телевизионную систему NTSC. Но у некоторых телевизоров был специальный композитный вход, который можно было использовать для включения видеомагнитофона, таким образом не требуя использования тюнера и избегая ненужной модуляции и демодуляции.

Часть видеокарты CGA, которая формирует сигнал NTSC, была задумана как переходный этап, пока все владельцы ПК не возьмут цифровые мониторы. А следующая видеокарта IBM, EGA (1984), имела только цифровой 6-битный выход, а RGBI начал использовать два свободных контакта. Кроме того, режимы высокого разрешения не рекомендуются для использования с композитным сигналом, поскольку 640 пикселей по горизонтали больше, чем возможности телевизионной системы США NTSC. Вспомним, как размывался текст в режиме 80 столбцов при использовании видеокарты CGA с композитным выводом:

Вот как получить 1024 цвета в CGA. И действительно ли они 1024?

Возможности телевизора

Черно-белое телевидение совершенно прямолинейно: электронный луч проходит по экрану линия за линией, а амплитуда видеосигнала напрямую регулирует мощность луча. Во время реверса между строками и между кадрами луч отключается, и видеосигнал передает тактовые импульсы. А поскольку сигнал полностью аналоговый, его разрешение по горизонтали точно не определено: яркость может плавно изменяться по всей длине линии. С другой стороны, разрешение по вертикали фиксированное — 243 строки для NTSC.

Изображение, тщательно созданное с помощью MS Paint, очень хорошо показывает, как выглядит видеосигнал в одном кадре, который показывает только две вертикальные линии. Однострочный сигнал показан в верхней части этого изображения, а сигнал линейной последовательности показан под ним. Мы можем видеть, что перед каждой строкой применяется синхроимпульс «чернее черного».

Вот как получить 1024 цвета в CGA. И действительно ли они 1024?

При создании цветного телевидения было особенно важно, чтобы существующие черно-белые телевизоры приемлемо отображали цветной сигнал. Американские специалисты придумали следующий трюк: информация о цветности представляется в виде субгармонического сигнала, который добавляется к сигналу яркости. В этом случае черно-белый телевизор, который не может фильтровать и разделять эту субгармонику, будет отображать каждый пиксель с яркостью, соответствующей среднему значению сигнала для каждого пикселя. Если частота поднесущей достаточно высока, то этот дополнительный сигнал не повлияет на среднее значение, то есть на отображаемую яркость. Сами основные цвета кодируются фазовым сдвигом сигнала цветового тона и амплитудой поднесущей, которая определяет ее насыщенность. Разделение цветов на яркость, оттенок и насыщенность соответствует цветовой модели YIQ.

На втором изображении схематично показан видеосигнал на одной строке кадра, которая включает цветные вертикальные линии. Между тактовым импульсом и началом строки выдается сигнал цветовой синхронизации, который настраивает телевизионный приемник на фазу, относительно которой будет выполняться фазовый сдвиг поднесущей. Теперь плоские участки сигнала (с нулевой амплитудой поднесущей) соответствуют серой вертикальной линии (с нулевой насыщенностью), а участки, где поднесущая соответствует фазе цветовой синхронизации, будут желтыми вертикальными линиями с разной насыщенностью в зависимости от амплитуды несущей. Область, где лоток цветности находится в противофазе по отношению к цветовой вспышке, образует синюю вертикальную линию. Но так как средний уровень сигнала во всех секциях одинаков, черно-белый телевизор покажет все эти вертикальные линии с одинаковым оттенком серого.

Вот как получить 1024 цвета в CGA. И действительно ли они 1024?

По стандарту NTSC цветовой лоток должен быть синусоидальным сигналом, но это не так важно. Прямоугольный сигнал (меандр), показанный на изображении, состоит из гармонических частот с необходимой частотой и фазой плюс высокочастотные составляющие, которые телевизор игнорирует. Амплитуда этих гармоник в 4 / π раз больше амплитуды меандра, но поскольку телевизор использует амплитуду поднесущей не в абсолютных единицах, а в терминах амплитуды, взятой из цветовой вспышки, на изображение не влияет замена синусоидального сигнала на прямоугольная. А CGA и другие подобные примитивные цифровые устройства генерируют прямоугольные сигналы.

Чтобы упростить отделение основного сигнала яркости от вспомогательной поднесущей для цветности, NTSC стандартизирует поднесущую так, чтобы она была точно в 227,5 раз больше частоты горизонтального развертки, то есть каждая телевизионная линия имеет 227,5 периода цветовой поднесущей. .

Таким образом, телевизионная система NTSC имеет относительно хорошо известное горизонтальное цветовое разрешение — яркость по-прежнему может плавно изменяться по всей строке, но частота изменения цвета ограничена цветовым лотком, то есть цвета в NTSC не могут быть изменены. меняются очень быстро. И если телевизор принимает видеосигнал с разрешением 640 пикселей, то каждый пиксель соответствует примерно трети периода поднесущей, и примитивный фильтр того времени не может правильно отделить каждый пиксель от фазового сдвига сигнала и амплитуды поднесущей. Это приводит к довольно неожиданным результатам — от размытия до получения цветов артефактов, которые выходят за рамки возможностей карты CGA.

Именно с превышением разрешения по горизонтали и связана эта типичная ошибка CGA — в режиме 640х200 пикселей, как и в аналогичном режиме с 80 столбцами текста, изображение составного монитора черно-белое. Обход этого бага хорошо известен — изображение должно быть окружено коричневой рамкой.

Дело в том, что при формировании синхроимпульсов CGA их длина определяется внутренними тактовыми частотами этой видеокарты. В режиме 640×200 эти часы вдвое короче, чем в режиме 320×200, и, таким образом, сигнал синхронизации между строками кадра в два раза короче, чем требуется стандартом NTSC. В результате цветовая вспышка не передается. Но если вокруг изображения есть коричневая рамка (у коричневого почти нулевой сдвиг фазы, низкая яркость и насыщенность почти точно соответствует амплитуде цветовой вспышки), то монитор воспринимает левую часть кадра для цветовой вспышки, не отображает ее на экране и правильно регулирует фазу. лотка.

Композитное сигнальное устройство, поставляемое CGA

Хотя цифровой сигнал, генерируемый CGA, может иметь разрешение по горизонтали до 640 пикселей, то есть 640 изменений уровней цифрового сигнала в одной строке, композитный сигнал может быть представлен как последовательность из 1280 субпикселей, независимо от включенного видеорежима. Это означает, что на каждый пиксель в режиме 640х200 приходится два субпикселя, а в режиме 320х200 — четыре. Уровни сигналов (в вольтах), воспроизводимых видеокартой для текущего субпикселя, рассчитываются по формуле:

U = 0,41 + I⋅0,3 + C⋅0,75,

где бит I (интенсивность) берется непосредственно из цвета текущего пикселя, а сигнал C (цветность) выбирается мультиплексором в зависимости от других трех битов для цветности (R, G, B):

р г B C цвет

Вот как получить 1024 цвета в CGA. И действительно ли они 1024?

0 0 0 00000000… черный
0 0 1 00001111… синий (~ 180 °)
0 1 0 11100001… зеленый (~ 45 °)
0 1 1 11000011… бирюза (~ 90 °)
1 0 0 00111100… красный (~ 270 °)
1 0 1 00011110… фиолетовый (~ 225 °)
1 1 0 11110000… желтый (~ 0 °)
1 1 1 11111111… белый

Хроматические цвета соответствуют сигналу цветности с периодом в восемь подпикселей со сдвигом фазы, который наиболее близок к кратному 45 °, то есть к целому числу подпикселей. А благодаря использованию искусственных световых задержек в CGA (в пределах ± 10 °) достигается большее соответствие цветовому стандарту NTSC.

Таким образом, из 227,5 периодов поднесущих в строке 160 используются для отображения видимого изображения, а остальные используются для реверсирования синхроимпульса, цветовой синхронизации и кадра вокруг изображения. Важно знать, что от цветовой вспышки до первого пикселя строки существует целое число периодов поднесущей: первый пиксель начинает подачу с фазой 45 °, поэтому, если линия начинается с четырех желтых пикселей, сигнал цветности во время подача соответствующих восьми субпикселей будет 11100001.

Яркость пикселей (luma) — то есть среднее значение уровня сигнала за период цветового лотка будет

 L = 0,72⋅Cavg + 0,28⋅I

где хроматические цвета: 0 для черного и 1 для белого. Это означает, что на черно-белом композитном мониторе первая версия CGA, выпущенная в 1981 году, может отображать только шесть оттенков серого. В более поздних версиях FGA, которые начались в 1983 году, непериодическое добавление к цветному лотку теперь зависит от всех четырех битов цветности, а яркость рассчитывается по более сложной формуле:

L = 0,29⋅Cavg + 0,1⋅R + 0,22⋅G + 0,07⋅B + 0,32⋅I

Теперь это позволяет черно-белому монитору отображать свой оттенок серого для каждого из 16 значений цветности. В результате этой доработки цветной монитор с композитным входом также начинает отображать цвета разной яркости, которые очень близки к цветам, отображаемым на цифровом цветном мониторе.

Вот как получить 1024 цвета в CGA. И действительно ли они 1024?

Аппаратные ошибки и несоответствия в формировании композитного сигнала показывают, что разработчиков CGA не особо интересовало, как будут выглядеть цвета в высоком разрешении на мониторе с композитным сигналом. Но именно эта комбинация различных характеристик и возможностей позволила настоящим мастерам игр и демонстрационных сцен достичь невообразимого.

В следующей заключительной части мы рассмотрим интересные, скрытые и совершенно неожиданные возможности карты CGA в графическом, смешанном и текстовом режимах и то, как ей удается отображать изображение с разрешением 1024 пикселя по горизонтали.

Читайте так же:
Not found

Нам доверяют

Интернет магазин