Hold and modify


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-компоненты.

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