先日書いたGCの記事、最後にソニックメガコレクションのROMの展開ができない云々・・と書いたところ、ねこかぶさんからとある方法を教えていただきました。
情報ありがとうでしたm(_ _)m
私は今まで展開方法(解法)を考えてて、閃いて分かればラッキー程度な感じでいたのですが、結局分からず。
で、教えてもらった方法とは、ずばり「GCでゲームプレイしながらメモリダンプすれば良い」です。
確かに、ゲームやってる最中はメモリ上にイメージが展開されてるでしょうから、それが可能なら問題なくできそうですね。
今までゲーム起動中にメモリサーチなんぞはやったことが無かったのですが、いい機会なのでトライしてみました。
最初に書いておくと、GCのメモリ全部読んでPC上でサーチしてROMを切り出す、としたほうが楽なのですが、今回はあえて直接ROMアドレス、サイズを指定して吸い出してみたいと思います。
USB Geckoなどでも出来るのか?とも思いましたが、教えてもらった通り、gcnrdというツールを使ったやり方で。
方法としては古い&アナログ的なトコがありますが、環境構築には普通に用意できるものばかりなので、一番ベタではないかな、と。
・準備
んでは、まずは準備から。
ハードで必要なもの、
・GC本体基本セット
・ブロードバンドアダプタ
・メモリーカード - 注:後述しますが、フォーマット済み(未使用)を推奨
・ソニックメガコレクション
・ファンタシースターオンライン1&2など
ねこかぶさんとこの情報をお借りすると、
・PSO エピソード1&2 (DOL-GPOJ-0-2)
・PSO エピソード1&2 ネットワーク調整版(v1.1) (DOL-GPOJ-0-3)
・PSO エピソード1&2プラス (DOL-GPOJ-0-04)
・PSO エピソード3 (DOL-GPSJ-0-00)
が適合します。
今は大抵ルーターがあるので問題ないでしょうけど、PCと直接繋げるのであればLANのクロスケーブルが必要。
次にソフトで必要なもの、
全てココから落とせます。
GCNrd v1.10b - Gamecube memory searcher and debugger
GCNrd GUI - GUI frontend for GCNrd
PSOload v2.0a - PSO-based loader
他はバイナリエディタとかあると確認しやすいかな。
あ、16進数⇔10進数変換のできる関数電卓かソフトもあったほうが良い。
・設定
ハードのほうは、GCにPSOとメモリカードを、ブロードバンドアダプタ付けてLANケーブルをルータに繋いで終わり。
上の準備で書いたメモリーカードの件ですが、どうも今回使うgcnrd.exeと相性が悪いのか、仕様上仕方が無いのか、セーブデータが消えることがあります(^-^;
ので、大切なデータが入ってるメモリカードの使用は避けたほうが良い。
ソニックメガコレのセーブデータも、ゲームが増えてきたらコピーしておいたほうが良いでしょう。
あ、PSOのネットワーク設定を先にしておかなきゃね。
ん~・・・ねこかぶさんのとこの改造関係など→GCの吸い出し→2.設定を見て設定しときましょう。
い、いかん・・・いきなり手抜きだ(^-^;
ソフトのほう、ハードディスクに適当なフォルダを作り、上でダウンロードしたアーカイブを全て作ったフォルダへ展開。
GCNrdGUIを使う関係上、PSOload.exeのファイル名をLoader.exeへ変更する。
次に、gcnrd.cfgをメモ帳で開き、GCのネットワーク設定で決めたアドレスに変更し、上書きして準備は終わり。
・実行(リモート接続完了まで)
ではいよいよ実行です。
まずPCで用意しておいたGCNrdGUI.exeを起動を起動するとpsoloadを起動するか聞いてくるので、yesを。
すると左上にConnecting...と表示されて待機状態になる。
PCでの初期操作はこれで終わり。
次にGC、PSOのネットワーク設定は終わってるとして、オンラインゲームを選択。
で、有名な画面ですね(笑
この画面でフリーズしたような状態になりますが、この時にpcからgcnrd.dolをGCに転送しています。
(PC上の見た目は変わりません)
環境やdolのサイズによっても変わりますが、gcnrd.dolの場合は20秒前後掛かる。
dolファイルの転送が終わると自動的にgcnrdが起動して上の画面になる。
変更するのはIPアドレスのみ。
一番上段がGCのIPアドレス、2段目がクライアントとして使用しているPCのアドレスを。
間違いが無ければセーブしてセットアップ画面を抜けます。
正常にネットワークが認識できたら上の画面が出てきますが、どこか間違っているとBBAエラーと表示されるので、見直しましょう。
で、Launch Discを選択すると上の画面になるのでカバーをあける。
PSOとソニックメガコレクションのディスクを交換してカバーを閉じる。
IDを読んで・・・
この画面になってようやくPCとの接続が完了となります(^-^)
GCはこのままソニックメガコレクションが普通に立ち上がり、ゲームが始まります。
で、ちゃんとリモートコントロールできるかチェック。
Pauseを押して一時停止するか、Runを押してゲームが再開するかを確認します。
これが正常に出来たら取り合えず一安心。
・実行(メインの吸い出し)
ここからが今回のメインになりますが、16進数やら書きますので混乱しないように(笑
上の画面を見て何となく判断できるのは、ユーザーが弄れるメモリ領域は80003100h~817f8000hまで。
ゲームが起動している間、状況に応じてこのメモリ空間のデータが都度変わります。
MDのゲームイメージを吸い出すには、吸い出したいゲームを起動すればそのイメージがメモリに読み込まれることになります。
どこに読み込まれるかはサーチしなければ分かりません。
ってことで、ここでは「ジ ウーズ」を吸い出してみることにしましょう。
の前に、少しMDのROMイメージのヘッダについてちょっと知っておきましょう。
MD(BIN形式)のヘッダ領域は先頭から512Byte、この中に日本名、英語名、メーカーコード、型番、サイズ情報などなどが記録されています。
EAやCODEMASTERなど独自のヘッダを使ってる場合もありますが、基本的にMDのROMイメージは100hからSEGAと書かれているので、今回はROMの検索に「SEGA」という文字列を使います。
サイズ情報は1A5hに書かれているのでその情報を元に判断する。
因みに、このサイズ識別の数値は、
0x01=128Kbyte
0x03 =256KByte
0x07=512KByte
0x0F =1024KByte
0x1F =2048KByte
0x3F=4096KByte
といったように、0x01に02hをプラスしていくと128KByteずつ増えていく、となってますw
上のソニックの場合だと0x07なので512KByteということがわかります。
これは以前MD吸い出しプログラム書いた時に分かってたからいいものの、分からなかったらメモリ全部読み込んでからPCで切り取る方法しか出来なかったね(笑
・・・本題の続きを。
まずジ ウーズを選択して起動させます。
SEGAのロゴが画面に出た時点でジ ウーズのROMイメージはメモリ上に置かれていますので、PCで覗いてみる。
あ、GCはそのまま勝手に動かせておいても大丈夫です(笑
Memory Viewerタブを開くと何やら16進数がゴチャゴチャ表示されてますが気にしないw
Display TypeをASCIIにして、Case Sensitive(大小文字の判別)にチェックを入れて、SearchボックスにSEGAと入力して、Searchボタンを押す。
おっ、見慣れたヘッダらしきものが一発でヒットしたw
サーチしてる時はゲームが途中で何度か止まったりしますが正常動作なので気にしないように。
気になるならポーズ掛けておいてもいいです。
まずもってMDのROMイメージのヘッダ情報に間違いないので、実際のMDのヘッダの先頭アドレス、SEGAのところから-100hしたGCのアドレスを調べる。
(↑ややこしい(^-^;)
上画像の赤く囲った上下ボタンを1回押すと100hづつ移動できるので、上ボタンを1回押す。
すると、MDのROMイメージとしての先頭アドレスは80900480hとわかります。
Code Searchタブを開いて、赤く囲ったボックスへアドレスを入力する。
次にROMのサイズ情報を調べる。
Memory Viewerタブを開き、Hex表示にする。
上のほうのMDのヘッダー情報について書いたとおり、サイズ情報はMDの先頭アドレスから+1A6hしたアドレスに書いてあるので、先ほどの80900480hに足した数値を直接入力。
すると「oFh」=1024KByteということがわかります。
1024KByteって事は・・・1KByte=1024Byteだから10進数で1024×1024して16進数に直すと100000h。
なので、Code Searchタブで赤く囲った箇所に100000hを書いてDumpボタンを押す。
ダンプされたファイル名はRAM.BINに固定ですが、ちゃんと1024KByteで吸い出せました。
で、エミュで無事起動を確認できました(^-^)
ってな感じで、直接アドレス指定したりすると、ぶっちゃけちょっとメンドクサイ(爆
ROMサイズとかイメージの形さえ分かっているならハッキリいってメモリ全部読んでPC上で切り取ったほうが早いし楽だね(^-^;
ま、今回はゲーム起動中のメモリサーチがどんなものか、何となく疑似体験もしてみた、ということで(笑
あ、全てのゲームが同じアドレスではないから注意を。
それと、ソニックメガコレクションの全てのゲームを出す方法がネット上に転がっていたのでココにも書いておきます。
・ブルースフィア
GC版【ファンタースターオンライン エピソード1&2】のセーブファイルがあるか、 もしくは【ソニック・ザ・ヘッジホッグ】と【ソニック3Dブラスト】を両方20回以上ずつ起動する
・ナックルズinソニック2
【ソニック・ザ・ヘッジホッグ】と【ソニックスピンボール】を両方20回ずつ起動する
・ソニック・ザ・ヘッジホッグ3&ナックルズ
【ソニック・ザ・ヘッジホッグ3】と【ソニック&ナックルズ】を両方20回ずつ起動する
・フリッキー
【ソニックアドベンチャー2バトル】のセーブデータがある、または【Drエッグマンのミーンビ―ンマシーン】を30回以上起動する
・ジ・ウーズ
【オプション】の選択画面で『↑L↓R↑Z↓L↑R↓Z』と入力してSEを鳴らし、その後メインメニューからゲームを選ぶと出現する
・コミックスゾーン
【マニュアル】の選択画面で『ZZZ↑↑↑↓↓↓LRZ』と入力してSEを鳴らし、その後メインメニューからゲームを選ぶと出現する
・リスター・ザ・シューティングスター
【ブルースフィア】【ナックルズ イン ソニック2】【ソニック3&ナックルズ】【フリッキー】を30回以上ずつ起動する
引っ掛かるのが、ソニック1は3種類入っている(US版とJPのROM違い)けど、これらを吸い出すにはどうしようかなぁ、と。
そんなわけで、PC単体では無理だけど、なかなか楽しい吸い出しでした。
ちょっと癖になって他のゲームでも探してみたくなるねw
【追記】
とりあえずGCNrdでソニック1のファイル名をPokeで交換(sonic1j.dat⇔sonic1u.dat)してみたんだけど、残念ながらUS版ソニックは起動しなかった・・・orz
う~ん・・・メガコレでROMイメージ起動にはファイル名見てるわけじゃなさそうだ。
直接アドレス見てるとなるとiso内のイメージ入れ替える必要が・・・といっても暗号化ファイルのサイズが違うしなぁ・・・
さて、どうしよう。
【追記2】
ソニック ジェムズ コレクションもいいね。
(AC)
ソニック・ザ・ファイターズ
(メガCD)
ソニック・ザ・ヘッジホッグCD
(サターン)
ソニックR・アクションレース
(ゲームギア)
ソニック・ザ・ヘッジホッグ2
ソニックスピンボール
ソニック&テイルス2
ソニックドリフト2
テイルスのスカイパトロール
テイルスアドベンチャー
<< おまけ >>
(SG)
ベクターマン
ベクターマン2
(MD)
ボナンザブラザーズ
ベア・ナックル
ベア・ナックル2
ベア・ナックル3
4 コメント:
おっ、楽しいそうですね。
前回の記事qdファイルもいじりたい。
今回の吸出しもいじりたい。
準備に必要な物は全部揃っているのであとは実行する時間だけ。
今週は無理そうなので、9月中には後追いします。
結構すんなりできましたね(笑
他にもGCで吸い出せそうなものがありそうなので、いろいろ試してみたいですね(^-^)
どっかにレトロゲー入りのゲームリストみたいなのがあると便利なんですけども・・・
早速実行に移されてましたかw
環境自体は構築できますが、もう吸い出すこともないかと思って、PSOは実家に送ってしまいました…。
環境が用意でき次第、挑戦してみます!
ゆーすけさん
工作と違って直ぐ確認できたのでやっちゃいました(笑
今SDLoaderからできるかなぁ、と思ってやってみたけど、どうも上手くいかないのでPSOでやるのがベストですね(笑
コメントを投稿