東方老桜夢の技術解説 パレットについて

ファミコンのソフト開発で、真っ先に枯渇するリソースは何かわかりますか？

答えは、パレットです。

ご存じの通り、ファミコンには、スプライト用に４パレット、 ＢＧ用に４パレットが用意されています。
パレットの数は潤沢にあるとは言いにくい仕様のため、 ゲームデザインレベルでパレットの割り当てを考える必要があります。

スプライトのパレット

東方老桜夢では、自機、敵、弾丸をスプライトで表示します。

自機に１パレット、敵(ボス)に１パレットを割り当てると、残り２パレット。
弾丸は、有彩色＋白で表示するので、２パレットでは４色が常時表示できる色になります。

もう１色欲しい‥‥

自機に使用する色を見ると、有彩色＋白が含まれているのに気づきました。

自機のパレットも使えば、５色の弾丸が表示できます。

palette1.png

(０番が自機表示のパレット　弾丸の有彩色は、赤、黄、青、緑、桃)

選択した自機毎に弾丸用のパレットの色も変える仕様にすることで、 常時、特定の５色の有彩色と白ができるようになりました。

いつでも特定の有彩色が使えるのであれば、弾丸だけでなく、 敵キャラの表示にも利用できます。
これにより、ボスキャラを４色以上で表現できるようになりました。
特にプリズムリバー三姉妹のように、 複数キャラを同時に出現させるのに必須の仕様となりました。

palette2.png

(リリーホワイトの手と顔の色は白と黄の点滅で表示している。 リリカの茶色は赤と黒の点滅で表示している。)

ＢＧのパレット

ＢＧのパレットは、スコアなどの枠部分に１パレット割り当てて、 残りの３パレットをゲーム背景の表示用に割り当てるという、 比較的悩むこともなく割り当てが決まりました。

しかし、１点だけ課題があり工夫が必要でした。

５面ボス戦が終わり、敵キャラと会話するシーンですが、 どうしても原作に準拠したいため、プリズムリバー三姉妹を 全員並べて表示しています。
会話中のキャラの表示は基本スプライトを使っているのですが、 スプライトの横並び制限のため、ここだけは特別処理で ＢＧを併用して表示しています。

この時、どう計算してもＢＧでのキャラ表示に２パレット必要になりました。

スコアなどの枠表示に１パレット、キャラ表示に２パレット、 残り１パレットでゲームの背景を描かなければなりません。

散々悩んだ結果、日が暮れたことにすれば１パレットで背景が描けると、 閃きました。

palette3.png

(左:通常、右:ＢＧのみ表示)

であれば、５面の道中も夕方で徐々に暗くなっていく演出をすれば、 雲を白く描く必要もなくなり一石二鳥です。 (背景が白いと弾丸の視認性が悪くなる)

palette4.png

(夕方ということにして雲を色付きで描画)

あと、この決定により、１面：朝、２面：午前、３面：正午、４面：午後、 ５面：夕方、６面：夜、という後付け設定も加わることになりました。

パレットの割り当ては、ゲームデザインにも影響するというお話でした。