Zum Inhalt springen

Hold-And-Modify-Modus

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 13. September 2005 um 12:57 Uhr durch MarkusHagenlocher (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.

HAM (Hold-And-Modify) ist ein Anzeigemodus der Grafik-Chipsätze der Amiga-Plattform um 12-Bit und 18-Bit Bilder mit nur 6 bzw. 8 Bits pro Pixel anzuzeigen. Dabei wird eine spezielle Datenkompression verwendet, um Speicherbandbreite zu sparen.

Falls in einer IFF-Bilddatei ein CAMG-Chunk vorhanden ist kann dieser Modus am 11. Bit identifiziert werden.

Beim HAM-Modus werden zwei Varianten unterschieden.

  • HAM oder HAM6 Bilder können 4096 Farben darstellen und benutzen dafür 6 Bit pro Pixel und eine Palette von 16 Farben.
  • Der 8 Bit HAM8-Modus wurde mit dem Amiga 4000 und dem Amiga 1200 eingeführt und bietet sehr gute fotoähnliche Bildqualität mit nur 8 bit pro Pixel. In diesem Modus können bis zu 262144 Farben dargestellt werden.

Die Farbe eines Pixels im HAM-Modus kann jede Farbe der Farbpalette sein. Oder die Farbe des direkt links daneben liegenden Pixels wird übernommen, wobei eine der drei Farbkomponenten (Rot, Grün, Blau) geändert wird. An der linken Bildseite wird die Randfarbe übernommen (Farbindex 0 der Farbpalette. Anm.: Die Videohardware beginnt damit nicht beim ersten Pixel einer Plane, sondern erst beim ersten sichtbaren pixel (Stichwort DIsplayWindowStaRT register $dff08e), was bei Hardwarescrolling (virtual bzw. übergroßer Screen) einen (unschönen) Unterschied macht).

Dieses Verfahren harmoniert mit den Eigenschaften von Videosignalen (FBAS), sodass die verlustbehaftete Datenkompression nicht zu Qualitätsminderung führt.


In HAM-Bilddateien sind die Pixeldaten im BODY-Chunk als Code gespeichert welche in den Modus und die restlichen Bits aufgeteilt werden. Die Kodierung der Pixel entspricht dem von der Videohardware verwendeten Format.

Modus Bedeutung
00 Index in der Farbpalette
01 Änderung der Blaukomponente
10 Änderung der Rotkomponente
11 Änderung der Grünkomponente

Sofern ein Pixel nicht eine Farbe der Palette darstellt (Modus 00) kann nur die Änderung eines der drei RGB-Werte angegeben werden. Die anderen beiden Werte sind die gleichen wie im Pixel zuvor. Wenn der Pixel der erste einer Bildzeile ist wird der vorherige Pixel als RGB(0,0,0) angenommen (anders als von der Videohardware s.o.).


Format von Modus und Datenbits eines Pixels im HAM-Modus:

543210
00wxyz - Farbindex wxyz
01wxyz - Behalte den Farbwert des vorherigen Pixels aber ändere die obersten 4 Bit von Blau zu wxyz
10wxyz - Behalte den Farbwert des vorherigen Pixels aber ändere die obersten 4 Bit von Rot zu wxyz
11wxyz - Behalte den Farbwert des vorherigen Pixels aber ändere die obersten 4 Bit von Grün zu wxyz

Ein HAM Bild kann nicht direkt in ein Bild mit 256 oder weniger Farben dekodiert werden ohne vorher eine Reduktion der Farben durchzuführen. Um die volle Qualität zu erhalten benötigt man mindestens ein 12-Bit Bild.

Die Anzahl der Datenbits ist 4 für standard HAM und 6 für HAM8. Die Anzahl der Bitplanes im BMHD-Chunk ist 6 bzw. 8. Wenn ein HAM Bild als 24-Bit Bild angezeigt werden soll, sollten die Datenbits (4 bzw. 6) auf 8 Bit erweitert werden. Der Maximalwert sollte, bei 8 Bit pro RGB Kanal, zu 255 umgewandelt werden.


Format von Modus und Datenbits eines Pixels im HAM8-Modus:

76543210
00uvwxyz - Farbindex uvwxyz
01uvwxyz - Behalte den Farbwert des vorherigen Pixels aber ändere die obersten 6 Bit von Blau zu uvwxyz
10uvwxyz - Behalte den Farbwert des vorherigen Pixels aber ändere die obersten 6 Bit von Rot zu uvwxyz
11uvwxyz - Behalte den Farbwert des vorherigen Pixels aber ändere die obersten 6 Bit von Grün zu uvwxyz

HAM8 müssen um in 24-Bit Bilder umgewandelt werden, um auf nicht Amiga Systemen die volle Bildqualität zu behalten.