◆制作の動機
tiny XEVIOUS for 700に続いて制作したオリジナルゲームが、この「SPACE BLUSTER FZ」です。オリジナルとは言っても、セガのファンタジーゾーンのような、背景が奇麗なゲームが作りたいなあ、という不純な(笑)動機によるものです。その証拠?はキャラクタがファンタジーゾーンに似ているというのもありますし、タイトル画面に隠し文字で「FANTASY ZONE」と書いてあります。
動機は不純でしたが、作るとなると結構問題がでてきました。
◆ツールがない
MZ-700というパソコンはグラフィックができないため、「お絵描きツール」のようなものが、ありませんでした。あっても今のように簡単にツールを入手できたりする時代ではなくツールは自分で作るか、雑誌に掲載されているものを入力するのが普通でした。そもそもグラフィック能力がないマシンでグラフィックツールを作る人はいません(笑)。
仕方がないのでツールを作って・・・といきたい所ですが、実は「ツール」たるものを知りませんでした(無知って偉大だ^^;)。このツールがないという状況はゼビウスの頃までさかのぼります。ゼビウスは広大なマップを必要とするのですが、一体ツールもなくどうやって描いていたのか不思議に思う人がいるでしょう(皆、不思議かも・・・)。まず、画面の内容をそっくりメモリに転送するマシン語プログラムを作ります。例えば、
21 00 D0 11 00 B0 01 E8 03 ED B0 C3 AD 00
という具合にプログラムを組んで適当なメモリに入れておきます。リロケータブルなので、どこのアドレスにおいても動作します。このプログラムを用意した後、画面に文字(キャラグラといいます。キャラグラ=キャラクターグラフィックス)を描きます。描き終わったらこのプログラムを実行させてやればマップの一部ができあがりです。
と、まあこのようにして作っていたわけです。
◆ツールを作ろう
SB/FZの最初の面も、こんな感じで作っていましたが、途中でもっと楽にできないか、と思い簡単なツールを作る事にしました。本当に簡単なツールで、できる事といったら、カーソルの移動と色付け程度です。それでも、今までよりだいぶ楽になったので、結構凝った画面が作成できるようになりました。ここらへんもノウハウかなと思いますが、この初期の頃の画面と末期の頃では、雲泥の差があります。
なぜ、ゲーム自体よりも見栄え(?)にこだわるのか、といったら
◆気合いをこめて、物まねだ(笑)
元がセガのファンタジーゾーンだけに、出てくる親玉も、そのままというほどいただいてきました。まあ、どこまで描けるか、といった実験的なものという意味あいもあったと思います。
ゼビウスの移植で培ったノウハウは、いくらか役にたちましたが、このゲームではゼビウスの時にやらなかった処理を、いろいろとやっています。私が作ったゲームの中でゼビウスだけが特殊なパターン/プログラムで作られていて、それ以外は全てこのSPACE BLUSTER FZが基礎となっています。これ以後のゲームは、ここで制作したプログラムを流用/改良する形で作られました。
◆当時の自分の実力の限界
このゲームは当時の私の実力の限界作品でした。作り終わった時、「ここまでやれば、もうどうしようもない」と思ってました(笑)。が、それもつかのま、次の作品を作り始めると非常に、なさけないというかプログラム的にも初心者レベルでどうしようもないものだというようになってしまいました。
最初は移植から始まりましたが、ここでオリジナルの道へしばらく走ります。スペースハリアー移植への道のりは、まだまだ始まったばかりでした。
このSPACE BLUSTER FZの後、SPACE BLUSTER SGの制作にとりかかりました。
これは、またの機会に書くとしましょう。
◆プログラム的な事、あれこれ
このゲーム、巨大な敵がでてくるのですが、画面からはみだす処理、クリッピングというのですが、信じられない事をしてクリッピングしていました。普通ならば描く前に座標を調べてクリッピングするなりするのですが、このゲームの表示ルーチンは以下のようになっていました。
(1)X、Y座標を調べて画面外ならば表示しない
(2)X、Y座標から画面のアドレスを計算する
(3)1文字分描く
これを1文字づつ、ご丁寧にやっていました。それでも十分な速度で動いてしまうのはMZ-700さまさま(笑)といった所です。
ゼビウスの時から導入された「仮想画面」をこのゲームでも採用しました。Mac, Windowsなどで「オフスクリーン」と呼ばれるものと同等です。ゼビウスは「地形」+「敵スプライト」の2画面を「合成用仮想画面」に転送し、そこに自機等を描き、全部描き終わった所で実際の画面(実画面)に転送していました。SB/FZでは一枚の仮想画面だけを用意し、そこに地形から何から全て描くようにしました。ゼビウスの時の「敵スプライト」用の仮想画面がなくなったため、合成する必要がなくなりゲームの速度が向上しました。そのかわりきちんと当たり判定を行うようにプログラムを作り直しましたが。妙なプログラムでも動けばいいというのが私の持論ですので、とにかくゲームができあがったのでいいんです、これで(笑)。
あと、このゲームは画面の一部をアニメーションさせています。MZ-700の数少ない文字を使ってやるわけですから、当然できる事は限られてしまいます。滝や雲を流す、夕日を点滅させたり沈ませたり、とりあえず思いつく事はやりました。が、末期のゲームからすると、たいした処理ではなくなってしまいました。