English
HARDWARE ManualVDP1ユーザーズマニュアル
戻る進む
VDP1ユーザーズマニュアル/第6章 コマンドテーブル

■色演算

色演算ビット: color calculation bit、ビット2〜0
 グーローシェーディング、シャドウ、半輝度、半透明の色演算を指定します。
 各ビットのそれぞれの機能は次のとおりです。

ビット
機能
2
グーローシェーディング有効ビット
1
元絵1/2有効ビット
0
下地1/2有効ビット

 描画されるスプライトまたはノンテクスチャのピクセルデータと、既にフレームバッファに描画されたピクセルデータとに色演算を行います。
 リプレースとシャドウの色演算以外では、元絵のカラーコードはRGBコードのときのみ有効です。カラーバンクコードの場合も色演算を実行できますが、結果は保証されません。
 スプライトの場合は、カラーモードがモード1(ルックアップテーブルモード)でカラールックアップテーブルのカラーコードがRGBコードのとき、またはモード5(RGBモード)のとき色演算ができます。ノンテクスチャのときはノンテクスチャカラーがRGBコードのとき色演算ができます。
 元絵のあるパーツの色演算では、SPD=0のとき透明コード、ECD=0のときエンドコードが有効で、それらのピクセルに対しては色演算は行われません。
 ポリゴン、ポリライン、ラインに対する色演算では、ノンテクスチャカラーがRGBコードのときのみ色演算は有効となります。
 8bit/pixel(ハイレゾまたは回転8)のとき色演算はできません。

色演算
 色演算には、リプレース、シャドウ、半輝度、半透明、グーローシェーディングと、2つを組み合わせたグーローシェーディング半輝度、グーローシェーディング半透明とがあります。これらの指定方法は次のとおりです。
色 演 算
ビット
下地
MSB
元絵
下地
色演算の種類
使用可能なモード
2
1
0
元絵
下地
00010
リプレース(replace)
制限なし
制限なし
001001
書き換えない
制限なし
制限なし
1
0*1
1/2
シャドウ(shadow)
RGB
010
1/2
0
半輝度(half luminance)
RGB
制限なし
011010
リプレース(replace)
RGB
制限なし
1
1/2
1/2
半透明(half translucent)
RGB
100
グーロー
0
グーローシェーディング
RGB
制限なし
101
設定禁止(設定しないでください)
110
グーロー1/2
0
グーローシェーディング+半輝度*2
RGB
制限なし
1
1
1
0
グーロー
0
グーローシェーディング
RGB
制限なし
1
グーロー1/2
1/2
グーローシェーディング+半透明*3
RGB
[注]− : Don'tcare
   元絵: スプライトまたはノンテクスチャで描画対象ピクセルデータ
   下地: 既にフレームバッファに描画されているピクセルデータ
   *1: 元絵(透明ピクセル・エンドコード)の参照は行います。
   *2: グーロー演算後、飽和処理を行ったデータを1/2にします。
   *3: グーロー演算後、飽和処理を行ったデータに下地を加算し、1/2にします。

リプレース(色演算モード=0)
 リプレースは、色演算を行いません。描画対象パーツがそのままフレームバッファに書き込まれます。
 既にフレームバッファに書き込まれているピクセルデータは影響しません。
 8bit/pixelのときは色演算はできませんので、リプレースを指定してください。

シャドウ(色演算モード=1)
 すでにフレームバッファに描かれたピクセルデータのMSBによって処理が異なります。フレームバッファのMSBが0の場合、リプレースを含めて色演算の処理は行われず、フレームバッファはそのままです。
 フレームバッファのMSBが1のときシャドウが行われます。
 シャドウでは、既にフレームバッファに書き込まれているピクセルデータが色演算の対象となります。スプライトの場合はキャラクタパターンとその描画座標から、ノンテクスチャの場合は描画座標から、それぞれフレームバッファ上の対象領域が求められます。パーツが描画される対象領域にあり、既にフレームバッファに書き込まれているピクセルデータの輝度が、R、G、B、それぞれ1/2になります。
 シャドウは下地のMSBは変更しません。透明であった領域は透明のままです。

 シャドウはフレームバッファのピクセルの輝度を1/2にします。輝度を1/4にしたいときは2回同じコマンドテーブルをVRAM上に設定します。1/8にしたいときは3回設定します。
 シャドウでは、元絵のピクセルデータの書き込み座標から読み出したピクセルデータに演算をするので、描画速度が落ちますので注意してください。色演算をしない場合の6倍の時間がかかります。

半輝度(色演算モード=2)
 半輝度は、描画されるパーツのピクセルデータの輝度をR、G、B、それぞれ1/2にします。
 既にフレームバッファに書き込まれているピクセルデータは影響しません。

半透明(色演算モード=3)
 フレームバッファのMSBによって処理が異なります。フレームバッファのMSBが0の場合、リプレースとなります。
 フレームバッファのMSBが1の場合半透明となります。
 半透明では、元絵と下地のデータの和の1/2(平均)がフレームバッファに書き込まれます。
 半透明の色演算の場合、元絵のピクセルデータと書き込み座標から読み出したピクセルデータとを色演算します。この場合描画速度が落ちるので注意してください。色演算をしない場合の6倍の時間がかかります。

