R-TYPE(MSX)を改造しよう

R-TYPEはFM音源対応ですが、「外付けのFM-PACは認識しても、内蔵FM音源は認識しない」というバグがあります。

なんとかして内蔵FM音源を認識させてしまおう、というページです。

FM音源チェックをスキップする方法

まず、スロットには何も入れずにBASICを起動させて、以下のプログラムを入力(またはロード)してください。

10 FOR I=&HD000 TO &HD047
20 READ A$:POKE I,VAL("&H"+A$):NEXT
30 PRINT"SET R-TYPE AND PUSH ANY KEY"
40 MS=3:SS=0:POKE&HD001,128+SS*4+MS
50 RS=1:POKE&HD00E,RS:POKE&HD032,RS:POKE&HD039,RS
60 A$=INPUT$(1):DEFUSR=&HD000:A=USR(0)
100 DATA 3E,83,26,40,CD,24,00,21
110 DATA 00,40,01,00,40,3E,01,C5
120 DATA CD,0C,00,C1,77,23,0B,78
130 DATA B1,20,F2,3E,C3,32,98,40
140 DATA 21,31,D0,22,99,40,3E,C9
150 DATA 32,EC,42,32,9F,FD,C3,10
160 DATA 40,3E,01,26,40,CD,24,00
170 DATA 3E,01,32,A0,FD,26,80,CD
180 DATA 24,00,C3,98,40,00,00,00

RUNすると画面にメッセージが表示されるので、 電源を入れたまま、R-TYPEのROMを スロット1(※)に入れてから、何かキーを押してください(自己責任)

R-TYPE が自動的に起動し、FM音源を内蔵した機種であれば、FM-PACがなくてもFMサウンドが鳴ると思います。

※ FM音源内蔵機種はMSX2+以降なので、RAMのスロットを3-0と決めうちしています(40行)。もしメインRAMが3-0以外に存在する場合、MSとSS の値を書き換えてください。

※ 50行の "RS=1" が R-TYPE の存在するスロット番号になっています。もしスロット1以外で実行させたい場合はこの値を変更してください。

ROMイメージを修正する方法

ROMイメージを直接修正して、FM音源対応版ROMを作ってしまう方法です。

ROMイメージの以下の2箇所を修正してください。

書き換えたROMイメージファイルを R-TYPEマッパーでROMに焼けば、内蔵FM音源に対応したバージョンになると思います。

【注1】MegaFlashROMSCC+SD で FlashROMに転送する場合、opfxsd コマンドがマッパーを自動的に判別してくれますが、もし正しく認識されないときは /M5 オプション(R-TYPEマッパー指定)を付けてください。

【注2】エミュレーターで実行する場合、改造したROMイメージはR-TYPEと判別されなくなってしまうことがあるので、ROMをセットする際に「ROMタイプ(blueMsx)」や「Select Cartridge Type(openMSX)」を「R-TYPE」に切り替えてください。

最後に

FM音源の有無は、スロットの 401CHから"OPLL"の文字列があるかどうか で調べるのですが、R-TYPEではそのチェックプログラムにバグがあり、内蔵FM音源を正しく検出することができません。

ただし、最初の "O" のチェックだけは正しく動いているようだったので、スロットの 401CH が "O" であるROMを発見した場合、そのスロットをFM音源とみなす ということにしてしまいました。

1文字だけで判断しているので、もし、FM音源ではないのに 偶然 401CH に "O" の文字のあるスロットを発見してしまった場合は正しく動きません。運が悪かったと思って諦めてください(我ながら酷い…)。


DEEP! P6! DEEP! MSX! に戻る