Irem Arcade HitsのROM変換

 かつてHumble BundleやSteamで数百円で販売されていた「Irem Arcade Hits」の解析にチャレンジしました。
 インストールフォルダ内にあるarcade_imgfight.zipからファイルを抽出し、ROM MasqueradeでROM解析テスト。
 結果は下記の通り。

元ファイル 出力ファイル サイズ 手順
CPU.BIN if-c-l0-a.bin 64KB 0-20000のOdd
CPU.BIN if-c-h0-a.bin 64KB 0-20000のEven
CPU.BIN if-c-l3.bin 128KB 40000-80000のOdd
CPU.BIN if-c-h3.bin 128KB 40000-80000のEven
GFX1.BIN if-c-00.bin 128KB 0-20000
GFX1.BIN if-c-10.bin 128KB 20000-40000
GFX1.BIN if-c-20.bin 128KB 40000-60000
GFX1.BIN if-c-30.bin 128KB 60000-80000
GFX2.BIN if-a-a0.bin 64KB 0-10000
GFX2.BIN if-a-a1.bin 64KB 10000-20000
GFX2.BIN if-a-a2.bin 64KB 20000-30000
GFX2.BIN if-a-a3.bin 64KB 30000-40000
GFX3.BIN if-a-b0.bin 64KB 0-10000
GFX3.BIN if-a-b1.bin 64KB 10000-20000
GFX3.BIN if-a-b2.bin 64KB 20000-30000
GFX3.BIN if-a-b3.bin 64KB 30000-40000
SAMPLES.BIN if-c-v0.bin 64KB 0-10000
SAMPLES.BIN if-c-v1.bin 64KB 10000-20000
自作 imgfight_i8751h.bin 4KB バイナリエディタで00埋め

 結果はもちろん成功!

 ただ、既にIrem Arcade Hitsは販売されていないので「当時買った人(今でもインストーラを持っている人)」にしか使えないネタっすね。
(Apple版はまだ販売されているようですが、iOS端末からプログラムリソースを抽出するのが大変かと)。

~追記 R-TYPE LEOもいけました~

元ファイル 出力ファイル サイズ 手順
CPU1.BIN rtl-l0-c.bin 256KB 0-80000のOdd
CPU1.BIN rtl-h0-c.bin 256KB 0-80000のEven
CPU1.BIN rtl-l1-d.bin 128KB 80000-C0000のOdd
CPU1.BIN rtl-h1-d.bin 128KB 80000-C0000のEven
CPU2.BIN rtl-sl0a.bin 64KB 0-20000のOdd
CPU2.BIN rtl-sh0a.bin 64KB 0-20000のEven
GFX1.BIN rtl-c0.bin 512KB 0-80000
GFX1.BIN rtl-c1.bin 512KB 80000-100000
GFX1.BIN rtl-c2.bin 512KB 100000-180000
GFX1.BIN rtl-c3.bin 512KB 180000-200000
GFX2.BIN rtl-000.bin 1024KB 0-100000
GFX2.BIN rtl-010.bin 1024KB 100000-200000
GFX2.BIN rtl-020.bin 1024KB 200000-300000
GFX2.BIN rtl-030.bin 1024KB 300000-400000
SOUND.BIN rtl-da.bin 512KB リネームだけでOK

ゲームラボ連載原稿を無償公開しました

ゲームラボ休刊からもうすぐ三年が経ち「もうそろそろウチの書いた原稿の二次利用許可でるかな~?」と思って編集部に問い合わせたところ快く承諾を得られました。
 というわけで本日から正式に、私の書いた連載記事の「原稿データ」のアーカイブを公開します。
(※さすがに誌面データは編集部にも著作権があるので勝手に使えないよ!)

 2007年~2017年までの10年間に扱ったHomebrew関連のみをピックアップし、DS、PSP、ファミコン、ゲームボーイ、PCエンジン、メガドライブ、PS2、3DSの8機種のソフトウェア開発に関するドキュメントとスクリーンショットをまとめています。

上メニューの「ゲームラボ」のサブメニューもしくは下記リンクをご参照ください。
>>ゲームラボ連載原稿を無償公開

オレたちゲーセン族「熱血硬派くにおくん」解析

Amazon : オレたちゲーセン族 熱血硬派くにおくん
https://www.amazon.co.jp/dp/B000BYZNPC

 ハムスターのPS2「オレたちゲーセン族」シリーズはアーケード基板エミュレータベースのプログラムで、熱血高校ドッジボール部で過去にROMダンプも成功していたので試しにその元祖にもチャレンジしてみました。
 解析ツールは自作プログラムROM Masquerade使用です。

ROMダンプのためのCRC情報参考元(MAMEDB)
https://www.mamedb.com/game/kuniokunb.html

 前例通りROMイメージはPS2DVDのプログラムファイル SLPM_627.06 にあるのでROM Masqueradeでオープン。
 一番最初にプログラムROMがレイアウトされると予想して
Go Analyze!
Brute Force(DetectCRC)
Size 8000
TargetCRC a90cf44a
Step(HEX) 10
 この条件でブルートフォースCRC解析を仕掛けると……
DetectCRC:A90CF44A ADR:001F16A0 SIZE:00008000
 はい楽勝~!
 ……と、解析を開始したときの私はそんなコトを考えていました。

《ROM MasqueradeのブルートフォースCRC解析の結果》

