見出し画像

MSX 雑誌投稿プログラム Wallaby!(ワラビー)に面セレクト機能を追加する

 突然だが、みなさんは Wallaby!(以下「ワラビー」)というパソコンゲームをご存知だろうか。これは、1994年10月号の MSX・FAN という雑誌に掲載された投稿プログラムだ。

 当時は、インターネットどころか、パソコン通信でさえ一部のマニアが楽しむようなもの。その頃に、安価にゲームプログラムを手に入れる方法は、雑誌に掲載されたプログラムが主流だっただろうか。当然に、それをパソコンに打ち込む必要があるのだが……。

 とはいえ、実は、1994年頃にもなると、このような雑誌にはフロッピーディスクが付属するようになり、それを読み込むことで、すぐにゲームできるようにもなった。ちょっと時期が進んだ、いい時代でもある。

 そんな時期に雑誌に投稿された、この「ワラビー」だが、実は、私の中では、最も印象に残っている雑誌投稿プログラムだ。ただ、MSX・FAN においては、読者ランキング(ファンダム・オブ・ザ・イヤー)も行われていたが、当時は、RPG などの長く遊べるゲームが流行っていた時期ということもあり、この作品は、そこまで目立っていなかったと思う。

 当時、RPG が流行った理由は、やはり、ゲームそのものが、まだまだ子どもの遊びという時代であり、お金はないが時間はたくさんある子どもたちが向かう先は、やはり、コスパのいいゲームだったのだろう。この「ワラビー」は、そのような時代の投稿プログラムだ。

 ちなみに、現在は、当時の子ども世代が大人になったこともあってか、ゲームも大人世代へと浸透してきただけでなく、スマホのカジュアル無料ゲームもあふれ、YouTube などの無料で長く時間を消費できるコンテンツもあり、当時と比べて、だいぶ状況が変わってきたと思っているのだが……この辺の話になるとだいぶ本題から外れるので、そろそろ話題を本題に戻す。

 あとは……実は、1994年にもなると、ファイナルファンタジーIV(スーパーファミコン)が発売された年でもあり、その頃に、やはり画面雰囲気的にもファミコン初期を彷彿とさせるようなパズルゲームは、古臭い印象があったのも否めないだろう。

 


○「ワラビー」とはどんなゲームなのか?

 さて、そんな「ワラビー」。一体全体どんなゲームかというと、「ロードランナー」や「フラッピー」のような、いわゆるパズルゲームだ。このワラビーは、一見すると、アクションパズルゲームのようにも見えるが、制限時間(タイマー)もなければ、ゲームの進行を妨げるような「敵」もいないため、タイミングを図ることもなく、アクション要素はほとんどないと言っていいだろう。また、運の要素もないので、ジャンル的には、「正統派1画面固定型パズルゲーム」とでも言えようか。

 ということもあってか、当時の雑誌の編集部のコメントでは、「『倉庫番』のようだ」というコメントもあった。確かに、ブロックを動かせる動作こそあるものの、ブロックを特定の場所に運ぶことがゲームの目的でもなく、全体的な印象としては、私は「倉庫番」の印象は感じられない。やはり、印象としては、「ロードランナー」のように、収集すべきモノを集めればクリアしたり、「フラッピー」のようにブロックを動かして道を切り開いたり、それぞれの要素が部分的にあるような気がしている。

 と、ここまで書いたが、実は、この作品は、製作者(と思われる)ホームページに、令和の現在でも公開してあり、しかも、ワンクリック(タップ)で実際にプレイすることができる。そう。今や MSX は、スマホのブラウザ上でも満足に動かせるのだ。その上、面倒なインストール作業も不要だ。百聞は一見にしかず。実際に動かしてみれば、どんなゲームか、すぐに分かるだろう。

 プレイするためには、次のリンクを開き、「Wallaby!」の下の「play online」をタップすればよい。確認が出た場合は、その内容に問題なければ[NICE!]ボタンをタップする(2022年10月現在)。

 この画面と、主人公であるワラビーの動きを見て、グッとくる何かを感じられた方は、ぜひ、この先も読み続けてほしい。

 

○今回のミッション

 さて、前置きが長くなったのだが、このゲームにフロア(以下「面」)セレクト機能を追加するのが、今回のミッションだ。

 例えば、上に記した「ロードランナー」(以下「ロードランナー」は、ファミコン版のそれを指す。)には、面セレクト機能があり、ゲームオーバーになっても、好きな面から始めることができる。しかし、このワラビーには、面セレクトどころかコンティニュー機能もないため、ゲームオーバーになれば、また、最初の面からやり直しなのだ。

 とはいえ、この辺は、当時、雑誌をチマチマ打ち込んできた世代なら、取り急ぎの解決方法として、プログラムの変数を修正することを思いつくだろう。この辺が、BASIC プログラムのフットワークの軽さなのだが、具体的には、次に引用した60行目の F=0 の部分を F=1 として、再度実行すれば、2面から始めることができる。そう。単に、開始したい面から1減じた数を F に代入して再実行すれば、そもそも面セレクトもコンティニュー機能もいらないのだ。

