...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

よみがえれ DISK BASIC

中学1年生のときにプログラミングを始めた僕は,すぐにその面白さに取り憑かれた.
昼から部活に行くことができる土曜日には,家から持っていったお弁当を食べるのも忘れて,黙々と,図書館から借りてきた BASIC の入門書のコードを打ち込んでいた.
ROM BASIC と DISK BASIC の違いに気が付かず,一度入力したコードをどうやって保存したらいいのか分からずに困ったり,INPUT$ と INKEY$ の違いに気が付くのに多くの時間を費やしたりした.
図書館の入門書を大体打ち込んでしまった後は,もちろんみんなのバイブルである「ベーマガ」のコードを打ちまくった.


中学2年生のときだろうか,自分と親とで半額ずつ出し合って PC-9821 Cx13 を買った.
今でも我が家ではこのマシンは父にテレビとCDプレーヤとして使われていて,まだまだ現役だ.
でも,自分でこのマシンを触ることはほとんどなくなっていた.


そんな中で,こいつで書いていた DISK BASIC のプログラムを実行したい用事がついこの間できた.
そこで,せっかく PC-98 の実機が稼働している今のうちに,昔使っていた FD から DISK BASIC 関係のデータを取り出すことにした.
実機があるので,T98-NEXT という98エミュレータを使えば DISK BASIC のシステムを完動させることができるみたいだ.
実際にやってみたら,特に大きな問題もなく,懐かしいプログラム達を救出することができた.


まずは"FILES"と打ち込んでみた.
でも,システムディスクには特にめぼしいファイルはないようだ.
今度は2つ目のFDDにイメージファイルを入れて,"FILES 2"と打ち込んでみた.
さすがにこのオプションは分からなかったのでネットで調べたw



懐かしいファイル名が並ぶ.
中には何のデータか分からないものもある.



試しに"LOAD"してみたソフトはシューティングゲームの習作だった.
この写真は,アイテムと間違えて敵雑魚キャラに特攻して死んだ様子w



次に"LOAD"したプログラムは,戦車を操作して戦うゲームだった.
プレイヤは戦車のパラメータを戦闘前に調整して,お互いに納得した段階で戦闘を開始する.



タイミングの問題で,このスクリーンショットには敵キャラが写らなかったみたいだ.
上が体力ゲージで,下がショットエネルギー.
連続してショットして下のゲージがなくなると,一定時間ショットできなくなる仕様だ.
このネタはバーチャロンをパクったはず.



ゲームはCOM戦モードに設定されていたようだ.
ちなみにコードを直接いじってCOM戦か対人戦かを選択する.
パラメータ調整なしの状態で頑張ってみたのだが,姑息なCOMの戦法にあえなく敗れた.
COMの攻撃の命中率が高すぎてどうしようもないw


本題はここからだ.


最近,はてな2ch界隈で,カルネージハートというゲームが話題に上がっていた.
これは,ゲームの中で機体の動作アルゴリズムをプログラミングして,戦闘が始まったらただ見ているだけという何ともマニアックなゲームだ.
このゲームが発売されたのはいつだったのだろうか.
何かのゲーム雑誌を読んでいた僕は,その誌面の上でこのゲームと出会い,こう思った.
「このゲームが欲しい.けど,今はお金がない.でもやりたい.うーんうーん」
お金がないのはどうしようもない.
でもどうしてもこのゲームをやりたかった.
だから僕は,自分で作ることにした.


そのとき作ったゲームは救出した FD の中にあった.
どれが最新版のファイルなのか探すのに少々手間取ったが,多分これだろう.



まずはタイトル画面.
英語力のひどさにワロタww



この画面上で機体のAIをプログラミングする.
エントリポイントは左上だ.



スペースボタンを押すと,カーソルがある場所に置くことができるチップが表示される.
これらのチップの効果は次の通り.

  • 「何もしない」
  • 「攻撃」:1発の弾を撃つ(弾の進む方向は進行方向から少しぶれる)
  • 「前進」
  • 「後退」
  • 左旋回
  • 「右旋回」
  • 「左並行移動」
  • 「右並行移動」
  • 「条件分岐(索敵)」:距離,基準方向,基準方向を中心として左右に拡がる角度の3つのパラメータを設定して,敵の位置がこれに合致するときは右へ,そうでないときは下へ制御が進む.
  • 「条件分岐(敵弾)」:上の敵弾バージョン.
  • 「条件分岐(確率)」:1/n の確率で右へ,1 - 1/n の確率で下へ制御が進む(多分w).

「条件分岐」以外のチップのマスは,そのチップを実行した後に制御が進む方向を「5」キーを何度も押すことで選択することができる.



自機のAIを入力したところ.



戦闘開始.
弾をまき散らしながら,敵を探して徐々に近づいていく自機.



自機の攻撃がヒットした様子.
この敵のAIには何も入力していないので動かない.
このゲームは勝負が付かない事が多いので,試合には時間制限を設定することになっているw


本来,カルネージハートは3Dの画面なのだが,それを再現する能力は流石に持ってなかった.
BASIC では動作速度的にも厳しい.
だから,このゲームは戦車型の自機を見下ろす形式になっている.
ただ,適当にばらまくだけというひどい仕様の「弾の撃ち方」や,「弾の種類」を増やそうと思っていたはずなのだが,修正しないまま,いつの間にか放置していたみたいだ.


さて,そんなわけで,紙面で語られていた仕様を読み,そのゲームがやりたくてしょうがなくなった少年は,勢い余りすぎて自分で作ってしまったのでした.
ちゃんちゃん.
カルネージハートはそんな力を持つ素晴らしいゲームなのです.


やったことないけどなwww