PC−8001が復活し、本格的にプログラミング(=ゲーム作り) を再開してからそろそろ半年以上が経過していた。
はじめは様子を見ながらのおっかなびっくりという感じでやっていたが、 この頃はだいぶプログラミングにも馴れたというか、勘を取り戻しつつあった。
アイデアと技術。
これは言うまでもなくゲームの両輪といえるが、遊ぶほうだけではなく 趣味でゲームを作る側にも、この両者に対する欲望は常にあるといえる。 ここ最近「アイデア作品」ばかりを作っていたため、 「技術」に対する渇望が無意識のうちではあるが強まっていたように思う。
ゲームプレイヤー、そしてしばしばプログラマーにとっても、 「技術」とはすなわち「これまでできないと思っていたことが、できるようになる」 ことである。
ある日の体育の時間だったか、 ふとしたことから、「PC−8001でゼビウスは可能か?」について 考えをめぐらせていた。
もちろん、PC−8001のグラフィックでゼビウスの画像を再現することは できないが、ゲーム性の部分について考えたとき、ゼビウスが、 「背景がスクロールし、普通のシューティングゲームと同様の空中物の処理をし、 それに地上物の処理を加え」ることによって実現できるということに気付いた。 そして、背景については、まともに描くのではなく、簡易的なグラフィックを それらしく用いることでメモリ使用量は抑えられるし、それでも スクロールしていることはわかる。試しに、 BASICを使って道と森をランダムに表示させるプログラムを 作ってみる。すると、それらしい画面がスクロールし、 なんとなくゼビウスっぽい雰囲気が出た。
すなわち、「PC−8001でゼビウス(っぽいゲーム)は実現可能」! という予測が立った。
これは驚きである。ゼビウスといえば「スクロールを駆使した高度なゲーム」という
イメージが強かったため、そしてPC−8001といえば「超低性能のレトロマシン」
というイメージが強かったため、「PC−8001」と「ゼビウス」が
結びつくことはまず(私には)想像できなかった。
しかし、できそうだ。その日から、大型企画「NEVIOUS」の作成に
明け暮れる日々(ちょっと誇張)が続くことになる。
GOLD ATTACK以来の大型プログラムということで、 (私にしては)綿密な企画書・仕様書・フローチャート作りに まずとりかかった。それまでに聞きかじったゼビウスの仕様 (敵の登場テーブルを用意し、ある地上物を破壊するとそのテーブルが 少し前に戻るなど。なお、真偽については不明)なども盛り込み、 敵のアルゴリズムやワークエリア使用マップ、出現確率なども詳細に決めた。 スクロールと仮想VRAM、マップ格納のデータテーブルも詰め、 また、敵弾を16方向に飛ばすようなアルゴリズムも考えた。 フローチャートも、ゼネラルフローチャートのみならず、各敵ごとに アルゴリズムを詳細に記述したフローチャートも制作した。 これらをすべて書き終えただけでも、 「やれやれ、一仕事終わった」 みたいな気分になったものだ。
そしていよいよ実際のコーディングに入る。メインはもちろんマシン語である。 &HB000〜&HCFFFをプログラムエリア、&HD000〜&HDFFFを ワークエリア、&E000〜&EFFFを仮想VRAMとし、 ワークエリアのマッピングも綿密に行い、コードを書き始める。 手始めに乱数発生ルーチン、そして各ルーチンで使用するVRAM算出SUB、 さらに音出しルーチンと音楽演奏ルーチンときて、いよいよ 核心、空中物表示SUB、スクロール、・・・と続いていく。
いつ終わるとも知れないコードの山を、コツコツと積み上げていく。 「PC−8001でゼビウス(もどき)を実現したい!」 その一心で。 実際、いつ破綻するかもわからない、実現可能性もよくわからない企画であったが、 「もしできたら・・・」それはとてつもなく嬉しいであろう。それを夢見て、 ただひたすらコーディングしていた(当時もやはり紙に書いていた。)
ゼビウスのようなゲームを作った経験はまったくなく、 作ったものといえば 「ピラミッド」や 「GOLD ATTACK」といった、 シューティングと呼ぶのが憚られるような内容のもの しかなかったため、 多数の困難が予想され、本当にいつ頓挫してもおかしくないようなプログラミングだった。 が、事前にフローチャートを書いていたため、意外にスムースに事は進んだ。 とにかく根気、根気、根気で少しずつ組み上げていった。
気付いたときには、専用に用意した大学ノート 一冊を使い切っていた。 BASIC部分に入ったのは二冊めも10ページ以上使ってからだった。 実に50ページを軽く超すマシン語を書いたことになる。 BASIC部分はいつもの如く極めて楽な部分だが、それでも 今回はメインがマシン語なので、前処理・・・データの設定、受け渡しには 気を使った。
ワークエリアなど、細かい仕様。
ゼネラルフローチャートなど。