何とか庵日誌

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

「潜水艦ゲーム」




 例によって先日打ち終わったプログラムのご紹介。Mファン91年5月号より「潜水艦ゲーム」です。


 ゲームは至ってシンプル。プレイヤーは潜水艦の砲手です。画面上には潜望鏡越しに見た海上の様子が表示されています。海上を敵の軍艦が横切っていきますので、魚雷で撃沈しましょう。魚雷は画面中央の照準めがけて発射されます。見事命中すれば爆炎とともに敵艦は爆沈します。
 発射できる魚雷は1隻につき1発だけ。やみくもに撃てないので、よく狙わなければなりません。敵艦は毎回スピードが変わるので、照準を通過するタイミングを見越して発射するのが当てるコツです。狙い越しというやつですな。10隻外してしまうとこちらが撃沈されたことになりゲームオーバー。それまで何隻撃沈できるかを競います。


 ゲーム自体はまさにクラシック。一撃必中の潔さが醍醐味のSTGです。パソコンが現れて以来類似のゲームは多数登場してきただろうが、しかしおもしろい、と編集部は評しています。確かにそのとおり、ザ・クラシック、王道中の王道ゆえ、安心して遊べる内容です。

ゲームオーバー画面。リトライ機能はぜひ欲しかった。

 とはいえプログラムは作りの甘いところも目立ちます。プログラムはマルチステートメントを多用せず、1行が非常に短いです。一定画面数に収めるため、ギチギチに詰め込むことが多いファンダム作品では異例中の異例。良くも悪しくも素朴な作りで、ファンダムのプログラムというよりも、BASICマニュアルにサンプルゲームとして載ってそうなかんじです(おい)。プログラムの長さは5画面。書き方を見直したり切り詰めるなどすれば、2画面くらいに収められそうな気もします*1
 内容は完全にMSX1で実現できる内容ながらグラフィック表示のためにMSX2以降用となっていることや、一撃必中を旨とするため、魚雷を外したら敵艦が視界から消えるまでやることがなくなるのもやや気になります。ゲームオーバーになったらそのままプログラムが終了するのはぶっきらぼう。5画面も使っているのなら、リトライ機能やハイスコア機能はぜひとも欲しかったところです。


 作者さんは当時45歳。40代プログラマーとして有名だったかのNu~さん*2よりも年上です。若年層が中心だった当時のホビーパソコン界において、中高年もプログラム作りを楽しんでほしいという意図が、掲載にあたっては込められていたのかもしれません。

blueMSXで現れる症状。スプライト表示が右にズレる。

 さて、本作はblueMSX上で動かすと、スプライトの表示がズレるという不具合が発生します。問題はプログラム側ではなく、エミュレーター側。blueMSXには、スクリーン5以降で拡大スプライトを表示させると、表示が右に8ドット分ズレるというバグがありまして、これに引っかかってしまうのです*3。エイムがズレてしまうというゆゆしき問題が発生するため、エミュレーターで本作を遊ぶなら、blueMSX以外のopenMSXやWebMSX等を使った方がよいでしょう。
 それでもblueMSX上で遊びたいのなら、580行を書き換え、変数X3とX4に代入する数値を8引いたものに置き換えるとか、670行のPUT SPRITE命令の座標指定を(X2,97)に入れ替える等の処置が必要です。

*1:もっとも、その分変なことを何もしていないため、リストが非常に見やすいです。

*2:当時44歳。それでも今の荒井より若いんですよな。

*3:参照:https://meganekun.blogspot.com/2017/08/bluemsx.html#more