МОП-технология VIC-II
Эта статья нуждается в дополнительных цитатах для проверки . ( март 2023 г. ) |

VIC -II ( чип видеоинтерфейса 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]
- 16 КБ адресного пространства для памяти экрана, символов и спрайтов
- Разрешение видео 320×200 пикселей (160×200 в многоцветном режиме)
- Разрешение текста 40 × 25 символов
- Три режима отображения символов и два режима растрового изображения.
- 16 цветов
- Одновременная обработка 8 спрайтов на строку развертки , каждый размером 24 × 21 пиксель (многоцветный 12 × 21)
- Растровое прерывание (подробнее см. ниже)
- Плавная прокрутка
- Независимое динамическое обновление оперативной памяти
- Мастеринг шины в стиле 6502 для системной шины ; ЦП и VIC-II обращаются к шине во время чередующихся полутактовых циклов (VIC-II останавливает ЦП, когда ему требуются дополнительные циклы)
Технические подробности [ править ]

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

VIC-II программируется путем манипулирования своими 47 регистрами управления (вместо 16 в VIC), память отображается в диапазон $000 – $D02E в адресном пространстве C64. Из всех этих регистров 34 предназначены исключительно для управления спрайтами (спрайты называются MOB от «Movable Object Blocks» в документации VIC-II). Как и его предшественник, VIC-II обрабатывает ввод с помощью светового пера и с помощью стандартного ПЗУ символов C64 обеспечивает оригинальный набор символов PETSCII с 40 столбцами 1977 года на дисплее того же размера, что и серия PET .
Перезагружая регистры управления VIC-II через машинный код, подключенный к процедуре растрового прерывания (прерывание строки сканирования), можно запрограммировать чип на генерацию значительно более 8 одновременных спрайтов (процесс, известный как мультиплексирование спрайтов ) и, как правило, давать каждой программе -определенный фрагмент экрана с различными свойствами прокрутки, разрешения и цвета. Аппаратное ограничение в 8 спрайтов на строку сканирования можно еще больше увеличить, разрешив спрайтам быстро включаться и выключаться. Освоение растровых прерываний необходимо для раскрытия возможностей VIC-II. Многие демо-версии и некоторые более поздние игры устанавливали фиксированный «шаг блокировки» между ЦП и VIC-II, чтобы регистрами VIC можно было манипулировать точно в нужный момент.
Графика персонажей [ править ]
C64 поставлялся с набором символов PETSCII в ПЗУ размером 4 КБ, но, как и в предшествующем VIC-20, фактические данные для символов считывались из памяти в указанном месте. Это место является одним из регистров VIC-II, который позволял программистам создавать свои собственные наборы символов, помещая соответствующие данные в память; каждый символ представляет собой сетку 8x8, где байт представляет 8 бит по горизонтали, поэтому для одного символа требуется 8 байтов, и, таким образом, полный набор из 256 символов использует в общей сложности 2048 байт. Теоретически можно использовать до восьми наборов символов, если были заполнены все 16 КБ видеопамяти. [9] : 363
В дополнение к кодировкам, VIC-II также использует 1000 байтов для хранения 25 строк по 40 символов в строке, по одному байту на каждый символ, что в конфигурации по умолчанию находится на уровне $400 - $7E8 . [9] : 117–119 Доступ к цветному ОЗУ осуществляется через биты с 8 по 11 видеоматрицы; [10] в 64 и 128 он расположен в пространстве ввода-вывода по адресу 800 дирхамов - $DBFF и не может быть перемещен из этого места. Он содержит значения цвета 1 (цвета 3 в многоцветном режиме) каждого символа.
ПЗУ символов отображается в двух из четырех «окон» VIC-II: $1000 - 1 доллар FFF и $9000 - $9FFF , хотя ЦП его там не видит (символьное ПЗУ может быть переключено в $000 - $DFFF , где он виден ЦП, но не VIC-II). Таким образом, графические данные или видеобуферы не могут быть размещены в $1000 - 1 доллар США или $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. Для растровой графики требуется страница размером 8 КБ для данных пикселей, и каждый байт соответствует одной строке из восьми или четырех пикселей. Следующий байт — это строка под ним и после 8-й строки, возвращающаяся к вершине следующей плитки.
В растровых изображениях высокого разрешения оперативная память экрана используется для хранения цветов переднего плана и фона каждого фрагмента (старшего и младшего полубайта каждого байта). Это единственный режим VIC-II, в котором цветная ОЗУ не используется. $D800 или регистр цвета фона по адресу $D021 .
Режим многоцветного растрового изображения позволяет использовать три цвета для каждой плитки (четвертый — цвет фона, заданный в $D021 ). Цвета 1 и 2 выбираются битами в оперативной памяти экрана (так же, как растровые изображения), а третий — из оперативной памяти цвета.
Несмотря на высокий уровень детализации цвета и возможности адресации всех точек растрового режима, он, как правило, непрактичен для игровой графики из-за необходимости большого количества системных ресурсов (8 КБ для данных пикселей плюс значительно больше циклов ЦП для изменения каждого из них). плитка) и обычно не подлежит прокрутке. Таким образом, его чаще всего можно увидеть на загрузочном, а иногда и на титульном экране.
Спрайты [ править ]
Спрайты VIC-II либо монохромные 24x21, либо многоцветные 12x21. Подобно символьной графике, последняя имеет один индивидуальный цвет для каждого спрайта и два глобальных. VIC-II имеет восемь спрайтов, каждый из которых использует для хранения 64 байта памяти, но, с некоторыми ограничениями, он может отображать гораздо больше спрайтов. Мультиплексирование спрайтов — распространенный метод получения более восьми изображений на экране (хотя в каждой строке сканирования по-прежнему может быть максимум восемь). Счетчик строк развертки VIC-II можно опрашивать до тех пор, пока на экране не будет достигнута нужная точка, или можно запрограммировать прерывание растра на срабатывание на определенной строке развертки, после чего программа быстро меняет координаты спрайта. Этот метод может привести к одновременному появлению на экране множества дополнительных спрайтов, часто всего от 16 до 24 или более. Однако для демо-версии ограничение значительно более гибкое.
Теоретически максимальное количество различных спрайтов, видимых одновременно, составляет 256 (при условии, что вся страница VIC-II размером 16 КБ заполнена). Они адресуются с помощью номера блока для ссылки на каждый шаблон спрайтов в памяти, начиная с 0 и заканчивая 255 ($FF) в зависимости от их положения на странице видео. (если используется второй видеобанк (с номерами 0, 1, 2 и 3), блок 0 будет относиться к спрайту, хранящемуся в 4000 долларов и Блок 255 будет по цене $7FC0 ).
Каждый спрайт может иметь двойной размер по вертикали, горизонтали или по обоим направлениям. Это не увеличивает разрешение спрайта (оно по-прежнему составляет 24 пикселя в ширину и 21 в высоту), но каждый пиксель будет в два раза шире и/или в два раза выше.
Поскольку регистр горизонтального положения для каждого спрайта составляет один байт и ограничен максимальным значением 255, он сам по себе не может охватить все 320 пикселей области экрана VIC-II, поэтому дополнительный регистр, называемый флагом наиболее значимого байта, обеспечивает 9-ю позицию. бит для всех спрайтов.
$D01E и $D01F содержит регистры фона и столкновения спрайтов. Первый используется редко, поскольку он не может предоставить информацию о конкретном фоновом объекте, которого касается спрайт.
$D01B содержит регистр приоритета спрайта к фону, который используется для управления тем, перемещается ли спрайт позади или перед фоновой графикой. Когда спрайт входит в то же пространство, что и другой спрайт, спрайты с меньшим номером всегда будут проходить мимо спрайтов с большим номером.
Прокрутка [ править ]
Для прокрутки экрана символов VIC-II устанавливается в режим с 38 столбцами и/или 24 строками через регистры по адресу $D011 и $D016 . При этом создается внеэкранный буфер, в котором размещается строка символов, подлежащих прокрутке. Регулируя биты прокрутки в вышеупомянутых регистрах, можно переместить одну строку на экран, после чего она будет повторяться, если в буфер не будет помещена новая строка. Цветная ОЗУ прокручивается одновременно с экранной ОЗУ и работает одинаково.
Прокрутка VIC-II — относительно сложная задача, требующая интенсивного использования ЦП, хотя программисты игр C64 нередко обманывают, проектируя графику так, чтобы цветная ОЗУ могла оставаться статичной. Другой стандартный трюк — использовать часть экрана (возможно, нижние или верхние 4 или 5 строк символов) в качестве области состояния игры для отображения счета, жизней и т. д., уменьшая количество необходимой прокрутки. Наконец, часто необходимо использовать технику «двойной буферизации», чтобы предотвратить разрыв экрана. Зарезервированы два блока экранной памяти по 1 КБ; один отображается, а другой записывается, затем во время vblank они быстро меняются местами посредством манипуляций с регистрами VIC-II. К сожалению, это невозможно сделать с цветной оперативной памятью.
В конце коммерческого существования C64 был обнаружен эксплойт, известный как VSP (переменное позиционирование экрана), который включал манипулирование битами управления в $ D011 для обеспечения быстрой прокрутки с гораздо меньшими затратами цикла ЦП, чем стандартные регистры прокрутки, однако это требовало тщательного, точного по циклам кодирования и не работало надежно в некоторых версиях VIC-II; также его можно использовать только для горизонтальной прокрутки. В частности, он используется в Mayhem in Monsterland .
Растровые прерывания [ править ]
Использование растровых прерываний является важной частью программирования игр на C64. В состоянии по умолчанию при включении компьютера первый чип MOS Technology CIA генерирует маскируемое прерывание (IRQ) 60 раз в секунду (будь то NTSC или PAL, это не связано с обновлением видео), которое отправляет ЦП обработчику IRQ ядра по адресу $EA31 . Обработчик подтверждает IRQ ЦРУ, обновляет часы, сканирует клавиатуру и мигает курсором в BASIC.
Игры обычно отключают прерывание CIA и вместо этого настраивают VIC-II на генерацию прерываний при достижении определенной строки сканирования, что необходимо для прокрутки разделенного экрана и воспроизведения музыки. Игра переназначает вектор IRQ по адресу $0314 / $0315 своему обработчику растра, который выполняет эти функции, а затем (необязательно) выполняет JMP. Инструкция $EA31 для возврата управления ядру.
Некоторые игры используют только одно прерывание; однако связанные IRQ более распространены и повышают стабильность программы. В этой настройке IRQ переназначается второй процедуре и так далее для каждой, пока последняя не восстановит его по адресу первого IRQ. При использовании связанных IRQ только один JMP $EA31 , а остальные можно завершить с помощью JMP. В цепочке необходима инструкция $EA81 , который просто переходит в конец обработчика ядра. Кроме того, игры нередко отключают ядро и используют вместо него собственный обработчик IRQ. NMI можно использовать для дополнительного потока прерываний, хотя случайное нажатие клавиши восстановления может привести к нежелательным побочным эффектам, поскольку при нажатии она запускает NMI.
VIC-II также может генерировать растровое прерывание из регистров коллизий, но эта функция используется редко, поскольку в большинстве случаев она предоставляет программе недостаточно информации.
Отображение памяти [ править ]
VIC-II имеет 14-битную адресную шину и может использовать для видеоданных любой из четырех 16-килобайтных сегментов памяти C64. Для этого два дополнительных бита адреса вводятся битами порта CIA. $0000 - $3FFF — значение по умолчанию при включении. Второй сегмент ( $4000 – $7FFF ), как правило, является лучшим выбором для программирования на BASIC, поскольку это единственный сегмент, который представляет собой полностью свободную ОЗУ, в которую не сопоставлены ПЗУ или регистры ввода-вывода. Четвертый сегмент ( 000 долларов США – $FFFF ) также является хорошим выбором при условии, что используется машинный язык, поскольку ПЗУ ядра должны быть отключены, чтобы получить доступ к чтению со стороны ЦП, и это позволяет избежать несмежного программного кода и данных, которые могут возникнуть в результате использования $4000 - 7 долларов США . Обратите внимание, что графические данные могут свободно храниться в базовом ПЗУ по адресу: $A000 - $BFFF , ПЗУ ядра по адресу 000 долларов США - $FFFF или регистры ввода-вывода и цветное ОЗУ по адресу $000 – $DFFF , поскольку VIC-II видит только ОЗУ, независимо от того, как настроено отображение памяти ЦП; ПЗУ символов видно только в первом и третьем сегментах, поэтому, если используется второй или четвертый сегмент, программист должен предоставить свои собственные символьные данные. Оперативная память экрана, растровая страница, спрайты и наборы символов должны занимать один и тот же сегмент окна (при условии, что биты CIA не изменяются посредством прерывания строки сканирования). Последние шесть байтов системной памяти ( $FFFA - $FFFF ) содержат векторы IRQ, NMI и сброса, поэтому, если верхняя часть памяти используется для хранения набора символов или данных спрайтов, а ПЗУ KERNAL отключено, открывая доступ к ЦП оперативной памяти, то придется пожертвовать один символ или спрайт, чтобы избежать перезаписи векторов.
Регистры [ править ]
VIC-II имеет 47 регистров чтения/записи, перечисленных ниже:
Зарегистрироваться | Шестнадцатеричный | Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 | Описание |
---|---|---|---|---|---|---|---|---|---|---|
0 | Д000 | М0Х | Спрайт координаты X 0 | |||||||
1 | Д001 | M0Y | Спрайт координаты Y 0 | |||||||
2 | Д002 | М1Х | Спрайт X-координаты 1 | |||||||
3 | Д003 | M1Y | Координата 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 | M4Y | Координата Y, спрайт 4 | |||||||
10 | Д00А | М5Х | Спрайт X-координаты 5 | |||||||
11 | Д00Б | M5Y | Спрайт с координатой Y 5 | |||||||
12 | Д00С | М6Х | Спрайт X-координаты 6 | |||||||
13 | Д00Д | M6Y | Координата Y, спрайт 6 | |||||||
14 | Д00Е | M7X | Спрайт X-координаты 7 | |||||||
15 | Д00Ф | M7Y | Координата Y Спрайт 7 | |||||||
16 | Д010 | М7Х8 | М6Х8 | М5Х8 | M4X8 | М3Х8 | М2Х8 | М1Х8 | M0X8 | Старшие разряды координат X |
17 | Д011 | РСТ8 | ЕСМ | БММ | ТО | РСЭЛ | ПРОКРУТАТЬ | Регистр управления 1 | ||
18 | Д012 | РСТ | Счетчик растра | |||||||
19 | Д013 | ЛПХ | Световое перо X | |||||||
20 | Д014 | ЛПИ | Световое перо Y | |||||||
21 | Д015 | М7Е | М6Е | М5Е | М4Е | М3Е | М2Е | М1Е | М0Е | Спрайт включен |
22 | Д016 | — | — | ВИЭ | МСМ | РУСЕ | XСКРОЛЛ | Регистр управления 2 | ||
23 | Д017 | M7YE | M6YE | M5YE | M4YE | M3YE | M2YE | M1YE | M0YE | Расширение спрайта Y |
24 | Д018 | ВМ13 | ВМ12 | ВМ11 | WC10 | CB13 | CB12 | CB11 | — | Указатели памяти |
25 | Д019 | прерывание | — | — | — | ПДОДИ | ИММК | ИМБК | ПЕРВЫЙ | Регистр прерываний |
26 | Д01А | — | — | — | — | ЭЛП | ЭММК | ЭМБК | ПЕРВЫЙ | Прерывание включено |
27 | Д01Б | М7ДП | М6ДП | М5ДП | М4ДП | М3ДП | М2ДП | М1ДП | М0ДП | Приоритет данных спрайта |
28 | D01C | M7MC | М6МС | M5MC | M4MC | М3МС | М2МС | М1МС | M0MC | Спрайт многоцветный |
29 | Д01Д | M7XE | М6ХЕ | M5XE | M4XE | М3ХЕ | М2ХЕ | М1ХЕ | М0ХЕ | Расширение Sprite X |
30 | Д01Е | М7М | М6М | М5М | М4М | М3М | М2М | М1М | M0M | Столкновение спрайтов |
31 | D01F | М7Д | М6Д | М5Д | М4Д | М3Д | М2Д | М1Д | М0Д | Столкновение спрайтов и данных |
32 | Д020 | — | — | — | — | ЕС | Цвет границы | |||
33 | Д021 | — | — | — | — | Б0С | Цвет фона 0 | |||
34 | Д022 | — | — | — | — | B1C | Цвет фона 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 | D02C | — | — | — | — | М5С | Цветной спрайт 5 | |||
45 | Д02Д | — | — | — | — | М6С | Цветной спрайт 6 | |||
46 | Д02Е | — | — | — | — | М7С | Цветной спрайт 7 |
Цвета [ править ]

