DEEP! P6!/MSX! へ戻る
MSXturboRの本体内蔵FM音源を無理やり見えなくしてしまおう
MSXturboRおよびほとんどのMSX2+には、本体にFM音源が内蔵されています。
そのため、ゲームなどのBGMは自動的にFM音源で鳴ってしまうことが多く、「あえてPSG版の曲を聴きたい」と思っても、なかなか聴くことができません。
そこで、内蔵FM音源を見えなくして、無理やりPSG版の曲を聴いてしまおう、というのが、この企画の趣旨となります。
ダウンロード
使い方
- ダウンロードした MURIPSG.COM を、MSX-DOS(MSX-DOS2)の入ったディスクにコピーしてください。
- DOSを起動したら、DOSプロンプトから MURIPSG と入力してください。
- ツールが起動すると、ディスクを入れるように促されるので、FM音源対応のゲームディスクなどを入れて、何かキーを押してください。
- FM音源が無視されて、PSGの曲が演奏されれば成功です。
- もしFM音源が鳴ってしまったり、アプリケーション自体が起動しない場合は、そのゲームには非対応となります。すみません(+_+)
- turboR専用の高速モードを使ったソフトについては対応していません。
どうやってるの?
まず、FM音源(MSX-MUSIC)および turboR の仕様についてまとめます。
- FM音源が実装されているかは、アプリケーション側で各スロットを検索して、特定のアドレスに"OPLL"という4文字があるかどうかでチェックしている
- MSXturboRでは、スロット構成が決められており、FM音源は必ず拡張スロット0-2にある
- MSXturboRは、BIOSをRAM上にコピーして高速動作する「DRAMモード」というものが存在し、うまく使えばBIOS書き換えが可能
ということで、以下のようにBIOSを書き換えることにしました。
- スロット切り替えルーチン ENASLT(0024H)→ 拡張スロット0-2が指定された場合は無視するようにする
- スロットからの読み出しルーチン RDSLT(000CH)→ 拡張スロット0-2が指定された場合はそのままRETURNする(Aレジスタ=88Hのまま)
- R800とZ80の切り替えルーチン CHGCPU(0180H)→ 何もしないようにする
1. 2. を行うことで、"OPLL" という文字列のチェックに必ず失敗するようになり、アプリケーション側がFM音源を見つけられなくなります。
ちなみに、1. 2. はシステムROM側にもMSX-DOS側にも同一のルーチンが存在しており、どちらを使うかはアプリケーションによりますが、
DOS側のスロット切り替え(必ずRAM上に置かれる)を使っているアプリケーションであれば、turboRではないFM音源内蔵MSX2+であっても、改造BIOSが有効になるため、うまく行くかもしれません(未確認)。
また、turboRは、DOS1モードでディスクにアクセスすると、強制的にCPUが「Z80 ROMモード」に切り替わってしまいます。
このツールは、turboRを「Z80 DRAMモード」という隠しモード(CPUはZ80だけどBIOSはRAM上にある)を使っているため、3. の対応を入れることで、ROMモードに戻されないようにしました。
これらの事前準備をしてから、アプリケーションディスクのブートセクタを読み込み、そこにジャンプしています。
turboR以外で使う場合
上にも書きましたが、DOS側のスロット切り替えルーチンを使っているアプリケーションであれば、MSX2+でもうまく行く場合があります。
ただし、このツールは「拡張スロット0-2を無視する」というものなので、他のスロットにFM音源がある機種(例えばSONYとSANYOのMSX2+)では動作しません。
一応、SONYとSANYO機のための「拡張スロット3-3を無視する」というバージョンも用意したので、該当機種をお持ちの方は、DLしたファイルにある MURIPSGS.COM を使ってみてください。
(ただし、動作は一切未確認となります)
最後に
いつものように、思いつきでやってみました。
一部のPSGマニアな方くらいしか喜ばないかもしれませんが(^_^;)、ハードウェアを改造しなくても、ソフトウェアだけでこういうこともできるぞ、ということで。
ご質問等は Twitter: @tiny_yarou までお気軽にどうぞ
DEEP! P6!/MSX! へ戻る