またプログラムを打ち終わったのでご紹介。
今回はMマガ85年12月号掲載「DUSTMAN」です。
内容はご覧のとおりのドットイートアクション...というか「パックマン」クローン。
当時ナムコのアーケードゲームは大人気で、
多くのアマチュアプログラマーがこぞって自機で再現しようとしたものです。
特に「パックマン」はルールの明快さや組みやすさなどもあって、
多くのお手製ドットイートアクションが生まれたものでした。
カシオのゲームランドも「ゼビウス」と「パックマン」を作るソフトでしたし(おい)。
さておき迷路内のモンスターを避けつつ、全てのエサを食べれば面クリア。
パワーエサを食べることでパワーアップ、
一定時間モンスターをやっつけられるというルールは「パックマン」と同じです。
本作「DUSTMAN」ではゴミを拾い集めるという設定になってますが、
それは「パックマン」への配慮でしょう(おい)。
ルール部分は「パックマン」とだいたい同じなので特に見るべき点もありませんが、
そのかわりリスト本体はほぼマシン語で操作性や動作速度は非常に良好。
コードも100行ほどと短く、コンパクトながらエッセンスが
余すとこなく詰められており、その技術力の高さに目を見張らされます。
ここで比較として徳間の「FOR MSX ベスト50」収録の「PAPPLE」を挙げましょう。
「PAPPLE」もこれによく似たパックマンクローンですが、
こちらはオールBASICで組まれているため、動作速度は遅めです。
リストは140行程度、容量にして8Kバイトほど。
BASICでそれなりに凝ったパックマン風ゲームを作ろうとすれば、
最低でもこの程度の規模を要しました。
この「DUSTMAN」、一つ難があるとすればマシン語部分のデバグしづらさ。
本作はDATA文として格納されたマシン語データをREAD命令で読み出して
POKE命令でメモリ上に書きこみBASIC上から
コールするという方法でマシン語を使っています。
この方式はマシン語モニタを使うより入力しやすいという利点がある一方、
ダンプリスト同様、数値の入力ミスがあってもエラーとなりません。
ですから通常この手の投稿プログラムにおいて、
BASIC上からマシン語を書きこむプログラムを組む場合、
データリード処理にチェックサム確認処理を組み込むものなのですが、
本作にはそのチェックサム処理がありません。
おかげでいちいちリストと突き合わせ、マシン語の間違い箇所を
探すことになりました(泣)。
ベーマガやMファン等のプログラムでは、
チェックサム処理の組み込みが奨励されたり、またはBASICプログラムで使える
チェックプログラムが用意されたりして、入力者の便宜を図っていたものですが、
このあたりの不親切さが、Mマガプログラムがいまいち支持されなかった
理由なのかなという気もします。