Small Demonstration Part ex.2


img
他機種のプログラムとデータを P6 上で動かしてみます。
せっかく FM 音源が載っているのに生かす機会が無いというのは寂しいので。





■ PC-88SR 用サウンドドライバを PC-6001mk2/66/SR で動かす

PC-88 のゲームで使われているサウンドドライバにパッチを当てることで、ほぼそのまま PC-60 シリーズで動作させます。
CPU は同じですが性能が大きく違うので、音楽を鳴らすだけでも必死です。
シフトキーを押しながら立ち上げると内蔵判定を飛ばして外付けドライブとみなして動きます。66/SR+外付けの場合にどうぞ。

作成キットのみです。ドライバと曲データはオリジナルのものを各自で用意してください。
使用に際しては個人使用にとどめ、自己責任でお願いします。配布・公開は厳禁です。

対応機種は PC-6001mk2/PC-6601 + FM音源カートリッジ、または PC-6001mk2SR/PC-6601SR です。
メディアは 1D イメージで作成されます。

★ 作成手順

例としてソーサリアン 88SR 版の手順を示します。Ys もほぼ同じです。

まず、作成キットを適当な場所に解凍しておきます。

DMP SOFT.さんの音源エミュレータ hoot 用のツールを使用します。
上記サイトより「PC-88用ゲームのファイル抽出プログラム」の項目より、以下をダウンロードします。他機種のものと間違わないように。

・Ys/Ys2/Ys3 → ys88file.zip
・ソーサリアン → sorc88file.zip

使い方は中の README.txt を読みましょう。コマンドプロンプトでゲームディスクのイメージファイルからファイルを抽出します。
README.txt には zip で圧縮するとありますが、圧縮せずに抽出されたファイル群をそのまま使います。PATCH というファイルは使いません。

※ Ys1 ではいくつかのファイルのリネームが必要です。
※ Ys1 の別バージョンには対応していません。
※ ソーサリアンは基本シナリオのみ対応しています。

ファイルの抽出が出来たら、作成キットの mus フォルダに全部入れます。以下の要領で。



演奏に必要なファイルも、先の README.txt に全て記載してくださっています。
大量にあるので確認が大変かもしれませんが、mus フォルダに余計なものが紛れ込んでも特に問題はありません。足りないと曲鳴らないですが…。

その後、makedisk.bat をダブルクリックするか、コマンドプロンプトより
D:\test>makedisk.bat  
とすると、sormus60.d88 に mus フォルダのファイル群が書き込まれます。
できあがったイメージはエミュレータなりで動作確認すると良いでしょう。FM音源オプションを ON にするのを忘れずに。



操作は最下行に書いてありますが、他に [ESC] で停止、[F1] キーで CRTKILL (トグル動作)です。
CRTKILL は、画面が砂嵐になりますが、全体的に高速化します。特に Ys1 は重いので有効だと思います。
[F5] キーを押すとオートプレイになります。が、P6 の処理速度の関係で演奏時間は正確ではありません。



■ 後 記

動かしてみると分かると思いますが、とても重いです。
テキストベースなのに、曲選択でキーを押すたびにテンポが遅れる始末。
原理的には音源に書き込む全てのデータをハンドル出来るので、レベルメータや速度変更なども出来そうだったのですが、
あまりの遅さに構想段階で断念しました。画面の右下部分がやけに寂しいのはその名残です。

88SR 用ドライバからは、音源ポートを PC60 向けに書き換えることと、余計な I/O ポートアクセスを潰すことで対応しています。
ソーサリアンは自己書き換えもあるので、単純な置換でなくパッチ処理に飛ばすことで対処しています。
割り込み処理は完全に PC60 ベースで扱い、1/600 秒タイマー割り込みは PC60 の 2ms タイマー割り込みに変更、
FM 音源割り込みは、メインループで FM音源ステータスフラグを監視し続けるポーリング処理で実現しています。

用途としては、曲のテンポ管理を FM 音源の Timer-B で、効果音管理を 1/600 秒タイマー割り込みで行っているようです。
Ys1 と Ys2 は重いのと、効果音に今のところ未対応なのでタイマー割り込みそのものを切っています。それでも重いですが。

わりと有名な話ですが Ys1 には 5 種類の音源ドライバが入っています。
そのうち 3 種類がドライバ・曲オブジェクトのメモリ配置がまるで異なっており、テキストVRAMを置く場所が危うく無くなるところでした。

本プロジェクトの趣旨は PC60 の FM 音源に本来の能力を発揮させてみる、ということです。
他の音源ドライバの対応も出来るかもしれませんが、やはり楽曲はオリジナルに近い環境で聞くのが一番だと思います。


以下の方々の資料および解析結果を参考にしました。ありがとうございました。

・Hoot 用 ソーサリアン88パッチ (UME-3氏)
・「ソーサリアン〜内部解析からわかったこと〜」(PI.氏)
・p6fmdrv ソースコード (よっしゅ氏)
・PC-6001VW ドキュメント (Bernie氏)
・PC-6001V ソースコード (ゆみたろ氏)
・iP6 Plus ソースコード (Windy氏)
・FDD 周りで多くのアドバイスを頂きました。(えすび氏)

▲ TOP