FinalBurn NEOのカスタムビルド
以前の解析でぶん投げたアレ
サムライスピリッツネオジオコレクションから
抽出したROMがドマイナー環境のHBMAMEでしか動かないって話
どうするかなぁ・・・と悩んでたんですが
上記でHBMAMEのみ対応のsamsho5s29.zip(サムライスピリッツ零)を
FinalBurnNEOで遊べるようROMセット追加してみました。
公式からソースコードを取得
対象ファイルはダウンロードしたソースコードを解凍したら
src\burn\drv\neogeo\d_neogeo.cppで
以下を16630行くらいから追記しました(クローン元のそば)
後はお好きな環境でビルドするだけ
// Samurai Shodown V / Samurai Spirits Zero (hbmame29)
static struct BurnRomInfo samsho5s29RomDesc[] = {
{ "270h29.p1", 0x800000, 0xd102bd7a, 1 | BRF_ESS | BRF_PRG }, // 0 68K code
{ "270bs.s1", 0x020000, 0x2ad6048b, 2 | BRF_GRA }, // 1 Text layer tiles
{ "270hd.c1", 0x800000, 0x9adec562, 3 | BRF_GRA }, // 2 Sprite data
{ "270hd.c2", 0x800000, 0xac0309e5, 3 | BRF_GRA }, // 3
{ "270hd.c3", 0x800000, 0x82db9dae, 3 | BRF_GRA }, // 4
{ "270hd.c4", 0x800000, 0xf8041153, 3 | BRF_GRA }, // 5
{ "270hd.c5", 0x800000, 0xe689d62d, 3 | BRF_GRA }, // 6
{ "270hd.c6", 0x800000, 0xa993bdcf, 3 | BRF_GRA }, // 7
{ "270hd.c7", 0x800000, 0x707d56a0, 3 | BRF_GRA }, // 8
{ "270hd.c8", 0x800000, 0xf5903adc, 3 | BRF_GRA }, // 9
{ "270x.m1", 0x080000, 0x5218a10a, 4 | BRF_ESS | BRF_PRG }, // 10 Z80 code
{ "270bs.v1", 0x800000, 0x809c7617, 5 | BRF_SND }, // 11 Sound data
{ "270bs.v2", 0x800000, 0x42671607, 5 | BRF_SND }, // 12
};
STDROMPICKEXT(samsho5s29, samsho5s29, neogeo)
STD_ROM_FN(samsho5s29)
struct BurnDriver BurnDrvsamsho5s29 = {
"samsho5s29", "samsho5", "neogeo", NULL, "2003",
"Samurai Shodown V / Samurai Spirits Zero (Unknown Hack 2017-0-16)\0", NULL, "hack", "Neo Geo MVS",
L"Samurai Shodown V\0\u30B5\u30E0\u30E9\u30A4\u30B9\u30D4\u30EA\u30C3\u30C4\u96F6 (Unknown Hack 2017-0-16)\0", NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_HACK, 2, HARDWARE_PREFIX_CARTRIDGE | HARDWARE_SNK_NEOGEO, GBF_VSFIGHT, FBF_SAMSHO,
NULL, samsho5s29RomInfo, samsho5s29RomName, NULL, NULL, NULL, NULL, neogeoInputInfo, neogeoDIPInfo,
NeoInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
0x1000, 304, 224, 4, 3
};
// Samurai Shodown V / Samurai Spirits Zero (hbmame29)
static struct BurnRomInfo samsho5s29RomDesc[] = {
{ "270h29.p1", 0x800000, 0xd102bd7a, 1 | BRF_ESS | BRF_PRG }, // 0 68K code
{ "270bs.s1", 0x020000, 0x2ad6048b, 2 | BRF_GRA }, // 1 Text layer tiles
{ "270hd.c1", 0x800000, 0x9adec562, 3 | BRF_GRA }, // 2 Sprite data
{ "270hd.c2", 0x800000, 0xac0309e5, 3 | BRF_GRA }, // 3
{ "270hd.c3", 0x800000, 0x82db9dae, 3 | BRF_GRA }, // 4
{ "270hd.c4", 0x800000, 0xf8041153, 3 | BRF_GRA }, // 5
{ "270hd.c5", 0x800000, 0xe689d62d, 3 | BRF_GRA }, // 6
{ "270hd.c6", 0x800000, 0xa993bdcf, 3 | BRF_GRA }, // 7
{ "270hd.c7", 0x800000, 0x707d56a0, 3 | BRF_GRA }, // 8
{ "270hd.c8", 0x800000, 0xf5903adc, 3 | BRF_GRA }, // 9
{ "270x.m1", 0x080000, 0x5218a10a, 4 | BRF_ESS | BRF_PRG }, // 10 Z80 code
{ "270bs.v1", 0x800000, 0x809c7617, 5 | BRF_SND }, // 11 Sound data
{ "270bs.v2", 0x800000, 0x42671607, 5 | BRF_SND }, // 12
};
STDROMPICKEXT(samsho5s29, samsho5s29, neogeo)
STD_ROM_FN(samsho5s29)
struct BurnDriver BurnDrvsamsho5s29 = {
"samsho5s29", "samsho5", "neogeo", NULL, "2003",
"Samurai Shodown V / Samurai Spirits Zero (Unknown Hack 2017-0-16)\0", NULL, "hack", "Neo Geo MVS",
L"Samurai Shodown V\0\u30B5\u30E0\u30E9\u30A4\u30B9\u30D4\u30EA\u30C3\u30C4\u96F6 (Unknown Hack 2017-0-16)\0", NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_HACK, 2, HARDWARE_PREFIX_CARTRIDGE | HARDWARE_SNK_NEOGEO, GBF_VSFIGHT, FBF_SAMSHO,
NULL, samsho5s29RomInfo, samsho5s29RomName, NULL, NULL, NULL, NULL, neogeoInputInfo, neogeoDIPInfo,
NeoInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
0x1000, 304, 224, 4, 3
};
ファイル名とCRC合わせただけのお粗末なモノです。
ソースコピペするとWordPressの自動変換でエラー出るので
コピペできるコード表記に修正しました(2022年11月21日)
ちなみに自分はぜんぜんわからない、ふんいきでROMを追加してるってヤツなので
盛大に間違えてるかもしれません。動作に問題はないように見えるのでOK
監査も問題なく通過するので、正常ROM扱いになります。
\projectfiles内に各バージョンのプロジェクトファイルがあるので
使ってる環境に合わせて選んでビルドします
VS2017の自分はvisualstudio-2015で
開いてからプロジェクトを自動更新してそのまま行けました
WindowsでVisual StudioだとPerlがねえぞって怒られるので
Strawberry Perlをインストールしてパスが通ってるとOKかと
他にも必要とエラーが出たら入れてください。
他にも
上記で抽出したARCADE GAME SERIES 3-in-1 PackをCRC合わせてみました
通常ビルドのFBNEOでムリヤリ実行すると
galaga was found
The following ROMs are invalid:
? graphics ROM prom-2.5c has a CRC of 0D968558 (correct is 77245B66).
こういう風にエラーのCRCを教えてきて
それでも実行する?って聞いてきます。
その表示をメモ帳などに丸ごとコピペしておきます
FBNeoのソースコード解凍先のFBNeo-master\src\burn\drvで
エラーの出るROM名(galagaとか)で検索
ヒットしたファイル (FBNeo-master\src\burn\drv\pre90s\d_galaga.cpp等)を開き
ファイル内をprom-2.5cで検索、CRCを抽出したファイルにあわせて書き換えます
(0x77245B66→0x0D968558)、あとはディグダグも同様に行いビルドするだけ。
なぜかパックマンはそのままでOKでした。
Steamなどからの抽出でロゴや演出などに微妙な改変がされていて
ゲームはむりやり実行できるけど、CRCエラー出るようなROMは
自前で追加かCRCを修正してしまえば、扱いやすくなると思います。
(本来は追加なんでしょうけど、本家基板から吸い出しする機会はないので・・・)
FBNEOで動くならRetroArchのコアにも同様に適応できますし
(ただしめちゃくちゃ面倒くさいです。わざとわかりにくくしてるの?って位に)
Raspberry Piなら単体版が作れるので困る事がなくなるでしょう
ちなみに本家もハックROMが追加されまくってますね
ディスカッション
コメント一覧
まだ、コメントがありません