TMS9918 - это Контроллер видеодисплея (VDC) производства Texas Instruments, представленный в 1979 году. TMS9918 и его варианты использовались в ColecoVision и CreatiVision, Memotech MTX, MSX, SG-1000 / SC-3000, Spectravideo, Sord M5, Tatung Einstein, Texas Instruments TI-99/4, Casio PV-2000 и Tomy Tutor.
TMS9918 поддерживает генерацию как сетевых на основе символьной графики (используется для отображения текста или фоновых изображений) и спрайтов, используемых для перемещения объектов переднего плана.
Существует несколько вариантов, называемых TMS9918, TMS9918A, TMS9928A и TMS9929A, где 'A' указывает вторую версию микросхемы, которая добавлены новые функции, в первую очередь добавление режима bitmap (Graphic II). Версия не-A использовалась только в TI-99/4; TI-99 / 4A и другие компьютеры имели VDC версии A. TMS9918A и TMS9928A выводят видеосигнал с частотой 60 Гц, а TMS9929A - с частотой 50 Гц. Разница между «1» и «2» в «TMS9918A» и «TMS9928A» заключается в том, что версия «1» выводит видео composite NTSC, а версии «2» ( включая TMS9929A) выводит YPbPr, а точнее цветовые различия Y, RY и BY (сигналы яркости и цветоразностные сигналы). Потребность в последнем была преобладающей в мире 50 Гц, включая Европу, из-за различных стандартов видеосигнала PAL и SECAM. Было более экономически выгодно выводить Y, R-Y и B-Y и кодировать их в PAL или SECAM в RF модулятор, чем пытаться иметь разные консоли для каждого другого стандарта цвета. Версия «1» также имеет внешний композитный видеовход, что сделало ее удобным чипом для использования в «заголовках» видео, которые могут накладывать текст или графику на видео, в то время как версия «2» - нет.
Более поздний вариант микросхем серии TMS9918, TMS9118, TMS9128 и TMS9129, был выпущен в середине-конце 1980-х годов, но никогда не пользовался большой популярностью. Функция одного вывода изменена, и отображение видеопамяти позволяет использовать два чипа размером 16Kx4 бит вместо восьми чипов размером 16Kx1 бит, необходимых для TMS99xx. В остальном чипы полностью идентичны TMS9918A, TMS9928A и TMS9929A соответственно.
Все микросхемы этого семейства обычно обозначаются именем TMS9918, иногда с добавлением постфикса «A».
Вариант микросхемы | Видеовыход | Видеовход | Частота видеосигнала | Поддержка режима 2 |
---|---|---|---|---|
9918 | композитный | композитный | 60 Гц | Нет |
9918A / 9118 | композитный | композитный | 60 Гц | Да |
9928A / 9128 | Яркость и разница цвета | (Нет) | 60 Гц | Да |
9929A / 9129 | Яркость и разница цвета | (Нет) | 50 Гц | Да |
VDP имеет 16k × 8 бит внешней видеопамяти. Эта память находится вне адресного пространства CPU. Наличие отдельного адресного пространства означает, что ЦП должен выполнять больше работы для записи или чтения этой памяти, но это также означает, что VDC не замедляет ЦП, когда он периодически считывает эту память для генерации отображения. Кроме того, он оставляет больше адресного пространства, доступного ЦП для другой памяти и оборудования с отображением памяти.
В зависимости от используемого режима экрана не вся видеопамять может потребоваться для создания изображения. В этих случаях ЦП может использовать дополнительную видеопамять для других целей. Например, одно использование - это блокнот для распаковки графических или звуковых данных, хранящихся в ПЗУ картриджа. Другое популярное использование - создание второй копии некоторых или всех данных дисплея для устранения мерцания и разрывов, метод, известный как двойная буферизация.
ЦП связывается с VDP через 8-битная шина. Контакт, управляемый ЦП, разделяет эту шину на два «порта», порт управления и порт данных. Чтобы записать или прочитать байт видеопамяти, ЦП сначала должен записать два байта из порта управления VDP во внутренний адресный регистр VDC. Затем ЦП выполняет фактическую запись или чтение порта данных VDP. При записи или чтении байта данных TMS9918 автоматически увеличивает внутренний адресный регистр. Эта функция автоматического увеличения ускоряет запись и чтение блоков данных. Порт управления также используется для доступа к различным внутренним регистрам.
TMS9918 имеет два отдельных и разных типа графики: символы и спрайты.
Символы обычно используются для создания текста или фоновых изображений. Они появляются за спрайтами.
TMS9918 имеет несколько режимов экрана, которые управляют характеристиками символов.
В TMS9918A доступно четыре задокументированных режима экрана (как упоминалось ранее, в TMS9918 отсутствует режим Graphic 2):
Texas Instruments изначально задокументировала только четыре режима, перечисленных выше. Однако бит, который включает режим 2, более интересен, чем предполагалось изначально. Лучше всего описывать его как бит-модификатор для других режимов. Включение этого параметра делает три вещи:
Имея это в виду, возможны три дополнительных режима. Обратите внимание, что хотя подлинные микросхемы TMS9918A поддерживают эти режимы, клоны и эмуляторы не могут.
Технически режим 2 - это режим символов с красочным набором символов. Экран разделен по горизонтали на три области размером 256 × 64 пикселей, каждая из которых получает свой собственный набор символов. Последовательно печатая символы от 0 до 255 во всех трех областях, программа может имитировать графический режим, в котором каждый пиксель может быть установлен индивидуально. Однако результирующий буфер кадра является нелинейным.
Программа также может использовать три идентичных набора символов, а затем обрабатывать экран как текстовый режим с набором красочных символов. Фоновые узоры и спрайты состоят из красочных персонажей. Это обычно использовалось в играх, потому что нужно было переместить только 32x24 байта, чтобы заполнить и прокрутить весь экран. Графика может быть нарисована так, чтобы границы 8 × 8 пикселей не были слишком очевидными, искусство, в котором Konami была особенно известна своим превосходством.
Проблема использования режима 2 TMS9918 заключалась в том, что каждая область 8 × 1 пикселя могла иметь только два цвета: передний план и фон. Их можно было свободно выбирать из 16 цветовой палитры, но для каждой области 8x1 могло существовать только два цвета. При манипулировании экраном в BASIC с помощью команды СТРОКА можно легко превысить максимальное количество 2 цветов на область 8 × 1 и получить «разлив цвета ».
TMS9918 не имеет регистров прокрутки, поэтому прокрутка должна выполняться программно. Кроме того, прокрутка может выполняться только по границам символов.
Спрайты обычно используются для создания движущихся объектов переднего плана. Они появляются перед персонажами (плитками).
Режимы 1, 2 и 3 могут отображать спрайты. На экране может быть до 32 монохромных спрайтов размером 8 × 8 или 16 × 16 пикселей, каждый спрайт имеет свой единственный цвет. Иллюзию разноцветных спрайтов можно создать, наложив несколько спрайтов друг на друга.
На одной строке сканирования может быть не более 4 спрайтов; любые дополнительные горизонтальные пиксели спрайтов удаляются. Первыми отрисовываются спрайты с более высоким приоритетом. VDP сообщает в регистре состояния номер первого сброшенного спрайта. ЦП может обойти это ограничение, меняя приоритеты спрайтов так, чтобы в каждом кадре отображался другой набор спрайтов; вместо того, чтобы полностью исчезнуть, спрайты будут мерцать. Этот метод известен как мультиплексирование спрайтов.
Автоматическое перемещение спрайта не обрабатывается VDP. Вместо этого на практике ЦП улавливает «вертикальное прерывание» VDP - стандартный вывод VDP, который автоматически запускается каждые 50 или 60 секунд (в зависимости от варианта чипа) в начале VBI (интервал вертикального гашения ). Затем ЦП переходит к программе обработки спрайтов в программном обеспечении, которая, в свою очередь, сообщает VDP, где изменить положение спрайтов.
Когда два непрозрачных пикселя в любой паре спрайтов сталкиваются, устанавливается флаг столкновения спрайтов. Это полезно для запуска более продвинутых процедур обнаружения столкновений внутри программного обеспечения, которые затем могут определять точное место столкновения и действовать в соответствии с ним, поскольку сам VDP не может сообщить, какие два спрайта столкнулись.
TMS9918 имеет фиксированную 16-цветовую палитру, состоящую из 15 отображаемых цветов и «прозрачного» цвета.
Согласно таблице данных, три аналоговых цветных выхода обеспечивают следующие уровни:
Цветовой код | Цвет | Y | RY | BY |
---|---|---|---|---|
0 | прозрачный | - | - | - |
1 | черный | 0% | 47% | 47% |
2 | средне-зеленый | 53% | 7% | 20% |
3 | светло-зеленый | 67% | 17% | 27% |
4 | темно-синий | 40% | 40% | 100 % |
5 | светло-синий | 53% | 43% | 93% |
6 | темно-красный | 47% | 83 % | 30% |
7 | голубой | 73% | 0% | 70% |
8 | средний красный | 53% | 93% | 27% |
9 | светло-красный | 67% | 93% | 27% |
10 | темно-желтый | 73% | 57% | 7% |
11 | светло-желтый | 80 % | 57% | 17% |
12 | темно-зеленый | 47% | 13% | 23% |
13 | пурпурный | 53% | 73% | 67% |
14 | серый | 80% | 47% | 47% |
15 | белый | 100% | 47% | 47% |
Вы должны учитывать, что до того времени только электронно-лучевые трубки были доступны как для компьютерных мониторов, так и для телевизоров, и эти ЭЛТ требовали гамма-коррекции. Значение для Гамма-коррекции ЭЛТ для телевизоров было 1,6 (примечание: ЭЛТ мониторов Macintosh имели 1,8, а ЭЛТ мониторов ПК - 2,2). Современные компьютерные мониторы с плоским экраном не нуждаются в гамма-коррекции, и по этой причине цвета TMS9918 будут несколько бледными, если вы забудете учесть этот факт. В приведенной выше таблице уже используются исправленные значения, которые (записаны в шестнадцатеричном формате, поскольку это необходимо для кодировки Википедии):
Цветовой код | Цвет | R | G | B |
---|---|---|---|---|
1 | черный | 00 | 00 | 00 |
2 | средне-зеленый | 0A | AD | 1E |
3 | светло-зеленый | 34 | C8 | 4C |
4 | темно-синий | 2B | 2D | E3 |
5 | голубой | 51 | 4B | FB |
6 | темно-красный | BD | 29 | 25 |
7 | голубой | 1E | E2 | EF |
8 | средне-красный | FB | 2C | 2B |
9 | светло-красный | FF | 5F | 4C |
10 | темно-желтый | BD | A2 | 2B |
11 | светло-желтый | D7 | B4 | 54 |
12 | темно-зеленый | 0A | 8C | 18 |
13 | пурпурный | AF | 32 | 9A |
14 | серый | B2 | B2 | B2 |
15 | белый | FF | FF | FF |
TMS9918 был первым потребительским устройством, использующим DRAM. Поскольку в то время достаточно DRAM для хранения полного буфера кадра было слишком дорого, TMS9918 использует спрайты.
TMS9918A Texas Instruments сменил Yamaha V9938, который добавил дополнительные режимы растровых изображений, более красочные спрайты, регистр вертикальной полноэкранной прокрутки, регистры вертикального и горизонтального смещения, аппаратный блиттер и настраиваемая палитра . V9938 был разработан для стандарта компьютеров MSX2, а затем использовался в стороннем обновлении до TI-99 / 4A - Geneve 9640 «компьютер на карте». На смену V9938, в свою очередь, пришел V9958, в котором были добавлены некоторые дополнительные режимы высокой цветности и регистр горизонтальной двухстраничной прокрутки. Эти микросхемы использовались в системах MSX2 + / turboR, а также на карте обновления TIM для TI-99 / 4A, хотя ходят слухи, что V9958 также использовался в поколении игровых автоматов Photo Play. Yamaha также произвела A, который некоторые считают продолжением V9958, но он не имеет обратной совместимости.
Toshiba создала клон под названием T6950 и не поддерживает недокументированную функцию маскирования шаблонов / таблиц цветов в графическом режиме 2. Позже Toshiba выпустила T7937A MSX-Engine со встроенным VDP и исправила функции маскировки. Оба VDP от Toshiba имеют немного другую палитру, чем Texas VDP, с более яркими цветами.
TMS9918 был основой для чипов VDP в Master System от Sega, Game Gear и Mega Drive.. Они использовали дополнительные режимы отображения и регистры, а также добавили аппаратные возможности прокрутки и другие расширенные функции.