ReeUnpackerとCAS2抽出のチラシの裏(超雑)

ROM抽出,エミュレーター,ツール,日常FinalBurnNEO,MAME,エミュレーター,ネタ

バッチファイルがうまくうごかん!

というわけで参考資料までに。
EkeyさんのREEツール公式に記載されている
手順を熟読して理解した後に利用してください。

コピペですんなり終わるものではありません。

各自VC2022でビルドしてください。REE.Unpacker.exeはそのまま行けますが
REE.Rom.Cryptor.exeはデバッグビルドにしないとダメかもしれません。

Pak解凍

前提としてCAS2のゲームDLCをすべて購入している前提です。
ソンソンは本体からの解凍になるので注意(ここでは記載してません)

set "inputPath=I:\SteamLibrary\steamapps\common\Capcom Arcade 2nd Stadium"
set "outputPath=I:\SteamLibrary\steamapps\common\Capcom Arcade 2nd Stadium\ree\unpack"

for /L %%i in (1842960,1,1842989) do (
    REE.Unpacker.exe CAS2_STM_Release "%inputPath%\dlc\re_dlc_stm_%%i.pak" "%outputPath%"
)

うちの環境がおま環で腐ってるのか
入力と出力が異なるドライブレターだとエラー吹いたりしました。
1842960から1842989までPAKを総当たりで解凍していきます。
対象はCAS2でreeフォルダにREE.Unpackerを置いてコマンド実行しています。

Zip復元(難あり)

一旦抽出したunpackフォルダーをバックアップかねてコピーしました。
そこから含まれるファイル名を総当たりで復元していきます。
注意:rom_unpackフォルダーは事前に作成しておきましょう。

DLC購入してないと存在しないのでエラー吹きます
買えとしか答えられないのでご注意ください。
slammastur1はバグるので遊べません。

setlocal enabledelayedexpansion

set "inputPath=Q:\unpack\natives\stm\streaming\roms"
set "outputPath=Q:\unpack\rom_unpack"

for %%i in (
    1943kai.mameac.2
    3wondersu.mameac.2
    blkdrgon.mameac.2
    blktiger.mameac.2
    blockj.mameac.2
    blockr2.mameac.2
    buraiken.mameac.2
    csclubj.mameac.2
    csclubu_971017.mameac.2
    dstlku.mameac.2
    ecofghtru.mameac.2
    exedexes.mameac.2
    hsf2.mameac.2
    hsf2j.mameac.2
    knightsj.mameac.2
    knightsu.mameac.2
    kodjr3.mameac.2
    kodu.mameac.2
    lastduel.mameac.2
    lastduelj.mameac.2
    leds2011u.mameac.2
    mbomberjr1.mameac.2
    megaman.mameac.2
    megaman2.mameac.2
    megamanj.mameac.2
    mswordj.mameac.2
    mswordu.mameac.2
    nwarre_950420.mameac.2
    pfghtj_970922.mameac.2
    pnickj.mameac.2
    rockman2j.mameac.2
    rushcrsh.mameac.2
    savgbees.mameac.2
    sfa2u.mameac.2
    sfa3u.mameac.2
    sfau_950727.mameac.2
    sfj.mameac.2
    sfua.mameac.2
    sfz2j.mameac.2
    sfz3j.mameac.2
    sfzj.mameac.2
    sgemfu_970922.mameac.2
    sidearms.mameac.2
    sidearmsj.mameac.2
    slammastur1.mameac.2
    spf2tu.mameac.2
    spf2xj.mameac.2
    srumbler2.mameac.2
    tigeroad.mameac.2
    toramich2.mameac.2
    uecology.mameac.2
    vampj_940818.mameac.2
    vhuntj_950420.mameac.2
    vsavj.mameac.2
    vsavu.mameac.2
    wonder3.mameac.2
) do (
    set "fileName=%%~ni"
    set "fileName=!fileName:.mameac=!" 
    REE.Rom.Cryptor "!inputPath!\%%i" "!outputPath!\!fileName!.zip"
)

pause

バッチが問題なく完了するとゲーム名.zipになりますが
難ありの理由としてフォルダーが入れ子になってしまうのです
RomCenter使うか

powershell compress-archive フォルダ名\* ROM名

こんな感じで全部Zip解凍した後で
powershellで非入れ子のzip圧縮させまくるといいかも。

宣伝かねて

こんな感じ動作します。(megamanj)

うちの独自改造版(FBNMOD)のご紹介

中身同一だったのでそのまま使えるっぽい?です
REEのサイトでもSteamのみ難読になっていると記載がありました。
変な名前付いてるROMはリネームの必要があります。

FBNeo modにdat吐き出させてRomCenter使えば早いかな?
ちなみにしげるさんのねこバージョンは、うちの上位版です。

注意 公式のオフィシャル版では、CRC改ざんするなどをしないと動きません
libretroビルドは存在しないので、ご自身でドライバをマージしてビルドしてください

見落とし

なんかsgemfu_970922と
pfghtj_970922(ポケットファイター)は見落としてたっぽいですね。

d_cps2.cpp