ta18-10.bin DetectCRC:A90CF44A ADR:001F16A0 SIZE:00008000
ta18-11.bin 発見できず!!!
n0-5.bin DetectCRC:3587DE3B ADR:002056A0 SIZE:00008000
ta18-25.bin DetectCRC:9BD2BEA3 ADR:0021D6A0 SIZE:00008000
ta18-01.bin DetectCRC:DAF15024 ADR:002256A0 SIZE:00008000
ta18-06.bin DetectCRC:1F59A248 ADR:0022D6A0 SIZE:00008000
n7-5.bin DetectCRC:7CA5A532 ADR:002356A0 SIZE:00008000
ta18-02.bin DetectCRC:994C0021 ADR:0023D6A0 SIZE:00008000
ta18-04.bin DetectCRC:55B9E8AA ADR:002456A0 SIZE:00008000
ta18-03.bin DetectCRC:0475C99A ADR:0024D6A0 SIZE:00008000
ta18-20.bin DetectCRC:C7D54139 ADR:002556A0 SIZE:00008000
ta18-24.bin DetectCRC:84677D45 ADR:0025D6A0 SIZE:00008000
ta18-18.bin DetectCRC:1C770853 ADR:002656A0 SIZE:00008000
ta18-14.bin DetectCRC:AF656017 ADR:0026D6A0 SIZE:00008000
ta18-23.bin DetectCRC:3FD19CF7 ADR:002756A0 SIZE:00008000
ta18-17.bin DetectCRC:74C64C6E ADR:0027D6A0 SIZE:00008000
ta18-19.bin DetectCRC:C8795FD7 ADR:002856A0 SIZE:00008000
ta18-22.bin DetectCRC:DF3A2FF5 ADR:0028D6A0 SIZE:00008000
ta18-16.bin DetectCRC:7244BAD0 ADR:002956A0 SIZE:00008000
ta18-13.bin DetectCRC:B6B14D46 ADR:0029D6A0 SIZE:00008000
ta18-21.bin DetectCRC:C95E009B ADR:002A56A0 SIZE:00008000
ta18-15.bin DetectCRC:A5D61D01 ADR:002AD6A0 SIZE:00008000
ta18-07.bin DetectCRC:02E3F3ED ADR:002B56A0 SIZE:00008000
ta18-08.bin DetectCRC:C9312613 ADR:002C56A0 SIZE:00008000
ta18-09.bin DetectCRC:07ED4705 ADR:002CD6A0 SIZE:00008000

 いきなり二行目に不穏な言葉がありますが、熱血高校ドッジボール部も一部ROMイメージが前半後半を上下構造スワップしなければダメだったので、それと同じような感じでしょう!
 ……というヌルい考えで地獄へまっしぐらとなりました。

~以下、作業中のメモ(ほぼ原文ママ)~

 ta18-11.binはMAMEDBの「Region maincpu Offset 4000」で開始位置ズレのある同シリーズの「熱血高校ドッジボール部」と同じパターンと推測。名前がta18-10.bin、ta18-11.binと連続しているのでta18-10のヒットしたアドレス001F16A0 + 8000 = 1F96A0 から始まっている0x8000バイトを上下0x4000バイトずつ切り取って接続してCRC解析を行いf240f5cdになれば正解と推測。
Target Area (HEX)
001F96A0 to 002016A0
Go Analyze!
Swap 1stHalf&2ndHalt
 =ダメでした!
 というか冒頭からバイナリが00000000…なのでどう考えても違う。
 1000hずつ足しながら先に進めていっても見つからない。

 もしかして「ta18-11.binはta18-10.binより前にあるのでは???」と仮説。
アドレス 001F16A0 – 8000 = 001E96A0
Target Area (HEX)
001E96A0 to 001F16A0
Go Analyze!
Swap 1stHalf&2ndHalt
 =やっぱりダメでした!
 というか今度は後半0x4000バイトが00000000…。

 バイナリエディタで周辺を調べているとおかしなコトを発見。
 ta18-10.binの格納されているアドレス001F16A0から遡っていくとアドレス001ED6A0バイトより上は0000…羅列。
 0000…までのサイズは0x4000バイト。
 ta18-10.binの終端(アドレス001F16A0+0x8000=アドレス001F96A0)から
 先に向かって羅列を見ていくと、アドレス001FD6A0から0000…。
 アドレス001FD6A0 – 001F96A0 = 0x4000バイト。

 この周囲は広範囲にわたって00000000…しかない。
 ta18-10.binをサンドイッチしている0x4000+0x4000がta18-11.binなのでは?

Target Area (HEX)
001ED6A0 to 001F16A0
Go Analyze!
Save DumpFile
test1.bin
Target Area (HEX)
001F96A0 to 001FD6A0
Save DumpFile
test2.bin

 コマンドプロンプトから下記コマンドを実行し先の2バイナリをoutput.binに結合。
copy /b test1.bin+test2.bin output.bin
 output.binをROM Masqueradeで開く。
 Go Analyze!
 CRC32 F240F5CD
 一致!!!!!!!!!!!!!!!!!(※解析所要時間4時間ちょい)。

 いや、ホントもうしんどかった。
 ところで kuniokunb ってMAMEのROMセット的には「海賊版」って書かれてるんですけど……なんでこのROMイメージを公式ソフトに使ったのかなぁ(‘ω`;

ROM Masqurade v1.70

Download : ROM Masquerade [ROMASQUE] v1.70

 久々にエミュレータ移植系ROM解析をしようと思い立って使ってたら、バックグラウンドでSHIFTとBSを押すと解析が中断されて超ウザかったのでプログラムをフォアグラウンドにしてCTRL+Cでキャンセルするように設定変更(最近の流行ならCTRL+ZだろうけどDOS風で)。