Технология МОП VIC-II

Видеомикросхема в домашних компьютерах Commodore 64 и C128
MOS 6569R3 (версия PAL) на материнской плате C64

VIC -II ( Video Interface Chip II ), в частности известный как MOS Technology 6567/6566/8562/8564 ( версии NTSC ), 6569/8565/8566 ( PAL ), представляет собой микрочип, отвечающий за генерацию видеосигналов Y/C (объединенных с композитным видео в радиочастотном модуляторе ) и сигналов обновления DRAM в домашних компьютерах Commodore 64 и Commodore 128 .

Пришедший на смену оригинальному чипу MOS Technology VIC, использовавшемуся в VIC-20 , VIC-II был одним из ключевых специализированных чипов в Commodore 64 (другим был звуковой чип MOS Technology 6581 ).

История развития

Чип VIC-II был разработан в первую очередь Альбертом Шарпантье и Чарльзом Уинтерблом [1] в MOS Technology, Inc. как преемник MOS Technology 6560 "VIC" . Ранее команда MOS Technology не смогла создать два графических чипа под названием MOS Technology 6562 для компьютера Commodore TOI и MOS Technology 6564 для Color PET из-за ограничений скорости памяти. [2]

Для того чтобы построить VIC-II, Шарпантье и Винтербл провели исследование рынка современных домашних компьютеров и видеоигр , перечислив текущие функции и те функции, которые они хотели бы иметь в VIC-II. Идея добавления спрайтов пришла из компьютера TI-99/4A и его графического сопроцессора TMS9918 . Идея поддержки обнаружения столкновений пришла из Mattel Intellivision . Atari 800 также был добыт для желаемых функций, в частности, режима растрового изображения, который был желаемой целью команды MOS, поскольку все основные конкуренты Commodore среди домашних компьютеров имели растровую графику, в то время как VIC-20 имел только переопределяемые символы. [3] [4] Около 3/4 поверхности чипа используется для функциональности спрайтов. [5]

Чип был частично смонтирован с использованием инструментов автоматизации электронного проектирования от Applicon (теперь часть UGS Corp. ), а частично вручную на веленевой бумаге . Дизайн был частично отлажен путем изготовления чипов, содержащих небольшие подмножества дизайна, которые затем можно было тестировать отдельно. Это было легко, поскольку MOS Technology имела и свою научно-исследовательскую лабораторию, и полупроводниковый завод в одном месте. Первоначальная партия тестовых чипов вышла почти полностью функциональной, с одним плохим спрайтом. [6] Чип был разработан по 5-микрометровой технологии. [3]

Работа над VIC-II была завершена в ноябре 1981 года, в то время как Роберт Яннес одновременно работал над чипом SID . Оба чипа, как и Commodore 64 , были завершены к моменту проведения Consumer Electronics Show в первые выходные января 1982 года. [7]

Особенности VIC-II

Некоторые из графических режимов на 64 действительно странные, и у них нет аналогов в Atari или Apple, как, например, возможность менять цвет основы символа по всему экрану. Это дало нам много цветовых возможностей, которые не были использованы.

—  Крейг Нельсон из Epyx, 1986 [8]

Технические подробности

Распиновка MOS 6567 VIC-II .

Обратите внимание, что нижеприведенные адреса регистров указаны так, как их видит ЦП в C64. Чтобы получить номера регистров, как обычно указано в технических описаниях (т. е. начиная с 0), следует опустить начальный "D0".

Программирование

Supratechnic , программа ввода данных, опубликованная в издании COMPUTE! Gazette в ноябре 1988 года, демонстрирует аккуратное использование растровых прерываний для отображения информации за пределами стандартных границ экрана (в данном случае: верхней и нижней границы).

VIC-II программируется путем манипулирования 47 регистрами управления (по сравнению с 16 в VIC), памятью, отображенной в диапазоне $D000$D02E в адресном пространстве C64. Из всех этих регистров 34 работают исключительно с управлением спрайтами (спрайты называются MOB, от "Movable Object Blocks", в документации VIC-II). Как и его предшественник, VIC-II обрабатывает ввод световым пером и с помощью стандартного символьного ПЗУ C64 предоставляет оригинальный набор символов PETSCII с 1977 года на дисплее такого же размера, как и 40-колоночная серия PET .

