Мультиколор — различия между версиями

Материал из SpeccyWiki
Перейти к: навигация, поиск
 
(не показано 16 промежуточных версии 4 участников)
Строка 1: Строка 1:
'''Multicolor''', '''Мультиколор''' - то особый режим вывода изображения на телевизор/монитор, к которому подключен [[ZX Spectrum]], и/или аппаратная доработка, делающая это автоматически.
+
'''Multicolor''', '''Мультиколор''' — программный трюк, позволяющий обойти ограничение [[256x192|стандартного]] видеорежима [[ZX Spectrum]] на количество одновременно отображаемых в одном [[знакоместо|знакоместе]] цветов. Условно говоря, мультиколор позволяет уменьшить высоту знакоместа, вплоть до одной точки (свой [[атрибут]] для блоков пикселей 8x1, 8x2, 8x4 и т.п.).  
  
Возможность создания Milticolor на обыкновенном ZX-Spectrum заключается в следующем.  
+
Мультиколор используется в различных программах, в основном в [[демо]]. Использование мультиколора в играх затруднено необходимостью выдерживания точных таймингов.
  
Вывод картинки на экран телевизора/монитора происходит с частотой в 50 Герц генератором видеоизображения после прихода сигнала маскируемого прерывания. Луч развёртки экрана монитора/телевизора начинает трассировать видеоизображение. Он доходит до экранной области и каждое знакоместо экранной области проходит 8 раз - сверху вниз по пиксельной линии. При каждом проходе содержимое атрибутной области читается заново. После первого прохода луча по знакоместу, содержимое атрибутной части может быть изменено. Это приведёт к тому, что при повторном проходе луча будут использованы другие, нежели в предыдущий раз, цвета. Таким образом, быстро изменяя содержимое атрибутной области, можно получить знакоместо, в котором атрибутами будут задаваться цвета отдельной полоски точек 1x8. Этот эффект и получил название ''Multicolor''.  
+
Неизвестно, где и когда был реализован первый мультиколор, но он присутствует в некоторых играх [[1985]]-[[1986]] годов.
  
Так как, в отличие от [[256x192|стандартного экрана]], в Multicolor'е атрибуты задаются более плотно (на область 1x8 пикселей, вместо 8x8 для [[256x192|обычного]] режима), то картинки и программы, использующие Multicolor смотрятся более красочно и ярко. Поэтому он используется в различных программах, например в Demo, играх и т.д. Сочетание эффектов [[Gigascreen]] и Multicolor позволяет создать на экране монитора/телевизора чрезвычайно красочное изображение - в таком случае каждая из областей 1x8 окрашиваются одним из 102 цветов фона (PAPER) и тона (INK).
+
Одна из первых реализаций мультиколора в демо (не считая полосок) — [[Gift Multdemo]] группы [[Flash Inc]]. В нём выводилась изображение размером 16x16 [[знакоместо|знакомест]], состоящее из "[[чанки|точек]]" размером 4x1 пикселя. Наиболее известные ранние реализации мультиколора в демо — первая часть [[мегадемо]] [[Shock]] (Польша, [[1992]]) и шестая часть мегадемо [[Satisfaction]] (Украина, [[1994]]). Среди более поздних демо, активно использующих мультиколор (в большинстве эффектов) - [[Eye Ache]] ([[1996]]), [[Eye Ache 2]] ([[1997]]) и [[Stellar Contour]] ([[2001]]).
  
На разных моделях [[ZX Spectrum]] требуется разная настройка задержек для синхронизации мультиколора с развёрткой. Большинство программ, работающих с мультиколором, поддерживают развёртку компьютера [[Пентагон]].
+
== Принцип работы ==
  
[[Турбо-режим|Нетурбированные]] модели ZX Spectrum не могут заполнить все 32 байта атрибутов знакомест графической строки произвольными данными за время, пока строка прорисовывается. Код типа
+
Обычно в одном знакоместе (блоке 8x8 точек) может быть использовано только два цвета — цвет фона и цвет тона. Логика работы видеоконтроллера такова, что при проходе луча развёртки по каждой строке растра в основной области экрана происходит чтение [[атрибут]]ов знакомест. То есть, при построении растра атрибут каждого знакоместа экрана читается видеоконтроллером восемь раз — по числу строк пикселей в знакоместе. Если атрибуты будут изменены между проходами луча, это приведёт к использованию для текущей отображаемой строки новых значений. Таким образом, вовремя изменяя содержимое атрибутной области экрана, можно задавать цвета для полосок 8x1 точек вместо обычных блоков 8x8.
LD HL,<пара байт>
+
LD (<адрес на экране>),HL
+
может обновить до 8 пар байт (16 байт) за строку, или до 20 байт, если первые 2 строки каждого знакоместа заполнены заранее в двух экранных областях. Более сложный код, работающий со стеком, позволяет отобразить мультиколор шириной до 24 байт на компьютере [[Пентагон]], что считается теоретическим пределом.
+
  
