2011年10月27日木曜日

MD Phantasy Star復刻版をRammyで吸い出す

先回には追記せずに新規で書いちゃうことにw

さて、昨夜というか今朝方というか、またまた素晴らしい事が起こりました。

この一つ前を見てもらうとわかると思いますが、MDカートリッジの吸い出しで奇問とされてきたファンタシースター復刻版の吸い出しが、ついに分解無しでできるようになっちゃいました~!!\(^-^)/

PICT6598

ってことで少しおさらい(?)を。

メガドライブのゲームは今まで2本、

・ファンタシースター復刻版

・ヴァーチャレーシング

だけは分解無しでの吸い出しはできませんでした。

前者はSMSそのもの(8bit)だから、後者はカスタムチップを使ってるから、現在公開されているであろう所謂MD吸い出し環境では吸い出せなかったんですね。

それが今回、Sweet Rammyの登場&YoGirlさんの解析のおかげで復刻版だけは吸いだせるようになったのでした(^-^)

YoGirlさん&Sweet Rammy最高~!(笑

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

まぁ、元々はセーブデータの読み書きの対応がメインだったわけですが、Sweet RammyがMD本体をリモートできるツールの為、使い方によってはかなり楽しいことができてしまうんですねぇ(笑

今回も68000からZ80をコントロールしてちゃんと読めちゃってるわけだしw

今までできなかったことができてしまうってのがスバラシイよねぇ。

と、感動に浸ってても進まないので、やり方を・・・Sweet Rammyのページの10/26と27のところを見ると詳しく書いてあります(ぉ

まじめな話、私が前回書いたようなテープ法(笑)を使えば分解しなくて済むわけですが、本当ならSweet Rammyのページに載ってるようなスイッチを付けたほうが安全だし、セーブデータのバックアップを頻繁に使うような人はなお更スイッチの取り付けをお勧めします(^-^;

PICT6597

同じもの載せちゃうけど、私は該当のピンへテープを貼り付けた。

真似する人は剥がれないように気をつけてw

セーブデータのバックアップは先回も画面載せたように正常にできてます。

が、今のところ書き込みが何度やってもできません(^-^;

これはとりあえず置いといて(ぇ?

タイトルで書いたROM吸い出しに行きましょう。

これもSweet Rammyのページに詳しく書いてある通りなのですが、バンクを切り替えながら16KByteづつデータを読む必要があります。

説明を読むと、前半48Kを3分割(16K×3個)した領域の何れかに、必要とするデータを配置できるとの事。

が、一番先頭の16Kの領域は仕様上1024Byte少ないため、私は真ん中の16Kの領域を使って全ROMデータを吸い出しました。

コマンド実行的には、

AT.000000 ←入力
PR.02FFC2
PW.000000
PC.000000
PS.000000
P+.000000
PB.000000
PT.000000
PM.000000
OK
P+.000002 ←入力
OK
PW.01FFFD ←入力、真ん中のポートアドレスを指定
OK
WD.00000100 ←入力、バンクを16進数で指定
0x0001
OK
PR.008001
←入力、真ん中の16KByte領域指定
OK
RD.000010 ←入力、ここでは試しに0x10Byteのみ
F3ED563100CB187F7BD3BF7AD3BFC9FF
OK
WD.0000011F ←入力、ここでは試しに最後のバンク
0x0001
OK
RD.000010 ←入力、試しに0x10Byteのみ
00003F3438030B012B2F062A253E2036
OK

といったような感じで、復刻版はROMサイズが512KByteなので、バンクを31回切り替えてテキストで読み込み→ROMデータ以外を削除→bin変換という過程が必要です。

ま、ぶっちゃけ時間は掛かりますが、そこはとりあえず我慢の子で(笑

問題は、16KByte読んで、バンク切り替え操作して読んで・・・の繰り返しになるため、コマンドの打ち間違えの可能性もあるし、できれば放置して風呂でも入っていたいよね。

ってなわけで、私はTeratermのマクロ使って一気読みしましたw

srammyn

おかげでPC放置して風呂入って違うことして・・・と、時間を有効利用できた(笑

ただ、ちょっと、このTeratermのマクロの構文をよくわかっていない、配列が使えない、16進数の変換が困難、などなどの要因が重なったため、ループ使わないベタな書き方になっちゃった(^-^;

元々が通信関係が主体だから、機能は限定されてるしね。

srammyr← WDコマンドで0x1Fまで繰り返す

なんかスッキリしない書き方だけど、ま、ファンタシースター復刻版専用だからいいかw

これは一応ファイル置き場へ置いておきます。

コマンド入力の後に”pause 1”が入ってるけど、これは必要ないかもだけど、あえて1秒ウェイト入れてある。

ログはRDコマンドとデータ読み後のOKまでを保存するから、後で改行コード含めて削除する必要があるw

この機能はハイパーターミナルでは使えないんで、これからSweet Rammy使う人はTeratermをお勧めします(^-^)

パッと見、Teratermのマクロ命令みると、覚えたら結構な使い物になるんでは?な感じが。

・・・覚えれば、だけども(^-^;

srammyo

参考までに、一番上が以前SMSReaderで吸い出したデータ、真ん中が今回吸い出したHEXデータ、一番下がbin変換後のデータ。

srammyp

なんの問題も無く一致ですっ!w

srammyq

当然エミュでも問題なく~(^-^)

(ここでは関係無い話:nさんへ、0x1b1からでOKですw)

とまぁ、そんなわけで、時間だけ気にしなければメガドライブ本体を使って、カセット分解しなくても吸い出しできるSweet Rammyはやっぱりラブリーなのでした~(^-^)

メガドラ持ってる人はみんなRammyちゃんであそぶのら~!

以上、Sweet Rammy促進委員会からのお知らせでした。

(↑そんなものもないよ)

4 件のコメント:

YoGirl さんのコメント...

Version 0.01 で 512kBytes 全部吸い出した
ぽんさんすごいです!(笑)
しかもバイナリー完全一致で転送ミスが無いという素晴らしさ。

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

お、タイムリー(笑

YoGirlさんにお褒め頂くとは光栄ですm(_ _)m

最初どの領域にも指定したデータが出てくると思ってなかったんですが、いろいろ弄ってデータの出方がわかった後はすんなりいきましたね(^-^;
正直マクロがあって助かりました(笑

転送ミスは0.00からでも、気にした時には一度も無かったので、結構安心してたんですが、やっぱりデータ落ちってするもんなのかな?
たまたま相性がいいのかもしれませんねw

YoGirl さんのコメント...

4,194,304bitも読んだら1bitくらい間違ってても不思議な感じしないよなーと思って。(笑)
4800bpsなら、カートリッジが汚れてるとか、ケーブルの出来が悪いとか言う事が無い限りデータ落ちしなさそうです。

そして知ってたら教えて欲しいのだけど、バーチャレーシングの吸出しに失敗する時ってどんな具合に失敗するのだろう。

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

えっと、VRの件ですが、どんなだったかすっかり忘れたので、今試しにRammyちゃんでやってみたところ・・・どうも出てくるっぽい気配が(^-^;

とりあえずヘッダしか読んでないですが、多分いけちゃう気がするのは気のせいかしらw

となると、もう完璧なんですけど(笑

YoGirlさん、ホント凄いもの作っちゃったかもです(^-^)

あ、ホンコンなどは今後の参考のために今一度確認してみますね。