何とか庵日誌

本名荒井が毒にも薬にもならないことを書きつづるところ

「8方向スクロールシューティングゲーム」

f:id:fukenko:20200814003944p:plain
「ブラーストオーフ」は自分で叫ぼう(おい)

 先日ちょっと言及していたプログラムがまともに動くようになりましたので、ようやくご紹介いたします。例によって突然のMSXプログラムネタ。本日はアスキーの「MSX2+パワフル活用法」収録の「8方向スクロールシューティングゲーム」です。


 MSX2+は、MSX規格3代目として1988年に登場したハードです。MSX2からグラフィック表示能力や日本語処理機能等の強化が図られましたが、中でも一番の特徴とも言えたのが、ハードウェアで横スクロールをサポートしたことでした。
 「MSX2+パワフル活用法」は、2+発売翌年の89年に出版された本で、2+の新機能の詳細な解説や、それを使ったプログラムが掲載されています。本作「8方向スクロールシューティングゲーム」は、2+のハードウェアスクロール機能のサンプルとして同書に掲載された作品です。

f:id:fukenko:20200814010242p:plain
敵の移動パターンは決まっている。
適切な対処方法をとるのが撃墜するコツだ。

 題名が全てを言い尽くしていますが、有り体に申し上げて「ボスコニアン」みたいなSTGです。宇宙空間を飛び回り、点在する敵母艦を全て墜とせば面クリア。2+の新機能を使ったフル画面8方向スクロールが最大の売りです。広いフィールド上に分布する母艦の位置を把握するためのレーダー機能も搭載。このあたりもますますもって「ボスコニアン」ですな*1

f:id:fukenko:20200814071025p:plain
ザコをかいくぐり母船を狙い撃つ。緑の奴がスゲぇイヤ。

 敵は母艦のみならず、もちろんザコももれなく登場します。ザコは基本、3機で編隊を組み、それぞれに異なるパターンで攻めてきます。種類は少ないながらも攻撃パターンがイヤらしく、それぞれに合った戦い方をしないとすぐやられます。四連射可能な弾は撃って小気味よく、一髪の差で敵機をかわし反攻するといったスリリングな攻防が楽しめるところなど、なかなかよくできています。
 母艦はスクリーン5モードのビットマップグラフィックで描かれたデカキャラです。24x24ドットながら、自機よりデカいキャラが出るだけで大喜びするのは8bit時代のゲーマーの悲しい性ですな(おい)。

f:id:fukenko:20200814082749p:plain
母艦撃墜! 爆散するエフェクトが気持ちいい。遅いけど。

 ただしこのゲーム、問題点が多すぎです(おい)。
 まずは動作がめちゃくちゃ遅いです。起動時に各種データのリード&ライトでけっこう待たされるのはまだよいとして、スクロールも動作速度も鈍重なため、「ボスコニアン」や「グレイコリアーグ」のようなスピード感や痛快さは味わえません。速度が必要とされる部分はマシン語を使っているにもかかわらず遅いため、図らずもMSX2+の限界を(悪い意味で)見せつけられます(おい)。
 さらにスクロールはなんと1ドットではなく8ドット単位。2+なのに!(汗) もっとも、2+の仕様では8ドット単位のハードウェアスクロールも可能なので、その性能を活かしているといえば活かしているのですが、がんばって1ドットのスクロールを実現して欲しかったような気もします。ゲーム中に音が全くないのも残念な限り。FM音源でBGMを鳴らせとまでは言わずとも、せめて効果音ぐらいは欲しかったところです。

f:id:fukenko:20200814074520p:plain
リストのスプライトデータ部分。なぜ十進数で書いた!(泣)

 次にデータが非常に入力しづらいこと。プログラムはBASICで書かれ、グラフィックデータやマシン語サブルーチンはDATA文として格納されてあります。スプライトデータは整形しやすい16進数ではなく、なぜか十進数で記述され、見直しづらいことこの上なし。それだけならまだしも、マシン語サブルーチンにはチェックサム等の誤入力対策がとられていません。おかげで打ち込みミスを修正するため、6ページ近いマシン語データを1バイトずつ全て見直す羽目になりました*2。入力する人間のことを考えてねぇ(泣)。

f:id:fukenko:20200814072632p:plain
バグ発現中。こうなったらもう打つ手はない。ハマチぃ!(泣)

 そして一番の問題は、プリントされたプログラム自体にバグがあることです。誌面どおりにリストを入力すると、母艦を全滅させても面クリアできないばかりか、その状態でやられると画面上から自機が消え、ゲームオーバーにもなることもできず「ハマリ」に陥ります。
 バグを目前にどこかにまだ入力ミスがあるのかと疑い、3回ほどリストを最初から最後まで見直しましたが、ついに間違いを見つけることはできませんでした。となればプログラム自体が間違っているとしかかんがえられません。さいわい、BASIC部分を手直しすることで修正はできましたが、マシン語部分の誤りだったらもうお手上げでした(号泣)*3


 アスキー発刊のMSX叢書の多くがそうであったように、本作掲載のプログラムもディスクサービスとして有償配布されていたのだそうです。入力のしづらさやバグに対するフォローの少なさは、「プログラムはディスクサービスを利用しろ」という姿勢の裏返しで、そもそもユーザーが手で入力することをあまり考えていなかった、ということなのかもしれません*4
 誤字脱字に落丁、校正の不手際、テキストの取り違え等々、書籍に掲載されたプログラムには、プリント由来のバグという問題がつきまといます。多くは修正情報が追加で公表されたものですが、中には公表しても修正情報がユーザーに伝わらなかったとか、そもそも公表すらされなかったということもままありまして、現在でも打ち込み派レトロコンピューティング趣味者を悩ませています。雑誌掲載プログラムを入力するなら、修正情報を含めて数号先までのチェックが不可欠です(泣)。


 当然この作品も件のディスクサービスで配布されていたわけですが、そちらに収められていたバージョンではこのバグがどうなっていたかが気になります。

f:id:fukenko:20200814085825p:plain f:id:fukenko:20200814085859p:plain
バグの修正方法とリストの欠落部分。どうぞご参考までに。
ゲーム自体は遅いけどわりとおもしろいよ!

*1:ただしリアルタイム表示はできず、表示するとゲームが中断します。

*2:さすがにこちらは16進数で記述されてます。

*3:ついでに初版本ではリストの最後の部分が落丁で欠けているという有様でした。後の版では欠落部分も掲載されていますが、それでもリスト自体のバグまでは修正されていません

*4:89年当時は打ち込みプログラムという文化が下火になりつつあったことは当ブログでもしばしば言及しているとおりです。