Перезагружая регистры управления VIC-II через машинный код, подключенный к процедуре прерывания растра (прерывание строки развертки), можно запрограммировать чип на генерацию значительно большего количества, чем 8 одновременных спрайтов (процесс, известный как мультиплексирование спрайтов ), и, как правило, придавать каждому программно-определенному фрагменту экрана различные свойства прокрутки, разрешения и цвета. Аппаратное ограничение в 8 спрайтов на строку развертки можно увеличить еще больше, если позволить спрайтам быстро мерцать. Мастерство прерывания растра необходимо для раскрытия возможностей VIC-II. Многие демоверсии и некоторые более поздние игры устанавливали фиксированный «блок-шаг» между ЦП и VIC-II, чтобы регистрами VIC можно было манипулировать точно в нужный момент.

Графика персонажей

C64 поставлялся с набором символов PETSCII в 4k ROM, но, как и VIC-20 до него, фактические данные для символов считывались из памяти в указанном месте. Это место является одним из регистров VIC-II, что позволяло программистам создавать свои собственные наборы символов, помещая соответствующие данные в память; каждый символ представляет собой сетку 8x8, байт представляет 8 бит по горизонтали, поэтому для одного символа требуется 8 байт, и, таким образом, полный набор из 256 символов использует в общей сложности 2048 байт. Теоретически можно использовать до восьми наборов символов, если заполнить все 16k видеопамяти. [9] : 363 

В дополнение к наборам символов, VIC-II также использует 1000 байт для хранения 25 строк по 40 символов в строке, один байт на каждый символ, что в конфигурации по умолчанию при включении питания находится в $400 - $7E8 . [9] : 117–119  Цветовая RAM доступна как биты 8-11 видеоматрицы; [10] в 64 и 128 она расположена в пространстве ввода-вывода в $D800 - $DBFF и не может быть перемещена из этого местоположения. Она содержит значения для цвета 1 (цвета 3 в многоцветном режиме) каждого символа.

Символьное ПЗУ отображается в двух из четырех "окон" VIC-II, в $1000 - $1FFF и $9000 - $9FFF , хотя ЦП не может его там видеть (символьное ПЗУ может быть переключено в $D000 - $DFFF , где оно видимо ЦП, но не VIC-II). Таким образом, графические данные или видеобуферы не могут быть размещены в $1000 - $1FFF или $9000 - $9FFF , потому что VIC-II вместо этого увидит символьное ПЗУ там. Поскольку эти области ОЗУ не могли использоваться графическим чипом VIC-II, они часто использовались для музыкальных/звуковых эффектов (чип SID). C64 имеет возможность иметь ОЗУ и ПЗУ по одному и тому же адресу в памяти, но ЦП будет "видеть" одно, а чип VIC-II будет "видеть" другое.

В режиме символов высокого разрешения по умолчанию передний план каждого символа может быть установлен индивидуально в цветовой памяти. В режиме многоцветных символов цвет 3 ограничен первыми восемью возможными цветовыми значениями; четвертый бит затем используется как флаг, указывающий, должен ли этот символ отображаться в высоком разрешении или многоцветном, что позволяет смешивать оба типа на одном экране. [9] : 460–462  Цвета 1 и 2 устанавливаются регистрами в $D022 и $D023 и являются глобальными для всех символов. [9] : 373 

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

Режим растрового изображения

Добавление режима растровой графики с адресацией по всем точкам было одной из основных целей команды разработчиков Commodore, поскольку у VIC-I такой возможности не было. Однако, чтобы использовать как можно меньше дополнительных схем, они организовали его так же, как и в символьном режиме, т. е. плитки 8x8 и 4x8. Для растровой графики требуется страница размером 8k для пиксельных данных, и каждый байт соответствует одной строке из восьми или четырех пикселей. Следующий байт — это строка под ним и после 8-й строки, возвращаясь к началу следующей плитки.

В растровых изображениях высокого разрешения экранная оперативная память используется для хранения цветов переднего плана и фона каждой плитки (старший и младший полубайт каждого байта). Это единственный режим VIC-II, который не использует цветовую оперативную память в $D800 или регистр цвета фона в $D021 .

Режим многоцветного растрового изображения допускает три цвета на плитку (четвертый — цвет фона, установленный в $D021 ). Цвета 1 и 2 выбираются битами в экранной оперативной памяти (так же, как и растровые изображения hires), а третий — из цветной оперативной памяти.

