Categories: 技術

ホールド・アンド・変更

Hold-And-Modify(通常はHAMと略されます)は、コモドール・アミガ(Commodore Amiga)コンピュータの表示モードです。 非常に珍しい技術を使用してピクセルの色を表現し、可能な場合よりも多くの色をスクリーンに表示することができます。 HAMモードは、デジタル化された写真やビデオフレーム、ビットマップアート、時にはアニメーションを表示するために一般的に使用されていました。 1985年のアミガの発売当時、このフォトリアリスティックなディスプレイは家庭用コンピュータにとって前例がなく、Amigaのグラフィック機能を実証するために広く使用されていました。 しかしながら、HAMは、それが汎用ディスプレイモードとして使用されることを妨げる重要な技術的限界を有する。

バックグラウンド
オリジナルのAmigaチップセットは、4096の可能な色を生成する12ビットのRGBカラースペースを備えた平面ディスプレイを使用します。

プレイフィールドのビットマップは、ディスプレイシステムとメインCPUで共有されるチップRAMと呼ばれるメインメモリのセクションに保持されていました。 タイミングの問題から、チップセットは、画面上に次のピクセルを描画する時間が来る前に、1ピクセルあたり6ビットしか読み取る時間がありませんでした。 画像を記述するのに必要なデータ量を減らし、この制限内に収まるようにするために、表示システムはカラーパレット付きの索引付きカラーシステムを使用しました。

ハードウェアには32個のレジスタがあり、4096色のうちのいずれかに設定することができ、画像はピクセルあたり5ビットを使用して32個の値のいずれかにアクセスできます。 6番目に利用可能なビットは、エキストラハーフブライト(Extra Half-Brite)と呼ばれるディスプレイモードで使用され、ピクセルの輝度を半減させ、シャドウ効果を生成する簡単な方法を提供しました。

ホールドアンド変更モード
Amigaチップセットが最初に設計されたとき、それはテレビジョンが表示のために使用された初期の家庭のコンピュータに共通であったように、NTSC信号の彩度、色相および輝度値で直接動作した。 これは、白黒テレビのような単色画像を表示するのに必要なメモリの量を大幅に減らす可能性を導き、走査線の開始時に色値を設定し、ビットマップ値が輝度値のみを変更するようにした。 アナログテレビジョン画像は、複数のピクセルにわたってただちに変化するのではなく、すぐにではなく黒から白に変化することができるので、信頼できる「白黒」画像を提供するには4ピクセルで十分であり、画像。

Amigaデザインがゲームコンソールから家庭用コンピュータに移行すると、同様にチップセットはHSLカラーモデルから現代のRGBカラーモデルに移行しました。 ジェイマイナーを引用するには:

” ホールドと修正は実際に飛行シミュレータを見に行く旅行から来て、私は基本的なタイプのバーチャルリアリティについて考えていました。 チップ上のNTSCは、色相を保持し、4ビットを変更するだけで輝度を変更できるということを意味しました。 私たちがRGBに変わったとき、それは役に立たなかったのでもう必要なくなったと言いました。チップレイアウトの人にそれを取り除くように頼んだのです。 彼は戻って来て、チップの真ん中に大きな穴を残すか、3ヶ月間の再設計をして、それができないと言った。 私は誰もそれを使用するとは思わなかった。 私はそれが本当にカラーパレットの面でアミガの端を与えているので、再び間違っていた。 ”
Hold-And-Modifyは、本質的に元の輝度のみのコンセプトを変更したものですが、今回は赤、緑、青の3つの色成分のうちの1つを変更することができます。 HAMはロッシー圧縮技術と見なすことができます。 HAM6モードでは、プレイフィールドは通常12ビットの色空間に必要なメモリの半分でエンコードされます。 水平彩度を犠牲にして全体的な色の忠実度が向上します。 グラフィックスバッファが表示されているとき、HAMで符号化されたカラースペースはリアルタイムでディスプレイハードウェアによって「圧縮解除」されます。

