Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску
Эффект конфликта атрибутов в системах MSX 1 при использовании режима 256 × 192 Highres для MSX 1 (в этом примере блоки фоновых пикселей 8 × 8 имеют один и тот же цвет, поэтому эффект аналогичен ZX Spectrum)

Столкновение атрибутов (также известное как конфликт цветов или растекание ) - это артефакт дисплея, вызванный ограничениями в графической схеме некоторых цветных 8-битных домашних компьютеров , в первую очередь Sinclair ZX Spectrum , где это означало, что только два цвета можно было использовать в любом Плитка 8 × 8 пикселей. Эффект был также заметен в программном обеспечении MSX и в некоторых играх Commodore 64 . Обходные пути для предотвращения появления этого ограничения с тех пор считаются элементом культуры программистов Spectrum.

Эта проблема также возникает с «полуграфическими режимами» (текстовые режимы с графическими функциями) Color Computer и Dragon , но эти компьютеры также имеют графику без атрибутов и с лучшим разрешением. Несколько игровых консолей той эпохи имели такие видеорежимы, которые вызывали такие ограничения, но обычно позволяли использовать более двух цветов на плитку: NES (Famicom) имела только один режим, который также был «полуграфическим», и позволял четыре цвета на каждый 16 × 16 «блоков» (группа из четырех плиток 8 × 8), но по 16 на экран. Super NES допускала 16 цветов на плитку, но 256 на экран (среди других улучшений), и это сделало артефакт намного труднее заметить, если вообще (за исключением тех, кому приходилось программировать устройство).

Причины [ править ]

Конфликт атрибутов на ZX Spectrum был вызван его идиосинкразическим расположением памяти дисплея, разработанным таким образом, чтобы минимизировать использование памяти буфера кадра и оптимизировать отображение текста вместо графики. Вместо того, чтобы ограничивать цветовую палитру для экономии памяти, дизайн Синклера хранил растровые изображения пикселей и информацию о цвете в отдельных областях памяти. В то время как растровое изображение определяло состояние отдельных пикселей (включено или выключено), информация о цвете (или «атрибуты») соответствовала матрице текстовых символов - 24 строки по 32 столбца - с одним байтом на символьную ячейку размером 8x8 пикселей. Этот байт закодировал два 3-битных значения, известных как INK (цвет переднего плана) и PAPER (цвет фона) послеBASIC инструкции, используемые для определения значений цвета. Два других двоичных значения были включены в атрибут; BRIGHT бит , указывающий один из двух уровней яркости для двух цветов, и FLASH бит, который, когда установлен, вызвало два цвета , чтобы быть выгружена через регулярные промежутки времени. Эта схема обеспечивала 15 различных цветов: восемь комбинаций красного, зеленого и синего на двух уровнях яркости (за исключением черного, который выглядел одинаково на обоих уровнях яркости). Таким образом, каждый блок пикселей 8x8 может содержать только 2 цвета из 15 доступных, которые должны быть либо из ЯРКОСТИ, либо из неяркой половины палитры. Попытка добавить третий цвет в область 8x8 пикселей приведет к перезаписи одного из предыдущих цветов.

ZX Spectrum использовал 6144 байта для битовой карты, один байт представляет восемь пикселей, и использовал 768 байтов для атрибутов цвета. Это дает в общей сложности 6912 байт для всего графического дисплея, что относительно мало для компьютера эпохи Spectrum с «цветными» возможностями. Эта графическая архитектура сохранялась вплоть до более поздних модификаций Spectrum Синклера и Амстрада , вплоть до последней модели Амстрада, ZX Spectrum +3, несмотря на то, что последующие модели содержали 128  Кбайт ОЗУ, что уменьшало потребность в экономии памяти таким образом. . Архитектура была сохранена для предотвращения потери обратной совместимости .

Атрибуты использовались множеством других компьютеров и консолей, включая Commodore 64 , MSX и NES , хотя размер блоков атрибутов и количество цветов в блоке варьировались. Однако, используя аппаратные спрайты , можно избежать конфликта атрибутов.

В Thomson MO5 и to7 микрокомпьютеры, тем ORIC 1 , то MSX 1 архитектура и другие системы на базе Texas Instruments TMS9918 видеоконтроллеротображать очень похожее ограничение: для каждой группы из восьми пикселей по горизонтали доступны только два цвета из 16. дает аналогичный, но менее серьезный эффект, чем у Spectrum. В MSX 1 не был только один байт атрибута цвета, доступный для всей области 8x8 пикселей, как в случае с Sinclair Spectrum, а восемь, с одним байтом атрибута для каждой группы пикселей 8x1. Таким образом, в то время как Spectrum был ограничен одной цветовой парой для квадратной области 8x8 пикселей, MSX 1 был ограничен только одной цветовой парой для «линии» из восьми соседних пикселей. Вдобавок MSX1 мог использовать спрайты, которые не были привязаны к каким-либо проблемам с конфликтом атрибутов (хотя у спрайтов MSX 1 были свои ограничения, такие как монохромность).