60 A=USR1(0):GOSUB260:F=0:R=5

 ちなみに、余談だが、開始時の主人公(ワラビー)の数を増やしたければ、同じくこの60行目の R=5 の部分を、R=30 などとすればよい。ただし、画面表示の関係から、2桁までにとどめておくのがいいだろう(あと、面クリア時に、ワラビーが1増えるので、多くても90程度にとどめたい。)。

 取り急ぎは、これで今回の目的も果たせるのだが、どうせなら、毎回プログラムを修正することなく、手元のコントローラーで面セレクトをしたい。そう。まるで「ロードランナー」のように……(余談だが、当時は、MSX では、外部接続のコントローラーのことを「ジョイパッド」と言っていたような気もするが、ここでは、今後「コントローラー」で統一する。)。

 

○改造の方針

 今回、他人様のプログラムにメスを入れるにあたっては、なるべく原作者の意思を尊重するため、次のような方針で改造することとした。

  • やむを得ない場合を除き、原則として、既存のプログラムには修正をかけない。具体的には、新たな行番号追加する形で作品を改造する。

  • プログラム全体の統一感を出すため、コーディングスタイルは、なるだけ原作者のそれに合わせる。具体的には、命令(語句)間のスペースを入れない、一つの行番号に複数の命令を入れる……など。なお、各種命令が全て大文字となるのは、MSX-BASIC の仕様だ。

  • プログラムの分かりやすさを優先させるため、付加機能は、必要最低限のものとし、シンプルなプログラムの流れ(フロー)とする。

 なお、念のために申し添えるが、私は、原作者ではない。そして、今回の投稿は、そんな原作者にご迷惑をおかけすることが趣旨でもない。然るべきところからこの記事の削除依頼があれば、それに応じる予定だ。

 

○改造①「面セレクト機能の追加」

 当時のコンピュータ系の雑誌には、雑誌編集者が独自に解析したと思われるプログラムの解説記事がつくこともあったが、この作品にも解説記事があり、比較的すみやかに全体の流れや、変数の使われ方、マシン語の機能などを把握することができた。本当にありがたい。

 プログラムの流れとしては、実行後、①タイトル画面が描かれた後、②ゲームのメインループに入るところがあるが、面セレクト機能を入れるのであれば、この①と②の間しかないだろう。そう。ちょうど「ロードランナー」が、そうであるように……。

 具体的には、①と②の間に次を追加すればよい。

71 'フロアセレクト
72 FORI=0TO1
73  S=STICK(0)ORSTICK(1):IFS=7ORS=3THENF=F+((S=7)-(S=3)):F=F+10:F=FMOD10:GOTO70
76 I=-STRIG(0)-STRIG(1):NEXT
78 IFSTRIG(0)+STRIG(1)THEN78

 当時、プログラムをかじったことのある方なら、今でもなんとなく分かるのではないだろうか。まず、72行目から76行目までが、いわゆる A ボタンが押されるまでの間の無限ループであり、その間、73行目が実行される。73行目が、左右キーを押すことで、その変数 F を 1 増減させ、それを 0 から 9 の間に収まるように補正し、再度、70行目に戻り、その該当面を描画するのだ。そして、A ボタンが押されれば、そのループこそ抜けるものの、そのまま押しっぱなしだと、開始直後にワラビーがパンチしてしまうことがあるため、この問題を解消するため、78行目に、A ボタンが押し上げられるまで待つ処理がある。

 たったこれだけで、面セレクト機能を追加することができるのだから、改造とは面白い。

 

○今回の成果物のご提供

 この程度のプログラム量であれば、MSX 側で直接打ち込んだ方が早いかもしれないが、今回、原作プログラムに「マージ」するためのファイルをご提供したい(どれくらい需要があるかは分からないが(笑)。)。

 使い方としては、原作ワラビーが MSX-BASIC で LOAD されている状態で、このダウンロードした WALLABM1.ASC を、同じく MSX-BASIC 側でマージすればよい。具体的には、

MERGE"WALLABM1.ASC"

と、直接打ち込むのだ。

 

 さて、今回、思いの外あっさりと目的達成できてしまった。せっかくここまで解析したので、次回は、このゲームにエディット機能を追加したい。

【関連記事】


この記事が気に入ったらサポートをしてみませんか?