使用法
Amigaが1985年に発売されたとき、HAMモードは競合するシステムよりも大きな利点をもたらしました。 HAMでは、上記の制限があるにもかかわらず、すべての4096色を同時に表示することができます。 この擬似フォトリアリスティックディスプレイは、当時の家庭用コンピュータにとって前例がなく、デジタル化された写真とレンダリングされた3D画像の表示を可能にしました。 これと比較すると、IBM-PC標準のEGAは、64色のパレットから16色の画面上の色を可能にしました。1987年にリリースされたEGAの後継VGAは、主力のゲームモード、Mode 13hで262,144色から256色の画面色を可能にしました。 競合するハードウェアは色の濃さに一致しないため、店舗ディスプレイやトレードプレゼンテーションでのアミーガの能力を実証するために、HAMモードが頻繁に使用されていました。 上記の制限のために、HAMは主に静的画像の表示に使用され、開発者はアニメーションを必要とするゲームまたはアプリケーションでのその使用を大幅に回避した。

アドバンストグラフィックスアーキテクチャの導入により、従来の平面画像は256色のパレットを持つことができ、大幅に高い色再現性を提供することができました。 限られた色解像度を持つオリジナルのHAMモードは、後方互換性のためにまだ含まれていましたが、AGAマシンのユーザーにとっては魅力的ではありませんでした。 新しいHAM8モードは、HAMモードの欠点に悩まされることなく、平面的な256色パレットがアーティストにオプションを大幅に増やしたので、AAMチップセットにとってHAMモードが元のチップセットよりもはるかに役に立たなかった。 十分にプログラムされたスライスされた平面モードは、HAM8よりも有用であることが判明する可能性がある。 限られたビデオバッファサイズと限られたメモリ帯域幅にもかかわらず、より多くのカラー解像度を可能にすることだったHAMの本来の目的は、もはや関連性がなくなった。

現代のコンピュータは高解像度のトゥルーカラーディスプレイが可能であるため、もはやHAMのような表示技術は必要ない。 現代のグラフィックスハードウェアは、パックされたピクセルを使用するのに十分なメモリ帯域幅を持っているため、一般的なコンピューティングでは、平面グラフィックスも廃止されました。

制限事項
HAMモードは、プレイフィールドの各水平ライン上の隣接ピクセルの値に制限を設定します。 2つの任意の色を隣接してレンダリングするには、目的の色(赤、緑、青の各コンポーネントをすべて変更する必要がある場合)に変更するには、最大2つの中間ピクセルが必要になります。 最悪の場合、水平クロマ分解能は704ピクセルから240まで低下します(比較のため、VHSのような現代技術では0.4 MHzで40のクロマ分解能があります)。 この問題は、望ましくない複数の色合いのアーチファクトまたは「縞」が現れることがある、鮮明なコントラスト(強い水平画像勾配)の領域で特に顕著である。 「フリンジング」の影響を最小限に抑えるためにさまざまなレンダリング技術が使用され、HAMディスプレイは、垂直エッジやコントラストを避けて微妙な水平の色勾配を組み込むように設計されていました。

HAMモードでフルカラー画像を表示するには、いくつか注意深い前処理が必要です。 HAMは一度にRGBコンポーネントの1つだけを変更できるため、これらのトランジションにプリセットされたカラーレジスタの1つを使用することによって、スキャンラインに沿った急激なカラートランジションが最も効果的です。 プログラマは、任意の画像をレンダリングするために、最初に原画像を調べて、これらの遷移のうち最も顕著なものを選択し、それらの色をレジスタの1つに割り当てることができる。これは適応型パレットと呼ばれる技術である。 ただし、元のHAMモードで使用可能なレジスタは16個しかないため、色の忠実度の低下が一般的です。

さらに、HAMモードは、ディスプレイの任意のアニメーションを容易に許可しない。 例えば、プレイフィールドの任意の部分を別の画面上の位置に移動する場合は、画像を正しく表示するために、すべてのソース行とターゲット行でHold-and-Modify値を再計算する必要があります。アニメーションに適しています)。 具体的には、アニメーション化されたオブジェクトの一番左のエッジに「変更」ピクセルが含まれている場合、またはオブジェクトのすぐ右のイメージに「変更」ピクセルが含まれている場合、それらの保持および変更の値を再計算する必要があります。 画面上でオブジェクトを動かそうとすると(ブリッタを使用するなど)、グラフィックを特別に設計されていない限り、その画像の左右の境界に目立つような縞模様ができます。 ホールドと変更の値を再計算してフリンジを回避するためには、プログラマはすべてのブリッタオブジェクトの一番左のピクセルを確保しなければならず、スクロールプレイフィールドの各ラインの一番左のピクセルは「セット」ピクセルです。 パレットは、そのような一番左のピクセルをすべて組み込むように設計する必要があります。 あるいは、HA​​Mディスプレイは手続き型生成を介してピクセル値を生成することでアニメートすることができますが、これは一般にデモで使用される「虹」エフェクトなどの合成画像のみには一般的に便利です。

