今回のお題はPiO1986年3月号掲載の「Caffo」です。
このシリーズでは初めてEXASコンパイラ利用作品を取り上げます。
EXASコンパイラは1986年においてはすでに店頭でお目にかかる事はなく、いずれにしても高価であったことから手に入らず、当時は同号のソノシートに収録された「SMALL WORLD II」を遊びつつ、こちらの「Caffo」は画面写真を見て想像でプレイするしかありませんでした。
EXASコンパイラは1986年においてはすでに店頭でお目にかかる事はなく、いずれにしても高価であったことから手に入らず、当時は同号のソノシートに収録された「SMALL WORLD II」を遊びつつ、こちらの「Caffo」は画面写真を見て想像でプレイするしかありませんでした。
おそらく、PiO本誌でもEXASコンパイラ利用作品の掲載はこれで最後だと思います。
時は流れ、EXASコンパイラは数年前に入手していたのですが、実際にプログラムを打ち込むまでの腰が重くて今までかかってしまいました。
1986年3月号は初めて購入したPiOなのですが、それから実に32年越しの宿願達成です。
時は流れ、EXASコンパイラは数年前に入手していたのですが、実際にプログラムを打ち込むまでの腰が重くて今までかかってしまいました。
1986年3月号は初めて購入したPiOなのですが、それから実に32年越しの宿願達成です。
ゲーム内容は、かなりルールが独特なサイドビューの固定画面アクションゲームです。
ゲームの目的は「物体X」と呼ばれる謎の物体を画面下の溶岩のような液体に落として処分することです。そうする事で物体Xをエネルギー源としている謎の生物「プワワ」が駆除できるという設定です。
ゲームの目的は「物体X」と呼ばれる謎の物体を画面下の溶岩のような液体に落として処分することです。そうする事で物体Xをエネルギー源としている謎の生物「プワワ」が駆除できるという設定です。
物体Xは横から押して動かす事ができます。床の穴から落とすと下の階に落ちます。
主人公はジェットパックを背負っており、噴射する事で上昇する事ができます。この時床の材質によっては床に穴が空きます。上昇してから左右移動はできないので、上に床がない状態で下に穴を開けてしまうと落ちてしまいます。
主人公は横移動中はスキップしており、意図せず自分が開けた穴に落ちてしまう事もあります。
穴は物体Xを落とすためにも必要なので、穴の開け方がキーとなる、非常に戦略的なゲームとなっています。
主人公は横移動中はスキップしており、意図せず自分が開けた穴に落ちてしまう事もあります。
穴は物体Xを落とすためにも必要なので、穴の開け方がキーとなる、非常に戦略的なゲームとなっています。
プワワは体当たりで倒せます。触れてもこちらのミスにはなりません。が、物体Xに触れるとその中に乗り移り、物体Xごと動くようになります。この状態の物体Xに触れるとミスになります。
キャラの動きがパックマンやディグダグの「目変化」を連想します。パックマンとは逆にある条件下でだけ敵が攻撃できるというゲームは珍しいと思います。
全ての物体Xを液体に落とすとクリア、自分が液体に落ちるか、物体Xに乗り移ったプワワに接触するとミスになります。
ゲームの出来としては、ルールづくりに非常に工夫が凝らされた良作だと思います。
少し残念な点は、このゲームでは物体Xをプワワに動かしてもらわないとこちらから手が出せないというシーンが多くあるのですが、プワワの動きはランダムであるため、そういうシチュエーションでよく待ちぼうけになってしまうことです。
この辺は動画を見ていただくとよく解ると思います。
また、動作も軽快で、EXASコンパイラの凄さを実感しました。
ただEXASコンパイラは元々BASICにある命令しかカバーしていないためか、結局キャラクタPUTルーチンはコンパイラで作ることができず、大半のPiO、I/O掲載ゲームにおいて読者はダンプリストの打ち込みから解放される事はなかったというのは残念です。
ただEXASコンパイラは元々BASICにある命令しかカバーしていないためか、結局キャラクタPUTルーチンはコンパイラで作ることができず、大半のPiO、I/O掲載ゲームにおいて読者はダンプリストの打ち込みから解放される事はなかったというのは残念です。
最後に、このゲームには面セレクトの隠しコマンドがあります。
タイトルで「PUSH SPACE KEY」と出ているところでリターンキーを押して、カーソルキーの「上→右→左→下→上→左→右→下→上→下→右→左→下→上→左→右」と入力すると任意の面に行けるようになります。
タイトルで「PUSH SPACE KEY」と出ているところでリターンキーを押して、カーソルキーの「上→右→左→下→上→左→右→下→上→下→右→左→下→上→左→右」と入力すると任意の面に行けるようになります。
例によって動画をアップしてますのでこちらもご覧ください。
EXASコンパイラは16ビット符号付き整数しか扱えないため、途中でスコアがオーバーフローしてマイナスになってます。
EXASコンパイラは16ビット符号付き整数しか扱えないため、途中でスコアがオーバーフローしてマイナスになってます。
多分作者も面セレクトを使ってテストしていて、後世にエミュレータとTAPを使ってスコアがオーバーフローするまでノーミスプレイされるとは思ってなかったでしょう。
ioを入手して、EXASコンパイラを打ち込んで、拡張子をROMにした後、ゲームソースを入力してコンパイラしました。コンパイラ終了後のオブジェクトのセーブはどのようにすればいいのでしょうか?IOにはそのままセーブできると書いてあるのですが、PIOモニター等で機械語をセーブすればいいのでしょうか?コンパイラすると一行だけのBASICが残っています。初歩的ですみませんがご教授お願いできないでしょうか?
だいぶ前の話なので記憶が怪しいですが、コンパイラが出力した1行だけのBASICリストをCSAVEすると、その後ろに機械語部分が合わせてセーブされるという動きだったと思います。