Несмотря на высокий уровень детализации цвета и возможности адресации всех точек в растровом режиме, он, как правило, непрактичен для игровой графики из-за необходимости большого количества системных ресурсов (8k для пиксельных данных плюс значительно больше циклов ЦП для изменения каждой плитки) и обычно не может прокручиваться. Таким образом, он чаще всего встречается на загрузочных экранах и иногда на титульных экранах.

Спрайты

Спрайты VIC-II либо монохромные 24x21, либо многоцветные 12x21. Подобно символьной графике, последние имеют один индивидуальный цвет для каждого спрайта и два глобальных. VIC-II имеет восемь спрайтов, каждый из которых использует 64 байта памяти для хранения, но, с определенными ограничениями, он может отображать гораздо больше. Мультиплексирование спрайтов является распространенным методом получения более восьми на экране (хотя все еще есть максимум восемь на строку развертки). Счетчик строк развертки VIC-II можно опрашивать до тех пор, пока на экране не будет достигнута нужная точка, или можно запрограммировать прерывание растра для срабатывания на определенной строке развертки, после чего программа быстро изменяет координаты спрайта. Этот метод может привести к появлению на экране множества дополнительных спрайтов одновременно, часто в общей сложности от 16 до 24 или более. Однако для демонстрации предел значительно более гибок.

Теоретически максимальное количество различных спрайтов, видимых одновременно, составляет 256 (предполагая, что вся 16-килобайтная страница VIC-II заполнена). Они адресуются с помощью номера блока для ссылки на каждый шаблон спрайта в памяти, начиная с 0 и до 255 ($FF) в зависимости от их положения на странице видео. (если используется второй видеобанк (пронумерованный как 0 1 2 и 3), блок 0 будет ссылаться на спрайт, хранящийся в $4000 , а блок 255 будет в $7FC0 ).

Каждый спрайт может быть в два раза больше по вертикали, горизонтали или по обоим направлениям. Это не увеличивает разрешение спрайта (он по-прежнему 24 пикселя в ширину и 21 в высоту), но каждый пиксель будет в два раза шире и/или в два раза выше.

Поскольку регистр горизонтального положения для каждого спрайта занимает один байт и ограничен максимальным значением 255, он сам по себе не может охватить все 320 пикселей области экрана VIC-II, поэтому дополнительный регистр, называемый флагом старшего байта, предоставляет бит 9-й позиции для всех спрайтов.

$D01E и $D01F содержат регистры Background и Sprite-to-Sprite Collision. Первый используется редко, поскольку он не может предоставить информацию о конкретном фоновом объекте, которого касается спрайт.

$D01B содержит регистр приоритета Sprite To Background, который используется для управления тем, будет ли спрайт перемещаться позади или перед фоновой графикой. Когда спрайт входит в то же пространство, что и другой спрайт, спрайт с меньшим номером всегда будет проходить над спрайтами с большим номером.

Прокрутка

Для прокрутки экрана символов VIC-II устанавливается в режим 38 столбцов и/или 24 строк через регистры в $D011 и $D016 . Это создает внеэкранный буфер, в который помещается строка символов для прокрутки. Путем регулировки битов прокрутки в вышеупомянутых регистрах одна строка может быть перемещена на экран, после чего она повторяется, если в буфер не помещена новая строка. Цветное ОЗУ прокручивается одновременно с экранным ОЗУ и работает таким же образом.

Прокрутка VIC-II — относительно сложная задача, требующая много ресурсов процессора, хотя программисты игр C64 нередко жульничают, проектируя графику так, чтобы цветная оперативная память оставалась статичной. Другой стандартный трюк — использовать часть экрана (возможно, нижние или верхние 4 или 5 строк символов) в качестве области статуса игры для отображения счета, жизней и т. д., что сокращает объем прокрутки, которую необходимо выполнить. Наконец, часто необходимо использовать технику «двойной буферизации» для предотвращения разрывов экрана. Два блока оперативной памяти экрана по 1 кБ зарезервированы; один отображается, пока другой записывается, затем во время vblank они быстро меняются местами посредством манипуляции регистрами VIC-II. К сожалению, это невозможно сделать с цветной оперативной памятью.