static struct BurnRomInfo SgemfuRomDesc[] = {
	{ "pcfu.03a",      0x080000, 0x0d6f1cb2, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
	{ "pcf.04a",       0x080000, 0xb7bc3468, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
	{ "pcf.05a",       0x080000, 0xf574c601, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
	{ "pcf.06a",       0x080000, 0x015c30b3, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
	{ "pcf.07",        0x080000, 0x5ac6d5ea, CPS2_PRG_68K | BRF_ESS | BRF_PRG },

	{ "pcf.13m",       0x400000, 0x22d72ab9, CPS2_GFX | BRF_GRA },
	{ "pcf.15m",       0x400000, 0x16a4813c, CPS2_GFX | BRF_GRA },
	{ "pcf.17m",       0x400000, 0x1097e035, CPS2_GFX | BRF_GRA },
	{ "pcf.19m",       0x400000, 0xd362d874, CPS2_GFX | BRF_GRA },
	{ "pcf.14m",       0x100000, 0x0383897c, CPS2_GFX | BRF_GRA },
	{ "pcf.16m",       0x100000, 0x76f91084, CPS2_GFX | BRF_GRA },
	{ "pcf.18m",       0x100000, 0x756c3754, CPS2_GFX | BRF_GRA },
	{ "pcf.20m",       0x100000, 0x9ec9277d, CPS2_GFX | BRF_GRA },

	{ "pcf.01",        0x020000, 0x254e5f33, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
	{ "pcf.02",        0x020000, 0x6902f4f9, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },

	{ "pcf.11m",       0x400000, 0xa5dea005, CPS2_QSND | BRF_SND },
	{ "pcf.12m",       0x400000, 0x4ce235fe, CPS2_QSND | BRF_SND },
	
	{ "sgemf.key",     0x000014, 0x3d604021, CPS2_ENCRYPTION_KEY },
};

STD_ROM_PICK(Sgemfu)
STD_ROM_FN(Sgemfu)

struct BurnDriver BurnDrvCpsSgemfu = {
	"sgemfu", "sgemf", NULL, NULL, "1997",
	"Super Gem Fighter: Mini Mix (USA 970922) CAS2 Hack\0", NULL, "Capcom", "CPS2",
	NULL, NULL, NULL, NULL,
	BDF_GAME_WORKING | BDF_CLONE | BDF_HACK | BDF_HISCORE_SUPPORTED, 2, HARDWARE_CAPCOM_CPS2, GBF_VSFIGHT, FBF_SF,
	NULL, SgemfuRomInfo, SgemfuRomName, NULL, NULL, NULL, NULL, SgemfInputInfo, NULL,
	Cps2Init, DrvExit, Cps2Frame, CpsRedraw, CpsAreaScan,
	&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};

//ポケットファイター分

static struct BurnRomInfo Pfghtjr1RomDesc[] = {
	{ "pcfj.03a",      0x080000, 0xc7a40d97, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
	{ "pcf.04a",       0x080000, 0xb7bc3468, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
	{ "pcf.05a",       0x080000, 0xf574c601, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
	{ "pcf.06a",       0x080000, 0x015c30b3, CPS2_PRG_68K | BRF_ESS | BRF_PRG },
	{ "pcf.07",        0x080000, 0x5ac6d5ea, CPS2_PRG_68K | BRF_ESS | BRF_PRG },

	{ "pcf.13m",       0x400000, 0x22d72ab9, CPS2_GFX | BRF_GRA },
	{ "pcf.15m",       0x400000, 0x16a4813c, CPS2_GFX | BRF_GRA },
	{ "pcf.17m",       0x400000, 0x1097e035, CPS2_GFX | BRF_GRA },
	{ "pcf.19m",       0x400000, 0xd362d874, CPS2_GFX | BRF_GRA },
	{ "pcf.14m",       0x100000, 0x0383897c, CPS2_GFX | BRF_GRA },
	{ "pcf.16m",       0x100000, 0x76f91084, CPS2_GFX | BRF_GRA },
	{ "pcf.18m",       0x100000, 0x756c3754, CPS2_GFX | BRF_GRA },
	{ "pcf.20m",       0x100000, 0x9ec9277d, CPS2_GFX | BRF_GRA },

	{ "pcf.01",        0x020000, 0x254e5f33, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },
	{ "pcf.02",        0x020000, 0x6902f4f9, CPS2_PRG_Z80 | BRF_ESS | BRF_PRG },

	{ "pcf.11m",       0x400000, 0xa5dea005, CPS2_QSND | BRF_SND },
	{ "pcf.12m",       0x400000, 0x4ce235fe, CPS2_QSND | BRF_SND },
	
	{ "pfghtj.key",    0x000014, 0x62297638, CPS2_ENCRYPTION_KEY },
};

STD_ROM_PICK(Pfghtjr1)
STD_ROM_FN(Pfghtjr1)


struct BurnDriver BurnDrvCpsPfghtjr1 = {
	"pfghtjr1", "sgemf", NULL, NULL, "1997",
	"Pocket Fighter (Japan 970922) CAS2 Hack\0", NULL, "Capcom", "CPS2",
	NULL, NULL, NULL, NULL,
	BDF_GAME_WORKING | BDF_CLONE | BDF_HACK | BDF_HISCORE_SUPPORTED, 2, HARDWARE_CAPCOM_CPS2, GBF_VSFIGHT, FBF_SF,
	NULL, Pfghtjr1RomInfo, Pfghtjr1RomName, NULL, NULL, NULL, NULL, SgemfInputInfo, NULL,
	Cps2Init, DrvExit, Cps2Frame, CpsRedraw, CpsAreaScan,
	&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};

FBNeoにこれ追加で多分いけるんじゃないかなと



動作OKでした(たぶんね)
CPS2分の表記をCAS2 HACKに変更しました。
未保証ですがこちらからダウンロード可能です。

日本語版の方は鍵名が間違ってたので
sgemf.keyからpfghtj.keyにリネームしてください。
あとpfghtj_970922→pfghtjr1にzip名をリネームしてください。
sgemfu_970922→sgemfuでOKです。

pfghtjr1(pfghtj_970922)の日本語版でクリア確認しました。

しめ

取り急ぎめちゃくちゃ雑ですが記事にしました。
誰かの役に立てば幸いです。
もっときれいにできたぜ!って人がいたら
是非ともコメントまで投稿くださいませ!