В режиме многоцветных символов (160×200 пикселей, который используется в большинстве игр) символы имеют размер 4×8 пикселей (символы по-прежнему примерно квадратные, поскольку пиксели имеют двойную ширину) и 4 цвета из 16 цветов. Три цвета одинаковы для всего экрана (регистры цвета фона, многоцветного 1 и многоцветного 2), а оставшийся цвет можно установить индивидуально для каждой такой области пикселей 4 × 8, как это определено в цветовой оперативной памяти. Спрайты в многоцветном режиме (12×21 пиксель) имеют три цвета плюс прозрачность: два цвета являются общими для всех спрайтов и один индивидуальный. Художники выбирают общие цвета так, чтобы сочетание отдельных цветов создавало красочное впечатление. Некоторые игры перезагружают общие цвета во время прерывания растра; например, подводная область игры Turrican II (которая была четко выражена по вертикали) имеет разные цвета. Другие, такие как Epyx от Summer Games и от COMPUTE!, Gazette . Basketball Sam & Ed , накладывают два спрайта с высоким разрешением, что позволяет использовать два цвета переднего плана без ущерба для горизонтального разрешения [1] . Конечно, этот прием уменьшает количество доступных спрайтов вдвое.
В PAL PAL C64 линия задержки на мониторе или телевизоре, которая усредняет цветовой оттенок , но не яркость, последовательных строк экрана, может использоваться для создания семи нестандартных цветов путем чередования строк экрана, показывающих два цвета одинаковой яркости. Таких пар цветов в чипе VIC семь. [11]
Команда C64 не потратила много времени на математические расчеты 16-ти цветовой палитры. Роберт Яннес, принимавший участие в разработке VIC-II, сказал:
Боюсь, на выбор цвета было потрачено не так много усилий, как вы думаете. Поскольку у нас был полный контроль над оттенком, насыщенностью и яркостью, мы выбрали цвета, которые нам нравились. Однако в целях экономии места на чипе многие цвета просто находились на противоположной стороне цветового круга от тех, которые мы выбрали. Это позволило нам повторно использовать существующие номиналы резисторов вместо того, чтобы иметь совершенно уникальный набор для каждого цвета. [12]
Ранние версии VIC-II, используемые в PAL C64, имеют другую цветовую палитру, чем более поздние версии. [13]
Полная палитра из шестнадцати цветов генерируется на основе вариаций сигналов YPbPr , как показано ниже:
Номер — имя | И | Pb (отн.) | Пр (отн.) |
---|---|---|---|
0 — черный | 0 | 0 | 0 |
1 — белый | 1 | 0 | 0 |
2 — красный | 0.3125 | −0.3826834 | 0.9238795 |
3 — голубой | 0.625 | 0.3826834 | −0.9238795 |
4 — фиолетовый | 0.375 | 0.7071068 | 0.7071068 |
5 — зеленый | 0.5 | −0.7071068 | −0.7071068 |
6 — синий | 0.25 | 1 | 0 |
7 — желтый | 0.75 | −1 | 0 |
8 — оранжевый | 0.375 | −0.7071068 | 0.7071068 |
9 — коричневый | 0.25 | −0.9238795 | 0.3826834 |
10 — светло-красный | 0.5 | −0.3826834 | 0.9238795 |
11 — темно-серый | 0.3125 | 0 | 0 |
12 — средне-серый | 0.46875 | 0 | 0 |
13 — светло-зеленый | 0.75 | −0.7071068 | −0.7071068 |
14 — голубой | 0.46875 | 1 | 0 |
15 — светло-серый | 0.625 | 0 | 0 |
VIC-IIe [ править ]