В конце коммерческой жизни C64 был обнаружен эксплойт, известный как VSP (Variable Screen Positioning), который включал манипуляцию битами управления в $D011 для создания быстрой прокрутки с гораздо более низкой стоимостью цикла ЦП, чем стандартные регистры прокрутки, однако он требовал тщательного, точного по циклам кодирования и не работал надежно на некоторых ревизиях VIC-II; кроме того, его можно было использовать только для горизонтальной прокрутки. Он, в частности, использовался в Mayhem in Monsterland .

Растровые прерывания

Использование растровых прерываний является неотъемлемой частью программирования игр C64. В состоянии по умолчанию при включении питания компьютера первый чип CIA от MOS Technology генерирует маскируемое прерывание (IRQ) 60 раз в секунду (будь то NTSC или PAL, это не связано с обновлением видео), которое отправляет ЦП в обработчик IRQ ядра по адресу $EA31 . Обработчик подтверждает IRQ CIA, обновляет часы, сканирует клавиатуру и мигает курсором в BASIC.

Игры обычно отключают прерывание CIA и вместо этого настраивают VIC-II на генерацию прерываний при достижении определенной строки сканирования, что необходимо для прокрутки разделенного экрана и воспроизведения музыки. Игра переназначает вектор IRQ в $0314 / $0315 своему обработчику растра, который выполняет эти функции, а затем опционально выполняет инструкцию JMP $EA31 для возврата управления ядру.

Некоторые игры используют только один IRQ; однако, цепочечные IRQ более распространены и улучшают стабильность программы. В этой настройке IRQ переназначается второй процедуре и так далее для каждой из них, пока последняя не восстановит его по адресу первого IRQ. Когда используются цепочечные IRQ, в цепочке нужна только одна инструкция JMP $EA31 , а остальные могут быть завершены с помощью JMP $EA81 , которая просто идет в конец обработчика ядра. Также не редкость для игр отключать ядро ​​и использовать вместо этого свой собственный обработчик IRQ. NMI можно использовать для дополнительного потока прерываний, хотя нежелательные побочные эффекты могут возникнуть из-за случайного нажатия клавиши Restore, так как при нажатии она запускает NMI.

VIC-II также может генерировать растровое прерывание из регистров столкновений, но эта функция используется редко, поскольку в большинстве случаев она предоставляет программе недостаточно информации.

Картирование памяти

VIC-II имеет 14-битную адресную шину и может использовать любой из четырех 16k сегментов пространства памяти C64 для видеоданных. Для управления этим два дополнительных адресных бита вносятся битами порта CIA. $0000 - $3FFF - это значение по умолчанию при включении питания. Второй сегмент ( $4000 - $7FFF ) обычно является лучшим выбором для программирования из BASIC, поскольку это единственный сегмент, который является полностью свободной оперативной памятью без ПЗУ или регистров ввода-вывода, отображенных в него. Четвертый сегмент ( $C000 - $FFFF ) также является хорошим выбором при условии, что используется машинный язык, поскольку ядро ​​ПЗУ должно быть отключено для получения доступа на чтение со стороны ЦП, и это позволяет избежать наличия несмежного программного кода и данных, которые возникли бы при использовании $4000 - $7FFF . Обратите внимание, что графические данные могут свободно храниться под BASIC ROM в $A000 - $BFFF , ядром ROM в $E000 - $FFFF или регистрами ввода-вывода и цветным RAM в $D000 - $DFFF , поскольку VIC-II видит только RAM, независимо от того, как настроено отображение памяти CPU; символьное ROM видно только в первом и третьем сегменте, поэтому, если используется сегмент два или четыре, программист должен предоставить свои собственные символьные данные. Экранное RAM, страница битовой карты, спрайты и наборы символов должны занимать одно и то же окно сегмента (при условии, что биты CIA не изменяются через прерывание строки сканирования). Последние шесть байтов системной памяти ( $FFFA - $FFFF ) содержат векторы IRQ, NMI и сброса, поэтому, если верхняя часть памяти используется для хранения набора символов или данных спрайта, а ПЗУ ядра отключено, открывая ОЗУ под ним для ЦП, необходимо будет пожертвовать одним символом или спрайтом, чтобы избежать перезаписи векторов.

Регистры

VIC-II имеет 47 регистров чтения/записи, перечисленных ниже:

