Skip to content

Latest commit

 

History

History
203 lines (160 loc) · 6.88 KB

blend.md

File metadata and controls

203 lines (160 loc) · 6.88 KB

ブレンド

ブレンドはBGやスプライトから2つのグループを選択し、一定の割合で色を混ぜて表示するアルファブレンドと、白か黒を一定の割合で混ぜて表示するフェードがあります

アルファブレンド

ロックマンゼロのオープニングムービーでゴーレムのレーザー(緑)とレジスタンスのオイル(赤)部分の重なりにアルファブレンドが使用されています。

白フェード

ロックマンエグゼ2の起動時、真っ白な画面からカプコンロゴが徐々にフェードインしてくる際に白フェードが使用されています。

黒フェード

ロックマンエグゼ2のカプコンロゴ表示後、カプコンロゴが徐々にフェードアウトする際に黒フェードが使用されています。

0x0400_0050 - BLDCNT - ブレンド制御レジスタ (R/W)

bit 内容
0 BG0を1stターゲットに
1 BG1を1stターゲットに
2 BG2を1stターゲットに
3 BG3を1stターゲットに
4 OBJを1stターゲットに (Top-most OBJ pixel)
5 BD(Backdrop)を1stターゲットに
6-7 特殊効果の種類 (後述)
8 BG0を2ndターゲットに
9 BG1を2ndターゲットに
10 BG2を2ndターゲットに
11 BG3を2ndターゲットに
12 OBJを2ndターゲットに (Top-most OBJ pixel)
13 BD(Backdrop)を2ndターゲットに
14-15 未使用
Addr 7-6 5 4 3 2 1 0
0x0400_0050 特殊効果 BD/1st OBJ/1st BG3/1st BG2/1st BG1/1st BG0/1st
0x0400_0051 不使用(0) BD/2nd OBJ/2nd BG3/2nd BG2/2nd BG1/2nd BG0/2nd

第1ターゲットと第2ターゲットに、どのBGやスプライトを割り当てるかの設定です。両方のグループに同じものを割り当てることもできます。

BG0-BG3はその番号のBG、OBJはスプライトすべて、BDは背景(詳細は不明)です。

フェードモードのときは第1ターゲットに設定したものだけが対象になります。

スプライトはスプライト同士の色の混ぜ合わせは行われないようです。

すべてのレイヤーが第1ターゲットと第2ターゲットの両方を選択することも可能で、 その場合は最上位の画素が第1ターゲットとなり、 次の下位の画素が第2ターゲットとなります。

特殊効果(bit6-7)

  • 0: 特殊効果なし
  • 1: 2つのグループの色を混ぜ合わせるアルファブレンド
  • 2: 白フェード。グループと白色を一定の割合で混ぜます
  • 3: 黒フェード。グループと黒色を一定の割合で混ぜます

0x0400_0052 - BLDALPHA - アルファブレンド (R/W)

bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
内容 不使用 EVB 不使用 EVA
EVA: 第1ターゲット色割合 (0..16 = 0/16..16/16, 17..31=16/16)
EVB: 第2ターゲット色割合 (0..16 = 0/16..16/16, 17..31=16/16)

各ピクセルのRGBは次のように計算されます。

R = min(31, R1*EVA + R2*EVB)
G = min(31, G1*EVA + G2*EVB)
B = min(31, B1*EVA + B2*EVB)

0x0400_0054 - BLDY - フェード (W)

bit 31-5 4-0
内容 不使用 EVY
EVY: フェード率 (0..16 = 0/16..16/16, 17..31=16/16)

各ピクセルのRGBは次のように計算されます。

白フェード

BLDCNTのbit6-7が2(白フェード)のときは次のようになります。

R = R1 + (31-R1)*EVY
G = G1 + (31-G1)*EVY
B = B1 + (31-B1)*EVY

どれも255に近づいているので明るくなり白に近づいています。

黒フェード

BLDCNTのbit6-7が3(黒フェード)のときは次のようになります。

R = R1 - (R1)*EVY
G = G1 - (G1)*EVY
B = B1 - (B1)*EVY

半透明のOBJ

OAMで半透明と定義されているOBJは、常に第1ターゲットとして選択され、常にアルファブレンドが適用されます。これはBLDCNT.4とBLDCNT.6-7に関係なく適用されます。

BLDCNTレジスタは、OBJ(または 他のBG/BDレイヤー)に対してフェードを行うために使用することもできます。

しかし、半透明のOBJピクセルが第2ターゲットのピクセルと重なっている場合、半透明なOBJに対するアルファブレンドが優先され、(第1ターゲットも第2ターゲットも)フェードは行われません。

補足

アルファブレンドは、OBJ-to-BGやBG-to-OBJには使用できますが、OBJ-to-OBJには使用できません。