Важная информация
RSS лента

vinxru

Atari 2600

Рейтинг: 4.00. Голосов: 4.
Процессор: MOS Technology 6507 (аналог 6502)
ОЗУ: 128 байт
Видео ОЗУ: 0 байт
Звук: 2 генератора с изменяемым тоном и громкостью, плюс шум
Разрешение: 160x192 128 цветов
Выпущена: рождество 1977 года.

[IMG]http://www.zdnet.de/wp-content/uploads/2013/01/atari2600.jpg[/IMG]

Atari 2600 (или Atari Video Computer System) - это легенда. С этого игрового компьютера началась эпоха компьютерных игр и рынок программного обеспечения.

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

Главная причина того, что Атари 2600 стал самым популярным - это вложенные в него деньги. Только на разработку консоли было потрачено 100.000.000$, и денег еще оставалось столько, что два последующих убыточных года не погубили компанию.

Успех пришел только тогда, когда появились интересные игры. Самой удачной игрой была Space Invaiders, портированная с игровых автоматов. Она принесла фирме 100.000.000$. А всего за этот год, фирма заработала 2.000.000.000$.

Вместе с успехом Атари 2600 стали как грибы после дождя появляться программистские фирмы. А Вы попробуйте (!) разделить 100.000.000 долларов на 4 Килобайта (это размер игры Space Invaiders). Получается где то 25.000 долларов за байт. Каждые 10 байт - это новенький спорт-кар на стоянке у офиса.

Самой известной, из образовавшихся тогда фирм, была Activision. Её основали 4 программиста ушедшие из Атари. В составе Activision они написали большинство лучших игр для Атари 2600. А сейчас Activision это один из крупнейших издателей игр, уступающий по величине только Electronic Arts.

Фирма Атари стала крупнейшей фирмой в силиконовой долине, и с каждым годом всё богатела и богатела, пока на рынке не появилась приставка Famicom (FAMIly COMputer, она же Nintendo Entertaiment System или Dendy).

Графика у Атари 2600 очень примитивна, но динамична. У Атари нет возможности зафиксировать изображение на экране, у неё нет видеопамяти, поэтому программист должен каждый кадр рисовать заново. И поэтому многие эффекты (например вертикальный скролл) реализовать не сложнее, чем реализовать статичный экран. Так же радует обилие оттенков (одновременно может быть отображено 128 цветов).

Если есть желание, так же взгляните на видео некоторых игр:
Pitfall - [url]http://www.youtube.com/watch?v=6UCrbxwVf4c[/url]
Montezuma's Revenge - [url]http://www.youtube.com/watch?v=Klxxg9JM5tY[/url]
RiverRaid - [url]http://www.youtube.com/watch?v=pmPjsBDN9Xw[/url]

Поиграть в игры для Атари 2600 можно скачав эмулятор Stella и архив игр.

[url]http://sourceforge.net/projects/stella/[/url]
[url]http://tv-roms.narod.ru/2600/Atari2600_Good2600_3.14.7z[/url]

[SIZE=4]Внутри[/SIZE]

Что то же такого сделали разработчики за 2 года и 100.000.000$? Плата содержит всего 3 микросхемы: процессор MOS Technology 6507, микросхемы TIA и RIOT.

[IMG]https://amazingdiy.files.wordpress.com/2005/10/atari2600_board_upper.jpg[/IMG]

Процессор MOS Technology 6507 - это легендарный процессор 6502 в корпусе с меньшим количеством выводов. Пострадали линии адреса и он может адресовать лишь 8 Кб памяти. Об этом процессоре я расскажу подробнее ниже.

Микросхема RIOT, это аббревиатура Ram Input/Output Timer, а вообще она называется MOS Technology 6532. Эта микросхема содержит: 128 байт оперативной памяти, порты джойстиков и таймер.

Микросхема TIA, это аббревиатура Television Interface Adaptor. Эта микросхема формирует видео и аудио сигнал. Для формирования звука, эта микросхема содержит два генератора прямоугольных импульсов с управляемой частотой и амплитудой, а так же генератор шума. Эта микросхема - личная разработка фирмы Атари. Именно на разработку этой микросхемы ушло большее количество денег и времени.