ただし、Hold-and-Modifyはプレイフィールドのピクセルにのみ適用されます。 スキャンラインごとに128ピクセルのスプライトデータ(DMAモード)がHAMプレイフィールドの上に配置されます。

実装
元のチップセットHAMモード(HAM6)
HAM6モードは、1ピクセルあたり6ビットのデータに名前が付けられ、オリジナルのチップセットで導入され、後の拡張チップセットと高度なグラフィックスアーキテクチャで保持されました。 HAM6は320×200から360×576までの解像度で同時に4096色まで表示できます。

Related Post

HAM6エンコーディングは、1ピクセルあたり6ビットを使用します。制御用に2ビット、データ用に4ビットです。 2つの制御ビットが共にゼロに設定されている場合、残りの4つのビットは、16のプリセットカラーレジスタのうちの1つをインデックスするために使用され、通常のインデックス付きビットマップのやり方で動作する。 可能な他の3つの制御ビットパターンは、走査線上の前のピクセル(左)の色を使用すべきであり、赤、緑または青の成分の値を変更するためにデータビットを使用すべきであることを示している。 したがって、4つの可能性があります。

Set:4ビットのデータを使用して、16色のパレットから色を索引付けします。 このピクセルにはその色を使用します。
赤の変更:前のピクセルの緑と青の色成分を保持します。 このピクセルの新しい赤色成分として4ビットのデータを使用します。
Modify Green:前のピクセルの赤と青の色成分を保持します。 このピクセルの新しい緑色成分として4ビットのデータを使用します。
青の修正:前のピクセルの赤と緑の色成分を保持します。 このピクセルの新しい青色成分として4ビットのデータを使用します。
同様のモード、HAM5も利用可能ですが、むしろ無駄です。 HAM5では、第6ビットは常にゼロであるため、青色成分のみを変更することができる。

スライスされたHAMモード(SHAM)
Original Amigaチップセットには、CPUやビデオシステムとは独立した割り込みやその他のタイミングやハウスキーピングの任務を担当する「銅」と呼ばれるサポートチップが含まれていました。 Copperを使用すると、ビデオディスプレイが垂直または水平ブランク割り込み(HBI)を処理している間に、短いタスクを実行するためにCPUにコールバックすることができました。 これにより、プログラマは、視覚的なアーチファクトを発生させることなく機械コードをディスプレイに結び付けることができ、多くのビデオエフェクトを実装するのがはるかに簡単になりました。

この手法を使用して、プログラマはスライスされたHAMまたはSHAMモードを開発しました。これはダイナミックHAMとも呼ばれます。 SHAMは、HBI中にパレットを変更した、選択されたスキャンライン、またはそのすべてで呼び出されたコンピュータコードを使用しました。 これは、すべての走査線が独自の16色の基本色を持つことができることを意味していました。 これにより、パレットを選択するのがはるかに簡単になりました。これは、イメージごとではなく、1行ごとに実行できるようになりました。 このアプローチの唯一の欠点は、制御プログラムが複数のパレットを保持しなければならないため、画像がチップRAM内に保持されなくなり、SHAMモードを設定するのがいくらか複雑であったことです。

この手法はHAMに限らず、従来のグラフィックスモードでも広く使用されていました。 Dynamic HiResは同様のパレット変更技術を使用して高解像度モデルでラインごとに16色を生成しますが、HAMは低解像度に制限されていますが16個のインデックス付きカラーとその変更が可能です。

スライスされていないHAM8画像でもスライスされたHAM6画像よりもはるかに高い色分解能を有するので、SHAMのアイデアはHAM8が導入されたときには非推奨となった。 しかし、SHAMは、元のチップセットを持つAmigasで最高のHAMモードを維持しています。

高度なグラフィックスアーキテクチャHAMモード(HAM8)
1992年にAdvanced Graphics Architecture(AGA)がリリースされ、オリジナルのHAMモードが「HAM6」に改名され、新しい「HAM8」モードが導入されました(番号は各HAMモードで使用されるビットプレーンを表します)。 AGAでは、1つの色成分につき4ビットではなく、1つの色成分につき最大8ビットとなり、結果として16,777,216色(24ビット色空間)が得られました。