8564/8566 VIC-IIe в Commodore 128 использует 48 контактов, а не 40, поскольку он генерирует больше сигналов, в том числе тактовый сигнал для дополнительного процессора Zilog Z80 этого компьютера. Он также имеет два дополнительных регистра. Один из дополнительных регистров предназначен для доступа к добавленной цифровой клавиатуре и другим дополнительным клавишам этого компьютера; эта функция была добавлена в VIC только потому, что это оказалось самым простым местом в компьютере для добавления необходимых трех дополнительных выходных контактов. Другой дополнительный регистр предназначен для переключения между системной частотой 1 МГц и 2 МГц; на более высокой скорости видеовыход VIC-II просто отображает каждый второй байт кода, поскольку черный цвет нанимает битовый рисунок на экране, что предполагает использование 80-столбцового режима C128 на этой скорости (через чип RGB 8563 В постоянного тока ). Довольно неофициально, два дополнительных регистра также доступны в режиме 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. s Gazette В первом выпуске Compute! ' за июль 1983 года сообщалось, что с момента выпуска Commodore 64 в середине 1982 года их уже было восемь. [17]
- PAL
- MOS Technology 6569 – ( PAL-B , используется в большинстве стран PAL)
- MOS Technology 6572 – ( PAL-N , используется только на юге Южной Америки)
- Технология MOS 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
- NTSC
- Технология 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 попробовала импровизированное решение этой проблемы, используя алюминиевый радиочастотный экран в качестве теплоотвода (на машинах NTSC; машины PAL продавались в странах с менее строгими стандартами радиочастотных помех, чем в США, и поэтому использовался только алюминизированный картон), однако это не помогло. полностью эффективен для предотвращения перегрева и выхода из строя чипа.
85xx VIC-II, используемый в C64C, был изготовлен по более современному процессу HMOS 3,5 мкм и требует только одной шины питания 5 В вместо двух линий 12 В и 5 В, как у 65xx VIC-II. Эти чипы значительно охлаждаются и не страдают от проблем с перегревом, которые свойственны 65xx VIC-II.
Существует несколько версий 6569: 6569R1 (обычно позолоченный), 6569R3, 6569R4 и 6569R5. Самая распространенная версия 8565 — 8565R2.
См. также [ править ]
Ссылки [ править ]
- ^ Пирсалл, Кимберли. «Оказывается, руководитель инженерной группы Commodore 64 удалился в Йорктаун» . www.pilotonline.com . Проверено 12 октября 2021 г.
- ^ Бэгналл, Брайан (2005). «Секретный проект 1981». На грани: захватывающий взлет и падение Коммодора (1-е изд.). Виннипег, Манитоба: Вариант Пресс. стр. 224–225. ISBN 0-9738649-0-7 .
- ↑ Перейти обратно: Перейти обратно: а б Перри, Текла С.; Валлич, Пол (март 1985 г.). «История проектирования: Commodore 64» (PDF) . IEEE-спектр . 22 (3). Нью-Йорк, Нью-Йорк: Институт инженеров по электротехнике и электронике : 48–58. дои : 10.1109/MSPEC.1985.6370590 . ISSN 0018-9235 . S2CID 11900865 . Проверено 12 ноября 2011 г.
- ^ Бэгналл, Брайан (2005). «Секретный проект 1981». На грани: захватывающий взлет и падение Коммодора (1-е изд.). Виннипег, Манитоба: Вариант Пресс. п. 227. ИСБН 0-9738649-0-7 .
- ^ Бэгналл, Брайан (2005). «Секретный проект 1981». На грани: захватывающий взлет и падение Коммодора (1-е изд.). Виннипег, Манитоба: Вариант Пресс. п. 229. ИСБН 0-9738649-0-7 .
- ^ Бэгналл, Брайан (2005). «Секретный проект 1981». На грани: захватывающий взлет и падение Коммодора (1-е изд.). Виннипег, Манитоба: Вариант Пресс. п. 230. ИСБН 0-9738649-0-7 .
- ^ Бэгналл, Брайан (2005). «Секретный проект 1981». На грани: захватывающий взлет и падение Коммодора (1-е изд.). Виннипег, Манитоба: Вариант Пресс. п. 242. ИСБН 0-9738649-0-7 .
- ^ Якал, Кэти (июнь 1986 г.). «Эволюция графики Commodore» . Бюллетень Compute ! стр. 34–42 . Проверено 18 июня 2019 г.
- ↑ Перейти обратно: Перейти обратно: а б с д Каупер, Оттис Р. (1986). Картирование Коммодора 128 . Гринсборо, Северная Каролина: ВЫЧИСЛЯЙТЕ! Книги. ISBN 0-87455-060-2 .
- ^ «Чип видеоинтерфейса 6567: Спецификация» (PDF) . Группа компаний Commodore Semiconductor. листы 2 и 5.
- ^ «Графика, управляемая яркостью на C64» .
- ^ Тиммерманн, Филип. «Анализ цвета Commodore VIC-II (предварительный просмотр)» . Проверено 11 февраля 2018 г.
- ^ Сьёстедт, Илкка (30 марта 2016 г.). «Цвета старого VIC-II и смешивание цветов» . блог ilesj . Проверено 11 февраля 2018 г.
- ^ Каупер, Оттис Р.; Флоренс, Дэвид; Хеймарк, Тодд Д.; Краузе, Джон; Миллер, Джордж В.; Микитин, Кевин; Нельсон, Филип И.; Виктор, Тим (октябрь 1985 г.). «Глава 7. Архитектура системы». COMPUTE!'s 128 Руководство программиста . Гринсборо, Северная Каролина: ВЫЧИСЛЯЙТЕ! Публикации . стр. 348–349. ISBN 0-87455-031-9 .
- ^ «Восставшие из Обливиона — мелочи» .
- ^ «ВИК-IIе Интерлейс» .
- ^ Хафхилл, Том Р. (июль 1983 г.). «Видеообновление Commodore 64» . Бюллетень Compute ! п. 40 . Проверено 6 февраля 2016 г.
- «Приложение N: Технические характеристики чипа 6566/6567 (VIC-II)». Справочное руководство программиста Commodore 64 (PDF) (1-е изд.). Бизнес-машины Commodore . 1982. стр. 436–456. ISBN 0-672-22056-3 .
Внешние ссылки [ править ]
- Видеоконтроллер MOS 6567/6569 (VIC-II) и его применение в Commodore 64 - подробное аппаратное описание VIC-II.
- Анализ цвета Commodore VIC-II (предварительная версия) — попытка предоставить точную информацию о цветовой палитре VIC-II, выполненная Филипом Тиммерманном.
- Описание графических режимов C64 — простые объяснения с примерами изображений общих режимов, используемых для графики C64, включая режимы взлома и режимы с программной поддержкой.
- Режимы видео Real Interlace с использованием VIC-IIe.
- Информация о программировании VIC на Codebase64.
- Выстрелы VIC-II
- Точное воспроизведение видеовыхода Commodore C64 — палитра VIC-II, как видно на дисплеях PAL и NTSC; расчет соотношения сторон пикселей