stringtranslate.com

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

Атари 2600

Television Interface Adapter [1] ( TIA ) — это специальный компьютерный чип , который вместе с вариантом MOS Technology 6502 составляет основу игровой консоли Atari Video Computer System 1977 года . TIA генерирует экранное изображение, звуковые эффекты и считывает контроллеры. Во времена разработки Atari VCS даже небольшие объемы оперативной памяти были дорогими. Чип был разработан без дополнительных схем кадрового буфера , вместо этого для создания даже простого дисплея требовалось детальное программирование. [2]

Разработкой TIA CO10444/CO11903 [3] руководил Джей Майнер , который продолжил в 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, и Педдл предложил 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 также поддерживал пять отдельных графических объектов, состоящих из:

Без RAM-баферов кадра обнаружение столкновений также усложняется. TIA имеет аппаратное обнаружение столкновений для всех этих объектов с помощью 15 триггеров установки/сброса и хранит битовую карту столкновений, которые обычно считываются в течение периода VBLANK. [4] Регистры в TIA позволяют программисту управлять позиционированием графических объектов и их цветом.

TIA также обеспечивает два канала однобитного звука. Каждый канал обеспечивает 32 значения высоты тона и 16 возможных последовательностей бит. Имеется 4-битный регулятор громкости. [4]

Наконец, TIA имеет входы для считывания до четырех аналоговых контроллеров лепестков с использованием потенциометров и для двух триггеров джойстика. [4]

Рисование дисплея

Поскольку регистры содержат данные только для одной строки дисплея, создание полного экрана требует, чтобы игровая программа обновляла регистры на лету, этот процесс известен как « гонка за лучом ». [10]

Чтобы начать процесс, игровая программа, работающая на процессоре на базе MOS Technology 6502, загружает регистры TIA данными, необходимыми для рисования первой строки дисплея. Затем TIA ждет, пока телевизор не будет готов нарисовать строку (под управлением соответствующего аналогового оборудования TIA), и считывает регистры, чтобы выдать сигнал для этой строки. Во время периода горизонтального гашения между строками 6502 быстро изменяет регистры TIA по мере необходимости для следующей строки. Этот процесс продолжается вниз по экрану.

Это усложняется тем, что MOS Technology 6507 в 2600 представляет собой версию 6502 с уменьшенным количеством выводов и не поддерживает аппаратные прерывания . Обычно аналоговая сторона системы отображения генерирует прерывание, когда она заканчивает рисовать растровую линию и готовится к следующей. Прерывание запускает код, необходимый для обновления экрана, а затем возвращается к «основной» программе. 6507 оставил эти выводы вне ЦП для экономии денег, однако у него есть вывод «RDY» для вставки состояний ожидания в циклы шины ЦП . TIA был специально разработан для использования вывода RDY для синхронизации ЦП с синхронизацией растровой линии видео, генерируемого TIA: когда ЦП записывает в определенный адрес регистра TIA, TIA понижает свой выходной сигнал RDY до конца текущей линии, команда «ожидания синхронизации». [4] Это приостанавливает работу ЦП до начала (цикл цветового тактирования 0) периода горизонтального гашения прямо перед следующей строкой, обеспечивая меру автоматической синхронизации. Предполагаемое использование этого механизма заключается в том, что ЦП выполняет код, который настраивает регистры TIA для строки, которая должна быть нарисована, и который обычно выполняется до завершения за некоторое время до того, как TIA достигает конца этой строки. Чтобы упростить синхронизацию видеовремени, ЦП затем записывает в регистр, который запускает задержку синхронизации через RDY, выбрасывая переменное количество времени ЦП. [4]

