HTML の 16 進数の色は 6 桁 (3 バイト、いわゆる 16 進トリプレット) で記述されます。Amiga のカラー レジスタは、色を定義するワード (2 バイト、16 ビット) を取ります。
例:
- 黄 - HTML 16 進数 #FFFF00
- 黄 - Amiga カラー レジスタ $0FF0
HTMLカラーとAmigaカラーレジスタを簡単に変換するための何らかのアルゴリズム(または/および)ツールが必要ですか? それとも?...助けてください:)
http://en.wikipedia.org/wiki/List_of_monochrome_and_RGB_palettes#12-bit_RGBによると、R、G、B のそれぞれに使用されるビットは 4 ビットだけです。
言い換えれば、16 ビットの各 16 進数ペアの上半分を取り、それらをつなぎ合わせると、Amiga の色が得られるのではないかと思います。
あなたの例では:
R = 0xFF
G = 0xFF
B = 0xF0
上半分(上の太字)を見てください:
AmigaRGB = ((R & 0xF0) << 4) + (G & 0xF0) + ( B >> 4 )
これは実際に0x0FF0
他の方向に行く:
R = AmigaRGB & (0x0F00) >> 4
G = AmigaRGB & (0x00F0)
B = AmigaRGB & (0x000F) << 4
派手にしたい場合は、丸め、ディザリングなどを追加できます。
もちろん、HTML で使用される最終的な値は
HTML_RGB = R<<16 + G<<8 + B
これが役立つことを願っています。
主にフローリスの回答に関して、私はstackoverflowの外の正しい道に導かれました。要約と変換:
Amiga にはいくつかの異なるグラフィック モードがあり、特に 12 ビット (OCS と呼ばれる) と 24 ビット (AGA と呼ばれる) があります。AGA/24 ビットへの変換には、何もする必要はありません。OCS/12 ビットに変換するには、値を減らす必要があります。
1 つの簡単な方法は、Floris が提案したように、 0RGB = #RRGGBBのように、RGB コンポーネントごとに 4 LSB をカットすることです。
または別の方法で、もう少し正確に:
24 ビット RGB カラー コンポーネント値の範囲は 0 ~ 255 (つまり、RGB(255,255,0)) などです。HTML-hex も 24 ビットです。12 ビット RGB カラー コンポーネントの値は、0 ~ 15 の範囲です。
24 ビットの RGB カラーを 12 ビットに変換し、整数部分だけを保持するには、24 ビットの R、G、および B コンポーネントごとに次のようにします。
downSizedColor = colToDownSize * maxOfRangeToDownConvertTo / maxOfRangeToDownConvertFrom
maxOfRangeToDownConvertTo = 15 (12 ビットの最大範囲)
maxOfRangeToDownConvertFrom = 255 (24 ビットの最大範囲)
RGB(200, 143, 96) の例 最初の RGB コンポーネント (200) は downSized RGB-color 11 *11=200*15 / 255* になります。
12 ビットから 24 ビットに戻す
upSizedColor = maxOfRangeToDownConvertFrom / maxOfRangeToDownConvertTo * colToUpSize
例 187=255/15*11
この作業を行うための非常に優れたレトロ指向の説明がここと ここにあり、さらにオンラインのカラービット深度リデューサーを入手しました。強くお勧めします!
注: EABにもいくつかの情報があります。助けてくれてありがとう!管理者の皆様、私はこれを正解として設定しましたが、フローリスが私を正しい道に導いてくれたので、遠慮なくポイントを与えてください。