すべてのゲームを改造しよう! MSXturboR専用 [なんでもSRAMセーバー]
きっかけ
MSXturboRは、MSXの最終進化型マシンでありますが、シリーズの中でturboRだけ、とても大きな欠点があります。
それは、カセットテープのインターフェースが削除されてしまったことです。
フロッピーディスクの時代になっていたとはいえども、MSXが持つ「互換性」という大きな武器を切り捨て、MSX初期に発売された数多くのテープ版ソフトをプレイできなくしてしまったことは、とても残念に思いました。
また、ROM版のゲームであっても、ゲーム途中のデータをカセットテープにセーブするようなものはturboRでは不可能なので、一気にクリアしなければなりません。
例えば、「メタルギア」。
せめてFMPACに対応していれば、turboRでも途中セーブができたのに…。
というわけで、せめて「メタルギア」だけでも、無理やり対応させてしまいましょう。
10倍カートリッジを使えば?ははははは…
作り方
- turboRのカセットテープ用BIOSルーチンはすべて潰されているので、BIOSを書き換えて、自前のルーチンへ飛ばすようにする。
- セーブ用BIOSが呼ばれた場合、テープに出力しようとするバイナリーデータをそのままPAC/FMPAC内蔵SRAM(4KB)に書くようにする。ロード用BIOSが呼ばれた場合は、逆にSRAMから読んだデータをそのまま返すようにする。
- 複数のファイルをセーブしたいけど、ファイルシステムを作るのは効率が悪いし面倒くさいので、PACのブロック単位(512バイト単位)で、セーブ/ロードの際に頭出しができるようにする。
- せっかくなので、日本語変換などに使っているA1ST/A1GTの内蔵SRAM(16KB/32KB)にも対応して、PACがなくてもセーブができるようにする。
- メモリやVRAMの退避や復帰については、いつでもメモリーエディターと同じ方法を使う。
実行ファイル
なんでもSRAMセーバー(NANDEMO SRAM SAVER)
ndsram.zip【2017/2/9 update】
- MSXturboR(A1ST/A1GT)専用です。
- MegaFlashROM等のROMカートリッジか、ディスクドライブが必要です。
- ディスク版の場合、電源を入れたままROMを差す、いわゆる「後差し」が必要なので、自己責任で行ってください。
準備
zipファイルの中には、以下の6つのファイルがあります。
NDSRAM.ROM
… MSXturboR専用・ROMイメージ
NDSRAM.BIN
… MSXturboR専用・bloadファイル
NDSRAM64.ROM
… MSX1(RAM64KB)専用・ROMイメージ
NDSRAM64.BIN
… MSX1(RAM64KB)専用・bloadファイル
NDSRAM64.wav
… MSX1(RAM64KB)専用・bload用音声ファイル
NDSRAM64.cas
… MSX1(RAM64KB)専用・エミュレーター用テープイメージ
※MSX2/2+は、MSX1用のものを使用してください。ただし、SUB-ROM呼び出しの都合で、ほとんど動作しないかもしれません。
ROM版
NDSRAM.ROM
をMegaFlashROM等のROMに焼いてください。
NDSRAM.ROM
をスロット1に、市販ゲームソフトをスロット2(拡張スロットの場合は2-0)に入れて、本体を立ち上げてください。
- PAC/FMPACを使う場合は、どのスロットに入っていても構いません。拡張スロットでもOKです。
DISK版
NDSRAM.BIN
を、MSX用にフォーマットしたフロッピーディスクにコピーしておいてください(ディスクイメージではないので、ファイルとしてコピーしてください)
- PACを使う場合は予めどこかのスロットに入れておいてください
- 本体を起動し、DISK-BASICを立ち上げてください
- 電源を入れたまま、市販ゲームソフトをスロット1あるいはスロット2に入れてください(自己責任で)
- NDSRAMの入ったフロッピーディスクをドライブにセットし、BASICから
bload"NDSRAM.BIN",r
と入力してください
- スロット番号を聞いてくるので、ゲームソフトを入れたスロット番号を押してください
TAPE版
NDSRAM64.wav
を、カセットテープにコピーしておいてください(PCで再生する場合は、データレコーダーケーブルをPCに繋いでおいてください)
- PACを使う場合は予めどこかのスロットに入れておいてください
- 本体を起動し、BASICを立ち上げてください
- 電源を入れたまま、市販ゲームソフトをスロット1あるいはスロット2に入れてください(自己責任で)
- NDSRAMの入ったカセットテープをデータレコーダーにセットし、BASICから
bload"cas:",r
と入力してください(PCで再生する場合は、ここでwavファイルを再生してください)
- ロードが終了すると、スロット番号を聞いてくるので、ゲームソフトを入れたスロット番号を押してください
使い方
ゲーム中に、テープセーブ・テープロードのBIOSが呼ばれると、自動的に「なんでもSRAMセーバー」が起動します。
- カーソルキー上下で、「本体のSRAM」「PAC/FMPACのSRAM」のどちらを使用するか選択してください。
- カーソルキー左右で、セーブ/ロードする先頭ブロックを指定してください。本体SRAMは、便宜的に 512バイト×20Hブロックに分けてあります。
- 使用するSRAMとブロックが確定したら RETURN を押してください。セーブ/ロードが始まります。
- [E]を押すと、選択中のブロックをFFHで埋めます。
- ロード・セーブ中に[ESC]を押すと途中でキャンセルされます。
注意事項
- 本体SRAMは、A1GTだと32KBあるそうなのですが、A1ST合わせで作ったので16KBしか使えません。
- 本体SRAMにセーブしたデータは、ワープロソフトや漢字BASICで漢字変換を行うと破壊されます。
- セーブデータが1ブロック(512バイト)で収まらない場合、次のブロックへそのまま書いて行きます。ロードする際は、「セーブ開始位置」のブロックを選んでください。
- セーブをするたびに、使用した分だけブロック番号がインクリメントされます。
- 「キングコング2」のセーブ・ロード機能(「火の鳥」をスロット1、「キングコング2」をスロット2に差して起動)は、ディスク版NDSRAMでは動作しません。
- やっていることはカセットテープ入出力のエミュレーションなので、BIOS経由でテープの入出力を行っているソフトは一応すべて対応している…はずですが、そもそも、この機能を必要としているソフトはそんなにない気がします(^_^;)
また、turboRのBASICからテープ用のload、bload、cload等のコマンドが削除されているため、BASICのソフトや、BASICコマンドでセーブを行っているソフトは動作しません。
最後に
PACや本体SRAMの仕様がなかなか見つけられず、MSX Resource Center のフォーラムや、openMSXのソースを参考に、手探りで実装したので、動作にアヤシイところが多々あるかもしれませんが、ご容赦ください。
ご意見・ご質問は twitter で @tiny_yarou まで、よろしくお願いします。
動画
DEEP! P6! DEEP! MSX! に戻る