チチをもげ!(り・にゅ~ある)
作曲家さんセルフカバーで頑張ってます
凄い楽しそうなのが、このご時世にロックでいいですね!
ガッシュベルの作中歌ですが、代名詞みたいになってる感があります。
ACA NEOGEO KOF2003(Android)のROM抽出
検証は記事執筆時において最新版で行っています。
前提(新旧両用)
Must read.
下ごしらえはこちら
lib_neogeo.soを入手するまでをまとめてあります。
事前準備(新版)
スクラップAさんのお陰で、ほとんどがNEO-CMCで完結するようになりました!
上記からneo-cmc、bSwap、bcut、oddeven.txtを入手してください
旧来のneo-cmcではエラーを吹くので、必ず上記ページから入手をお願いします。
Pは自分がぽんこつなのか、CRCズレるので既存ツールでOKにしました。
あとFBNEOがCRC読み優先するのでPリネームわすれてました;
追記)スクラップAさんからコメントを頂いて
Pの変換動作を新版neo-cmcで確認できました!
2k3toa2003encrypt
Remでコメントアウトしていますが、どちらでも結果は同じです。
変換batchファイル(新版)
ミスや改善点ありましたら遠慮なくコメントをどうぞ。
v間違えてたので修正しました。Pもneo-cmcで変換できました。
スクラップAさんコメント投稿ありがとうございます!
rem 楽ちんバージョンです。どちらでも結果は同一です。
rem echo P
rem bcut 22033F 271-p1.bin 0 9437184
rem 2k3toa2003encrypt.exe
rem ren 271-p1c.bin 271-p1c.p1
rem ren 271-p2c.bin 271-p2c.p2
rem ren 271-p3c.bin 271-p3c.p3
rem スクラップAさんから投稿されたPバッチです。CRC一致と動作確認済
rem neo-cmc単一ですべて変換可能になります。
echo P
bcut 22033F 271-p1.bin 0 9437184
neo-cmc.exe 271-p1.bin 0 enc_prom.tmp 1 271 P
bcut.exe enc_prom.tmp p12.tmp 0x000000 0x800000
bcut.exe enc_prom.tmp 271-p3c.p3 0x800000 0x100000
BSwap.exe d B p12.tmp ROM_LOAD32_WORD.txt 271-p1c.p1 271-p2c.p2
echo V
neo-cmc.exe 1B7DDEC 0 271-v_enc.tmp 1 271 V
bcut 271-v_enc.tmp 271-v1c.v1 0 8388608
bcut 271-v_enc.tmp 271-v2c.v2 8388608 8388608
echo M
bcut 1E87B4 m1d.bin.tmp 0 524288
neo-cmc.exe m1d.bin.tmp 0 271-m1c.m1 1 271 M
echo C
copy /b 421C00+9B2178+10206E8+1620064 crom.tmp
neo-cmc.exe crom.tmp 67108864 enc_crom.tmp 1 271 C
BSwap d B enc_crom.tmp oddeven.txt odd_enc.tmp even_enc.tmp
bcut odd_enc.tmp 271-c1c.c1 0 8388608
bcut odd_enc.tmp 271-c3c.c3 8388608 8388608
bcut odd_enc.tmp 271-c5c.c5 16777216 8388608
bcut odd_enc.tmp 271-c7c.c7 25165824 8388608
bcut even_enc.tmp 271-c2c.c2 0 8388608
bcut even_enc.tmp 271-c4c.c4 8388608 8388608
bcut even_enc.tmp 271-c6c.c6 16777216 8388608
bcut even_enc.tmp 271-c8c.c8 25165824 8388608
del *.tmp
del 271-p1.bin
mkdir kof2003
move 271-***.*** kof2003\
powershell compress-archive kof2003\* kof2003
事前準備(旧版)outdated
今回は、たくさんツールが必要になるので注意してください
2k3toa2003encrypt
neoconv2
m1_tool
NEO-CMC_mod
MSC_extract_v2.zip (bcut bswap oddeven.txt)
必要なファイルをすべてBinwalkで解凍したフォルダーに入れてください
作業後ですが、大体こんな感じになってればOK
変換batchファイル(旧版)outdated
不備や間違いがありましたら、遠慮なくコメントでご指摘ください(英語でもOK)
echo P
bcut 22033F 271-p1.bin 0 9437184
2k3toa2003encrypt.exe
ren 271-p1c.bin 271-p1c.p1
ren 271-p2c.bin 271-p2c.p2
ren 271-p3c.bin 271-p3c.p3
echo V
bcut 1B7DDEC 271-v1d.bin 0 8388608
bcut 1B7DDEC 271-v2d.bin 8388608 8388608
neoconv 1 e 5 271 2 - bin d
ren 271-v1e.bin 271-v1c.v1
ren 271-v2e.bin 271-v2c.v2
echo Use m1tool Filename m1d.bin Select"E" Make m1d.bin-encrypted
bcut 1E87B4 m1d.bin 0 524288
m1_tool.exe
ren m1d.bin-encrypted 271-m1c.m1
rem C
copy /b 421C00+9B2178+10206E8+1620064 crom.bin
NEO-CMC_mod.exe crom.bin 67108864 enc_crom.bin 1 6 -1 524288
BSwap d B enc_crom.bin oddeven.txt odd_enc even_enc
bcut odd_enc 271-c1c.c1 0 8388608
bcut odd_enc 271-c3c.c3 8388608 8388608
bcut odd_enc 271-c5c.c5 16777216 8388608
bcut odd_enc 271-c7c.c7 25165824 8388608
bcut even_enc 271-c2c.c2 0 8388608
bcut even_enc 271-c4c.c4 8388608 8388608
bcut even_enc 271-c6c.c6 16777216 8388608
bcut even_enc 271-c8c.c8 25165824 8388608
del 271-p1.bin
del 271-v1d.bin
del 271-v2d.bin
del crom.bin
del odd_enc
del even_enc
del enc_crom.bin
del m1d.bin
mkdir kof2003
move 271-***.*** kof2003\
powershell compress-archive kof2003\* kof2003
注意点
(旧版)m1_toolは対話型になっていますので、止まったらm1d.binを入力
EかDを聞いてくるのでEを入力します。そこだけは人力ですのでご容赦ください。
一枚基板ではなくMVSのため、日本語にはプロテクトがかかっています
通常の設定で日本語を選んでも英語が強制化されてしまうので注意。
uniBIOSを使っての強制日本語設定が必要になります。
このバッチが理解できてリンク先を見れるなら
公開自粛しているAmazonPrime配布のKof2003hも変換できます。
ただ別ツールでCにSを結合することが必要ですので注意
ついでにSVC CHAOSも可能です。(Cの正常化には、画像の書き換えが必要)
しめ
そろそろ夏も終わるので
こっちなら公開していいかなって
雑記だといったな?あれは嘘だ(急に差し替えた)
9/3 スクラップAさんのお陰でスッキリ化しました!
一応旧版は残しておきます。
次回は雑記になります。
ディスカッション
コメント一覧
さっそく使って頂いたようで、さすが速いですね・・・。
> Pは自分がぽんこつなのか、CRCズレるので既存ツールでOKにしました。
ツールとしては一発で出力できるIQ-san、しげるさんのツールの方が良いと思います。
ただ、neo-cmcのバグがあるなら潰しておきたいので、よければ時間のある時にお付き合い頂きたいです。
(今、androidの準備がないもので試せなくて・・・)
試して上手くいかなかった手順(bat)は下記のような順序で合っていますでしょうか?
なお、ROM_LOAD32_WORD.txtはBSwap.exeに同梱してあります。
echo P
bcut 22033F 271-p1.bin 0 9437184
neo-cmc.exe 271-p1.bin 0 enc_prom.tmp 1 271 P
bcut.exe enc_prom.tmp p12.tmp 0x000000 0x800000
bcut.exe enc_prom.tmp 271-p3c.p3 0x800000 0x100000
BSwap.exe d B p12.tmp ROM_LOAD32_WORD.txt 271-p1c.p1 271-p2c.p2
スクラップAさんコメントありがとうございます。
しげるさんの心の叫びが聞こえてくるKOF2003回りは
あまりにも手が出せなくてノータッチでしたが、neo-cmcでも再現可能なのですね
後ほど検証してから再度コメントさせていただきます!検証完了しました。投稿されたP用バッチでCRC完全に一致を確認できました!
最後にBswap入れる必要があるんですね、そこら辺は全く理解できてなかったので目からうろこです。
ありがとうございました~
さっそく検証ありがとうございます。
しげるさんのところも軽く見てきましたが、苦労されていたようですね・・・。
しばらくこのあたりの分野に触れてなかったので、浦島状態でした。
P-ROMは暗号化も配置も難しいです。
mameのソースを見れば一応推測はできますが、試行錯誤しないとたどり着けない感じで。
こちらこそ貴重な情報を投下いただきありがとうございました
界隈がほぼ息してない上に、大体10年超えるとWEBの情報も消えてることが多くて
本当に助かりました。おかげでneo-cmc単体での変換が実現できました。
Pは本当にコード読める人でないと手が出せないという印象です
半端者の時分にはとてもとても;しげるさんもツールで救われた感じですかね。
余談ですがSVCもPの変換も同様に行えることを確認できました。
暗号化からのBswapでバッチリでした。
ただCの手動修正が説明するの大変すぎて、いつになるやらって感じですが;
末期あたりは海賊版対策でSNKもかなり頑張ってた印象です
それでも当時はあっという間に突破されてしまったようで、大陸パワー恐ろしいです。
おつかれさまです!
ネオジオ関係のツールがほぼ出揃った感があるので浮上しました
自分のリポジトリ結局IQさんの改変分という微妙なものなので
スクラップAさんので対応できたら削除しようと思っていました
というかスクラップAさんには頭上がらないというか感謝しかありません
ものすごい個人的なネオジオ研究(というかMVS研究)の半分以上は
スクラップAさんのツールなしには無理でした
自分もCROMに関しては自前で全部暗号化できる改変版作ってましたが公開するのも
なんだか後ろめたくてモヤモヤしてました
(IQさんのはまぁ、うん…スイマセン
スクラップAさんぐらいならkof2003のやつ割とすぐ作れるんだろうと
思ってたんですけどね…
自分はkof2003の最初のアプローチはエミュ側で対応とかとんでもなく苦労してました…
CROMに関しては多分kof2000とかkof2002とかサムライなんとかは再暗号化できると思います
旧版改でFBneoの復号分のCRCは本当に合ってるかとかのチェックをしてたので
ソース見させてもらいましたが
おそらくサムライなんとかのPも変換できるんですよね
自分は泥臭くファイルを切り貼りして変換してました…ウゥゥゥ
毎回ソースが見やすく分かりやすいので参考になります(自分でもなんとなく理解できます
Readme.txtにkof98と書いてますが現状では実は動作しないんですねw
まぁM1は暗号化されてないですしw
セールだからandroid版アケアカのkof98も買い増ししたところ
MVS版の上普通に実行しても冒頭のお下品ボイスが削除されてなくびっくりしましたw
コンシューマのほうでは削除されてます
まぁ復号されていてもこれは別のプロテクトに引っかかちゃいます
geolithでは対応済みなんですけど
そのままアケアカ等でプレイするのが色々とスジとは思うのですが
実際のところメモリーカードに対応してないので長いゲーム等で結構困ってます…
スクラップAさんへ
バグを取っておきたいとのことで思い出したことがあったので
参考として書いておきます
以前それこそサムライなんとか(270)のVROMを変換したときIQさんのでは
完全に変換されたのですが以前のneo-cmcだと一部が変換されない謎現象が起きて
困ったことを思い出しました
(音声は正常に鳴るがCRCが合わない状態)
当時それ以上原因を突き詰めなかったのですが
(PROMの無理くりな泥臭い変換作業していて余裕がなかったです)
PROMの並びは普通にMAMEとFBneoのソースに
答えが書いてあるのを発見してしまい作業は終わり
VROMはIQさんので完全変換できてたのですっかり忘れてました
今回のneo-cmcで変換したところIQさんツールの変換分と完全一致しました!
ということで270のVROMの変換には問題はないようです(ヨカッタ
270のPROMの変換はうまくいくのかとりあえず確認してみました
PROMはCRCのおかしいファイルが作成されてしまいました…(オォウ…
現在270のPROMの暗号化(スクランブル化)だけしか見れてませんが
ソースを見るとスクラップAさんも上の行に
コメントアウトしてやっている形跡があるので
多分自分と同じ結構めんどくさいことをしていたと思います
(割とこういうのがつらいんですよね…)
インターリーブするアドレスの割当にダブりがありましたです
512KBに分割した自分の並び(泥臭い作業の都合上01から16までの数字になってます)では
01 02 13 06 07 12 09 16 15 08 05 14 11 04 03 10
なので
static const int sec[] = { 0x000000,0x080000,0x600000,0x180000,0x300000,0x580000,0x400000,0x780000,0x700000,0x380000,0x200000,0x680000,0x500000,0x180000,0x100000,0x480000 };
で現状0x180000が2回出てきちゃってるので自分の並びの06に当たる部分は0x280000ですね
ので
static const int sec[] = { 0x000000,0x080000,0x600000,0x280000,0x300000,0x580000,0x400000,0x780000,0x700000,0x380000,0x200000,0x680000,0x500000,0x180000,0x100000,0x480000 };
で正解と思います
他のPROMは確認してません(やはりちょっとの確認でもめんどい作業でした…)
とりあえずこれで現状のバグは一つ修正されたのでよかったと思います…(┐「ε:)_パタリ
しげるさん
熱いコメント、デバッグ、修正案までありがとうございます!
ご指摘の通り、0x280000を0x180000に打ち間違えてます・・・。
例であげているkof98が対応していないのもミスですし、kof98のPROM対応していないのも対応漏れです(^^;)
予想されている通り、手作業で一気にとアップデートしたので色々抜け漏れがありますね・・・
サムライなんとか(270)のVROMも調べてみますね。今日は時間が取れないので週末にでもまとめて修正しようと思います。
Richard Roeさん
すみません、私のツールの件でコメ欄お借りしてますー。ありがとうございます。
スクラップAさん
いえいえ、うちのコメント欄でよければガンガン使ってください
自分もよく変換バッチで間違えてるんで;
海外フォーラムで足りないのを補完されてたりしてひっそり直してます・・・
しげるさん
あらためまして、バグ報告&修正案ありがとうございました!
もろもろ修正した版へ差し替えました。
・270のP-ROM
頂いた修正案でそのまま修正しました
・270のV-ROM
試してみたのですが、最新版だと再現しませんでした。
V-ROMについてはmameのソース内にタイトルごとのmagic numberがあるので
引数から実行者がmagic numberを入力するようにしていたのですが、
今回はexe内にmagic numberを埋め込むようにしました。
そのあたりで直ったのかもしれません。
・例であげているkof98が対応していない
ありがとうございます。例をkof2000に変えました。
ついでにkof98の暗号化・復号への対応が漏れていたので対応しました。
・kof98のOP冒頭のボイス
そんな違いがあったんですね! さすがネオジオにお詳しいですね。
セリフは、某ゲームカタログwikiで確認してきて知りましたが、それは削除されるなってw