== Некоторые данные ==
+
Разные модели ZX Spectrum и клонов имеют разные реализации видеоконтроллера и, соответственно, разные [[256x192#Тайминги|параметры развёртки]]. Для реализации программного мультиколора требуется точная настройка на эти параметры. Большинство программ, работающих с мультиколором, расчитаны на параметры компьютера [[Пентагон]].
*Луч развёртки проходит одну строку растра при стандартной тактовой частоте (3.5 МГц) за 224 [[такт|такта]] процессора (в некоторых [[Клоны ZX Spectrum|моделях]] может быть меньшее значение).  
+
 
*Экран начинается лишь спустя 80 строчек, которые заполняются цветом бордюра [[Бордюр|бордюр]]
+
Модели ZX Spectrum без [[турбо-режим]]а не могут заполнить все 32 байта атрибутов знакомест строки произвольными данными за время, пока луч развёртки проходит по строке. Код типа LD HL,<пара байт> : LD (<адрес на экране>),HL может обновить до 8 пар байт (16 байт) за строку, или до 20 байт, если первые 2 строки каждого знакоместа заполнены заранее в двух экранных областях. Более сложный код, работающий со стеком, позволяет отобразить мультиколор шириной до 24 знакомест на компьютере [[Пентагон]], что считается теоретическим пределом. Для компьютеров с [[медленная память|двумя полями памяти]] (все оригинальные модели ZX Spectrum и некоторые клоны) таким пределом является 22 знакоместа.
*Максимально возможная область произвольных данных для Multicolor по ширине для безвайтовых [[ZX-Spectrum]] типа [[Пентагон]] 24 знакоместа, для вайтовых - 22.
+
 
*Даже для стандартной частоты ЦП возможно получить полноэкранный мультиколор с некоторыми ограничениями. Так, например, конвертор [[Con18]] позволяет ограничивать число пар байт, изменённых в течение одной строки, значением 8. Получившуюся картинку (формат .mc) можно посмотреть программой [[MCX Viewer]]. Аналогичная возможность есть при конверсии в [[Double-Screen]]  [[Multicolor|мультиколор]] (формат .mcx).
+
Даже при стандартной тактовой частоте процессора возможно получить полноэкранный мультиколор (на 32 знакоместа), имеющий некоторые ограничениями. Так, например, конвертор [[Con18]] позволяет ограничивать число пар байт, изменённых в течение одной строки, значением 8. Получившуюся картинку (формат .mc) можно посмотреть программой [[MCX Viewer]]. Аналогичная возможность есть при конверсии в [[Gigascreen|двухэкранный]] мультиколор (формат .mcx).
 +
 
 +
Помимо мультиколора с размером атрибута 8x1 точек возможно реализовать варианты с размерами атрибута 8x2 или 8x4 точек. Это позволит освободить больше времени процессора для выполнения каких-либо задач. Мультиколор 8x4 также может быть реализован с помощью теневого экрана ZX Spectrum 128K - все атрибуты обычного и теневого экрана могут быть установлены в начале кадра, далее в процессе прохода луча по растру каждые 4 строки нужно переключать видимый экран.
  
 
== Конверторы ==
 
== Конверторы ==
*Con18 (PC/Windows)
+
*[[Con18]] ([[Windows|PC/Windows]])
 
*[[BMP2SCR]] (PC/Windows)
 
*[[BMP2SCR]] (PC/Windows)
  
 
== Редакторы ==
 
== Редакторы ==
*[[Multi-Studio]] 1.x и 2.x
+
*[[Megascreen]] 1.x и 2.x by [[Сергей Крутько]] (1994?)
 +
*[[Multicolor Studio]] by [[Phantom Lord]] (1996)
 +
*[[multiArtist]] by [[TmK]] (2009)
  
 
== Игры ==
 
== Игры ==
*[[Hexagonal Filler]]
+
*[[Scorpions: Die Machine]] (1995) — только заставка by [[TeeRay]] в crack'е [[Magic Soft]] (1996)
 +
*демоверсия Heroes: скроллер карты (1998) — [[Иван Брагин]] ([[Хабаровск]]), требует аппаратный мультиколор рубильником
 +
*[[Hexagonal Filler]] (2004), заставки и игровой процесс — [[Alone Coder]], программный или аппаратный мультиколор
 +
*Joefish River Raid Tech Demo (2009)
 +
*Joefish Buzzsaw Demo (2009)
 +
 
 +
== См. также ==
 +
*[[Аппаратный мультиколор]]
 +
*[[Мультигигаскрин]]
  
 
== Ссылки ==
 
== Ссылки ==
 
*[http://zxdn.narod.ru/coding/zf6mlclr.txt Изготовление мультиколоров] - статья из ZX Format #6
 
*[http://zxdn.narod.ru/coding/zf6mlclr.txt Изготовление мультиколоров] - статья из ZX Format #6
 
*[http://zxdn.narod.ru/coding/zg2mchow.txt О мультиколоре вообще и MC24 в частности] - статья из [[ZX-Guide]] #2
 
*[http://zxdn.narod.ru/coding/zg2mchow.txt О мультиколоре вообще и MC24 в частности] - статья из [[ZX-Guide]] #2
 +
 
[[Категория:Видеорежимы]]
 
[[Категория:Видеорежимы]]

Текущая версия на 04:02, 19 ноября 2009

Multicolor, Мультиколор — программный трюк, позволяющий обойти ограничение стандартного видеорежима ZX Spectrum на количество одновременно отображаемых в одном знакоместе цветов. Условно говоря, мультиколор позволяет уменьшить высоту знакоместа, вплоть до одной точки (свой атрибут для блоков пикселей 8x1, 8x2, 8x4 и т.п.).

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

Неизвестно, где и когда был реализован первый мультиколор, но он присутствует в некоторых играх 1985-1986 годов.

Одна из первых реализаций мультиколора в демо (не считая полосок) — Gift Multdemo группы Flash Inc. В нём выводилась изображение размером 16x16 знакомест, состоящее из "точек" размером 4x1 пикселя. Наиболее известные ранние реализации мультиколора в демо — первая часть мегадемо Shock (Польша, 1992) и шестая часть мегадемо Satisfaction (Украина, 1994). Среди более поздних демо, активно использующих мультиколор (в большинстве эффектов) - Eye Ache (1996), Eye Ache 2 (1997) и Stellar Contour (2001).

Принцип работы

Обычно в одном знакоместе (блоке 8x8 точек) может быть использовано только два цвета — цвет фона и цвет тона. Логика работы видеоконтроллера такова, что при проходе луча развёртки по каждой строке растра в основной области экрана происходит чтение атрибутов знакомест. То есть, при построении растра атрибут каждого знакоместа экрана читается видеоконтроллером восемь раз — по числу строк пикселей в знакоместе. Если атрибуты будут изменены между проходами луча, это приведёт к использованию для текущей отображаемой строки новых значений. Таким образом, вовремя изменяя содержимое атрибутной области экрана, можно задавать цвета для полосок 8x1 точек вместо обычных блоков 8x8.

Разные модели ZX Spectrum и клонов имеют разные реализации видеоконтроллера и, соответственно, разные параметры развёртки. Для реализации программного мультиколора требуется точная настройка на эти параметры. Большинство программ, работающих с мультиколором, расчитаны на параметры компьютера Пентагон.

Модели ZX Spectrum без турбо-режима не могут заполнить все 32 байта атрибутов знакомест строки произвольными данными за время, пока луч развёртки проходит по строке. Код типа LD HL,<пара байт> : LD (<адрес на экране>),HL может обновить до 8 пар байт (16 байт) за строку, или до 20 байт, если первые 2 строки каждого знакоместа заполнены заранее в двух экранных областях. Более сложный код, работающий со стеком, позволяет отобразить мультиколор шириной до 24 знакомест на компьютере Пентагон, что считается теоретическим пределом. Для компьютеров с двумя полями памяти (все оригинальные модели ZX Spectrum и некоторые клоны) таким пределом является 22 знакоместа.

Даже при стандартной тактовой частоте процессора возможно получить полноэкранный мультиколор (на 32 знакоместа), имеющий некоторые ограничениями. Так, например, конвертор Con18 позволяет ограничивать число пар байт, изменённых в течение одной строки, значением 8. Получившуюся картинку (формат .mc) можно посмотреть программой MCX Viewer. Аналогичная возможность есть при конверсии в двухэкранный мультиколор (формат .mcx).

Помимо мультиколора с размером атрибута 8x1 точек возможно реализовать варианты с размерами атрибута 8x2 или 8x4 точек. Это позволит освободить больше времени процессора для выполнения каких-либо задач. Мультиколор 8x4 также может быть реализован с помощью теневого экрана ZX Spectrum 128K - все атрибуты обычного и теневого экрана могут быть установлены в начале кадра, далее в процессе прохода луча по растру каждые 4 строки нужно переключать видимый экран.

Конверторы

Редакторы

Игры

  • Scorpions: Die Machine (1995) — только заставка by TeeRay в crack'е Magic Soft (1996)
  • демоверсия Heroes: скроллер карты (1998) — Иван Брагин (Хабаровск), требует аппаратный мультиколор рубильником
  • Hexagonal Filler (2004), заставки и игровой процесс — Alone Coder, программный или аппаратный мультиколор
  • Joefish River Raid Tech Demo (2009)
  • Joefish Buzzsaw Demo (2009)

См. также

Ссылки