fake_np変換時のバグ修正と変換方法を変更しました

1.973と同じように、一度変換に必要なファイルの抽出が必要となりました
元ファイルを選択して抽出を行うので、PSNで購入した状態で抽出ができます
./data/fake_np/NP.PBPは利用しなくなったので、削除しても問題有りません

・抽出方法
△メニューで「fake_np用データ作成」を選び、必要なフォルダを指定すれば抽出できます
(フォルダ名はソフトのIDとなっているのですが、選択後にタイトルが表示されるので確認してから実行できます)

・fake_np変換方法
ISOを選択し、○メニューで「fake_np変換」を選択すると、上記で作成した元データを選択し変換開始できます

iso_tool ver 1.975
iso_tool ver 1.975
または
iso_tool ver 1.975 CFW専用版
iso_tool ver 1.975 CFW専用版

前の記事にある、32KBバグ以外の部分はfake_np_v9と変換後の結果は全く同じ物になりますが、
PSNが復旧前のため、こちらではPSPo2∞体験版とみんなのゴルフPSN版でしか起動確認ができていません
その他の起動状況をコメントして頂けると助かります

更新点

*1.975
[BUG](fake_np変換) 元ファイルのISOサイズ取得に失敗していたのを修正
[BUG](fake_np変換) 元ファイルと対象ファイルのISOサイズに差がありすぎるとフリーズしていたのを修正
[NEW](fake_np変換) ダミーブロックは1つで問題ないことがわかったので、複数作らないように修正
[NEW](fake_np変換) fake_np用データ変換をメニューに再度追加
                   ./data/fake_np/以下にUMDタイトルのフォルダが作成されます
[NEW](fake_np変換) fake_np変換にNP.PBPでは無く、上記メニューで作成したデータを利用するように変更
                   変換時に元データフォルダを指定する様に変更

      Special Thanks to irakusa氏

現在fake_np関連を継続して調整中です
1.974に対して、以下の変更/修正を行っています
すでに、「fake_np用データ変換をメニューに再度追加」以外は対応済みで、
現在テストを行っており、ISOサイズが32KBで割り切れる物については、fake_np_v9と全く同じ物が作成できています

[BUG](fake_np変換) 元ファイルのISOサイズ取得に失敗していたのを修正
[BUG](fake_np変換) 元ファイルと対象ファイルのISOサイズに差がありすぎるとフリーズしていたのを修正
[NEW](fake_np変換) ダミーブロックは1つで問題ないことがわかったので、複数作らないように修正
[NEW](fake_np変換) 対象ファイルのUMDタイトルを反映するように変更(変更すると起動できなくなるので中止しました)
[NEW](fake_np変換) fake_np用データ変換を△メニューに再度追加
[NEW](fake_np変換) fake_np変換にNP.PBPでは無く、上記メニューで作成したデータを利用するように変更

PARAM.SFOのUMDタイトルに予備領域があるのをはじめって知った
少なくともPSP2∞では128byteある状態(utf8なので、byte数 != 文字数)

fake_np_v9のバグ(?)について
ISOサイズが、32KBで割り切れない場合、最後の32KB未満部分が無視されてしまうようです
たとえば、16KBや48KBのISOを変換すると、変換後のEBOOT.PBPには、それぞれ0KB、32KB部分しか保存されません
これにより、動作しないソフトもあるのでは無いでしょうか?

現在fake_np_v9の調査を行っているのですが、PSNが復旧しないこともあり、完全に同じ動作をしているか判断つかない状態です

そこで、MSGPWを元ファイルとして、fake_np_v9で以下のファイルを解凍したISOを変換し、
作成されたEBOOT.PBPのファイルサイズと、CRC32かMD5をコメントして頂けないでしょうか?
以下のISOはデータを全く内容の無い、ダミーファイルとなっています

ISOファイル (512)

コメントよろしくお願いします

生活費落として凹んでますので、iso_toolの更新はもう少しかかりそうです

PSNの復旧の見通しがつかないので、申し訳ないのですが、ご協力をお願いします