HAM8はHAM6と同じように、1ピクセルあたり2つの「制御」ビットを使用しますが、1ピクセルにつき4ビットではなく6ビットのデータを使用します。 set操作は、16の代わりに64色のパレットから選択します。変更操作は、赤、緑、または青の色成分の6つの最上位ビットを変更します。この操作では、色の2つの最下位ビットを変更することはできません。最新のセット操作によって設定される。 HAM6と比較して、HAM8はもっと多くのオンスクリーンカラーを表示できます。 HAM8を使用する画面上の色の最大数は、262,144色(18ビットRGB色空間)と広く報告されています。 実際、オンスクリーンカラーの最大数は、64カラーパレットの各カラーコンポーネントの2つの最下位ビットに応じて、262,144を超えることができます。 理論的には、十分なスクリーンと適切な基本パレットを使用して1670万色すべてを表示することができますが、実際には完全精度を達成するには2つの最下位ビットは通常無視されます。 一般に、知覚されるHAM8色深度は、高色表示とほぼ同等である。

HAM8の垂直表示解像度はHAM6と同じです。 水平解像度は、以前のように320(オーバースキャンでは360)、640(オーバースキャンで720)、または1280ピクセル(オーバースキャンでは1440)に倍増することもできます。 AGAチップセットは、従来の平面表示モードでもさらに高い解像度をもたらしました。 HAL8イメージの総ピクセル数は、PALモードを使用すると829,440(1440×576)を超えることはできませんが、サードパーティディスプレイハードウェア(Indivision AGAフリッカーフィーダ)を使用すると1,310,720(1280×1024)を超えることができます。

元のHAMモードと同様に、HAM8スクリーンは、任意の位置に任意の色を表示することができません。これは、すべてのピクセルが限られたパレットに依存しているか、 元のHAMモードと同様に、設計者はこれらの制限のいくつかを回避するために、ディスプレイを「スライス」することもできます(下記参照)。 HAM7モードも使用できますが、広く使用されていません。

HAMエミュレーション
HAMはAmigaとその独特なチップセットに特有のものです。 HAMフォーマットでエンコードされたレガシーイメージの直接レンダリングを可能にするために、元のディスプレイハードウェアを必要としないソフトウェアベースのHAMエミュレータが開発されている。 AmigaOSの4.0より前のバージョンは、固有のAmigaチップセットの存在下でHAMモードを使用できます。 根本的に異なるハードウェア用に設計されたAmigaOS 4.0以降は、現代的で厄介なグラフィックスハードウェアで使用するためのHAMエミュレーションを提供します。 非ネイティブハードウェア上で動作する専用のAmigaエミュレータは、ディスプレイハードウェアのエミュレーションによってHAMモードを表示できます。 しかし、他のコンピュータアーキテクチャではHAM技術を使用していないため、他のアーキテクチャでHAMイメージを表示するにはイメージファイルをプログラムで解釈する必要があります。 忠実なソフトウェアベースのデコードでは、ディスプレイ設定間の色の忠実度の違いを除いて同じ結果が得られます。

しかし、目標が単にAmiga以外のプラットフォームにSHAMイメージを表示するだけであれば、パレットが修正されているかどうかにかかわらず、銅リストを介してプログラムされたパレットエントリに基づいて必要な色値を事前に計算することができます走査線の中央。 HAMまたはSHAM画像をロスレスに32ビットパレットにアップコンバートすることは常に可能です。

サードパーティのHAM実装
HAM-Eとして知られているBlack Belt製のデバイスは、元のチップセットを備えたAmigaから水平解像度が低いHAM8色深度の画像を生成することができました。

Amigaは、高解像度の画像(幅640ピクセル、オーバースキャンで720ピクセル)を生成するように設定されます。 これには、ピクセル当たり70nsで4つのビットプレーンを使用する必要がありました。 HAM-Eユニットを構成するための画像符号化情報の最初の数行。 その後、各ピクセル対は、情報を1つの140nsピクセル(320ピクセル幅、またはオーバースキャンで360ピクセルの画像を8つのビットプレーンの色深度で生成する)に変換したHAM-Eユニットの情報で符号化されました。 したがって、HAM-Eの品質は、低解像度HAM8画像に匹敵するものであった。 HAM-E技法は、4つのビットプレーンを有する高解像度画像は、6つのビットプレーンを有する低解像度画像よりも3倍多くのメモリ帯域幅を提供し、したがって3倍以上のデータを提供するという事実を利用している。

Share