「・・・終わった。」
BASIC部分を組み終えたときの感想だった。それは、 「やっと終わった」という安堵感もさることながら、 「本当に終わった」という半信半疑な気分と達成感の入り混じった気分でもあった。 「本当に終わるのか?」 と疑問に思いながらのスタートだったが、 こうして一応すべてのプログラムを書いた。バグのことを考えなければ、 もうこれ以上のプログラムを書かずに、NEVIOUSは動く筈である。
だが、もちろん安心はしていられない。これから、このプログラムを実際に 8001上で実現するという、最も重要な仕事が残っているのである。
まずは、ニーモニックをマシン語に変換する・・・そう、ハンドアセンブルの作業は まだであった。どのルーチンをRAMのどこにおくか?また、 各ルーチンを組むときに判明した必要なワークエリアをどう配置するか? その整理を行ったあと、いよいよ各ルーチンをマシン語コードに置き換えていく。 ニーモニックを一行一行、コード表を見て、適切な数字に置き換えていく。 さながら工場のロボットのように、何も考えずにただひたすら、 地道にコードを書いていく。昔からこの手の作業は 結構好きな方だが、 やはり疲れる。特に相対ジャンプの計算は、いつものことながら神経を使う。 果てしない作業と思われたが、やがてゴールは見えた。・・・遂に、 すべてのプログラムが完成したのである。
プログラムが完成すれば、あとは打ち込むだけだ。だが、この膨大なプログラムは、 かつて打ち込んだI/Oや mkII FAN Booksのゲームにも匹敵する量であり、 気軽には打ち込めない。しかし、ある日の日曜、ついに打ち込みを開始した。
朝に始めて、昼にはマシン語部分を打ち込み終わっていただろうか・・・? とにかく、その日のうちには、BASIC部分も含めて、すべての入力を 終えることができたと記憶している。 打ち込んだ内容を、とりあえずSAVEする。 もう他にやることはない。作るべきルーチンはすべて作り、 そのすべてを打ち終えた。セーブも行った。あとは・・・実行するだけだ。
エリアデータはまだできていなかったが、とりあえず仮データを入れておいた。 いよいよだ。・・・そして、実行。 ・・・だが、画面は真っ暗になった。
「はあ、やはり駄目か・・・」なにしろ、メインがオールマシン語の、 しかもいままで机上でしか作ってきていない、 超巨大プログラムである。 それをいきなり入力して、そう簡単に動く筈がない。私はとりあえずノートを 見直し、おかしなところがなかったかチェックしてみた。
すると、1〜2箇所、おかしなところが見つかった。とりあえずそこを直し、 もう一度実行してみる。
!!
一瞬、我が目を疑った。動いている?・・・いや、確かに動いている。 画面には、道と森で構成された1面の背景が、ちょっと速すぎる速度ながら スクロールしていた。おそるおそる、テンキーを押してみる。・・・動く。 自機が、テンキーに反応して動いている。そして、何か敵らしきものも 動いているようである。何が起きたのかいまいち理解できず、 殆ど放心状態で、画面を眺め、テンキーを押していた。
間もなく、腹の底から達成感が沸いてきた。「やった!」 もちろん、まだまだちゃんと動いているとは言い難いし、データなども 作っていかなければならないが、しかし、あれだけの膨大なプログラムが、 一応とはいえ動いているのである。自分のプログラミング力に感動し (「俺ってこんなに凄かったっけ」というノリ)、 PC−8001で動く 本格的シューティング(っぽい画面)に感動していた。
その後はデバッグと各種データの設定である。巨大マシン語プログラム ということでデバッグもかなりの困難が予測されていたが、意外に スムースに進んだ。むしろ、キャラクターの重ね合わせや カラーの設定など、一般的なゲームプログラムのアルゴリズムの部分で 苦労した覚えがある。これまでほとんどキャラ文字単位のゲームしか 作ってきていなかったため、このように大きいキャラが動くシューティングゲーム となると、それまで知らなかった様々な問題にぶちあたることになり、 それをひとつひとつ解決していくことに手間取った。 ベーマガで、よくなにわさん が「キャラの重ねあわせに苦労しました」というコメント を出していたが、このときそれがどういうことか理解できた。 また、メインをオールマシン語にしたにも拘らず、敵を8つとか出すとかなり 遅くなるというのも驚きだった。マシンの限界に挑んでいる、という気分がした。
このゲーム、とにかく面白かった。それまで、自分の作るゲームが つまらないことも少なくなく、多少なりとも悩んだりしたものだが、 このゲームに関してはそのようなこととは全く無縁だった。とにかく文句なしに 面白く、1時間でも2時間でも平気でプレイしてしまう。 市販ゲームの真似をして作ると、こんなに楽に(楽じゃないが) 面白いゲームができる。 「既存ジャンル」の凄さを改めて認識する機会でもあった。
超本格マシン語プログラム。PC−8001でゼビウスもどき。そして 面白さも保証付き。このときは、 「これが載らない訳がない!」 という程の確信を持って、 ベーマガへの投稿の準備を進めていた。 マシン語部分については、Bug太郎氏のプログラムに倣って、 BASICのデータ文にして、マシン語書き込み用プログラムとして独立させた。
満を持して投稿。発表は2ヶ月後だ。いつものことだが、この間が楽しみで楽しみで しょうがない。特に今回は、載るという確信があるだけに尚更である。
そしてついに来た、5月8日。ベーマガ91年6月号の発売日である。 朝からワクワクしながら授業を聞き、いつも通り部活を終え、学校近くの本屋へ急ぐ。 ベーマガを見つけ、PC−8001のページを探す。そして開く。
・・・ない。
ない。NEVIOUSは、影も形もない。見間違いではなかった。 確かにPC−8001のページだ。そして、そこには、 「スロットレース」という ショートプログラムが載っていた。
呆然とした。「今月じゃなくて、来月か?」とも思った。しかし、次の号にも、 やはりNEVIOUSは載っていなかった。そして、そのまた次の号にも。
いつもなら没になれば「採用レベルじゃなかった」ということで 諦められるのだが、今回は納得ができなかった。納得というか、理解ができなかったという べきか。「何故あれが載らないんだ?」と不思議に思うばかりだった。
まあ、今見返して見ると、
このように、残念ながらベーマガへの掲載は果たせなかったが、 しかしこの大作を作り上げたことは、非常に大きな達成感と自信を与えてくれた。 NEVIOUSは結局、私のPC−8001での最大の作品となった。
(ちなみに「スロットレース」は結構面白かったです。はい。)
PC-8001シリーズ(N-BASIC) 32KB用
縦スクロール・シューティング・・・つまり、ゼビウスもどきだ!
◎セーブ方法
まずリスト1を打ち込んでセーブしますが、マシン語のわかる人は、csave
を使うより直接マシン語でセーブした方がよいでしょう。
その場合はrun↓mon↓WB000,C400↓です。
リスト1がセーブできたらrun↓します。Ready!と表示されたらnew↓として
リスト2を打ち込んでセーブして下さい。もしエラーが出たらその行を直して
セーブし直して下さい。
◎ロード方法
リスト1をロードしてrun↓(マシン語でセーブした人はしなくてよい)その後 リスト2をロードしてrun↓でOKです。
◎操作方法
1235で左下右上、スペースで空中弾、GRPHで地上弾を発射します。
◎内容について
エリアは全部で4つあり、エリアの80%まで進めばクリアしたことになります。
(エリア4は例外)エリア4をクリアすると要塞が出現します。5つの砲台を
すべて壊せばエンドです。
地形が超単純なのは、別に手抜きではありません。プログラムの短縮のためです
(今でも充分長いけど)。
◎プログラムのしくみ
メインがマシン語ですが、そのわりに遅いのはきっとカラーのせいでしょう。
CALL 04F8H 又は 06E6H を NOP にすれば速くなると思います。
BASIC部も異常に長いですが、これはワークエリアの設定がいい加減な為です。
すいません。
◎苦労したところ
キャラの重なりには悩みました。まだ時々キャラが残りますが、 直すとやたらチラつくのであきらめました。
◎At Last
う〜む、なるべくゼビウスに近づけるつもりだったのに、だいぶ
違ったものになってしまった。
しかし、まあまあ楽しめると思います。ぜひやって下さい。
参考:ゼビウス(C)namco, N-TYPE by Bug太郎さん
(主なワークエリア)
D900〜DAFF 空中物出現テーブル
D700〜D8FF 地上物出現データ
E000〜E3E7 空中用仮想VRAM
E500〜E8E7 地上用仮想VRAM
DE40〜DFFF キャラDATA
◎主なマシン語番地
B000〜B0FF メイン
B400〜B6FF スクロール
B700〜B97F 自機
B980〜BFFF 敵機
C000〜C12F 地上物
さあ、ロードだ。(プログラムの保存状態が悪いため、
一部お見苦しい点があります。)
タイトル画面。PC-8001でゼビウスが!?
さあ、スタートだ。
エリア1は森の面だ。トーロイドが襲ってきたゾ!
(※ロード時のバグにより、道のつながりがちょっとおかしくなってます。)
ヤラレタ!
エリア2は海の面。バキュラが回転して迫ってくるー
エリア3は岩山だ。ガルデロータ(?)の攻撃は強烈!
ついに最終の4エリア。プラグザカートとガルデロータの
執拗な攻撃だ!
今度はギドスパリオの嵐だ。きびしい〜。
いよいよア○ドアジェネシスの登場。
やったあ、ついに倒したゾ!感動のエンディングです。
ちなみにエミュレータ用ファイルはこちら。(t88,cmtファイルです。)
エミュレータはj80推奨です。