stringtranslate.com

Адаптер телевизионного интерфейса

Атари 2600

Адаптер телевизионного интерфейса [ 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 .

Дизайн

Материнская плата оригинальной шестикоммутационной системы Atari VCS. 40-контактный чип TIA находится слева. Центральный 28-контактный разъем — это микросхема MOS Technology 6507, а справа от него — 40-контактный чип MOS Technology 6352 Ram-I/O-Timer (RIOT). Слот для установки картриджа находится справа от чипа RIOT.

Фон

Примерно в 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, Милнер смог продемонстрировать способность программировать простую версию своей игры «Танк» . Джо Декуир был нанят, чтобы помочь преобразовать доказательство концепции Милнера в функциональный прототип, достаточный для 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 также поддерживал пять отдельных графических объектов, состоящих из:

Без кадровых буферов на базе ОЗУ обнаружение коллизий также затруднено. 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 байт.

Эффект радуги виден в игре Barnstorming

Ключевым достижением стало лицензирование Space Invaders для платформы, что требовало гораздо большего количества игровой графики для рисования вражеских инопланетян. Решение заключалось в том, чтобы изменить данные игрока для каждой строки во время рисования изображения, что привело к явному большому количеству игроков. Еще один прогресс был достигнут путем (частичного) кодирования дисплея в виде инструкций ЦП вместо хранения его в виде фиксированных данных в ПЗУ. Adventure использует эту концепцию для создания самых разных карт путем объединения различных частей данных в ПЗУ, перескакивая по ним вперед и назад во время рисования экрана. [13] Это позволило игре иметь 30 комнат, для которых в противном случае потребовалось бы 14 КБ ПЗУ .

По мере того, как программисты все больше привыкали к нечетному времени, необходимому для правильной работы вещей на экране, они начали использовать присущую TIA гибкость, чтобы значительно улучшить отображение. Одним из распространенных методов было изменение регистров цвета, которые использовались для рисования состояний 1 и 0 игрового поля, что приводило к отображению с радужными эффектами. В более поздних играх можно было изменить среднюю линию игрового поля для создания асимметричных узоров, перестановки и изменения спрайтов игроков в середине экрана для создания дополнительных спрайтов.

Цветовые возможности TIA

TIA использует разные цветовые палитры в зависимости от используемого формата телевизионного сигнала . Для формата NTSC (номер детали CO10444) [3] предусмотрена палитра из 128 цветов, тогда как для формата PAL (номер детали CO11903) доступно только 104 цвета. [3] Наконец, палитра SECAM состоит всего из 8 цветов.

палитра NTSC

Палитра ПАЛ

Палитра СЕКАМ

Генератор шума/тона (AUD0/1)

TIA способен генерировать различные типы пульсовых волн и белый шум на своих двух генераторах (или каналах ) AUD0 и AUD1. Каждый генератор имеет 5-битный делитель частоты и 4-битный регистр управления звуком, который управляет формой сигнала . Также имеется 4-битный регистр регулировки громкости на канал .

Делитель частоты (AUDF0/1)

Частоты генерируются путем деления 31399  Гц (31113  Гц для PAL ) на предоставленное 5-битное значение. [14] В результате получился дешевый делитель частоты, способный обрабатывать расстроенные ноты и нечетную настроенную частоту. TIA не является музыкальным чипом, если композитор не работает в пределах частот или не модулирует две расстроенные частоты для создания ноты, настроенной вибрато .

Управление звуком (AUDC0/1)

Регистр Audio Control генерирует и манипулирует пульсовой волной для создания сложных импульсов или шума. В следующей таблице (с созданными дубликатами) объясняется, как генерируются его тона:

Рекомендации

  1. ^ «I. Теория работы». Руководство по полевому обслуживанию видеокомпьютерной системы Atari — модель 2600/2600A для домашнего использования (PDF) . Ред. 02. Atari, Inc. , 21 января 1983 г., стр. 1–4. Архивировано из оригинала (PDF) 15 февраля 2017 года . Проверено 10 сентября 2010 г.
  2. Гаага, Джеймс (10 сентября 2013 г.). «Почему существуют специальные игровые консоли?». Программирование в XXI веке .
  3. ↑ abc Стилфен, Скотт (5 февраля 2020 г.). «ATARI VCS/2600 TIA CHIPS» . Проверено 24 февраля 2020 г.
  4. ^ abcdefghijk Декуир, Джо (июль 2015 г.). «Видеокомпьютерная система Atari: принесите домой развлекательные истории». Журнал IEEE Consumer Electronics : 59–66. дои : 10.1109/MCE.2015.2421572 .
  5. ^ Крис Кроуфорд, «ANTIC и список отображения», De Re Atari
  6. МакКаллум, Джон К. (13 февраля 2012 г.). «Цены на память (1957-2012)». jcmit.net . Архивировано из оригинала 26 октября 2012 года . Проверено 27 октября 2012 г.
  7. ^ Монфор и Богост, стр. 27
  8. ^ Голдберг, Марти; Вендел, Курт (2012). «Глава 5». Atari Inc: Бизнес — это весело . Сыгызы Пресс. ISBN 978-0985597405.
  9. ^ аб Райт, Стив. «Руководство программиста Stella», (на испанском языке), 3 декабря 1979 г. Архивировано 5 марта 2016 г.
  10. Колер, Крис (13 марта 2009 г.). «Гонки на луче: как сумасшедшее оборудование Atari 2600 изменило игровой дизайн». Проводной . Архивировано из оригинала 12 июля 2014 года.
  11. ^ Монфор и Богост, стр. 34
  12. ^ Дополнительную информацию о PAL см. в «Технических характеристиках Atari 2600». Архивировано 24 мая 2011 г., на Wayback Machine.
  13. ^ Робинетт, Уоррен, «Приключение», Университет Северной Каролины . Архивировано 27 января 2018 года.
  14. ^ «Звуковые чипы в 8-битных компьютерах». ФЛОП Портал Atari . Проверено 14 декабря 2023 г.

Источники

Внешние ссылки