マイコンBASICマガジンのFM TOWNS投稿作品を写経(に挫折)

今更ながらヤフオクで時折価格が安く出ているマイコンBASICマガジン(ベーマガ)を購入している。

懐かしいと思う人も当時のパソコン少年達には多いだろうが、マイコンBASICマガジンとは電波新聞社より1982年から2003年までの期間発行されていたパソコン・ゲーム雑誌だ。当時のパソコンは電源を入れるとBASICというプログラミング言語が立ち上がるのが主流(一部例外あり)で、ソフトも殆どなかったので自分で作ることが当たり前だった時代、ベーマガでは読者から募集した各メーカーのパソコン用BASICプログラムのコードを載せており、当時のパソコンはゲームが揃っていなかったりおこずかいが無くて買えなかった少年たちはベーマガを片手に掲載ゲームのコードを入力して動かしていたのだ。

コードを入力し動きがおかしかったらソースを見て間違いがないか探すデバック作業や、一通り遊んだ後は自分で改造していったりと、ここからノウハウを学んでプログラマーになったという人も数多くいる。

まあ、なんでこんなものを買ったのかというと、Youtubeにこのベーマガの投稿プログラムを打ち込んで動かしているチャンネルがあるのだが、自分の愛機だったFM TOWNSについてはマイナーだったり1990年代のマシンでチャンネルの年齢層的に扱うかどうかわからなかったのと、当時の市販・フリーソフトは一通りエミュ「津軽」上で動かしていてこれ以上の動作検証となるとこういった雑誌掲載のプログラムくらいしか残ってなかったんで、それじゃあ自分がやりましょうということで買ったのだ。

ベーマガのFM TOWNS掲載プログラムの一覧が載ったサイトを確認したら、1990年4月号から1999年2月号まで毎月のように何かしら投稿されていたようなので最低でも100本くらいはあったはず。当時は雑誌を見ながら写経せねばならずかなりの労力だったが、今ならばOCRといったスキャンして後は手直しすればその量でも簡単にいけると踏んでいた。

 

のだが、5本くらい入力したところでもうギブアップである。OCRである程度読みこませても結局ところどころ誤認識しており、それが命令文そのものが間違っているのであれば文法エラーを吐いて即停止してくれればいいものを、大体の場合変数のアルファベットが違うというケースが多すぎて、動くように見せかけて微妙に動きがおかしいという嫌らしいパターンばっかり。BASIC言語っていうのは変数が宣言していなくてもアルファベット1文字は最初から変数扱いということになっているのだが、OCRで読みこませていると印刷の問題で8がB、IがT、Oが0となってしまうのが日常茶飯事。プログラムリストはおそらく該当PCに接続したプリンタで印刷したコードを原稿に貼り付けて製本化しているのだろうが、当時のプリンタなんてフォントの出力がかなり荒いのでこうなってしまう。また雑誌に載っているゲーム画面も相当に小さくしかも白黒なので、入力したプログラムがこれで合っているのか正常に動いているゲーム画面との比較といった行いも難しくしている。間違っている箇所を見つけるのにプログラムリストをくまなく探していくと、結局手入力するのと大差ない労力となるし、この作業だけで1日丸々潰れてしまうのはかなり厳しい。

そして労力の割にはそれに見合った成果というものが感じにくい。インタプリタ言語であるBASICではスプライト・PCM再生機能やMB単位で配列を確保しても動かせるというFM TOWNSの高機能なF-BASIC 386上でも処理速度的な問題で動きの激しいものは作りづらく、また誌面の制約上あまり長いコードは載せられない、データファイル単体は扱えない(そのデータファイルを自ら作るコードは載せられる)のでこれもまたどうしても画面も音周りも質素なものになりやすく、実際動かしてみても現在の基準ではミニゲームにも満たないレベルだったり、残すにしてもインパクトの薄い動画になってしまい、見る人いるの?と正直疑問に思ってしまう。

8・16ビットPCだと許されるんだけど、いくらBASICとはいえ32ビットPCのFM TOWNSでそういう中途半端なものを載せてもまた何かのTOWNSのネガキャンみたいになりかねないし第一見る人自体いない、そういうところがTOWNSのベーマガ作品が資料として残りにくい点だろう。

 

唯一、Youtubeに残すのに耐えられそうなレベルだったのはベーマガ 1996年12月号掲載の「Project Racer」(長船 俊氏作)だ。

クォータービューのレースゲームで、3つのコースを最高速度・加速・旋回性能の異なる4つの自機を操作して最高タイムを競う。
Aボタンで加速、Bボタンでブレーキ、左右で旋回だが、ブレーキを押しながらもしくは曲がる前にブレーキを押すことでドリフト走行が可能なので、急カーブ手前まで一気に最高速で突き抜けていってドリフトでコーナリングといったことが可能。
コースは三週し、記録は周個別・合計タイムでそれぞれセーブされる。過去の最高タイムを上回っていたら、ゲーム中のラップタイムやゲーム終了時のウィザードで該当タイムが更新されていることが赤文字で表示されてくれるのでわかりやすい。

この作品でも上記の通り投稿BASICプログラムの問題は引きづっていて、エンジン音がBEEP音でちょっとうるさく耳障りだったり、フレームレートが低いといった問題はあるにせよ、ドリフトによる操作性は良好、複数コース・性能違いの自機があるので一度きりのプレイとならず繰り返し違う感覚で遊べ、過去のラップタイムと競えるということでやりこみ要素まで備えている。技術的にもVRAMの使われていないスーパーインポーズビットをコース外・内かの判定処理に使っていたり、ハードウェアスクロールによるコースの移動など、BASICプログラムの枠内だけでなくC・アセンブラでゲーム作る場合でも参考になりそうなテクニックが使われている。

 

他にも何本か入力し一応静止画では残しておくが、結局動画として残すにはこれ一本となってしまった。何かFM TOWNS用投稿作品であれをもう一度見ておきたい、TOWNSは持っていなかったが紙面上で見てあれがどう動くのか知りたい、という人がいれば該当ベーマガが手に入った際にまた写経(という苦行)を行うかもしれない。