ЗарегистрироватьсяШестнадцатеричныйБит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Описание
0
Д000
М0Х
Координата X Спрайт 0
1
Д001
М0Г
Координата Y-спрайта 0
2
Д002
М1Х
Координата X Спрайт 1
3
Д003
М1Г
Координата Y Спрайт 1
4
Д004
М2Х
Координата X Спрайт 2
5
Д005
М2Г
Координата Y Спрайт 2
6
Д006
М3Х
Координата X Спрайт 3
7
Д007
М3Г
Координата Y Спрайт 3
8
Д008
М4Х
Координата X Спрайт 4
9
Д009
М4Г
Координата Y Спрайт 4
10
Д00А
М5Х
Координата X Спрайт 5
11
Д00Б
М5Y
Координата Y Спрайт 5
12
Д00С
М6Х
Координата X Спрайт 6
13
Д00Д
М6Y
Координата Y Спрайт 6
14
Д00Е
М7Х
Координата X Спрайт 7
15
Д00Ф
М7Y
Координата Y Спрайт 7
16
Д010
М7Х8М6Х8М5Х8М4Х8М3Х8М2Х8М1Х8М0Х8Старшие биты координат X
17
Д011
РСТ8ЕСМБММДЕНРСЭЛ
YSCROLL
Регистр управления 1
18
Д012
РСТ
Счетчик растров
19
Д013
ЛПХ
Световое перо X
20
Д014
ЛПИ
Световое перо Y
21
Д015
М7ЕМ6ЕМ5ЕМ4ЕМ3ЕМ2ЕМ1ЕМ0ЕСпрайт включен
22
Д016
РЕСМСМCSEL
X-ПРОКРУТКА
Регистр управления 2
23
Д017
М7ЙЕМ6ЙЕМ5ЙЕМ4ЙЕМ3ЙЕМ2ЙЕМ1ЙЕМ0ЙЕРасширение спрайта Y
24
Д018
ВМ13ВМ12ВМ11ВМ10КБ13КБ12КБ11Указатели памяти
25
Д019
IRQИЛПМММКИМБКИРСТРегистр прерывания
26
Д01А
ЭЛПЕММСЕМБКЕРСТПрерывание включено
27
Д01Б
М7ДПМ6ДПМ5ДПМ4ДПМ3ДПМ2ДПМ1ДПМ0ДППриоритет данных спрайта
28
Д01С
М7МСМ6МСМ5МСМ4МСМ3МСМ2МСМ1МСМ0МССпрайт многоцветный
29
Д01Д
М7ХЕМ6ХЕМ5ХЕМ4ХЕМ3ХЕМ2ХЕМ1ХЕМ0ХЕРасширение Sprite X
30
Д01Е
М7ММ6ММ5ММ4ММ3ММ2ММ1ММ0МСтолкновение спрайт-спрайт
31
Д01Ф
М7ДМ6ДМ5ДМ4ДМ3ДМ2ДМ1ДМ0ДСтолкновение спрайта и данных
32
Д020
ЕС
Цвет границы
33
Д021
Б0С
Цвет фона 0
34
Д022
В1С
Цвет фона 1
35
Д023
B2C
Цвет фона 2
36
Д024
B3C
Цвет фона 3
37
Д025
ММ0
Спрайт многоцветный 0
38
Д026
ММ1
Спрайт многоцветный 1
39
Д027
М0С
Цветной спрайт 0
40
Д028
М1С
Цветной спрайт 1
41
Д029
М2С
Цветной спрайт 2
42
Д02А
М3С
Цветной спрайт 3
43
Д02Б
М4С
Цветной спрайт 4
44
Д02С
М5С
Цветной спрайт 5
45
Д02Д
М6С
Цветной спрайт 6
46
Д02Е
М7С
Цветной спрайт 7

Цвета

Чип VIC-II имеет фиксированную 16-цветную палитру, показанную выше.

