PC8801エミュレータ M88で ベーマガのプログラムを動かしてみる

押し入れ整理をしていたら 昔なつかし マイコン BASIC MAGAGINEの投稿プログラムが出てきました
Full-Fire というゲームです PC8801の実機は持っていませんが 代わりにエミュレータで実行してみたのでその一連の作業を紹介します
※リンクは公式サイトではありません

エミュレータについて

M88 という PC8801エミュレータを使いました
ほとんどの PC8x01系ゲームが動いたというすばらしい完成度です
上記のサイトから エミュレータ本体をダウンロードした後 BIOSのロムファイルが別途必要です
BIOSロムは (本来は) PC8801 実機から吸い出して各自準備する必要があります

今回は N-BASICでフロッピーディスクなどサポートされておらず
カセットテープのイメージの作り方も よくわかりませんでしたが
以下に述べるような M88拡張モジュールにより BASICプログラムを PC-AT機から直接読ませました

M88インストールディレクトリ
M88を普通にインストールした後 ここ
にて配布されている DISKDRV という拡張モジュールをインストールします
e1.rom と diskdrv.m88 の 2ファイルを M88.exe のあるディレクトリにコピーします
また N-BASICへ対応させるために ここ にて配布されている
diskdrv80 という拡張モジュールも入れます E8.rom と パッチを当てた N80.rom がそれに該当します
N80.rom は diskdrv80に付属のツールでアップデートできます

投稿プログラムのスキャナ取り込み

実はここが一番苦労したのですが
プログラムソース(ベーマガの記事の切り抜き) → スキャナ → OCR → 手修正
の工程です OCRには 読み取り革命2000 を使いました
OCR認識結果
認識精度を高めるために工夫が必要です まず スキャナは 800dpiくらいの高精度でスキャンして
事前に 傾き補正 2色化 の画像処理を加えておきます 上図での左のプレビュー画面がそうです
OCRの設定は 認識範囲を絞るために 半角英数字 半角カナ のみの認識に絞ります
もちろん PC8801が独自に持っている グラフィック文字 は認識されません
上図では 右の認識結果となります 空白の認識が間違っていたりなかなか 100% は認識されません

いざ 実行

ベーマガ界では有名人の Bug太郎の作品です Bug太郎氏は ベーマガでの活躍がきっかけにして ゲーム開発業界に進まれたと聞きました
Full-Fire はかなりベーマガ後期の作品です サンプルとしてスキャンした
BASICプログラムを fullfire.lzh (10KB) を置いておきます
アーカイブを展開すると fullfire_1.bas fullfire_2.bas fullfire_3.bas のファイルが出てきます
これは ASCIIテキスト形式で保存された BASICソースファイルです

M88起動画面
図は M88を起動した画面です BIOS書き換えが成功していれば バナーメッセージが
「M88 DISK I/O Extension〜」 のようになっています N-BASICモードで起動してください
BIOSの書き換えにより 「POLL LOAD “〜”」「POLL SAVE “〜”」のコマンドが利用可能となってます
図は fullfire_1.bas をロードした直後の画面です

  poll load "fullfire_1.bas"
  run
  poll load "fullfire_2.bas"
  run
  poll load "fullfire_3.bas"
  run
 

のように実行します
Full-Fireその1
ベーマガの懐かしい記憶が思い出されます
グラフィック文字の|(縦棒)が エミュレータ上でうまく入力できなかったため |(パイプ文字)で代用しています そのためタイトルの文字がオリジナルと少し違います
Full-Fireその2
登場キャラが 全部テキストなうえにデカキャラと凝りまくりの内容です
ベーマガでこの投稿を見たときは度肝をぬかれました
操作方法は テンキー と スペースキー でよろしくやってください