上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

※今回の前置きはとっても長いです。興味がない方は用意するものまで飛ばしてください。
 (私の苦労と感動が延々と綴られています。読まなくても作業には影響ありません。)


Wiiのゲームはいろいろありますが一番人気と言ったらやっぱりスマブラXではないでしょうか。

そんなスマブラXですが少し面白いものが収録されています。

そう、「名作トライアル」です。

名作トライアルとは、

数多くのキャラクターたちが戦い抜く
『大乱闘スマッシュブラザーズ』。
そのキャラクターたちの過去の戦いって、
どんな感じだったのだろう。

冗談のようだけど、『スマブラX』で体験できます!

史上初、“バーチャルコンソール”の体験版として!!

名作トライアルとは!!
星のように輝くキャラクターたちの戦いを追体験できる、
バーチャルコンソールの体験版のことである!!


スマブラ拳!! 名作トライアルより。

と、見て分かる通りバーチャルコンソール(以下VC)の販促デモみたいなものです。

デモですのでセーブは出来ず、制限時間が設定されています。

その中でどこまでいけるかタイムアタックしている人がいたり、

ゲームによっては最強のセーブデータが入っていたり、

チートコードで制限時間を解除したりとなかなかおもしろい遊び方がいくつかあります。

しかし!ゲーム機改造ユーザーとしては「中のROM抽出できないかなぁ」的な発想に至るわけです。どんな発想だ

そんな訳でこのブログを立ち上げる前からisoの中を見てみたりして調べていたのですがいまいちわからず…

「やっぱりそう簡単にはうまくいかないかなぁ。」と諦めかけていました。


そんなこんなで時は経ち2013年。

ぽんrevさんのブログでVCのSFCROMを抽出、結合する方法を読み、記事にまとめ、

「久しぶりにやってみるかなぁ」と思い至ったのです。


