MSXのデゼニランドをP6で動かすチャレンジ
スペハリはP6からMSXの移植でしたが、ふと、「逆もできるのでは?」と思ったので、やってみることにしました。
とはいえ、MSXは、P6初代機に比べたら段違いにグラフィック系が強いです。
解像度が同じ256x192でも、MSXは横8ドット単位で2色使えますし、P6には存在しないPCG機能やスプライトもあり、MSX→P6の移植は、正直かなり厳しいです。
もし、
・PCGを使わない
・スプライトを使わない
・SCREEN 2 で単色しか使わない
そのような条件が揃えば、P6への移植も現実的になりますが…。
まあ、そんなソフトなんて、あるはずもな…
ありました!
コマンド入力アドベンチャーゲームのレジェンド、「デゼニランド」です。
他機種版はタイリングペイントなども使ったカラフルで美しいグラフィックなのですが、MSX版は容量の都合で、白地に青の線画になっています。
また、PCGやスプライトも使っていないように見受けられますし、これならP6で動かすことができるかもしれません。
MSX版を解析してみたところ、以下のような特徴がありました。
・他機種版はRAM64KBで動作するが、MSX版は32KBで動作する。
・SCREEN 2 を完全にグラフィック画面として使っている(PCGは使っていない)。
・VRAMへのアクセスはすべてBIOSを通しておこなっている。
・メッセージ表示は、ROMフォントやBIOSを使わず、自前のフォント、自前のルーチンで表示している。
P6に有利な要素がいっぱいです。
まずは、MSXのソースを見ながらP6用に再プログラミングすることにしました。
しかし、プログラム部分はすんなり行ったものの、データ領域と思われる箇所に大量の直アドレスが埋め込まれており、これを全て解決するのはあまりにも大変そうです。
そこで、途中で方針を変更して、メモリ配置は一切変えずに、プログラム部分にパッチをあてることにしました。
その結果、こんな感じに。
画面初期化やVRAMアクセス部分、テープの読み書き以外は、MSX版のプログラムをほぼそのまま使っていますが、きちんとADV0の最後まではプレイできました。
ついでに、ADV1~ADV5までの中身を覗いてみたところ、基本部分はほぼ同じプログラムのようだったので、自動的にパッチを当てるツールを作ってみました。
パッチツール
作業の流れ
- MSX版デゼニランドから、バイナリーデータを抽出する。
MSX上で bload"cas:" した後にフロッピーに保存したり、テープイメージになっていればそこから抽出するなど、どうにかしてバイナリーデータにする。
ちなみに、アドレスは以下の通り。
ADV0 | &h8200-&hCBFF |
ADV1 | &h8200-&hD1FF |
ADV2 | &h8200-&hD2FF |
ADV3 | &h8200-&hD6FF |
ADV4 | &h8200-&hBAFF |
ADV5 | &h8200-&hDEFF |
- PCのコマンドラインで、例えば、以下のようにパッチを当てる。
dezpatch.exe dezmsxadv0.bin dezp6adv0.bin dezp6adv0.p6
dezmsxadv0.bin は事前に抽出した MSX版のADV0のバイナリーファイル。
dezp6adv0.bin がパッチ後の出力ファイル名。これはP6の
メモリにロードすれば実行できる。
dezp6adv0.p6のように3つめのファイル名を指定すると、エミュレータでロード・実行できるテープイメージファイルを作成する。
- 実機(mkII以降の場合、MODE2,PAGE2)でプレイする場合、テープイメージを作って NandemoPIGA を使えば、ローダーと本体で別々のWAVファイルが作成されるので便利。
作業はこれだけです。
MSX版デゼニとP6本体をお持ちの方は、ぜひ試してみてはいかがでしょうか。
DEEP! P6!/MSX! に戻る