グーローシェーディング(色演算モード=4)
 グーローシェーディングは、グーローシェーディングテーブルに設定されたRGBコードでグーローシェーディング処理をします。
 既にフレームバッファに書き込まれているピクセルデータは影響しません。
 グーローシェーディングテーブルアドレスはCMDGRDA(コマンドテーブル先頭アドレス+1CH)で指定します。

グーローシェーディング半輝度(色演算モード=6)
 グーローシェーディング半輝度は、グーローシェーディングと半輝度とを組み合わせた処理をします。パーツにグーローシェーディング処理をした後で半輝度処理をします。

グーローシェーディング半透明(色演算モード=7)
 フレームバッファのMSBによって処理が異なります。フレームバッファのMSBが0の場合、グーローシェーディングとなります。
 フレームバッファのMSBが1の場合、グーローシェーディング半透明となります。

 グーローシェーディング半透明は、グーローシェーディングと半透明とを組み合わせた処理をします。パーツにグーローシェーディング処理をした後で半透明処理をします。

元絵
 元絵のあるパーツ(スプライト)では、シャドウ以外の色演算ではRGBモード(カラーモード1でルックアップテーブルがRGBコードと、カラーモード5)のときのみ有効です。RGBモードでないとき(カラーバンクモードのキャラクタのとき)は、結果が保証されません。
 元絵のあるパーツの色演算では、SPD=0のとき透明コードが有効になり、ECD=0のときエンドコードが有効になるので、そのピクセルに対しては色演算は行われません。
 RGBモード(カラーモード5)かつSPD=1でシャドウ以外の色演算を行った場合、元絵の透明カラーコード(0000H)のピクセルの結果は保証されません。黒とみなして色演算を行います。
 RGBモード(カラーモード5)かつECD=1でシャドウ以外の色演算を行った場合、元絵のエンドコード(7FFFH)のピクセルの結果は保証されません。白とみなして色演算を行います。
 ポリゴン、ポリライン、ラインに対するシャドウ以外の色演算では、ノンテクスチャカラーがRGBコードのときのみ有効になります。

図6.15 色演算の例
┏ ━ ━ ━ ━ ┓ ┏━━━━━━━━━┓
            ┃  MSB=0  ┃
┃ ┌─────┐ ┃ ┃ (パレット等) ┃
  │     │   ┃         ┃
┃ │ 元 絵 │ ┃ ┠───下─地───┨
  │     │   ┃         ┃
┃ └─────┘ ┃ ┃  MSB=1  ┃
            ┃  (RGB等) ┃
┗ ━ ━ ━ ━ ┛ ┗━━━━━━━━━┛


 色演算モード=0    色演算モード=1    色演算モード=2    色演算モード=3  
┏━━━━━━━━━┓ ┏━━━━━━━━━┓ ┏━━━━━━━━━┓ ┏━━━━━━━━━┓
┃         ┃ ┃         ┃ ┃         ┃ ┃         ┃
┃ ┌─────┐ ┃ ┃         ┃ ┃ ┌─────┐ ┃ ┃ ┌─────┐ ┃
┃ │     │ ┃ ┃         ┃ ┃ │     │ ┃ ┃ │リプレース│ ┃
┠─┤リプレース├─┨ ┠─┬─────┬─┨ ┠─┤ 半輝度 ├─┨ ┠─┼─────┼─┨
┃ │     │ ┃ ┃ │シャドウ │ ┃ ┃ │     │ ┃ ┃ │ 半透明 │ ┃
┃ └─────┘ ┃ ┃ └─────┘ ┃ ┃ └─────┘ ┃ ┃ └─────┘ ┃
┃         ┃ ┃         ┃ ┃         ┃ ┃         ┃
┗━━━━━━━━━┛ ┗━━━━━━━━━┛ ┗━━━━━━━━━┛ ┗━━━━━━━━━┛


 色演算モード=4    色演算モード=5    色演算モード=6    色演算モード=7  
┏━━━━━━━━━┓ ┏ ━ ━ ━ ━ ┓ ┏━━━━━━━━━┓ ┏━━━━━━━━━┓
┃         ┃             ┃         ┃ ┃         ┃
┃ ┌─────┐ ┃ ┃         ┃ ┃ ┌─────┐ ┃ ┃ ┌─────┐ ┃
┃ │     │ ┃             ┃ │グーロー │ ┃ ┃ │グーロー │ ┃
┠─┤ グーロ ├─┨ ┃ 設 定 禁 止 ┃ ┠─┤     ├─┨ ┠─┼─────┼─┨
┃ │     │ ┃             ┃ │ +半輝度│ ┃ ┃ │グ+半透明│ ┃
┃ └─────┘ ┃ ┃         ┃ ┃ └─────┘ ┃ ┃ └─────┘ ┃
┃         ┃             ┃         ┃ ┃         ┃
┗━━━━━━━━━┛ ┗ ━ ━ ━ ━ ┛ ┗━━━━━━━━━┛ ┗━━━━━━━━━┛

戻る進む
HARDWARE ManualVDP1ユーザーズマニュアル
Copyright SEGA ENTERPRISES, LTD., 1997