На практике это техническое преимущество часто не помогало системам MSX 1 создавать более качественные изображения. Проблема для MSX 1 заключалась в том, что многие европейские компании-разработчики программного обеспечения, которые преобразовали игры Spectrum в MSX 1, проигнорировали все улучшения, которые MSX 1 имел по сравнению со Spectrum, и, таким образом, полученные версии MSX 1 имели такое же количество конфликтов атрибутов, что и оригинальные игры Spectrum. ( Джек Кусак II: В кокосовых каперсахявляется одним из примеров этого). Чтобы упростить преобразование, разработчики программного обеспечения просто скопировали значение одного байта атрибута Spectrum во все восемь соответствующих байтов атрибута MSX 1. По той же причине компании-разработчики программного обеспечения также проигнорировали возможности спрайтов MSX 1, а также потому, что видео В остальном возможности дисплея были довольно схожими (разрешение 256 × 192, 16 цветов), обе системы производили практически идентичные дисплеи для одной и той же игры. Напротив, японские игры для MSX 1 использовали все возможности MSX 1, что часто приводило к улучшению внешнего вида игр.

Эффекты [ править ]

Чтобы избежать конфликта атрибутов, статические графические дисплеи должны создаваться с осторожностью. Детализированная цветная графика была невозможна, так как цвет можно было применять только в блоках 8 × 8 пикселей. Тщательный дизайн может дать впечатляющие результаты, как и синхронизация изменения цвета с частотой обновления дисплея - обычно телевизора.

Однако с анимированными дисплеями было труднее - явный недостаток машины, которая в основном использовала видеоигры . Если бы только один пиксель в блоке 8 × 8 был перекрашен из-за того, что движущаяся часть дисплея коснулась его, весь блок изменил бы цвет. Таким образом, детализированная движущаяся графика заставляла большие уродливые полосы быстро меняющихся цветов следовать за ними.

Обходные пути [ править ]

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

Некоторое позднее программное обеспечение Spectrum, такое как Light Force от FTL , использовало чрезвычайно тщательный графический дизайн для получения полноцветной движущейся графики, по сути, ограничивая как дизайн экранных элементов, так и их траекторию движения границами цветового разрешения 8 × 8. Таким образом, движущиеся элементы были относительно большими и довольно блочными или квадратными, и их движение было ограниченным, но это не было визуально очевидно, и вид движущейся полноцветной графики произвел огромное впечатление на владельцев Spectrum.

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

Уделяя особое внимание таймингу, можно было изменять область атрибутов ОЗУ в определенные моменты времени, когда отображался дисплей - пусть аппаратное обеспечение дисплея рисует одну линию дисплея, а затем изменяет ОЗУ атрибутов до того, как будет нарисована следующая линия, чтобы дать влияние различных атрибутов для каждой отдельной строки. Эти изменения должны были быть выполнены в программном обеспечении и требовали много времени для программирования, а это означало, что этот метод обычно ограничивался специальными эффектами. Эта техника также была очень популярна в демосцене .

Проблема и решения [ править ]

В большинстве игр до 1987 года конфликт атрибутов игнорировался. Некоторые более поздние игры, такие как Knight Tyme и Three Weeks in Paradise, позволяли игрокам выбирать между двумя режимами столкновения атрибутов: один, который игнорировал основные атрибуты персонажа, смешивал персонажа с фоном и наоборот, отдавая предпочтение цветовой схеме персонажей над фоновыми изображениями. .

Другой обходной путь состоял в том, чтобы просто визуализировать графику в двух цветах, иначе называемых монохромными, как это было сделано в Spectrum-версии Knight Lore в 1984 году.

Во многих играх использовался полноцветный фон и «прокрутка персонажей» (при которой среда прокручивалась на восемь пикселей за раз), но монохромные спрайты, которые были эффективно прозрачными, как в Double Dragon , были нарисованы таким образом, чтобы выделяться, избегая зависимость от цвета. Во многих играх использовался этот метод с плавной покадровой прокруткой, но конфликт атрибутов, когда элементы одного символьного блока «передавались» другому, было четко видно.

Ярким (и менее успешным) примером использования полноцветной графики было преобразование Spectrum в Altered Beast . Игра страдает значительным конфликтом атрибутов.

Программист Дон Пристли разработал отличительный стиль для нескольких своих игр, используя большие мультипликационные спрайты, которые были тщательно спроектированы так, чтобы охватить целые блоки персонажей, не выглядя излишне квадратными. Недостатком этого метода было то, что игровой процесс должен был строиться вокруг графики, и поэтому он не был полезен для портов с других платформ. В играх, в которых использовалась эта техника, были Popeye , The Trap Door , Through the Trapdoor и Flunky . Другие разработчики, которые использовали подобную технику, включали Майка Синглтона с Dark Scepter и Gang of Five с Dan Dare: Pilot of the Future .

В 1994 году программист Игорь Мазница разработал концептуальную многопроцессорную платформу «ZX-Poly» на базе ZX-Spectrum-128; платформа позволяет избежать конфликта атрибутов и даже может раскрасить многие старые игры без изменения исполняемого кода.

Ссылки [ править ]

Источники [ править ]

  • «FAQ: Справочник» . WorldOfSpectrum.org .
  • Сурман, Дэвид. "Цвет аркады, иллюстрации и столкновение атрибутов 1979 - 89" . Academia.edu .
  • Смит, Тони (23 апреля 2012 г.). «С 30-летием, Sinclair ZX Spectrum» . Реестр .
  • Исходники эмулятора ZX-Poly и описание платформы