[SIZE=4]Картридж[/SIZE]

Программы для Атари 2600 продавались в виде картриджей содержащих в себе микросхемы ПЗУ. И иногда дополнительное ОЗУ. 128 байт хватало не всем.

Из доступных процессору 8 Кб адресного пространства, картридж может использовать лишь верхнюю половину. Программы объемом более 4 Кб используют технологию переключения банков. Обычно переключение банков осуществляется при чтении определенных адресов. Например в игре Mario Bros. банки переключаются при чтении адресов: 1FF8h, 1FF9h.

Если кто то хочет сам изготовить картридж для Атари 2600, то можете воспользоваться разработанной и проверенной мной схемой и печатной платой.

[SIZE=4]Процессор MOS Technology 6502[/SIZE]

Именно с появлением процессора MOS Technology 6502 стало возможно появление домашних компьютеров. Это был первый дешевый и достаточно мощный процессор на рынке. Помимо Атари 2600 он использовался в компьютерах: Apple 1, Commodore 64, Dendy (оно же NES, Famicom).

В Терминаторе 1 и Бендере из Футурамы так же используется этот процессор. :)

Как и в случае с программистами из Атари, которые основали собственные фирмы, обиженные разработчики процессора Motorola 6800 ушли из Motorola и основали свою компанию. Рекордно быстрыми темпами они разработали новый революционный процессор 6501 (наш 6502 или 6507 отличается лишь корпусом) и новую революционную технологию производства микросхем. При той же производительности, что и у процессора Intel 8080, себестоимость этого процессора была в 6 раз меньше.

Процессор имеет 6 регистров: 3 регистра общего назначения A, X, Y; регистр флагов; регистр стека и программный счетчик. Программный счетчик 16-битный, а все остальные регистры 8 бит. Да-да, регистр стека тоже восьмибитный, стек находится всегда между 100h - 1FFh. Регистров конечно мало, но это компенсируется тем, что этот процессор очень быстро работает с первыми 256 байтами адресного пространства.

В интернете есть интересный сайт, изображающий кристалл процессора в работе.
[url]http://www.visual6502.org/JSSim/index.html[/url]

[SIZE=4]Принцип формирования изображения[/SIZE]

Микросхема TIA обеспечивает разрешение 160x192 и 128 цветов. Хотя разрешение и кол-во цветов зависит от программиста и используемой системы цветности.

Микросхему TIA можно назвать одномерным ускорителем графики, потому что без помощи центрального процессора, эта микросхема умеет формировать лишь изображение, в котором все строки идентичны. Без центрального процессора эта микросхема даже не формирует кадровые синхроимпульсы.

Для формирования двумерного изображения центральный процессор должен постоянно записывать в регистры TIA данные. Через регистры программист управляет 6-ю объектами: Игровое поле, которое занимает всю строку экрана; два игрока, две мишени, один мяч, которые могут находится в произвольном месте экрана.

Игровое поле - это двухцветное изображение 20x1, которое дублируется до 40x1 и растягивается на всю строку в 160 пикселей. Правая часть игрового поля может быть зеркально отражена.

Игрок - это одноцветное изображение 8x1 (второй цвет прозрачный). Программист определяет положение игрока, его цвет, а так же некоторые эффекты (игрока можно отразить, растянуть, дублировать...).

Мишень - это отрезок 1,2,4 или 8 пикселей. Цвет мишени всегда такой же, как цвет игрока.

Мяч - это отрезок 1,2,4 или 8 пикселей. Мяч может быть любого цвета.

Еще TIA выполняет проверку пересечений этих объектов, что сильно облегчает жизнь программисту.

