Адаптер телевизионного интерфейса
этой статьи Начальный раздел может быть слишком коротким, чтобы адекватно суммировать ключевые моменты . ( июнь 2013 г. ) |
интерфейса Адаптер телевизионного [1] ( TIA ) — это специальный компьютерный чип , наряду с вариантом технологии MOS 6502, составляющий сердце игровой консоли Atari Video Computer System 1977 года . TIA генерирует экранное изображение, звуковые эффекты и считывает данные контроллеров. В то время, когда разрабатывалась Atari VCS, даже небольшие объемы оперативной памяти были дорогими. Чип был разработан без кадрового буфера, вместо этого требовалось детальное программирование для создания даже простого дисплея. [2]
Разработка CO10444/CO11903 [3] TIA возглавлял Джей Майнер , который продолжал в Atari расширять разработку TIA для 8-битных компьютеров Atari с чипами ANTIC и CTIA/GTIA . Позже Джей Майнер возглавил разработку специальных чипов для компьютера Amiga .
Дизайн
[ редактировать ]Фон
[ редактировать ]Примерно в 1975 году инженеры Atari из Cyan Engineering во главе со Стивом Майером и Роном Милнером рассматривали альтернативы разработке специализированного оборудования, такого как специализированные интегральные схемы (ASIC) для аркадных видеоигр и домашних игровых консолей. Программируемые микропроцессоры уже появились на рынке, но Atari посчитала их слишком дорогими для домашнего применения. [4] Они были ограничены стоимостью в опциях отображения графики. На тот момент большая часть компьютерной графики создавалась с использованием спрайтов , нарисованных на игровом поле, которые затем преобразовывались в аналоговый сигнал для отображения на ЭЛТ- видеомониторе . [5] Спрайты будут храниться в виде растрового изображения во фреймбуфере , что потребует оперативной памяти (ОЗУ). Оперативная память по-прежнему была дорогой и стоила десятки тысяч долларов за мегабайт. [6] а для отображения двухцветного игрового поля на дисплее 80×48 потребовались бы тысячи долларов памяти. [4] На обычном NTSC цветном телевизоре максимальное разрешение обычно составляет от 256 до 320 пикселей на строку и от 192 до 240 строк на экран. [7]
В сентябре 1975 года компания MOS Technology представила микропроцессор 6502 , один из первых недорогих микропроцессоров на рынке. Майер и Милнер договорились поговорить с разработчиком чипа Чаком Педдлом об использовании 6502 в качестве основы для их программируемой игровой консоли. В течение нескольких дней был разработан базовый дизайн Atari VCS: Peddle предложил Atari использовать более дешевый процессор MOS Technology 6507 и MOS Technology 6532 RAM-I/O-Timer (RIOT). как основа дизайна. [8] Используя прототип адаптера дисплея на испытательном стенде 6502, Милнер смог продемонстрировать способность программировать простую версию своей Tank игры . Джо Декуир был нанят, чтобы помочь преобразовать доказательство концепции Милнера в функциональный прототип, достаточный для Atari, чтобы дать добро на продолжение разработки. [4]
Пока Декуир работал над дизайном остальной части системы, Джей Майнер сосредоточился на создании ASIC для видеоадаптера. [4] Первоначально адаптер дисплея ASIC назывался Адаптером телевизионного интерфейса (TIA). [4] Стоимость оперативной памяти оставалась высокой, когда команда приступила к разработке, поэтому возможность использования кадровых буферов на основе памяти была исключена из конструкции TIA. [4]
Дизайн без оперативной памяти
[ редактировать ]Из-за отсутствия оперативной памяти TIA отличается от обычного кадрового буфера тем, что экран состоит из пяти подвижных графических объектов (2 игрока, 2 ракеты и 1 мяч) и статического объекта игрового поля. Все они генерируются в каждой строке сканирования из соответствующих регистров, в отличие от метода, используемого в модели с отображением в кадровом буфере, требующей, чтобы программа обновляла их в каждой строке сканирования. [9] Горизонтальное разрешение неоднородно, так как его размер зависит от конкретного графического объекта. Наименьшая единица пикселя соответствует 1 цветовому такту чипа, из которых на линии 160 видимых. [9]
Объект Playfield состоит из регистра размером два с половиной байта (шириной 20 бит), который можно отразить симметрично или скопировать в правую половину экрана в неизменном виде, всего на 40 бит (каждый бит представляет собой 4 цветовых цикла). широкий). Цвет, который рисовался, если бит был равен 1 или 0, выбирался из заранее определенной палитры, содержащей до 128 цветов (см. Ниже), и сохранялся в других регистрах.
TIA также поддерживал пять отдельных графических объектов, состоящих из:
- Две 8-пиксельные горизонтальные линии, составляющие « спрайты » Игрока 1 и Игрока 2. Они одноцветные, их можно растягивать в 2 или 4 раза, а также дублировать или утроять.
- «Шар» — горизонтальная линия того же цвета, что и игровое поле. Он может иметь ширину в один, два, четыре или восемь пикселей.
- Две «ракеты» — еще одна горизонтальная линия того же цвета, что и соответствующий игрок. Он может иметь ширину в один, два, четыре или восемь пикселей.
Без кадровых буферов на базе ОЗУ обнаружение коллизий также затруднено. TIA имеет аппаратное обнаружение коллизий для всех этих объектов с помощью 15 триггеров установки/сброса и сохраняет растровую карту коллизий, которая обычно считывается в течение периода VBLANK. [4] Регистры в TIA позволяют программисту контролировать расположение графических объектов и их цвет.
TIA также обеспечивает два канала однобитного звука. Каждый канал обеспечивает 32 значения шага и 16 возможных битовых последовательностей. Есть 4-битный регулятор громкости. [4]
Наконец, TIA имеет входы для считывания до четырех аналоговых лепестковых контроллеров с помощью потенциометров и для двух триггеров джойстика. [4]
Рисование дисплея
[ редактировать ]Поскольку в регистрах хранятся данные только для одной строки дисплея, создание полноэкранного режима требует, чтобы игровая программа обновляла регистры на лету — процесс, известный как « гонка луча ». [10]
Чтобы начать процесс, игровая программа, работающая на MOS Technology 6502, на базе процессоре загружает в регистры TIA данные, необходимые для рисования первой строки дисплея. Затем TIA ждет, пока телевизор не будет готов нарисовать линию (по команде соответствующего аналогового оборудования TIA) и считывает регистры для создания сигнала для этой линии. Во время периода горизонтального гашения между строками 6502 быстро меняет регистры TIA по мере необходимости для следующей строки. Этот процесс продолжается вниз по экрану.
Это усложняется тем, что технология MOS 6507 в 2600 представляет собой версию 6502 с уменьшенным количеством выводов и без поддержки аппаратных прерываний . Обычно аналоговая часть системы отображения генерирует прерывание, когда завершает рисование растровой линии и готовится к следующей. Прерывание запускает код, необходимый для обновления экрана, а затем возвращается в «основную» программу. В 6507 эти контакты отключены от ЦП в целях экономии, однако у него есть вывод «RDY» для вставки состояний ожидания в циклы шины ЦП . TIA был специально разработан для использования вывода RDY для синхронизации ЦП с синхронизацией растровых строк видео, сгенерированного TIA: когда ЦП записывает в определенный адрес регистра TIA, TIA понижает свой выходной сигнал RDY до конца. текущей строки — команда «ожидать синхронизации». [4] Это приостанавливает работу ЦП до начала (цикл цветовой синхронизации 0) периода горизонтального гашения прямо перед следующей строкой, обеспечивая определенную степень автоматической синхронизации. Предполагаемое использование этого механизма заключается в том, чтобы ЦП запускал код, который настраивает регистры TIA для рисуемой линии и который обычно выполняется до завершения за некоторое время до того, как TIA достигнет конца этой строки. Чтобы упростить синхронизацию времени видео, ЦП затем записывает в регистр, который запускает задержку синхронизации через RDY, тратя различное количество времени ЦП. [4]
Кроме того, TIA только полуавтоматически генерирует сигналы синхронизации вертикальной синхронизации (чтобы отметить конец каждого видеокадра и начало следующего). TIA способен вставлять сигнал вертикальной синхронизации в аналоговый выходной видеосигнал, но он не имеет счетчика строк кадра и поэтому не может определить, когда кадр должен закончиться. Вместо этого программе ЦП предоставляется возможность запуска сигналов вертикальной синхронизации и подсчета строк в каждом кадре, чтобы определить, когда следует генерировать сигнал вертикальной синхронизации. Как и в случае с аппаратным обеспечением ожидания RDY, сигнал вертикальной синхронизации инициируется записью ЦП в определенный адрес регистра TIA. Если запись по этому адресу никогда не производилась и TIA было разрешено работать в автономном режиме, оно генерировало один бесконечный кадр активных растровых линий, который обычно отображался на телевизоре в виде движущегося изображения. Большинство опубликованных игр для Atari 2600 генерировали вертикальную синхронизацию после каждых 262 или каждых 263 строк (но ничто в TIA не мешает генерировать кадры любой длины, короче или длиннее, хотя на обычных телевизорах полученное видео будет вращаться вертикально).
Эти и другие детали программирования TIA означают, что программистам необходимо тщательно рассчитывать время своих программ, чтобы выполнить точное количество циклов, необходимое для различных событий, связанных с экраном. Ошибка означает, что экран отображается неправильно. Часть программы, которая это делает, называется «ядром» этой программы. [11]
Учитывая эту сложность, ранние игры, использующие эту систему, имели тенденцию быть простыми по компоновке, используя TIA для создания симметричных игровых полей с игроками сверху. Это было первоначальным намерением системы: запускать несколько аркадных игр, которые Atari уже выпустила, таких как Tank и Pong . В этих случаях данные игрового поля обычно размещались в объемом ПЗУ 2 КБ игрового картриджа . Поскольку каждая строка использовала 20 бит данных, а на дисплее NTSC было 192 строки, [12] дисплею с разным расположением каждой строки требовалось всего 480 байт (192 x 20/8) из 4 КБ картриджа для хранения одного жестко запрограммированного дисплея. В этом случае ядро просто пропускало 20 бит через ПЗУ для каждой строки по мере продвижения TIA вниз по экрану, и эта задача занимала всего несколько циклов процессорного времени. Это можно еще больше уменьшить, используя одни и те же данные для нескольких строк, либо удваивая их по вертикали, либо читая список в одну сторону для верхней части, а затем обратно в другую сторону для нижней части, создавая вертикально зеркальное отображение размером всего 240 байт.
Ключевым достижением стало лицензирование Space Invaders для платформы, что требовало гораздо большего количества игровой графики для рисования вражеских инопланетян. Решение заключалось в том, чтобы изменить данные игрока для каждой строки во время рисования изображения, что привело к явному большому количеству игроков. Еще один прогресс был достигнут путем (частичного) кодирования дисплея в виде инструкций ЦП вместо хранения его в виде фиксированных данных в ПЗУ. Adventure использует эту концепцию для создания самых разнообразных карт путем объединения различных частей данных в ПЗУ, перескакивая по ним вперед и назад во время рисования экрана. [13] Это позволило игре иметь 30 комнат, для которых в противном случае потребовалось бы 14 КБ ПЗУ .
По мере того, как программисты все больше привыкали к нестандартному времени, необходимому для правильной работы на экране, они начали использовать присущую TIA гибкость, чтобы значительно улучшить отображение. Одним из распространенных методов было изменение регистров цвета, которые использовались для рисования состояний 1 и 0 игрового поля, что приводило к отображению с радужными эффектами. В более поздних играх можно было изменить среднюю линию игрового поля для создания асимметричных узоров, перестановки и изменения спрайтов игроков в середине экрана для создания дополнительных спрайтов.
Цветовые возможности TIA
[ редактировать ]TIA использует разные цветовые палитры в зависимости от используемого формата телевизионного сигнала . Для формата NTSC (номер детали CO10444) [3] предусмотрена палитра из 128 цветов, тогда как для PAL доступно только 104 цвета (номер детали CO11903). [3] Наконец, палитра SECAM состоит всего из 8 цветов.
палитра NTSC
[ редактировать ] яркость оттенок | 0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 |
---|---|---|---|---|---|---|---|---|
0 | ||||||||
1 | ||||||||
2 | ||||||||
3 | ||||||||
4 | ||||||||
5 | ||||||||
6 | ||||||||
7 | ||||||||
8 | ||||||||
9 | ||||||||
10 | ||||||||
11 | ||||||||
12 | ||||||||
13 | ||||||||
14 | ||||||||
15 |
Палитра ПАЛ
[ редактировать ] яркость оттенок | 0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 |
---|---|---|---|---|---|---|---|---|
0,1,14,15 | ||||||||
2 | ||||||||
3 | ||||||||
4 | ||||||||
5 | ||||||||
6 | ||||||||
7 | ||||||||
8 | ||||||||
9 | ||||||||
10 | ||||||||
11 | ||||||||
12 | ||||||||
13 |
Палитра СЕКАМ
[ редактировать ]0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 |
---|---|---|---|---|---|---|---|
Генератор шума/тона (AUD0/1)
[ редактировать ]TIA способен генерировать различные типы пульсовых волн и белый шум на своих двух генераторах (или каналах ) AUD0 и AUD1. Каждый генератор имеет 5-битный делитель частоты и 4-битный регистр управления звуком, который управляет формой сигнала . Также имеется 4-битный регистр регулировки громкости на канал .
Делитель частоты (AUDF0/1)
[ редактировать ]Частоты генерируются путем деления 31399 Гц (31113 Гц для PAL ) на предоставленное 5-битное значение. [14] В результате получается дешевый делитель частоты, способный работать с расстроенными нотами и нечетной настроенной частотой. TIA не является музыкальным чипом, если только композитор не работает в пределах частот или не модулирует две расстроенные частоты для создания ноты, настроенной вибрато .
Управление звуком (AUDC0/1)
[ редактировать ]Регистр Audio Control генерирует и манипулирует пульсовой волной для создания сложных импульсов или шума. В следующей таблице (с созданными дубликатами) объясняется, как генерируются его тона:
шестигранник | D7 | Д6 | Д5 | Д4 | Д3 | Д2 | Д1 | Д0 | Тип шума или деления |
---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | Установите на 1 (только громкость) | ||||
1 | 0 | 0 | 0 | 1 | 4-битный поли | ||||
2 | 0 | 0 | 1 | 0 | ÷ 15 → 4 бит поли | ||||
3 | 0 | 0 | 1 | 1 | 5-битное поли → 4-битное поли | ||||
4 | 0 | 1 | 0 | 0 | ÷ 2 | ||||
5 | 0 | 1 | 0 | 1 | ÷ 2 | ||||
6 | 0 | 1 | 1 | 0 | ÷ 31 | ||||
7 | 0 | 1 | 1 | 1 | 5-битное поли → ÷ 2 | ||||
8 | 1 | 0 | 0 | 0 | 9-битное поли (белый шум) | ||||
9 | 1 | 0 | 0 | 1 | 5-битный поли | ||||
А | 1 | 0 | 1 | 0 | ÷ 31 | ||||
Б | 1 | 0 | 1 | 1 | Установить последние 4 бита в 1 | ||||
С | 1 | 1 | 0 | 0 | ÷ 6 | ||||
Д | 1 | 1 | 0 | 1 | ÷ 6 | ||||
И | 1 | 1 | 1 | 0 | ÷ 93 | ||||
Ф | 1 | 1 | 1 | 1 | 5-битный поли ÷ 6 |
Ссылки
[ редактировать ]- ^ «I. Теория действия». Руководство по полевому обслуживанию видеокомпьютерной системы Atari — модель 2600/2600A для домашнего использования (PDF) . Ред. 02. Atari, Inc., 21 января 1983 г., стр. 1–4. Архивировано из оригинала (PDF) 15 февраля 2017 года . Проверено 10 сентября 2010 г.
- ^ Хейг, Джеймс (10 сентября 2013 г.). «Почему существуют специализированные игровые консоли?» . Программирование в XXI веке .
- ^ Перейти обратно: а б с Стилфен, Скотт (5 февраля 2020 г.). «ATARI VCS/2600 TIA CHIPS» . Проверено 24 февраля 2020 г.
- ^ Перейти обратно: а б с д и ж г час я дж к Декуир, Джо (июль 2015 г.). «Видеокомпьютерная система Atari: принесите домой развлекательные истории» . Журнал IEEE Consumer Electronics : 59–66. дои : 10.1109/MCE.2015.2421572 .
- ^ Крис Кроуфорд, «ANTIC и список отображения» , De Re Atari
- ^ МакКаллум, Джон К. (13 февраля 2012 г.). «Цены на память (1957-2012)» . jcmit.net . Архивировано из оригинала 26 октября 2012 года . Проверено 27 октября 2012 г.
- ^ Монфор и Богост, стр. 27
- ^ Гольдберг, Марти; Вендел, Курт (2012). «Глава 5». Atari Inc: Бизнес — это весело . Сыгызы Пресс. ISBN 978-0985597405 .
- ^ Перейти обратно: а б Райт, Стив. «Руководство программиста Stella» , (на испанском языке), 3 декабря 1979 г. Архивировано 5 марта 2016 г.
- ^ Колер, Крис (13 марта 2009 г.). «Гонки на луче: как сумасшедшее оборудование Atari 2600 изменило игровой дизайн» . Проводной . Архивировано из оригинала 12 июля 2014 года.
- ^ Монфор и Богост, стр. 34
- ^ Подробнее о PAL см. «Технические характеристики Atari 2600». Архивировано 24 мая 2011 г., на Wayback Machine.
- ^ Робинетт, Уоррен, «Приключение» , Университет Северной Каролины . Архивировано 27 января 2018 года.
- ^ «Звуковые чипы в 8-битных компьютерах» . ФЛОП Портал Atari . Проверено 14 декабря 2023 г.
Источники
[ редактировать ]- Монфор, Ник; Богост, Ян (2009). Гонки на луче: видеокомпьютерная система Atari . МТИ Пресс. ISBN 978-0-262-01257-7 .