Кроме того, TIA только полуавтоматически генерирует сигналы вертикальной синхронизации (чтобы обозначить конец каждого видеокадра и начало следующего). TIA способен вставлять сигнал вертикальной синхронизации в аналоговый выходной видеосигнал, но у него нет счетчика строк кадров, и поэтому он не может определить, когда должен закончиться кадр. Вместо этого программе ЦП остается запускать сигналы вертикальной синхронизации и подсчитывать строки в каждом кадре, чтобы определить, когда должен быть сгенерирован сигнал вертикальной синхронизации. Как и в случае с оборудованием RDY-wait, сигнал вертикальной синхронизации запускается записью ЦП в определенный адрес регистра TIA. Если запись по этому адресу не производилась и TIA разрешалось работать вхолостую, он генерировал бы один бесконечный кадр активных растровых строк, который обычно отображался бы на телевизоре в виде движущегося изображения. Большинство опубликованных игр для Atari 2600 генерировали вертикальную синхронизацию либо через каждые 262, либо через каждые 263 строки (но ничто в TIA не мешает ей генерировать кадры любой длины, короче или длиннее, хотя полученные видеодисплеи будут отображаться вертикально на обычных телевизорах).

Эти и другие детали программирования TIA означают, что программистам необходимо тщательно рассчитывать время своих программ, чтобы они работали в точном количестве циклов, необходимых для различных событий, связанных с экраном. Если сделать это неправильно, экран будет отрисован неправильно. Часть программы, которая это делает, называется «ядром» этой программы. [11]

Учитывая эту сложность, ранние игры, использующие систему, как правило, были простыми по компоновке, используя TIA для создания симметричных игровых полей с игроками наверху. Это было изначальное намерение системы: запустить несколько аркадных игр, которые Atari уже выпустила, таких как Tank и Pong . В этих случаях данные игрового поля обычно размещались в 2-килобайтной памяти ROM в игровом картридже . Поскольку каждая строка использовала 20 бит данных, а на дисплее NTSC было 192 строки, [12] для отображения с разной компоновкой на каждой строке требовалось всего 480 байт (192 x 20 / 8) из 4-килобайтной памяти картриджа для хранения одного жестко закодированного отображения. В этом случае ядро ​​просто продвигало 20 бит через ROM для каждой строки, пока 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

Палитра PAL

Палитра SECAM

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

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

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

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

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

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

Ссылки

  1. ^ "I. Теория работы". Atari Video Computer System Field Service Manual - Model 2600/2600A Domestic (PDF) . Rev. 02. Atari, Inc. 21 января 1983 г. стр. 1–4. Архивировано из оригинала (PDF) 15 февраля 2017 г. Получено 10 сентября 2010 г.
  2. ^ Хейг, Джеймс (10 сентября 2013 г.). «Почему существуют специализированные игровые консоли?». Программирование в XXI веке .
  3. ^ abc Stilphen, Scott (5 февраля 2020 г.). "ATARI VCS/2600 TIA CHIPS" . Получено 24 февраля 2020 г.
  4. ^ abcdefghijk Decuir, Joe (июль 2015 г.). «Atari Video Computer System: Bring Entertainment Stories Home». Журнал IEEE Consumer Electronics : 59–66. doi : 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: Бизнес — это весело . Sygyzy Press. ISBN 978-0985597405.
  9. ^ ab Райт, Стив. «Stella Programmer's Guide», (на испанском языке) 3 декабря 1979 г. Архивировано 5 марта 2016 г.
  10. ^ Колер, Крис (13 марта 2009 г.). «Гонка за лучом: как безумное железо Atari 2600 изменило игровой дизайн». Wired . Архивировано из оригинала 12 июля 2014 г.
  11. Монфор и Богост, стр. 34
  12. Подробнее о PAL см. в статье «Характеристики Atari 2600», архив 24 мая 2011 г. на Wayback Machine.
  13. ^ Робинетт, Уоррен, «Приключение», Университет Северной Каролины . Архивировано 27 января 2018 г.
  14. ^ "Звуковые чипы в 8-битных компьютерах". FLOP Atari portal . Получено 14 декабря 2023 г.

Источники

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