В многоцветном режиме персонажа (160×200 пикселей, который используется в большинстве игр) персонажи имеют 4×8 пикселей (символы по-прежнему приблизительно квадратные, поскольку пиксели имеют двойную ширину) и 4 цвета из 16 цветов. Три цвета одинаковы для всего экрана (цвет фона, регистры multicolor 1 и multicolor 2), в то время как оставшийся цвет может быть установлен индивидуально для каждой такой области 4×8 пикселей, как определено в цветовой памяти. Спрайты в многоцветном режиме (12×21 пиксель) имеют три цвета плюс прозрачность: два цвета, общие для всех спрайтов, и один индивидуальный. Художники выбирают общие цвета таким образом, чтобы сочетание с отдельными цветами приводило к красочному впечатлению. Некоторые игры перезагружают общие цвета во время прерывания растра; например, подводная область игры Turrican II (которая была вертикально отличной) имеет разные цвета. Другие, такие как Summer Games от Epyx и Basketball Sam & Ed от COMPUTE! от Gazette , накладывают два спрайта высокого разрешения, чтобы использовать два цвета переднего плана, не жертвуя горизонтальным разрешением [1]. Конечно, этот метод уменьшает количество доступных спрайтов вдвое.

На PAL C64s линия задержки PAL в мониторе или телевизоре, которая усредняет цветовой оттенок , но не яркость последовательных линий экрана, может использоваться для создания семи нестандартных цветов путем чередования линий экрана, показывающих два цвета одинаковой яркости. В чипе VIC имеется семь таких пар цветов. [11]

Команда C64 не тратила много времени на математические вычисления 16-цветной палитры. Роберт Яннес, который участвовал в разработке VIC-II, сказал:

Боюсь, что на выбор цвета было потрачено не так много усилий, как вы думаете. Поскольку у нас был полный контроль над оттенком, насыщенностью и яркостью, мы выбирали цвета, которые нам нравились. Однако, чтобы сэкономить место на чипе, многие цвета были просто противоположной стороной цветового круга от тех, которые мы выбрали. Это позволило нам повторно использовать существующие значения резисторов, а не иметь совершенно уникальный набор для каждого цвета. [12]

Ранние версии VIC-II, используемые в PAL C64, имеют иную цветовую палитру, чем более поздние версии. [13]

Полная палитра из шестнадцати цветов формируется на основе вариаций сигналов YPbPr , как показано ниже:

Номер — имяИPb (отн.)Пр (отн.)
0 — черный000
1 — белый100
2 — красный0,3125−0,38268340,9238795
3 — голубой0,6250,3826834−0,9238795
4 — фиолетовый0,3750,70710680,7071068
5 — зеленый0,5−0,7071068−0,7071068
6 — синий0,2510
7 — желтый0,75−10
8 — оранжевый0,375−0,70710680,7071068
9 — коричневый0,25−0,92387950,3826834
10 — светло-красный0,5−0,38268340,9238795
11 — темно-серый0,312500
12 — средне-серый0,4687500
13 — светло-зеленый0,75−0,7071068−0,7071068
14 — светло-голубой0,4687510
15 — светло-серый0,62500


VIC-IIe

Распиновка MOS 8566 VIC-IIe
Распиновка MOS 8566 VIC-IIe

8564/8566 VIC-IIe в Commodore 128 использует 48 контактов вместо 40, так как он выдает больше сигналов, среди которых тактовый сигнал для дополнительного ЦП Zilog Z80 этого компьютера. Он также имеет два дополнительных регистра. Один из дополнительных регистров предназначен для доступа к добавленной цифровой клавиатуре и другим дополнительным клавишам этого компьютера; эта функция была добавлена ​​в VIC просто потому, что это оказалось самым простым местом в компьютере для добавления необходимых трех дополнительных выходных контактов. Другой дополнительный регистр предназначен для переключения между системными часами 1 МГц и 2 МГц; на более высокой скорости видеовыход VIC-II просто отображает каждый второй байт в коде, поскольку черный цвет нанимает битовый шаблон на экране, что предполагает использование 80-столбцового режима C128 на этой скорости (через чип 8563 VDC RGB). Неофициально два дополнительных регистра также доступны в режиме C64 C128, что позволяет использовать дополнительные клавиши, а также выполнять на удвоенной скорости без видео код, связанный с процессором (например, интенсивные числовые вычисления) в самодельных программах C64. [14] Дополнительные регистры также являются одним из источников незначительной несовместимости между режимом C64 C128 и настоящим C64 — несколько старых программ C64 непреднамеренно записывали вПереключающий бит 2  МГц , который вообще ничего не сделает на реальном C64, но приведет к искажению изображения на C128 в режиме C64.

