ネットでいくら調べても、誰もこういったことをやっていなかったので、しゃぁないな自分で解析してみるかと。
ザ・キャッスルを吸い出して(バッ活とか懐かしいですな)、デバッガのあるエミュレータで動作させてみると、E320Hがラファエル君のいるマップの位置であることが分かります。左上が00H、右の部屋にいくごとに01Hが足されていきます。そして、下の部屋に行くごとに10Hずつ足されていきます。ということで、スタート地点は70Hということになります。
プログラムを解析するのならば、これを取っ掛かりに「LD (E320H),A」「LD A,(E320H)」とかで検索をかけて、その周りを逆アセンブル…でしょうが、自分の場合はバイナリデータでだいたいのアタリをつけて、適当にいらってみる方式で。アーケードやファミコンのソロモンの鍵、ファミコンやMSXのフラッピーなんかは、そんなやり方でステージデータを解析できました。イシターの復活に至っては、ステージの形が2値ベタで入っていたりします。MSXフェアリーランドストーリーなんかもちょこっと圧縮はされていますが、ほぼ2値ベタです。
簡単に見たところ、前半はプログラムデータで(雰囲気で分かりますし、あれなら逆汗してみればいいかと)。そして、4000H~6300Hあたりはキャラクタデータです。キャラデータはyy-chrとかで見てみれば分かりますね。なら、ステージデータは6300H~7FFFHのところかなーと。で、このあたりを色々といらってみると…、ホラもうこういうことねと。
ちなみに、セガSG-1000版(MSX版のベタ移植)のザ・キャッスルもステージデータは同じ形式で同じように入っています。
個人的には、ファミコン版のキャッスルエクセレントを解析して、ステージデータを「ザ・キャッスル」にしたものを作りたいような気もしないではないですが、スクロールするパズルゲームはやりにくいと感じるので、あまり食指が動きません。
そして、オリジナルの広さでMSX版の仕様のキャッスルを遊びたい気もしますが、そうなるともう自力で移植するしかありません。それはファミコンやアーケードのロードランナーなんかにも言えるのですが、なぜDS版のロードランナーはチャンピオンシップの広さでエディットできないのか不満でありますな。CLR6000はスゴイと思いますが、やっぱり固定画面でやりたいのよパズルゲームは。
ログイン版X1ザ・キャッスルでは、マシン語のプログラムリストを見ると、ステージデータは1面あたり200H(512バイト)あります。もし製品版もこのデータ形式なら、100面で51200バイト必要となり、MSXのロムでは不可能です。
~~
圧縮方法でいえば、解析はしていませんが、ドラゴンバスターとかマドゥーラの翼なんかはブロック圧縮(大きなエリアを組み合わせている)でしょうね。ワンパターンな景色が続くでしょう? こういうのは分かりやすくていいのよ。
~~
つか、こんな話の続きを知りたいですか? ワシは自分とこのブログなので、好き勝手に書いてもいいのですが。どうせ誰も見ていないでしょうし、自分の備忘録として。
2025年2月4日火曜日
MSX版ザ・キャッスルのステージデータ圧縮方法を解析・その2。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