何とか庵日誌

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

「ミニデューク」

f:id:fukenko:20141030011505p:plain


 大作プログラムリストの手持ちが一段落したので、ここのところ小規模なプログラムを入力してます。というわけで今回ご紹介するのは電波新聞社MSXMSX2プログラム大全集収録の「ミニデューク」です。


f:id:fukenko:20141030011526p:plain


 作者は拙blogでも何度か紹介しているKimcoさん。同氏によるベーマガ誌上のプログラミング講座「ぶっちぎりプログラミングテクニック考」のサンプルとして作られたゲームで、初出は85年頃と思われます。
 ナムコの「バラデューク」のようなタイトルどおり、本作はサイドビューのスクロールアクションゲーム。敵をかわしつつフィールド内に散らばる10個の標的を破壊するのが目的です。ただし敵は弾を吐く固定砲台だけで、武器も銃ではなく爆弾だったりと、「バラデューク」とはかなり違ってます。そのあたりが「ミニ」のゆえんなのでしょう。


f:id:fukenko:20141030011552p:plain


 ゲームにはあれこれ工夫も見られそれなりに面白く遊べます。ただし展開が単調なので、飽きが来るのは早いです。
 しかしこの作品の売りは、ゲームの内容ではありません。スクロールに使用されているマシン語サブルーチン「キムコパック」にあります。


f:id:fukenko:20141030012703p:plain


 RPGのフィールドやパズルゲームのステージなどなど、自作ゲームにおいて、マップをどう保持してどう表示させるかということは、大きな壁でした。二次元配列変数にするとか、文字列変数にしてMID$で桁を揃えて表示させるとか、はたまたPRINT文で直接表示させるといった手法がありましたが、BASICでは展開が遅かったり容量を食ったり。広大なマップを画面いっぱいに、スムーズかつ高速にスクロール表示させるなんて芸当は、BASICだけでは無理がありました。そこでKimcoさんが作ったのが「キムコパック」です。
 「キムコパック」は、ピープホール表示処理用マシン語サブルーチンです。メモリ上に格納されたベタのマップデータを任意の大きさに切り出して、画面上の任意の場所に表示させることができます。本作はこの「キムコパック」の使用サンプルとして作られたもので、サブルーチンを容易に自作ゲームに転用できるつくりになっていました。使うには少々マシン語の知識が必要ですが、同じ事をBASICで組む以上に、手軽かつ高速なマップ表示が可能です。
 広いマップを歩き回るRPGや縦横にフィールドを動くアクションゲーム。BASICからかんたんに高速なマップ表示ができれば、作れるゲームの幅は大きく広がります。この「キムコパック」、荒井の兄がかつて作った自作ゲームでも使っています。マップ表示をBASICでやっていたら、まず遊ぶに堪えないものができていたと思います。


f:id:fukenko:20141030011621p:plain


 基本的に80年代のホビーパソコンはスクロールが不得意です。少なくとも80年代中盤までは、画面スクロール技術が売りになった時期がありました。全画面スクロール、高速スクロール、二重スクロール、1ドットスクロール等々。いかにして高度なスクロールをストレスなく実装できるか。スクロール技術が技術力の象徴だったと言っても過言ではない時代が確かに存在したのです。