VC版ティンクルスタースプライツからNEOGEO-ROMダンプ

~はじめに~

Wii用公式エミュレータ環境『バーチャルコンソール』のソフトウェアから
NESやSNESのROMイメージを抽出する技法は各所で解説されていますが、
なぜかNEOGEOだけどこも手つかずだったので解析してみました。

~なぜ「ティンクルスタースプライツ」なのか?~

ぶっちゃけるとまだ他のゲームを検証できていないから。
 ※「わくわく7」も同じフォーマットでした。
さらに言うとメタルスラッグXは挑んだけどよく分からなかったから。
あと、ティンクルスタースプライツはNEOGEO史上最高のゲームだから。

~あらかじめやっておくこと~

1.Wii本体にスマブラハックなどでHomeBrewChannelをインストール。
2.Wii本体にBootMiiをインストールしてNANDをSDカードにダンプ。
3.showmiiwadsの”Tools→Extract BootMii Dump”でNAND選択&展開。
4.”Options→Change NAND Backup path”で、展開で生成された
nand-extracteda フォルダを選択。
5.”View→ShowMiiNand”を選択して一覧を表示する。
6.”Options→Language→Japanese”を選択して日本語タイトルを表示。
7.ティンクルスタースプライツのファイル名とパスを確認。
8.フォルダ \nand-extracteda\title\パス名\ファイル名(拡張子なし)\content\
をエクスプローラから開き、その中からROMっぽいものを探す。
※ティンクルスタースプライツの場合は 00000007.app (8,862KB)がアタリ。
9.ShowMiiNandの”Tools→Unpack U8 Archive”で 00000007.app を展開。

これでフォルダ 00000007_app_OUT が作られ、その中にある”game.bin.z”が
お目当てのブツです(と言ってもこれでやっと「スタートライン」なわけですが)。

~”game.bin.z”のヘッダを確認~

ティンクルスタースプライツは「出来る」ということが判明していますが、
“game.bin.z”をバイナリエディタに放り込んで先頭が”ROM0″なら、
下記の方法での解析が可能です。
ちなみに「メタルスラッグX」と「パルスター」はNG、「わくわく7」はOKでした。

~”game.bin.z”をzlibで展開~
“CR00″のヘッダでなければ純粋なzlibアーカイブなのでカンタンに展開できます。
とりあえず展開プログラムzlib_decを作ったので、コマンドプロンプトから
>zlib_dec game.bin.z game.bin
こんな感じで生データが手に入ります。

~”game.bin”を解析~

拙作のROM Masqueradeでgame.binをロードして解析およびROM分割します。
gamebin
ヘッダは64バイトあり、その中で重要な内容は以下の通り。

アドレス 型式 内容
00000000 文字列 “ROM0”
0000000C 4バイト 00020000 = S_ROMのサイズ
00000010 4バイト 00C00000 = C_ROMのサイズ
00000014 4バイト 00600000 = V_ROMのサイズ
00000018 4バイト 00000000 = 不明
0000001C 4バイト 00020000 = BIOS (neo-geo.rom)
00000020 4バイト 00200000 = P_ROMのサイズ
00000024 4バイト 00020000 = M_ROMのサイズ

通常はmamedb.comのROM情報を見ながらCRCが合うように片っ端から
アタックしますが、VCのP_ROMとC_ROMは色々と手が加えられているらしく、
CRC情報が一致しないため、勘だけを頼りに切り出します。

…と以前は書いていたのですが2014/03/08に公開した下記ツールで大まかな
エリアは特定できるようになりました。
Download : wiineostat.zip
wiineostat『Wii Neo Stat』にgame.binを読み込ませるとエリアレベルで各ROMの配分が判明します。
これをmamedb.com : Twinkle Star Spritesを参考に切り出し範囲を特定します。

結果、ROM Masqueradeでgame.binを開き、次の通りに切り出すことで
プレイ可能なROMを生成出来ました。
※下記リストはROM Masquerade v1.30公開時に修正しました。

開始アドレス 終端アドレス ファイル名
00000040 00020040 224-s1.bin
00020040 00820040 224-c1.bin (Stripe Mode : Odd)
00020040 00820040 224-c2.bin (Stripe Mode : Even)
00820040 00A20040 224-c3.bin (Stripe Mode : Odd)
00820040 00A20040 224-c4.bin (Stripe Mode : Even)
00C20040 01020040 224-v1.bin
01020040 01220040 224-v2.bin
01220040 01240040 neo-geo.rom *incomplete
01240040 01440040 224-p1.bin (Endian Conv 16bit + Swap 1stHalf & 2ndHalf)
01440040 01460040 224-m1.bin

C_ROMはOdd/Even(奇数・偶数列分解)をチェックした状態で[Go Analyze!]を実行し、
P_ROMは[Go Analyze!]を実行した後で、[Endian Conv 16bit]と[Swap 1stHalf&2ndHalf]
を実行してROMレイアウトを修正してやる必要があるので注意して下さい。

これで抽出できた各ROMをまとめて twinspri.zip に圧縮すれば…
twinkletwinkle2

うむ、素晴らしい。

なお、VC版ティンクルスタースプライツにはLO-ROMなどPC用NEOGEOエミュレータが
必要とするBIOSイメージが含まれていないため、実機もしくはAndroid用の
NEOGEO移植シリーズから吸い出す必要があります。
詳しくは下記コンテンツをご覧下さい。
技術テキスト(text) – アーケードROMをダンプする
技術テキスト(text) – Android用NEOGEOソフト解析

あと、ティンクルスタースプライツ以外のNEOGEOソフトの変換方法などは下記をご参照下さい。
ROM Extract Wiki
(WiiVCシリーズだと「ラギ」と「わくわく7」について記載しています)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です