シリアル通信を使ったMSXturboR専用「いつでもメモリーエディターSR」はこちら
ROM版のゲームであっても、実行中に変化するデータは、すべて本体のRAM上にあります。
そこには、自機の数、ステージ番号、ヒットポイント、所持アイテムなど、ゲームによって様々な情報が保存されていますし、それらをちょっとだけいじることで、普段はできないような遊びもできてしまいます。
現役稼働中のオンラインゲームでこのような行為は御法度ですが、MSXはもう30年前のマシンですし、完全オフラインなので誰にも迷惑をかけるわけでもありませんし、もう皆さん散々遊び尽くしたと思いますし、たまにはこういう遊び方もいいんじゃないかなーと思って、やってみました。
もちろん、エミュレーターなどを使えば簡単にできるのですが、実機でやれるのは、ちょっと楽しいです(^_^)
以下のような方針で作ってみました。
いつでもメモリーエディター(ITSUDEMO MEMORY EDITOR)
itsmemo.zip【2017/1/30 update】
zipファイルの中には、以下の4つ(+おまけ2つ)のファイルがあります。
ITSMEMTR.ROM
… MSXturboR専用・ROMイメージ
ITSMEM64.ROM
… MSX(RAM64KB)/MSX2/MSX2+用・ROMイメージ
ITSMEMTR.BIN
… MSXturboR専用・bloadファイル
ITSMEM64.BIN
… MSX(RAM64KB)/MSX2/MSX2+用・bloadファイル
おまけ【2017/1/30追加】
ITSMEM6X.ROM
… MSX2/MSX2+用・SUB-ROMコール対応ROMイメージ
ITSMEM6X.BIN
… MSX2/MSX2+用・SUB-ROMコール対応bloadファイル
ITSMEMTR.ROM
(またはITSMEM64.ROM
等)をMegaFlashROM等のROMに焼いてください
ITSMEMTR.ROM
をスロット1に、市販ゲームソフトをスロット2に入れて、本体を立ち上げてください
ITSMEMTR.BIN
(またはITSMEM64.BIN
等)を、MSX用にフォーマットしたフロッピーディスクにコピーしておいてください(ディスクイメージではないので、ファイルとしてコピーしてください)
bload"ITSMEMTR.BIN",r
(または bload"ITSMEM64.BIN",r
)と入力してください
ゲーム中に以下のコマンドで「いつでもメモリーエディター」が起動します。
[CTRL] + [SHIFT] + [GRAPH]
… いつでもメモリーエディター起動
[CAPS] + [CTRL] + [SHIFT] + [GRAPH]
… いつでもメモリーエディター起動(シャドウモード)
※通常起動で画面が壊れてしまうようなゲームタイトルの場合、シャドウモードを試してみてください。画面は見えませんが、裏ではエディターが起動しているので、コマンド等は有効になります
エディターで使えるコマンドは6種類です。
アドレスやデータは、すべて16進数で入力してください。アドレスは4桁、データは2桁固定です。
入力を途中でキャンセルする場合は、ESC または BS を押してください。
ITSMEM6X
を作ってみました。運がよければ動くかもしれないので、試してみてください。
アイデアの段階では、どこまでできるか全く分からなかったのですが、予想よりもいい感じになりました。
同じ方法で、完全に別のアプリ(きちんとしたデバッガーとか)を起動することもできますが、実際は割り込みのタイミングでしか止められませんし、本格的なデバッグをするのは難しいと思います。
ちなみに、エディターからゲームに復帰する時、VDPを元の状態に戻しているのですが、VDPの値はリードすることができないので、RAMに保存してある値を見ています。そのため、RAMに値をバックアップせずにVDPを変更しているタイトルは、エディターからゲームに戻ると画面が乱れてしまいます(ハイドライド3の周辺色とか)。そういうタイトルのために「シャドウモード」を入れました。画面を見なくてもなんとなくわかるように、音を変えたりしています。ただ、本当に苦肉の策です(^_^;)
また、目指したのは「コナミの10倍カートリッジ」なので、データをサーチしたりレジスタを見たりといったコア向けな機能は実装していません。その辺りをガンガンいじりたい人は、エミュレーターでということで…
あと、MSXでの開発の約束事は完全に無視しているので、環境によって動いたり動かなかったりするのはご了承ください!
ご意見・ご質問は twitter で @tiny_yarou まで、よろしくお願いします。