雑記扱い PSP ツインビーPORTABLEの解析(失敗)

日常PSP,エミュレーター,失敗,解析

結論

グラフィック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.2n

lz解凍後の拡張子が一部おかしいの、なんでなんですかね・・・

k053246は同じようにやってもダメみたいです。
ただツインビーと違ってバイナリの中身詰まってる感が凄いんで、やり方次第でイケる気がします。

※eepromはPPSSPPダンプで出てきます(128Bなんで一瞬で見つかります。出たツイも同様)

https://milkchoco.info/archives/9174#comment-5565

doritosさんがいい仕事をしてくれました!すばらしい。
あとはk053246ですが、これは要解析でしょうかね。
とりあえずbswapで使うtxtを書いた記事もはっておきます。

ROM_LOAD64_WORD.txtとか
スクラップAさんのアドバイスなしには書けませんでした…

しめ



出たな、の方は別移植があるんですが
問題はヤッホーですかねえ、歌とかあると版権がねえ。

最近は複数収録のアーケード復刻がどんどん減ってますし
単作販売のアーケードアーカイブスの方がもうかりますからね;
アケアカの超時空要塞マクロスは1500円でしたから
ニチブツの子連れ狼もいい値段になっちゃいそうで、厳しいですかねえ。

コメント欄でやり取りしてくださったdoritosさん、ありがとうございました。

日常

Posted by Richard Roe