アルフォス高速化技術の解説

アルフォスはプレーンをうまく使った

アルフォスが具体的にどのような高速化技術を使っていたのか、前回はまりコンピュータを知らない人に対して参考文献の表現を元にして書きましたが、実際にどのようなテクニックだったのかを知りたい方もいるでしょう。うまく説明しきれないかもしれませんが、図を使って説明したいと思います。

「プレーングラフィック」「プレーンテキスト」などという言葉を聞いたことがあるかもしれませんが、アルフォスが利用したのは正にそれらの「プレーン」を利用したものです。私はX68kを使っていたのでプレーンテキストのほうでよくお世話になりました。

「プレーン」はR、G、Bの各色のデータごとに設けられたビットマップ領域のことです。昨今のグラフィックスではRGBのデータを同時に書き込みますが、プレーングラフィックは色別にデータを保持してるため、別々に書き込むことができます。*1そのようにして各プレーンへ描き込まれたのグラフィックはハードウェアが合成してモニタへ出力してくれます。例えば、赤のプレーンと緑のプレーンをそれぞれ塗りつぶしておくと、実際のモニタに表示されるのは黄色に塗りつぶされた画面となるわけです。

プレーンの合成はハードウェア側で勝手に行ってしまうので、そのままプログラムを組んでいってしまうと色がおかしな状態で表示されてしまいます。例えば、赤のプレーンに空中物、緑のプレーンに地上物を描いた場合、両者が重ね合わさっている部分だけ黄色で表示されてしまうという状態になります。そこで森田氏は「パレットチェンジ」を併用しているのです。

パレットチェンジを使って黄色を描画すべきところを赤で描画するように変更すると、上記の例で空中物と地上物とが重なり、黄色で表示されていた箇所が赤で表示されることになります。結果として空中物が優先的に表示されているように見える状態になるわけです。ただ、アルフォスでは空中物に3色利用しているということですから、空中物のキャラクタ同士が重なると色がおかしく表示されると推測できます。*2

もうひとつのミソが半ば強引に「透過処理」を解決させた点です。グラフィックスを使って独自に擬似スプライト機能をプログラムしたことがある方は、ピクセルデータを処理するのは結構、手間暇掛るものだということを良く理解していると思います。透過色を抜くために余計な演算もしなければなりませんが、プレーンの合成を行う際のビット演算の性質を使ってこれをうまく回避したわけです。そして、この処理を行ってくれるのがハードウェアですから、ソフトウェアで同じようなことを行うよりも数段速いことになります。

森田氏はこれらの技術を併せてビットデータの重みをキャラクタの描画優先順位に置き換えるテクニックとして編み出しました。ただ、このテクニックの欠点は利用できる色数が減ってしまい、拙いグラフィックになってしまう*3ことです。しかし、現代より「グラフィック<ゲーム性」という色濃かった時代ということもあり、市場に受け入れられたと考えることができそうです。

*1:もちろん同時に描画するプレーンを指定ことも可能です。X68kのプレーンテキストが正にそうです。

*2:何分にも実機を見たことがないので、ご容赦。

*3:逆に言えば、データがコンパクトになり少ない容量でたくさんのキャラクタを用意できる。