SFXVI開発講座グラフィック編(平成6年師走号掲載)

第二回

 さて今回は、前回書けなかった、セルを描く上での基本事項などの説明をしたいと思います。 はっきり言ってたいした内容ではないので読み飛ばしていただいても結構です。

 SFXVIではキャラクタを表示するために、スプライトを何枚か組み合わせたDSPと呼ばれるものを用いています。 よって、キャラクタの表示には、X680x0のスプライト機能の制約をうけます。

 まず、スプライトとは何かということですが、日本語に直せば妖精といった意味になります。 この言葉が示す通り、画面上を自由に動きまわれるグラフィックデータのことです。

 スプライトはハードウェアの機能で実現されるため、制限や限界などがありますが、 その分高速です。MPU速度では取り残された感のあるX680x0でも、 アクション系ゲームではかなりのものがつくれるのはスプライトのおかげです。 SFXVIがあるのもスプライトがあればこそというものです。

 スプライト表示の原理ですが、スプライトに表示するためのグラフィックデータはPCG領域というところに用意します。 用意したら、あとは表示したいグラフィックの番号を指定するだけで、画面上の任意の位置にスプライトを表示出来ます。
 表示はすべてハードウェアの機能でおこなわれるため非常に高速です。パターンの垂直水平反転も簡単です。 X680x0では出来ませんが、回転拡大縮小も可能なマシンもあります。 (反転機能を回転機能と称しているマシンもありますから注意。 平面のポリゴンにテクスチャマッピングを施して疑似的にスプライトとして扱っているマシンもあります)

 表示中のスプライトが使用しているPCGを書き換えると、 同時に表示中スプライトのグラフィックも書き変わります。
 この辺がスプライトならではの機能です。同じPCG番号を使用しているスプライト全てが書き変わるのです。 PCG領域が足りない時や、スプライトアニメーションの時に有効です。


 スプライトはパレットについてもPCGパターンと同様な扱いをすることが出来ます。 ファミコン(TMは特に省く)のゲームで形は一緒で色だけ違うキャラクタというのは、 よく見かけると思います。これはパレットブロックを換えているからです。
 パレットブロックは普通、複数個使用出来、それぞれを自由にスプライトに使うことが出来ます。
 PCGパターンに使える色数は普通限られているので、それを補うためにもパレットブロックは重要です。


 また、BG(バックグラウンド)というものもあります。これはスプライトとほぼ同等の機能をもっています。 スプライトのように1ドット単位で自由な座標に表示は出来ませんが、 名前の通り、背景表示に向いています。タイルを敷き詰めるように、パターンを表示することが出来るのです。 敷き詰めたパターンは独立して移動させることは出来ませんが、敷き詰めた面全体を移動させて表示することは出来ます。

 激しい動きはしないが、常に表示させておきたいものや、巨大なものを表示する時などに使われます。

 表示出来るパターンはスプライトと共用しています。


 以上を踏まえて、X680x0スプライトスペックを挙げておきます。

スプライト表示能力
スプライトサイズ
表示可能数
表示可能色数
PCG定義可能数
その他
16*16ドット
128(個/画面),32(個/ライン)
65536色中16色,パレットブロック16個
256個
PCG垂直,水平反転表示機能
BG表示能力
BGサイズ
表示可能数
表示可能色数
PCG定義可能数
その他
8*8ドット,16*16ドット(画面モードによる)
64*64個*2画面
65536色中16色,パレットブロック16個
256個
PCG垂直,水平反転表示機能

 さて、続いてSFXVIの場合について説明していきます。

 前に述べた通りSFXVIではスプライトをいくつか組み合わせたものをDSP、 DSPに当たり判定などの情報を持たせたものをセルと呼びます。

 DSPは形が長方形になるようにスプライトを並べなくてはなりません(図1)。 この場合空白のスプライトが出来てしまうこともありますが、 ASP化の際にこれを考慮してデータ圧縮が行なわれるのでさほど気にする必要はありません。 数ドットしか点がうたれていないスプライトは、目立たなければ空白にしてしまうのもいいでしょう。
図1
図1

 現行のASPでは出来ませんが、圧縮率をあげるなら図2のようにスプライト配置を最適化するべきです。 ASP2モードでも容量不足が深刻化しているようなので、いつかは採用してもらいたいところです。

 もっとも、配置の最適化を自動で行なうのは難しそうなので、 データ制作側にしわ寄せがいくのは目に見えてますけど。
図2
図2

 スプライトには枚数制限があります。スプライトの使用数は64以下でなければなりません。 また、キャラクタのちらつきを防ぐためには32以下にする必要があります。


 パレットブロックは全体を通してひとつしか使えません。 つまりキャラクタは16色(透明色を除けば15色)以内で描かなければいけません。 DSPを構成するスプライトひとつひとつに違うパレットブロックが使えないのはもちろん、 DSPごとに違うパレットブロックを用いることも出来ません。注意しましょう。

 キャラクタビルダでエディット出来る「燃焼時のパレット」ですが、 これは自分ではなくて相手が燃える時に使われるパレットです。注意しましょう。
 ちょっと変な気がするかもしれませんが、 相手が何色に燃えるかというのは自分の出した技で決まりますからね。 自分の用意した色で自分が燃えるのはおかしいのです。


 内容が薄いって?いや、グラフィック編の導入部分としてはこんなものでしょう。 別にカットファイル描きに熱中していたからではないんですよ。

 ところで、私は左利きなんですが、マウスは右手じゃないと使えないんです。 おかげで、マウスで絵を描くのは苦手なんですよね。 苦手というか、異様に時間が掛かってしまうんですけど。

 何が言いたいかというと、CG、特にドット絵は時間さえかければ必ずいいものが 出来るということです。何度でも、気のすむまで描き直すことが出来ますからね。

 そんなわけで、次回からは本格的なドット絵の描き方講座になるでしょう。 この分だと、次も私が書くことになりそうですけど・・・いいんですか?

ひとつ前にもどるトップページにもどる