雑記 PSP ツインビーPORTABLEの解析(単体は失敗)
結論
グラフィックROMだけが数字の羅列のベタ?ファイルで抽出不可能でした。
復号化なのかもしれませんが、自分の技術力ではここで単体ではギブアップ。
細かい話
見えてるだけに悔しい。
壁だったのが.lzの付いた圧縮ファイル群ですが
こちらはQUICKBMSの
Yu Gi Oh Duel Terminal (script 0.1.1) . lzss0 . lz . PACK [yugioh_duel.bms]で
微妙に末尾バイトがとぎれるものの、抽出できました。
(末尾はダミーデータなので0xFFや0x00等の同一数値で1行半ほど埋めればOK)
2024/10/26 追記
当該BMSの39行目の math ZSIZE - 4
を削除すれば
欠損のない正常なファイルが抽出可能になりました。
他のなんとかポータブルでも使えるかもしれませんが
音とか別ファイルになってたり、今回のように
画像だけが抽出できない等、単体では期待しない方が良いです
双方ともに単体では抽出不可ですが
他の移植からのニコイチで抽出は可能でした。
他移植では抜けないデータがPSP版から抜けて
PSP版では抜けないデータが単体側から抽出可能でした。
ただし、現状では危険が危ないので詳細の記載はできません…
アからはじまる単体移植から抜けるとだけ。
解凍後にROM Masqueradeでエンディアン変換(16bit)を行うと
正常化されるものもありました。
エンディアンしないとODD/EVEN物は、逆になるとだけ覚えておけばよいかな?
それ以外のファイルはそのまま結合したり、ダミー水増しでリネームでした。
参考資料のメモ
出たなツインビーの解析メモ
cpu1.rom.lzをyugioh_duel.bmsで解凍
cpu1.rom.datになったら
0x7ffffまでFFで埋める(1行半くらい)
(エンディアン変換しないので)ODD/EVENが反転する
bswap d B cpu1.rom.dat oddeven.txt odd even
bcut cpu1.rom.dat top.tmp 0 262144
bcut cpu1.rom.dat bottom.tmp 262144 262144
bswap d B top.tmp oddeven.txt 060_j03.g09 060_j02.e09
bswap d B bottom.tmp oddeven.txt 060_j10.g11 060_j09.e11
060j01.f3
cpu2.rom.lzをBMS解凍
cpu2.rom.datを0xFFFFまでFFで埋めてリネームするだけ
copy cpu2.rom.dat 060j01.f3
060e04.d1
pcm0.romとpcm1.romをそのまま結合
copy /b pcm0.rom+pcm1.rom 060e04.d1
Tile 524,288
k052109 NG
Sprite 524,288
k053245 NG
grp2.rom.dat
grp1_1.rom.dat
grp1_0.rom.dat
復号化されたようなファイル?で抽出不可
デコード済みなら逆転させればいい?もしくはPSP用にベタ化した?
めも
ROM_REGION( 0x100000, "k052109", 0 ) /* tiles */
ROM_LOAD32_WORD_SWAP( "060e07.k16", 0x000000, 0x080000, CRC(c400edf3) SHA1(3f507df8804c1774e2e213f5eb8be0aa7e818d65) )
ROM_LOAD32_WORD_SWAP( "060e08.k12", 0x000002, 0x080000, CRC(70dddba1) SHA1(2acb94f249cf89b3d53798a6ee1c960f84a04d2e) )
ROM_REGION( 0x100000, "k053245", 0 ) /* sprites */
ROM_LOAD32_WORD_SWAP( "060e06.k7", 0x000000, 0x080000, CRC(09381492) SHA1(5a3008dec99a8e0043405e9c4f5145794b8606e0) )
ROM_LOAD32_WORD_SWAP( "060e05.k3", 0x000002, 0x080000, CRC(32454241) SHA1(7a246b255ff30118c4f8e07e6ba03a22fd5ddc8a) )
間埋めにイラストでも。
pcm0-5までがk054539
copy /b pcm0.rom+pcm1.rom+pcm2.rom+pcm3.rom 067b06.3e
copy /b pcm4.rom+pcm5.rom 067b07.1e
cpu1a.rom.lz
修正したbmsで解凍、cpu1a.rom.dat
ODDで067jaa02.16f EVENで067jaa01.16d
cpu1b.rom.lz
修正したbmsで解凍、cpu1b.rom.dat
ODDで067b04.13f EVENで067b03.13d
cpu2.rom.lz
修正したbmsで解凍、cpu2.rom.dat
コピー&リネームで067jaa05.4eにする
grp3_4bp.rom.lz
修正したbmsで解凍、grp3_4bp.rom.dat
bitswap8.exe grp3_4bp.rom.dat 067b08.22f 3, 2, 1, 0, 7, 6, 5, 4
bitswap8は以下から入手
https://neo-source.com/index.php?topic=241.msg4229#msg4229
グラフィック関係はdoritosさんのおかげで1つ解決済。
copy /b grp1_4bp0.rom.dat+grp1_4bp1.rom.dat+grp1_4bp2.rom.edd+grp1_4bp3.rom.euv grp1.bin
bitswap8.exe grp1.bin grp1-s.bin 3, 2, 1, 0, 7, 6, 5, 4
BSwap.exe d B grp1-s.bin ROM_LOAD32_WORD_SWAP.txt 067b14.1n 067b13.2n
k053246はまだ不明です。
ROM_LOAD32_WORD_SWAPは下の記事リンクを参照のこと。
めも
ROM_REGION( 0x200000, "k056832", 0 )
ROM_LOAD32_WORD( "067b14.1n", 0x000000, 0x100000, CRC(02a44bfa) SHA1(ad95df4dbf8842820ef20f54407870afb6d0e4a3) )
ROM_LOAD32_WORD( "067b13.2n", 0x000002, 0x100000, CRC(633c8eb5) SHA1(a11f78003a1dffe2d8814d368155059719263082) )
ROM_REGION( 0x400000, "k053246", 0 )
ROM_LOAD64_WORD( "067b12.17n", 0x000000, 0x100000, CRC(08d611b0) SHA1(9cac60131e0411f173acd8ef3f206e5e58a7e5d2) )
ROM_LOAD64_WORD( "067b11.19n", 0x000002, 0x100000, CRC(a26f7507) SHA1(6bf717cb9fcad59a2eafda967f14120b9ebbc8c5) )
ROM_LOAD64_WORD( "067b10.20n", 0x000004, 0x100000, CRC(ee31db8d) SHA1(c41874fb8b401ea9cdd327ee6239b5925418cf7b) )
ROM_LOAD64_WORD( "067b09.22n", 0x000006, 0x100000, CRC(88f072ef) SHA1(7ecc04dbcc29b715117e970cc96e11137a21b83a) )
続報です。
k056832のみ抽出成功しました。ダメ元で試したらヒット。
(bitswap8.exeはネオジオ解析探索の副産物でしょうか?)copy /b grp1_4bp0.rom.dat+grp1_4bp1.rom.dat+grp1_4bp2.rom.edd+grp1_4bp3.rom.euv grp1.bin
bitswap8.exe grp1.bin grp1-s.bin 3, 2, 1, 0, 7, 6, 5, 4
BSwap.exe d B grp1-s.bin ROM_LOAD32_WORD_SWAP.txt 067b14.1n 067b13.2nlz解凍後の拡張子が一部おかしいの、なんでなんですかね・・・
k053246は同じようにやってもダメみたいです。
ただツインビーと違ってバイナリの中身詰まってる感が凄いんで、やり方次第でイケる気がします。※eepromはPPSSPPダンプで出てきます(128Bなんで一瞬で見つかります。出たツイも同様)
https://milkchoco.info/archives/9174#comment-5565
doritosさんがいい仕事をしてくれました!すばらしい。
あとはk053246ですが、これは要解析でしょうかね。
とりあえずbswapで使うtxtを書いた記事もはっておきます。
ROM_LOAD64_WORD.txtとか
スクラップAさんのアドバイスなしには書けませんでした…
しめ
出たな、の方は別移植があるんですが
問題はヤッホーですかねえ、歌とかあると版権がねえ。
最近は複数収録のアーケード復刻がどんどん減ってますし
単作販売のアーケードアーカイブスの方がもうかりますからね;
アケアカの超時空要塞マクロスは1500円でしたから
ニチブツの子連れ狼もいい値段になっちゃいそうで、厳しいですかねえ。
コメント欄でやり取りしてくださったdoritosさん、ありがとうございました。
補足
どちらのタイトルも単体移植とニコイチするとROMの抽出は可能になりました
不足しているグラフィック関係は単体移植から容易に抽出可能でした。
ただし現状、暗号化解除がどうしても絡むので公に記載できません。
暗号化解除以外の情報は、この記事内に記載があるので自力で抽出可能だと思います。
ただ質問されても手順をお答えすることは一切できません、あしからずご了承ください。
ディスカッション
コメント一覧
お付き合いいただきありがとうございました。
pspの横画面縦画面フルスクリーンに合わせる為に何らかの処理が入ってるのかなと思わないこともなかったり。
ちなみにダメ元でGダライアスHD等のlz4aファイルに試してみたら、当然の事ながらダメでした。無反応。
スプライトビューア見ると縦に展開してるのを
横画面表示に直して表示してますねえ。
あとは展開はやいからベタデータに置き換えたとか?うーん。
lz4系は派生がたくさんあるっぽいんですよ
しかも探しても見つからないっていう。
lz4aはLz4Xの派生らしく、ソースと実行ファイルはここのスレッドで見つかりましたが
https://encode.su/threads/2599-LZ4a
そこからGithubなどではさっぱり見つからないので
ドマイナーなのを使ったのか名前だけで、実態はlz4系なのかもですが。
BMSで試すならlz4やlz4派生でタイトー絡みがあればワンチャン?
レイズアーケードとかも使ってるようですね。
>BMSで試すならlz4やlz4派生でタイトー絡みがあればワンチャン?
>レイズアーケードとかも使ってるようですね。
raycrisis-20221111_original.lz4aにて試しましたが、yugioh_duel.bmsでは展開できませんでした
いやそれは形式が全然違うので無理です、lzss0ですから。
試すならdoritosさんにコメントしてるlz4a.exeか
BMSならlz4系の派生などかと思います
quickBMSのサイトにlz4で色々スクリプトがありますので
そこからいろいろ試行錯誤する感じかなと
まぁ恐らく弄られてるので素ではむりかなって思います。
ちなみにそこら辺の.lz4aファイルは所持してないのでわかりませぬ。
https://encode.su/threads/2599-LZ4a
普通に起動するとエラーで「コレが足りないよ」言われてるファイルですが
ググってダウンロードしてブチ込んだら動作するようにはなりました。
ただコレって圧縮?用っぽいですね。
なんかコマンドで解凍もできるんかもしれませんが。
doritosさんへ
ソースの中身見ると-dで解凍するっぽいですね
あくまで想像ですが、タイトーのそれはこのlh4aとは違うんじゃないかなぁと。
Taito系で誰ぞが解析してくれるまでは無理じゃないかなって考えてます。
ありがとうございます。
無時に.outファイルが0バイトで出力されました;
やはり無理なんですねぇ・・・
doritosさん
フォーラムのZenHAXも2023年から息してないですし
解凍できないたすけてってのもgbatempでもスルーされてましたね
https://gbatemp.net/threads/help-unpack-lz4a-from-rayz-arcade-chronology.628216/
拡張子は詐称しまくれるので全然違う感じかもです。
Gダライアスもレイフォース系もPS1で遊べるので、まだマシかなぁとは。
…これ国内の大手(?)のハード改造の人では;
拡張子は結局目安にしかなりませんもんねぇ。
doritosさんへ
うちよりも攻めまくってる有名なお方が投稿したヤツですね
ブログタイトルに書くとGoogleさんが本気出して上位に出ちゃうので
うちは上に上がりそうもないものをタイトルにしてたりします。(曲名とか名言とか迷言とか)
ファイルの拡張子と中身の実態があわないなんてしょっちゅうですね
他のコメントでも書きましたが
PSPのファイルにPS2の未解析マイナー形式とか使われると手も足も出ません;
あ、こっちの方もダメだったんですね(今気づきました
アーケードクラシックアニバーサリーコレクション2を出してくれればなぁ…
アケアカでリリース済みのゲームだけでもSTEAMでなら需要ありそうですが。
グラ3・出たツイ・雷×2・XEXと、魂斗羅以外で何かしら4つみたいな感じで。。。
doritosさんへ
ダメでしたねえ;
そうそうquickBMSは最後の方を修正したら正常に抽出できました。(たぶん
コレクション2は出してほしいところですが、うーんどうでしょうねえ。
コナミさんは近年ツインビーに消極的な印象ありますねえ。DEI関係?
パステルが日焼けして出てくるかもしれませんね!
もともと版権抱えてそのままにしがちな傾向あるので、なんともですが。
ドミナンスみたいに移植化されると手も足も出ませんけど!
個人的にはビートマニアの5鍵盤を1枚にまとめて再販してほしいなぁと常々。
続報です。
k056832のみ抽出成功しました。ダメ元で試したらヒット。
(bitswap8.exeはネオジオ解析探索の副産物でしょうか?)
copy /b grp1_4bp0.rom.dat+grp1_4bp1.rom.dat+grp1_4bp2.rom.edd+grp1_4bp3.rom.euv grp1.bin
bitswap8.exe grp1.bin grp1-s.bin 3, 2, 1, 0, 7, 6, 5, 4
BSwap.exe d B grp1-s.bin ROM_LOAD32_WORD_SWAP.txt 067b14.1n 067b13.2n
lz解凍後の拡張子が一部おかしいの、なんでなんですかね・・・
k053246は同じようにやってもダメみたいです。
ただツインビーと違ってバイナリの中身詰まってる感が凄いんで、やり方次第でイケる気がします。
※eepromはPPSSPPダンプで出てきます(128Bなんで一瞬で見つかります。出たツイも同様)
doritosさんへ
bitswap8はNEOGEO絡みですね;別にBswapでもいいんですけどね。
何とまさかのそちらもビットスワップでしたか。ありがとうございます!!
>lz解凍後の拡張子が一部おかしいの、なんでなんですかね・・・
解凍側は変なことしてないのでおそらくM2側の都合なんではと
特に自分もeddとeuvは頭ひねりましたが;
k053246が壁ですか;また時間見て弄ってみますかねぇ
eepromも報告ありがとうございます!
ROM_LOAD32_WORD_SWAP.txt の中身はどうなってますか?
PSP「沙羅曼蛇ポータブル」の xexex で試してみたいです
xexexj
067jaa01.16d 262144 06e99784 maincpu cpu1a.rom.lz を展開した cpu1a.rom.dat をoddevenしたもののodd
067jaa02.16f 262144 30ae5bc4 maincpu cpu1a.rom.lz を展開した cpu1a.rom.dat をoddevenしたもののeven
067b03.13d 262144 97833086 maincpu cpu1b.rom.lz を展開した cpu1b.rom.dat をoddevenしたもののodd
067b04.13f 262144 26ec5dc8 maincpu cpu1b.rom.lz を展開した cpu1b.rom.dat をoddevenしたもののeven
067jaa05.4e 131072 2f4dd0a8 audiocpu cpu2.rom.lz を展開した cpu2.rom.dat が等しい
067b14.1n 1048576 02a44bfa k056832
067b13.2n 1048576 633c8eb5 k056832
067b12.17n 1048576 08d611b0 k053246
067b11.19n 1048576 a26f7507 k053246
067b10.20n 1048576 ee31db8d k053246
067b09.22n 1048576 88f072ef k053246
067b08.22f 524288 ca816b7b k053250 grp3_4bp.rom.lz を展開した grp3_4bp.rom.dat をbit-swap
067b06.3e 2097152 3b12fce4 k054539 pcm0.rom + pcm1.rom + pcm2.rom + pcm3.rom
067b07.1e 1048576 ec87fe1b k054539 pcm4.rom + pcm5.rom
er5911.19b 128 79a79c7b eeprom
eeprom である er5911.19b が無い? ダミーでいけるか?
ROM_LOAD32_WORD_SWAPは
なるほどよくわからん(MAME雑記)【解決】の記事を全部読んでください
eepはdoritosさんからコメントで報告済だった覚えがあります。
PSP版は60fps達成のために画像回りはすべてベタになってるようなので
SegaのファンタジーゾーンみたいにHSP使って戻せるかもしれませんが
開始アドレスからまるで分らないので手が付けられません。
釘をさすようでアレですが単体移植からの抽出情報は投稿しないでくださいね。
法務に厳しい会社がブチギレて訴状を送ってくるリスクがあるのでコメントされても掲載できません。