Это почти все видео возможности микросхемы TIA. Желающие докопаться до сути могут тут почитать описание регистров TIA ([url]http://www.blarworld.net/stella/WRITE%20ADDRESS%20SUMMARY.html[/url]). Желающие копнуть поглубже, могут взглянуть на принципиальную схему TIA ([url]http://www.atariage.com/2600/archives/schematics_tia/index.html[/url])

Из TIA можно выжать гораздо больше, если изменять нужные регистры в нужное мгновение. Под нужными регистрами, я подразумеваю не очевидные сочетания значений. Используя эту возможность программисты реализовали текстовый режим, спрайты 64 пикселя в ширину, 15 цветов на строку и многое другое.

[SIZE=4]Программа[/SIZE]

Теперь подкрепим теорию практикой и напишем простую программу для Атари 2600. Наша программа будет выводить на экране фразу "HELLO WORLD". Ради простоты программы, расположим надпись вертикально.

Перед рисованием каждой строки, мы будем записывать в регистр цвета игрока (ColuP0) номер строки. То есть N-ная строка будет N-ного цвета. В битмеп игрока (Grp0) будем последовательно записывать массив заранее подготовленных значений. В битмеп игрового поля (Pf1) будет записывать то же, что и в битмеп игрока.

Массив данных рассчитывается очень просто. Каждый байт - это новая строка. Каждый бит байта соответствует пикселю изображения. То есть последовательность:

10000010b
10000010b
10000010b
11111110b
10000010b
10000010b
10000010b

кодирует букву H. Двоичное число 10000010b это десятичное число 130, либо шестнадцатеричное число 82h. Двоичное число 11111110b это десятичное число 254, либо шестнадцатеричное число FEh.

Переведем написанное на язык процессора 6502. Для удобства людей не знакомых с ассемблером процессора 6502, в комментариях справа я разместил аналогичную программу на языке C.

[CODE] LDY #0 ; unsigned char y = 0;
Loop4: ; do {
STY ColuP0 ; цвет_игрока_1 = y;
LDA Data, Y ; a = data[y];
STA Grp0 ; битмэп_игрока_1 = a;
STA Pf1 ; битмэп_игрового_поля = a;
STA Wsync ; ждем_конец_строки();
STA Wsync ; ждем_конец_строки();
INY ; y++;
CPY #88 ; bool flag = y<72;
BNE Loop4 ; } while(flag);

Data: .DB $82,$82,$82,$FE,$82,$82,$82,0 ; H
.DB $FE,$80,$80,$FE,$80,$80,$FE,0 ; E
.DB $80,$80,$80,$80,$80,$80,$FE,0 ; L
.DB $80,$80,$80,$80,$80,$80,$FE,0 ; L
.DB $7C,$82,$82,$82,$82,$82,$7C,0 ; O
.DB 0,0,0,0,0,0,0,0
.DB $92,$92,$92,$92,$92,$92,$6C,0 ; W
.DB $7C,$82,$82,$82,$82,$82,$7C,0 ; O
.DB $FC,$82,$82,$FC,$88,$84,$82,0 ; R
.DB $80,$80,$80,$80,$80,$80,$FE,0 ; L
.DB $FC,$82,$82,$82,$82,$82,$FC,0 ; D
[/CODE]
Ниже приведен результат её работы. Мы видим две широкие надписи, потому что правая часть игрового поля дублирует левую.

[IMG]http://cs616523.vk.me/v616523349/5325/vmP-SskJfrA.jpg[/IMG]

[SIZE=4]Видео и аудио выходы на Atari 2600[/SIZE]

На оригинальной приставке Atari 2600 нет аудио/видео выходов, а есть только антенный провод. Лично у меня, при использовании антенного провода картинка была отвратительного качества и не было звука. Поэтому я решил добавить в приставку видео и аудио выходы.

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

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

Вернуть приставку в оригинальное состояние, можно будет с помощью паяльника и спирта.

За основу этой схемы была взята схема Da Loafhouse - Видеовыход для Atari 2600. Только я заменил редкую микросхему 4050D, на распространенную 74_245 (наш аналог 555АП6, 1533АП6 и т.д.). Эта микросхема выполняет защитную роль, никак не влияя на видео сигнал. Я убрал из схемы конденсатор на 15 пф, что повысило четкость изображения. Этот конденсатор вместе с остальными резисторами образует RC фильтр размазывающий видеосигнал. Возможно, это сделало цветопередачу некорректной, но это далеко не единственный фактор влияющий на цветопередачу, поэтому мне все равно, главное четкость, которая даже без конденсатора не идеальна. Так же я убрал несколько резисторов и конденсатор, толку от которых нет.

Готовая плата

[IMG]http://cs616523.vk.me/v616523349/52fe/vNNkZvHFTUI.jpg[/IMG]

[IMG]http://cs616523.vk.me/v616523349/5305/R8T7hnVm-0Q.jpg[/IMG]

Схема

[IMG]http://cs616523.vk.me/v616523349/5358/VRVSdT9Zkj0.jpg[/IMG]

Печатная плата

[IMG]http://cs616523.vk.me/v616523349/535f/mr71hO2bovI.jpg[/IMG]

Установленная плата

[IMG]http://cs616523.vk.me/v616523349/530d/qWDNmjXf72E.jpg[/IMG]

[SIZE=4]Cамодельные картриджи для Atari 2600[/SIZE]

Разъем картриджа у этой приставки представляет собой шину данных (8 бит) и адреса (13 бит) процессора. А так же питание. Ни каких RD или WR нет, что выглядит немного странно. 13 бит шины адреса соответствует 8 Кб адресного пространства, но нижние 4 Кб используется самой приставкой, а ПЗУ картриджа (в большинстве случаев) занимает верхние 4 Кб.

В самом простом случае, картридж представляет собой единственное ПЗУ на 4 Кб. Именно этот тип картриджей я буду эмулировать.

Более сложные картриджи могут содержать ПЗУ большего объема и элементы выполняющие "переключение банков". Один из реальных примеров, при чтении адреса 1FF8 включаются первые 4 Кб ПЗУ, а при чтении адреса 1FF9 включаются вторые 4 Кб ПЗУ. Так же картридж может содержать дополнительное ОЗУ и периферию.

Для этой приставки я нашел примерно 500 игр. 350 из них были объемом 4 Кб. Например River Raid занимает 4 Кб и запускается с этого картриджа. Вообще, я попробовал записать 16 игр и все они запустились. Остальные 150 игр объемом от 6 до 32 Кб. Например "Братья Марио" занимают 8 Кб и с помощью этого картриджа вам поиграть в них не получится.

[SIZE=4]Игры про 4 Кб[/SIZE]

Этот универсальный картридж использует электрически стираемое ПЗУ W27C512 объемом 64 Кб. В этот объем можно поместить 16 игр объемом 4 Кб, которые выбираются 4-мя перемычками. Так же картридж содержит микросхему К155ЛН1, которая нужна для дешифрации адреса.

[IMG]http://cs616523.vk.me/v616523349/52f7/AT0xp4ArQLw.jpg[/IMG]

[IMG]http://cs616523.vk.me/v616523349/532c/tEzU8Am4haw.jpg[/IMG]

[IMG]http://cs616523.vk.me/v616523349/5333/lWwEqE6MoYw.jpg[/IMG]

И более компактная плата

[IMG]http://cs616523.vk.me/v616523349/5342/xxyD6TYZUpU.jpg[/IMG]

[IMG]http://cs616523.vk.me/v616523349/533b/smaKW7uj6U8.jpg[/IMG]

[SIZE=4]Игры про 8 Кб[/SIZE]

еперь речь пойдет об играх объемом 8 Кб или больше. Такие игры используют технологию переключения банков. В нашем случае переключение работает так: при чтении адреса 1FF8 включаются первые 4 Кб ПЗУ, при чтении адреса 1FF9 включается вторые 4 Кб ПЗУ. Обе половинки отображаются на одинаковые адреса, но работают по очереди.

Ниже приведена схема картриджа, который позволяет играть в некоторые игры объемом 8 Кб. Например у меня запустились на этом картридже: Mario Bros, Jungle Hunt, Tapper, Pole Position. Ради них я и собирал картридж.

[IMG]http://cs616523.vk.me/v616523349/52f0/XHmSwEhk5ck.jpg[/IMG]

[IMG]http://cs616523.vk.me/v616523349/5351/_ZDyflWtJNI.jpg[/IMG]

[IMG]http://cs616523.vk.me/v616523349/5349/Nx1rdc3BHlY.jpg[/IMG]
Метки: Нет Добавить / редактировать метки
Категории
Без категории

Комментарии