改造しようMSX [マッピー]
マッピーを改造しよう
2014.9.25 update
MSXは本当に素晴らしいマシンですし、数多くの傑作ゲームが作られましたが、単色スプライトとPCGの色数制限のおかげで、どうしても、ファミコンなどに比べて画面がチープに見えてしまいます。
というわけで、「MSX用として発売されたゲームを、MSX2のスプライトとパレット機能を使ってグラフィックをアップグレードしてみたらかなり違った感じになるのでは」と思い、って、実際にやってみたのがこの「マッピー for MSX2」です。
メインのプログラムはほとんど触らずに、データ定義や表示部分にパッチを当てて、グラフィックのみ差し替わるようにしました。
ナムコのMSXゲームは、単色スプライトとSCREEN1という、決してグラフィック的には見栄えがするわけではないモードを使っているのですが、ゲーム性の移植については本当に素晴らしく、グラフィックをアップグレードしただけでここまで良くなりました。
タイトル画面でSELECTを押すとMSX用とMSX2用のグラフィックが切り替わります。
この動画は、turboR実機(A1ST)で動かしたものをキャプチャーしましたが、MSX2でも動作します。
パッチはこちら。
MAPPYMSX2.zip
※マッピーのROMがないと動作しません
※DISK NG2版も入れておきましたが、動作確認はしていません
※SCCカートリッジに対応しました…が、イマイチです
何をやっているのか?
MPMSX2.COMがやっているのは、以下のような処理です。
- RAM上の、オリジナルのROMでは未使用のアドレスに、今回作成したMSX2用のプログラムやデータをロードする
- オリジナルのROMの内容を、全く同じアドレス(4000H-)のRAMにコピーする(または、ディスクからROMイメージファイルをRAMにロードする)
- RAMにコピーしたオリジナルプログラムの一部を、MSX2用のプログラムにジャンプするように書き換える
- RAMのプログラムを実行する
マッピーには、確認しただけでも2つのバージョンのROMがあり、カートリッジに穴が開いたものと開いていないものでバイナリーデータが異なっています。しかも、穴開きバージョンは4000H-5FFFHと8000H-9FFFHの2箇所にプログラムが存在しますが、穴無しバージョンは4000H-7FFFHにまとまっているようでした。そのため、MSX2用のプログラムは、穴開き用がA000Hから、穴無し用は8000Hから置いています。
また、オリジナルのマッピーはRAM8KB以上のMSXで動作するので、E000H以降のRAMしか使っておらず、ワークエリアは使い放題でした(^_^)
MSX2用に何をしたのか?
具体的に、どの辺りを変更したのか、ずらっと書いてみます。
- SCREEN1をSCREEN4に変更(VDPレジスタの初期化を修正)
- パレットデータを変更
- スプライトやPCGデータの完全リニューアル
- パターンジェネレータテーブルのアドレスを変更(SCREEN1は256文字分→SCREEN4は768文字分)
- カラーテーブルのアドレスを変更(SCREEN1は8キャラずつ色指定できるので32バイト→SCREEN4は文字のラインごとに色指定ができるので6144バイト)
- スプライトアトリビュートアドレスを変更(スプライトモード2を使う場合、このアドレスより512バイト前に自動的にスプライトカラーテーブルが作られるため)
- すべてのスプライトを2枚重ねに変更(内部的に持っている座標やIDなどのスプライト用ワークを、VRAM転送時にスプライト2枚分の領域にコピーする)
- その他、これらの変更に伴う細かい処理(256文字分のパターンデータを768文字分のVRAMに展開するとか、カラーチェンジの処理とか)
PCGデータは、Windowsで描いて、自作のコマンドラインツールでアセンブラソースに変換しました。
スプライトデータは、「SEPT」というMSX2用ツールで描きました。本当に便利でした。作者の方に感謝です。
もっとこうしたら良くなるんじゃね?
スムーズスクロールにしたら良くなるんじゃね?
MSX2はSET ADJUST機能があります。VDPレジスタをいじるだけで簡単に使えます。これを使えばスムーズスクロールもできそうですし、実際に試してみたりもしました。…ただ、一番面倒なのは、「スコア表示はスクロールさせない」というところだったりします。スコア部分の表示が終わったところで走査線割り込みでレジスタを書き換え、さらにVBLANKで戻す、ということをやらなければならず、まあ、そんなに難しいことではないのですが………面倒だったので今回は見送りました(^_^;)
SCC対応にしたら(FM音源対応にしたら)良くなるんじゃね?2014.9.25 Update!
マッピーのBGMの波形をSCCで再現したら素敵ですねー!また、SCCカートリッジを持っていない人でも、FM音源に対応したら素敵ですねー!……はい、そう思います。ただ、サウンドドライバの解析とか、差し替えとかって、結構大変なんですよね…。プログラムはもちろん、データの持ち方やリクエスト方法もソフトごとに違ったりしますし、効果音とかも鳴らさなければならないですし……。サウンドデータもゼロから作ったりする手間も考えると、ちょっとコストが高いかなあと思い、断念しました。
SCCカートリッジに対応してみました。…といっても、PSGのレジスタに送られるデータをそのままSCCに出力しただけです。波形は本物に近いもので鳴らしているのですが、ソフトエンベロープを使っていなかったり、3チャンネルしか使わなかったりするので、どうもイマイチです。。。これ以上クオリティーを上げるには、演奏データを完全オリジナルで作るしかなく、MUSICA等でデータを作って、ドライバを載せて、サウンドリクエストしている部分を解析して…という作業が必要になるので、ちょっと厳しいです(;_;)
フロア増やしたら良くなるんじゃね?ボーナスステージ増やしたら良くなるんじゃね?
すみません…あくまでも、「MSXマッピーをMSX2にアップグレード」ということで始めたので、「オリジナル版の改良」となると、今回の目的からはちょっと外れてしまうかなあと…。というか、正直言うと、そこまでは私には無理です!\(^o^)/オテアゲ
次はどのゲーム?
アップグレードネタとしては、もう、これで終わりでいいかなあと(^_^;)
他のナムコのタイトルで考えると、例えば、ギャラクシアンやギャラガは、ファミコン並になるくらいであまり感動がない気がしますし、ディグダグは結構良くなりそうですが、スプライトの枚数を限界まで定義しているようで、簡単には2枚重ねにできず、手間がかかりそうです。ドルアーガはturboR用BASICの素晴らしい作品がありますし…。
他社の作品とか、面白そうなものがあれば、またやってみるかもしれませんが、とりあえずは終わりということで(^_^)
DEEP! P6! DEEP! MSX! に戻る