雑記扱い 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
を削除すれば
欠損のない正常なファイルが抽出可能になりました。
他のなんとかポータブルでも使えるかもしれませんが
音とか別ファイルになってたり、今回のように
画像だけが抽出できない等、単体では期待しない方が良いです
が、ポータブル系と他の移植を組み合わせて抽出できる可能性もあります。
何とは言えないですが、お察しください。
解凍後に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さん、ありがとうございました。
ディスカッション
コメント一覧
お付き合いいただきありがとうございました。
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も報告ありがとうございます!