ここまで前置き。(長すぎ

さてやって行きましょう!

用意するもの
・スマブラXのiso
 CleanRipを使って吸い出しましょう。使い方はこちら
・WiiScrubber
 どれが公式かわからないのでとりあえずとんとん庵さんの方からダウンロードして下さい。
 MakeKeyBin.exeの使い方とかkey.binについてはそちらをご参照ください。
・バイナリエディタ
 お好きなのをどうぞ。Stirlingは個人的におすすめ。
snesrestoreとnes_rom_extract
 vcromclaimのpythonスクリプトでもOK。
mgd1cnv
 ぽんRev!! 個人的備忘録さんのファイル置き場の方からダウンロードして下さい。
FDSStudy

手順

スマブラXにはFC,FDS,SFC,N64のROMが収録されていますがそれぞれ抽出方法が違います。

簡単な64から順番に見て行きましょう。

N64ROMを取り出す

1,WiiScrubberを起動しスマブラXのisoを読み込む。
WS015.jpg

2,パーティション14(時オカ)か15(スタフォ64)を選びツリーを開く
WS016.jpg

3,romという拡張子のないファイルを右クリックからExtractする。
WS017.jpg

後はこれをリネームするだけでエミュで使えます。
WS020.jpg

SFCROMを取り出す

1,64同様isoを開きパーティション9~13のツリーを開く。
 (どのパーティションがどのソフトに対応するかは後述)

2,更にcontent5を開き、J○○J.romとJ○○J.pcmというファイルを取り出す。
WS018.jpg

3,取り出した.romと.pcmをsnesrestoreで結合する。
 snesrestoreの使い方はこちらの手順9をご参照ください。

レストアしたら完成。

FCROMを取り出す

1,1,isoを開きパーティション2,3,5,7,8のmain.dolをExtractする。
WS019.jpg

2,取り出したmain.dolからnes_rom_extractでROMを取り出します。

>nes_rom_extract main.dol out.nes

【追記】
コメントでtaiさんよりnes_rom_extract.pyが使えると教えていただいたので変更しました。
以下のやり方は古く、めんどくさいです。nes_rom_extractがやっていることを手動でやっていますw
taiさん教えてくれてありがとう!


2,main.dolのバイナリからROMを切り出します。
 バイナリエディタでmain.dolを開き「NES」を文字列検索する。
WS021.jpg

3,見つけたらその列の5番目と6番目のアドレス値をメモする。
 今回の場合は両方共「01」です。
WS022.jpg

4,次にファイルサイズを算出します。
 Windowsの電卓を開き、表示をプログラマ電卓にし、16進を選びます。

5,(5番目のアドレス)×4000+(6番目のアドレス)×2000+10を計算します。
 両方01ならば6010になるはずです。
 (ココらへん何をやっているのか知りたい人はこちら
  端的に言えばPRG+CHR+ヘッダのサイズです。)

6,「NESのNのアドレス」から「Nのアドレス+先ほど算出した数値-1」のバイナリを切り出します。
WS023.jpg
WS024.jpg



FDSディスクイメージを取り出す

1,パーティション4,6のmain.dolをExtract

2,「*NINTENDO-HVC*」を文字列検索する

3,「*NINTENDO-HVC*」の列の先頭から128KB切りだす。

4,切り出したファイルを前後64KBずつに分割し、先頭に3バイト適当なデータをたす。

5,mgd1cnvで変換する。(こっちを読んだほうがわかりやすいかも)

6,FDSStudyで変換したFDSイメージを結合する。
 Option →からディスク結合を選びSaid-A(Said?Sideかな?)に前半、Bに後半部分を選び結合保存する。

これで完成ですがこのディスクイメージで遊ぶと停止する場面があります。
(ゼルダはタイトル、パルテナはオマチクダサイ画面)
その時はディスクをB面に切り替えると動きます。

おまけ。

面倒くさがり屋のための資料。

2 HA8J ドンキーコング
1395D0~13F5DF

3 HA9J スーパーマリオブラザーズ
1395D0~1435DF

4 HBAJ ゼルダの伝説(FDS)
144D90~164D8F

5 HBBJ 星のカービィ 夢の泉の物語
13D3F0~1FD3FF

6 HBCJ 光神話パルテナの鏡(FDS)
144CD0~164CCF

7 HBDJ アイスクライマー
1395D0~13F5DF
(CRC不一致、2バイト違いました。)

8 HBEJ スーパーマリオUSA
13D190~17D18F
(CRC不一致、オールドゲーム ROM研究のROMチェッカーのデータベースにヒットせず。
間違っているかもしれないがとりあえず動いているので不明。)

9 HBFJ スーパーマリオワールド

10 HBGJ F-ZERO

11 HBHJ ファイアーエムブレム紋章の謎

12 HBIJ スーパーメトロイド

13 HBJJ MOTHER2

14 HBKJ ゼルダの伝説時のオカリナ

15 HBLJ スターフォックス64
スポンサーサイト

Thoughts on スポンサーサイトスマブラXの名作トライアルに収録されたゲームのROMを取り出す

says...

Date:2013/02/03 21:46

余計かもしれませんがNESの切り出しはhttps://github.com/Plombo/vcromclaimにあるvcromclaimの中に入っているnes_rom_extract.pyで簡単にromを切り出すことができますよ。でもこのファイルを使うにはPythonのインストールが必要ですけど

says...

Date:2013/02/03 23:43

あれ、main.dolにも使えるんですね。それは知りませんでした。

記事書き換えておきます(^^)

says...

Date:2013/02/10 22:50

質問させていただきます。
ファミコンの切り出しは一応はできたんですがサイズがすごい大きくなります。
(例えばスーパーマリオブラザーズが668キロバイトとかに・・・)
エミュでは普通に動作しますが、やはりサイズが小さい方がいいです。
無駄なダミーデータが入っているのでしょう。
nes_rom_extractで切り出すとこうなってしまうのでしょうか?
もし回避できるなら方法を教えてくれませんか?
スーファミはふつうに0.5メガだったので尚更気になります。

says...

Date:2013/02/10 23:13

I-THさん

nes_rom_extractで出来るかどうかわからないですが手動でバイナリを切り出せばできます。
面倒くさがり屋のための資料のところにmain.dolのどのアドレスを切り出せばいいかを書いてあります。
例えばスーパマリオブラザーズなら「1395D0~1435DF」ですね。
ただ手動でも夢の泉だけは768KBと元々のサイズでかいです。

says... 管理人のみ閲覧できます

Date:2015/02/25 16:36

このコメントは管理人のみ閲覧できます

Leave a Reply

* 16文字以内
* 24文字以内
* 16文字以内
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。