Posts
PC-9801 エミュレーターでヴァルキリーを動かす
ふと「PC-98 の名作格ゲーことヴァルキリーを吸い出してエミュレータ (T98-Next) で遊んだろか!」と思い立ち、実際に遊べるようになるまでの記録。
BIOS の吸い出し
まずは、付属のツール ROMMAKE を使って実機から ROM イメージを吸い出す必要がある、UMB を使っていると ROM エリアが書き換わってしまうので、起動時に SHIFT キーを押してクリーンな状態にしておくのがポイント。実際、普通にブートした状態で吸い出した BIOS をバイナリエディタで覗いてみると、"VEM486" といったメモリドライバ名の文字列が出現する。
サウンド BIOS は内蔵音源か純正拡張ボードでない限り搭載されていないので、サードパーティのサウンドカードを使っている場合は諦めるしかない。実機の PC-9801BA3 も SRN-F というメルコのサウンドカードを使っているので吸い出すことができなかった。
MS-DOS の吸い出し
次は MS-DOS インストールディスクの吸い出し。具体的な手順は以下の通り。
- NFDMAKE を使って FD のデータを NFD イメージに変換。
- 変換したデータを LHA で圧縮。
- FD に入りきらないので BSPLIT というツールで分割。
- FD 経由で DOS/V 機へ転送。
- BSPLIT で結合。
- 出来上がった圧縮ファイルを解凍。
まさか、再び分割ツールを使う時が来ることになるとは思わなかった。シリアルケーブルでの転送ならサイズを気にしなくて済むという利点はあるが、転送速度が遅く、事前準備が面倒なので今回はパス。
一応、備忘録もかねて各コマンドをメモしておく。
NDFMAKE 0 DOS62#1.NFD
ディスクドライブ番号 0 (FD) のデータを "DOS62#1.NFD" という名前で吸出し保存。
LHA a DOS62.LZH .\
カレントディレクトリのファイル全てを "DOS62.LZH" という名前で圧縮。
BSPLIT /x /s DOS62.LZH B:\
"DOS62.LZH" を B ドライブ (FD) へ分割コピー。分割サイズは自動。
BSPLIT /c DOS62 DOS62.LZH
"DOS62.***" という分割イメージを結合し、"DOS62.LZH" という名前で保存。
MS-DOS を起動
何故か NFDMAKE だと MSDOS.SYS の読み込みエラーが出るので、DCU (Disk Copy Utility) を使って FD イメージを作成する作戦に変更。
DCU -A 1,@A:\DOS62#1.DCU
ドライブ 1 の全トラックデータを "DOS62#1.DCU" というファイル名で保存。
試しに 1 枚だけ転送して起動してみたが、DCU 形式だと起動しない。そこで、VFIC (Virtual Floppy Image Converter) を使って NFD 形式に変換したものを読み込ませてみたところ、無事起動することができた。
動作することがわかったので全てのディスクを転送し、インストール完了。DCU で吸い出した際、MS-DOS のディスク #3 にエラーがあったが、NFDMAKE だとエラーを出さなかったので不良ディスクがあっても気付けないかもしれない。幸い、壊れていたのはバックアップディスクだったのでオリジナルから吸い出すことができた。
ヴァルキリーを起動
当初の目的だったヴァルキリーを起動させることに成功。ディスクから吸い出したイメージをインストールしたら普通に起動したが、エミュレーション精度の関係か、体力ゲージがうまく表示されないのはご愛嬌。
現時点ではコンベンショナルメモリに余裕がないので BGM や PCM を有効にするとメモリが足りなくて落ちてしまう。98 のメモリマップなんぞ忘れてしまったので UMB として使えるアドレスを探すところから始めなくては…。
PC-98 用格闘ゲームは他にもあるが、コマンドの受付が悪かったり、ゲームシステムがおもしろくなかったりで、ヴァルキリーには一歩及ばず。
おまけ
ふと「ヴァルキリー用の CG ローダーってあったっけ?」と思い、古いゲームラボを漁ってみたところ 95 年 8 月号に掲載されていたので作成してみることにした。
まず、プログラムをコンパイルするのに必要な LSI C-86 試食版をインストール。いちいち FD イメージに落とすのは面倒なので DiskExplorer 使って転送するのがオススメ。
コンパイラの環境設定ファイルは A:\LSIC86 基準で書かれているので、そこにインストールすれば、A:\LSIC86\BIN にパスを通すだけで環境設定は完了。
ゲームラボに載っている CG ローダーはインターフェイス部分を担当する機械語プログラムに、ゲームの実行ファイルから抽出した CG 展開ルーチンを結合する作りなので、Windows 上で実行することができない。プログラムを書くことだけは Windows 上で出来るので、それを PC-98 に転送してコンパイルするのが手っ取り早い。機械語プログラムのファイルサイズを間違えるとうまく動かないので注意。