Hold and modify

Материал из Википедии — свободной энциклопедии
(перенаправлено с «HAM-6»)
Перейти к навигации Перейти к поиску

Hold and Modify (дословно с англ.  «Придержи и Измени», более известный как HAM) — уникальный видеорежим, доступный на персональных компьютерах семейства Amiga. Работает по принципу запоминания (удержания) цвета последнего выводимого пикселя, с последующим изменением его красной (R), зелёной (G) или синей (B) компоненты. Это позволяет чипсету классической Amiga отображать до 4096 цветов на экране, при 6 физических битах на точку (режим HAM6), используемых для записи цвета (в режиме HAM8 чипсета AGA используются 8 бит, что позволяет одновременное отображение на экране 262 144 цветов).

Недостаток видеорежима HAM заключается в том, что при некоторых изменениях цвета требуется изменение компонент у 3-х пикселей, находящихся рядом с точкой, чей цвет изменяется. Поэтому, если палитра для экрана была подобрана неудачно, то возможно появление артефактов изображения, приблизительно похожих на артефакты, замеченные у аналогичного алгоритма сжатия графической информации JPEG. Другой недостаток этого режима — в сложности его использования для векторной графики.

Тем не менее, именно этот режим позволил Amiga 1000 стать первым в мире мультимедийным персональным компьютером, обеспечив её подавляющее преимущество над конкурирующими платформами. Режим HAM позволил впервые отображать фотографии на экране компьютера, а также некоторые трёхмерные модели с фотореалистичным качеством. Спустя некоторое время появилось аппаратное и программное обеспечение для обработки и титрования видеоряда. Таким образом, HAM также позволил Amiga долгие годы лидировать в сфере нелинейного видеомонтажа (даже после краха корпорации Commodore в 1995 году), оставаясь решением, недосягаемым по себестоимости и имеющим наилучшую программную поддержку.

Описание[править | править код]

В классических Amiga на базе чипсетов OCS/ECS для записи цвета точки используются всего 6 бит. Большинство экранных режимов работают с цветами, индексированными в палитре, а для записи индекса цвета используются 5 бит. Следовательно, на таких экранах могут быть одновременно отображены только 25 (=32) цвета. Другие экранные режимы позволяют использовать 6-й бит для указания яркости цвета (пиксели с установленным 6-м битом цвета отображаются с половинной яркостью), то есть количество отображаемых одновременно цветов увеличивается до 2×25 (=64).

Режим HAM6 использует 6 бит, из которых два, как правило, указывают, были ли сохранённые 4 бит индексом в 16-цветной палитре, или же это было изменение в одной из компонент цвета (например, сохранены красная и зелёная компоненты предыдущего отображённого пикселя, а сейчас изменяется синяя). Сохранённые 4 бита используются как абсолютное значение для изменённой RGB-компоненты.

Возможны следующие значения:

  • 00 xxxx — используется цвет из 16-цветной палитры, имеющий индекс xxxx в двоичном представлении;
  • 01 GGGG — сохраняются красная и синяя компоненты от предыдущего пикселя, используется GGGG для зелёной компоненты;
  • 10 RRRR — сохраняются зелёная и синяя компоненты от предыдущего пикселя, используется RRRR для красной компоненты;
  • 11 BBBB — сохраняются красная и зелёная компоненты от предыдущего пикселя, используется BBBB для синей компоненты.

При этом линия пикселей всегда должна начинаться с одного из индексированных в палитре цветов.

HAM6 позволяет одновременное отображение не более 4096 цветов, так как алгоритм описывает 12-битную графику (по 4 бита на каждую из цветных компонент), а 212 = 4096.

В классических Amiga на базе чипсета AGA для хранения цвета пикселя используются 8 бит (28=256 цветов), а также доступен режим HAM8, описывающий 18-битную графику (6 бит на компоненту). Режим HAM8 позволяет одновременное отображение не более 262 144 цветов (218) из палитры в 16 777 216 цветов (24-битная палитра).

Использование HAM[править | править код]

Изначально режим HAM был реализован в чипсете Amiga как экспериментальный. Процитируем Джея Майнера (известного как «отец» Amiga):

Hold and Modify появился в результате поездки, в которой мне довелось увидеть симуляторы полёта для военных пилотов в действии и получить своего рода представление о виртуальной реальности. Реализация NTSC в микросхеме означает, что вы можете удерживать оттенок цвета и менять его яркость изменением всего четырёх битов. Когда же мы перешли к RGB, я сказал, что эта возможность стала бесполезной и попросил парня, который отвечал за создание топологии микросхемы, убрать её. Он вернулся ко мне со словами, что это оставит большую дыру посреди кристалла, а ему понадобится по крайней мере три месяца, чтобы переделать топологию. Разумеется, мы не могли себе этого позволить. Я и не думал, что кто-нибудь когда-нибудь станет этим пользоваться. И здесь я снова ошибся, поскольку это как раз и дало Amiga ту палитру красок, которой не хватало остальным.

Режим HAM не поддерживается в AmigaOS 4 и MorphOS, в связи с чем программное обеспечение классической Amiga, ориентированное на чипсет, оказалось несовместимым с этими операционными системами.

См. также[править | править код]