VIC-IIe обладает малоизвестной способностью создавать дополнительный набор цветов, манипулируя регистрами особым образом, что выводит цветовой сигнал из фазы того, что считают другие части чипа. [ требуется ссылка ] Эта способность была продемонстрирована в демоверсии «Risen from Oblivion». [15] К сожалению, она работает не на всех мониторах — правильные цвета подтверждены на ЭЛТ-мониторах Commodore и их эквивалентах.

Используя специфическое поведение тестового бита VIC-IIe, он также способен создавать реальное чересстрочное изображение с разрешением 320×400 (режим Hires) и 160×400 (многоцветный режим). [16]

Список версий VIC-II

Commodore внесла множество изменений в VIC-II за время его существования. В первом выпуске Compute! ' s Gazette в июле 1983 года сообщалось, что с момента выпуска Commodore 64 в середине 1982 года их было уже восемь. [17]

  • ПАЛ
    • Технология MOS 6569 – ( PAL-B , используется в большинстве стран PAL)
    • MOS Technology 6572 – ( PAL-N , используется только на юге Южной Америки)
    • MOS Technology 6573 – ( PAL-M , используется только в Бразилии)
    • MOS Technology 8565 – версия HMOS-II для материнских плат "C64E"
    • Технология MOS 8566 – версия VIC-II E (PAL-B) C128
    • Технология MOS 8569 – версия VIC-II E (PAL-N) C128
  • НТСК
    • Технология MOS 6566 – разработана для SRAM / немультиплексированных адресных линий (используется в машине MAX )
    • Технология MOS 6567 – Оригинальная версия NMOS
    • Технология MOS 8562 – версия HMOS-II
    • Технология MOS 8564 – версия VIC-II E C128

Самая ранняя версия VIC-II использовалась в машинах, выпущенных в 1982 и начале 1983 года; она имела керамический корпус по тепловым причинам и генерировала 64 цветовых тактовых сигнала NTSC на строку. Эти чипы также не выводили разделенные сигналы цветности и яркости. Более поздние версии имели более дешевый пластиковый корпус и 65 цветовых тактовых сигналов на строку (для NTSC, 63 для PAL), а также разделенные цветность и яркость, что позволяло использовать раннюю форму S-video. Несколько изменений были сделаны в основном в интересах улучшения качества видеовывода, которое было плохим на ранних устройствах, и устранения ошибки, которая могла вызывать появление случайных пикселей на экране (несколько ранних игр намеренно использовали это для графических эффектов, которые, следовательно, не работали на более поздних C64). 64 цветовых тактовых сигнала на первоначальном VIC-II были сделаны с намерением разрешить артефактный цвет NTSC в режиме растрового изображения высокого разрешения, как это делали 8-битные компьютеры Atari, но от этой идеи быстро отказались.

Поскольку по экономическим причинам было необходимо перейти на пластиковый корпус, перегрев, как правило, был проблемой VIC-II. Это было по нескольким причинам, включая высокую плотность кристалла относительно используемого процесса и его высокую внутреннюю скорость (8 МГц). Commodore попыталась найти импровизированное решение этой проблемы, используя алюминиевый экран RF в качестве теплоотвода (на машинах NTSC; машины PAL продавались в странах с менее строгими стандартами помех RF, чем Соединенные Штаты, и поэтому использовали только алюминизированный картон), однако это не было полностью эффективным для предотвращения перегрева и выхода из строя чипа.

85xx VIC-II, используемый в C64Cs, был изготовлен с использованием более современного 3,5 мкм процесса HMOS и требует только одну шину питания 5 В вместо двух шин 12 В и 5 В, как у 65xx VIC-II. Эти чипы работают значительно холоднее и не страдают от проблем с перегревом, которые влияют на 65xx VIC-II.

Существует несколько версий 6569: 6569R1 (обычно позолоченная), 6569R3, 6569R4 и 6569R5. Наиболее распространенная версия 8565 — 8565R2.

Смотрите также

