2011年10月30日日曜日

MD Rammyでナックルズ in ソニック2

またnさんからネタ貰いました(笑

ありがとうございますm(_ _)m

内容 「ソニック&ナックルズ+ソニック2ってエミュで出来るの?

PICT6612

ご存知のようにソニック&ナックルズ(以下、S&K)の上にカセットを差すとゲーム内容が変わります。

一応書いておくと、

・S&K+ソニック1 = ブルースフィア(フルバージョン)

・S&K+ソニック2 = ナックルズ in ソニック2

・S&K+ソニック3 = ソニック3 & ナックルズ

・S&K+MD対応ゲームカセット = ブルースフィア(レベル1のみ)

ということになってます。

エミュで動かそうとした場合、基本的にS&KのROMデータの後ろに各ゲームのROMデータをくっつけるだけで動きます。

んが、ソニック2だけは動きません。

ってことで実験です。

sk02

まずROMを吸い出し、それぞれの動作確認のため、エミュで実行してみる。

(念のため、上画像のファイルの日付が1990/11/21になってますが、これはRetrodeの仕様で、全てこの日付になります)

上画像のSnK.binは各ソニックを単にくっつけただけのROMデータです。

sk06 ←S&K単体で起動

・・・普通のソニック&ナックルズです。

sk13 ←ソニック1をくっつけて起動

因みに最初の画面でABC同時押しで上画面になります。

sk14 ←参考までにS&K+ブロックアウト

コード固定、レベル変更無しです。

* ファンタシースター復刻版は使えません

sk04 ←ソニック2をくっつけて起動

わかってはいましたが起動しません(笑

sk05 ←ソニック3をくっつけて起動

これは問題無し。

というように、ソニック2をくっつけた場合だけ、エミュで起動しません。

ではどうやったら動くのか?ですが、S&K+ソニック2の場合、それぞれのROMの他に、ExtraROMデータというものが必要だったりしますw

PICT6608 PICT6609

S&Kの基板を見ると、汎用ロジック以外にマスクROMが2個載ってます。

実際に外して調べたわけではないので確定ではないですが、おそらく左の小さいほうのマスクROMにデータが入っているんではないかな?と思う。

で、ExtraROMを吸い出すにはどうするか。

確認できてるのはRetrodeのみで吸い出すことが可能です。

ただし、こちらのページにある改造(線2本追加)が必要ですw

PICT6610

因みに、今後発売されるRetrode2は対策済みです

現行のRetrodeにこの改造をしておけば、「たぶん」新しいファームウェアでMDのセーブデータ(SRAM&FRAMのみ)が読み込めるかと思われます。

sk01

Retrodeの対策前と対策後のデータを比較すると、ファイルサイズはどちらも+256KByteされていますが、0x300000以降のデータが違うことがわかります。

当然fixのデータが正しいわけですが、ホンコンやMD吸い出し君、パソファミなどではbugのほうのデータと同じ吸い出され方をするので、当然エミュでは動かせません。

んでは確認できたところで、メインのSweet Rammyでデータをとって見ることにしますw

と、最初に書いておくと、S&KのExtraROMを吸いだせるRammyのバージョンは現在(これ書いた日付)0.02のみです。

【変更:今日公開の最新版に置き換えました】

吸い出すにはポートの変更をしなくてはいけないため、ポート変更不可のver.0.01ではダメなんですね(^-^;

復刻版は、カートリッジROMアドレス空間の変更だけだからできた、ということかと。

(参考:Future Driverさんのメモリマップ

sk15

データの出方は上画像を見てもらうとわかると思います。

通常のROM読み込みの場合だと、0x300000以降はFFFF・・・になっちゃうので、ULコマンドでアンロックし、ROM→RAM読み込みに変更してやります。

どうやらS&K自体ではRAMとして認識させているようですね。

あ、当然ながらExtraROMはソニック&ナックルズに付いてるROMなので、S&K単体でデータが出てきます。

(単体でロックしたまま0x300000以降を読むと上とは値が異なりますw)

sk09

わかったところで256KByteのデータを全て吸い出します。

sk10

でもって、出来上がったHEXデータをBINに変換し、先に作っておいたS2K.BINの尻にくっつける。

こうすると、

sk12

無事、ナックルズ in ソニック2がエミュで動かせるようになるのでした(^-^)

とまぁ、そんなわけで、やっぱりSweet Rammyは凄かった(笑

8 件のコメント:

YoGirl さんのコメント...

全然知らなかったけど、ソニック2って特殊だったのね。
そして Version 0.02 を公開して見ました。
ポート変更出来るはず。
そしてコマンドが増えました。
あと、大文字小文字を区別しないようにしてみました。
REコマンドは実装しただけで検証してないです。(´^ω^`;)

ぽんRev さんのコメント...

開発お疲れ様です(^-^)
でもって、起動画面見てビックリっ!
名前まで入れてくれるとは思っても見ませんで(汗
ありがとうございますm(_ _)m
ホンキでビックリしました(笑

で、早々触らせていただいたのですが、どうもULコマンドが効かないみたい?
UL.000000の後OKにならず、数値打ち続けても終わらなくて(^-^;

あと、ポートの変更も効いていないのか、WDコマンドのアンロックもできないです。

トアとナックルズで動作確認しました。
不思議(?)な事に、ナックルズでは0x300000以降のデータも違ったものが出てくるんですよ(笑
これはプロテクトの関係かなぁ、とか思ってみたり。

一度ご確認いただけますでしょうか。
動作確認が取れ次第、本文記載の0.00を0.02に変更したいと思います~

YoGirl さんのコメント...

修正版0.02に置き換えて見ました。
Sonic2がどっか逝ってしまって見つからないんで、とりあえずS&K単体でこんな感じになりました。
あと、書き込みの時はPWコマンドで設定したアドレスに書き込むようになりました。
(読み込み用と書き込み用のアドレスが別々になった)

p+.000001
OK
pw.a130f1 ← UL使わずに設定して見る
OK
pr.300000
OK
wd.00000101
0x0001
OK
rd.000010 ← ぽんさんと同じになるハズ!
4FF8FE0031FC4EF9FFF021FC00300106
OK

ULコマンドを修正したんで、この例の0xA130F1に0x01を書き込んでる部分をULコマンドに置き換えても同様のデータが読み出せる様になりました。

ぽんRev さんのコメント...

早々の修正ありがとうございます(^-^)

ULコマンドOKです。
ポート変更ができる事も確認しました。
まだEEPROMのとこは弄ってないですが、コチラは追々試してみたいと思います。

で、先のコメで「データの違った・・・」と書いた件、ゴメンナサイ、私のミスです(爆
ソニック2を付け忘れてたので違うデータが出てきただけでした(^-^;

ぽんRev さんのコメント...

ご報告です。
!です。
これでわかりますよね(^-^;
とりあえずOKってことでw

YoGirl さんのコメント...

お。(笑)
成功ですね。
EEPROM搭載カートリッジはGREATEST HEAVIWEIGHTSしか手元に無いんで、もしセガ以外の物があったら試してもらえるとうれしいです。

ぽんRev さんのコメント...

もしかしたらNBA JAMあるかと思ったんですが、見つからず(^-^;
なので、他のもの買い序に探してみますw

>SRAMカートリッジ
そういえば現在のRammyぐらいなら自己増殖可能ですね(笑

>超高速シリアルインターフェース
是非~!

ぽんRev さんのコメント...

*Greatest Heavyweights $2.49
*NFL Quarterback Club '96 (Label Damage) $0.49
*NHLPA Hockey '93 $0.99
*Sports Talk Baseball $0.99
*Super Street Fighter II: The New Challengers (Complete) $7.99

とりあえず該当するものこんだけ手配。
・・・1個種類違うけど(笑

NBA JAMは何となくあるとこ予測が付いたんだけど、掘り出すのが大変なので週末にでも(ぉ