条件としましては
・PSNでMGSPWを購入済みの方
・PCで添付付きメールの送受信のできる方
・PCとPSPをUSBで接続できの環境の方

ご協力していただくことができれば、takka@tfact.netまでメールをお願いします

早速連絡頂きました。ありがとうございました

fake_npで変換したEBOOT.PBPの構造についてのメモ
PSNでの新規購入ができないので、現状知り得た範囲をまとめておきます

・EBOOT.PBPは、本体部分とUMDイメージ部の2つで構成されています

・本体部分について

本体部分 = header + param_sfo [ + ICON0.PNG + ICON1.PMF + PIC0.PNG + PIC1.PNG + SND0.AT3 ] + data_psp
             *ICON0.PNG/ICON1.PMF/PIC0.PNG/PIC1.PNG/SND0.AT3は無くても可

header
            *ICON0.PNG等のoffsetを記録
            *先頭アドレス : 0x00
            *サイズ       : header[0x08]

param_sfo
            *0x00+"PSF"から始まる、体験版/PSN版から抜き出したデータ
            *先頭アドレス : header[0x08]
            *サイズ       : header[0x0c] - header[0x08]

ICON0.PNG
            *先頭アドレス : header[0x0c]
            *サイズ       : header[0x10] - header[0x0c]

ICON1.PMF
            *先頭アドレス : header[0x10]
            *サイズ       : header[0x14] - header[0x10]

PIC0.PNG
            *先頭アドレス : header[0x14]
            *サイズ       : header[0x18] - header[0x14]

PIC1.PNG
            *先頭アドレス : header[0x18]
            *サイズ       : header[0x1c] - header[0x18]

SND0.AT3
            *先頭アドレス : header[0x1c]
            *サイズ       : header[0x20] - header[0x1c]

data_psp
            *体験版から抜き出したデータ
            *先頭アドレス : header[0x20]
            *サイズ       : header[0x24] - header[0x20]

・UMDイメージ部について
--------------------------------------------
UMDイメージ部 = np_header + block_table + table_hash + iso_image + dummy_data

np_header
            *"NPUMDIMG"から始まる、体験版/PSN版から抜き出したデータ
            *先頭アドレス : header[0x24]
            *サイズ       : 0x100

            *判明している情報
            * 0x0c~(4byte) : block_tableの1エントリあたりのセクタ数
                               0x00000010の場合は2kb * 16 = 32kb
            * 0xc0~(サイズ不明) : 暗号/復号化するために必要なvkey作成用データ
            * 0xa0~(サイズ不明) : 下記データを暗号/復号化するのに必要なckey作成用データ
                                   (vkeyとこのデータを利用してckeyを作成)
            * 0x60~0x9f       : ISOサイズ/UMD ID等が暗号化されて保存
                                   (vkeyとckeyを利用して復号)
                                   (ここのサイズを変更しただけでは認証エラーとなる)

block_table
            *iso_image 32kbごとのテーブル / 1エントリ = 0x20byte
            *先頭アドレス : np_headerの直後
            *サイズ       : 変換元ISOサイズ / 32kb * 0x20
                             (変換元ISOサイズはnp_headerに暗号化して埋め込まれている)
            *変換元のISOサイズと対象ISOサイズの差の部分は、dummy_data用のテーブルで埋める
            * テーブル内容
            * 0x10 : オフセット
            * 0x14 : ブロックサイズ (通常は0x8000(32kb),dummyの場合は0x50)
            * 0x18 :  0x00000005 (フラグだと思われるが詳細不明)

table_hash
            *変換元のnp_headerから取得したvkeyとblock_tableから計算されたhash値
            *先頭アドレス : np_headerの直後
            *サイズ       : 0x20 前半0x10はダミー

iso_image
            *isoイメージ
            *先頭アドレス : table_hashの直後

dummy_data
            *isoイメージのダミーデータ
            *先頭アドレス : iso_imageの直後
            *サイズ       : 0x50
© 2011 きまぐれblog Suffusion theme by Sayontan Sinha