Ссылки

  1. ^ Пирселл, Кимберли. «Оказывается, руководитель инженерной группы Commodore 64 вышел на пенсию и переехал в Йорктаун». pilotonline.com . Получено 12 октября 2021 г.
  2. ^ Бэгнолл, Брайан (2005). «Секретный проект 1981». На грани: впечатляющий взлет и падение Commodore (1-е изд.). Виннипег, Манитоба: Variant Press. С.  224–225 . ISBN 0-9738649-0-7.
  3. ^ ab Perry, Tekla S.; Wallich, Paul (март 1985 г.). "Design case history: the Commodore 64" (PDF) . IEEE Spectrum . 22 (3). Нью-Йорк, Нью-Йорк: Institute of Electrical and Electronics Engineers : 48– 58. doi :10.1109/MSPEC.1985.6370590. ISSN  0018-9235. S2CID  11900865. Архивировано из оригинала (PDF) 13 мая 2012 г. . Получено 12 ноября 2011 г. .
  4. ^ Бэгнолл, Брайан (2005). «Секретный проект 1981». На грани: впечатляющий взлет и падение Commodore (1-е изд.). Виннипег, Манитоба: Variant Press. стр. 227. ISBN 0-9738649-0-7.
  5. ^ Бэгнолл, Брайан (2005). «Секретный проект 1981». На грани: впечатляющий взлет и падение Commodore (1-е изд.). Виннипег, Манитоба: Variant Press. стр. 229. ISBN 0-9738649-0-7.
  6. ^ Бэгнолл, Брайан (2005). «Секретный проект 1981». На грани: впечатляющий взлет и падение Commodore (1-е изд.). Виннипег, Манитоба: Variant Press. стр. 230. ISBN 0-9738649-0-7.
  7. ^ Бэгнолл, Брайан (2005). «Секретный проект 1981». На грани: впечатляющий взлет и падение Commodore (1-е изд.). Виннипег, Манитоба: Variant Press. стр. 242. ISBN 0-9738649-0-7.
  8. ^ Якал, Кэти ( июнь 1986 г.). «Эволюция графики Commodore». Compute!'s Gazette . стр.  34–42 . Получено 18 июня 2019 г.
  9. ^ abcd Каупер, Оттис Р. (1986). Картографирование Commodore 128. Гринсборо, Северная Каролина: COMPUTE! Books. ISBN 0-87455-060-2.
  10. ^ "6567 Видеоинтерфейс Чип: Спецификация" (PDF) . Commodore Semiconductor Group. Листы 2 и 5.
  11. ^ «Графика на основе яркости на C64».
  12. ^ Тиммерманн, Филипп. "Commodore VIC-II Color Analysis (Preview)" . Получено 11 февраля 2018 г. .
  13. ^ Sjöstedt, Ilkka (30 марта 2016 г.). «Old VIC-II Colors and Color Blending». Блог ilesj . Получено 11 февраля 2018 г.
  14. ^ Cowper, Ottis R.; Florance, David; Heimarck, Todd D.; Krause, John; Miller, George W.; Mykytyn, Kevin; Nelson, Philip I.; Victor, Tim (октябрь 1985 г.). "Глава 7. Архитектура системы". COMPUTE!'s 128 Programmer's Guide . Гринсборо, Северная Каролина: COMPUTE! Publications . стр.  348–349 . ISBN 0-87455-031-9.
  15. ^ «Восставший из Обливиона — мелочи».
  16. ^ "VIC-IIe Чересстрочная развёртка".
  17. ^ Halfhill, Tom R. (июль 1983 г.). «Commodore 64 Video Update». Compute!'s Gazette . стр. 40. Получено 6 февраля 2016 г.
  • "Приложение N: Характеристики микросхем 6566/6567 (VIC-II)". Справочник программиста Commodore 64 (PDF) (1-е изд.). Commodore Business Machines . 1982. С.  436–456 . ISBN 0-672-22056-3.
  • Видеоконтроллер MOS 6567/6569 (VIC-II) и его применение в Commodore 64 — подробное описание аппаратной части VIC-II.
  • Анализ цвета Commodore VIC-II (предварительный просмотр) — попытка предоставить точную информацию о цветовой палитре VIC-II, автор Филип Тиммерманн.
  • Описание графических режимов C64 — простые объяснения с примерами изображений распространенных режимов, используемых для графики C64, включая взломанные и программно-вспомогательные режимы.
  • Реальные видеорежимы Interlace с использованием VIC-IIe.
  • Информация о программировании VIC на Codebase64.
  • Снимки штампа VIC-II
  • Точное воспроизведение видеовыходного сигнала Commodore C64 - палитры VIC-II, как на дисплеях PAL и NTSC; расчет соотношения сторон пикселей
Взято с "https://en.wikipedia.org/w/index.php?title=MOS_Technology_VIC-II&oldid=1237652651"