「ptfファイル解析」の編集履歴(バックアップ)一覧はこちら
「ptfファイル解析」(2011/11/20 (日) 02:42:11) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
**注意事項
-ここに載せている情報は公式発表されているものではありません
-情報の利用は自己責任でお願いします。PSPが壊れても責任は持ちません
-情報の追加&修正大歓迎!
**参考URL
[[A peak at the PTF format>http://endlessparadigm.com/forum/showthread.php?tid=4055&page=1]]
**大まかな構成
ptfファイルは以下の5つのパートで構成され、それぞれに複数のデータが格納されている。
+ヘッダー
++タイトル
++プロダクトID
++バージョン
+プレビュー&テーマカラーパート
++プレビューアイコン
++プレビュー画像
++テーマカラー
+壁紙パート
++壁紙
+カテゴリー列アイコンパート
++カテゴリー列アイコン
+第1階層アイコンパート
++第1階層アイコン
+第2階層アイコンパート
++第2階層アイコン
**ヘッダーのデータ構造
ヘッダーは以下のようなデータ構造になっている。
|アドレス|バイト数|内容|
|+00|4|PTFファイルシグネチャ (00 50 54 46)|
|+04|4|不明 (01 00 00)(フォーマットのバージョン情報?)|
|+08|128|タイトル (UTF-8文字列)|
|+88|48|プロダクトID|
|+B8|8|ツールのバージョン|
|+C0|8|バージョン|
|+C8|8|不明 (08 00 00 00 00 00 00 00)|
|+D0|48|データなし (0x00で埋め尽くされている)|
|+100|4|第1パート先頭アドレス|
|+104|4|第2パート先頭アドレス|
|+108|4|第3パート先頭アドレス|
|+10C|4|第4パート先頭アドレス|
|+110|4|第5パート先頭アドレス|
**各パートのデータ構造
ヘッダー以外の各パートは以下のようなデータ構造になっている。
|アドレス|バイト数|内容|
|+00|2|パートID|
|+02|2|格納データ数|
|+04|4|パート全体サイズ|
|+08|4|格納データ群先頭アドレス|
|+0C|20|データなし (0x00で埋め尽くされている)|
|+20|-|データ格納部 (データが順番に並ぶ)|
**データ格納部
データ格納部には以下の構造を持ったデータが順番に並んでいる。
|アドレス|バイト数|内容|
|+00|4|データID (アイコンID)|
|+04|2|データタイプ ※1|
|+06|2|圧縮方式? (0x02:RLZ圧縮、0x01:Deflate(zlib deflated), 0x00:無圧縮)|
|+08|4|データサイズ (圧縮後) = 格納時点のデータサイズ|
|+0C|4|データサイズ (圧縮前)|
|+10|16|データなし (0x00で埋め尽くされている)|
|+20|-|実データ (画像はRLZ圧縮されたデータが格納されている)|
※1)データタイプの対応表
|0x00|PNG|
|0x01|JPEG|
|0x02|TIFF|
|0x03|GIF|
|0x04|BMP|
|0x05|GIM (PSP専用画像形式)|
**パートIDとデータIDの対応表
|パートID|データID|内容|
|0x00||プレビュー&テーマカラーパート|
||0x00|プレビューアイコン|
||0x01|プレビュー画像|
||0x02|テーマカラーID (4バイト)|
|0x01||壁紙パート|
||0x00|壁紙|
|0x02||カテゴリー列アイコンパート|
||0x00|カテゴリー列デフォルトアイコン|
||0x01〜|カテゴリー列アイコン|
|0x03||第1階層アイコンパート|
||0x00|第1階層デフォルトアイコン|
||0x01|第1階層デフォルトアイコン (フォーカス)|
||0x02〜|第1階層アイコン (偶数:本体、奇数:フォーカス)|
|0x04||第2階層アイコンパート|
||0x00|第2階層デフォルトアイコン|
||0x01|第2階層デフォルトアイコン (フォーカス)|
||0x02〜|第2階層アイコン (偶数:本体、奇数:フォーカス)|
**RLZ圧縮について
-独自の圧縮形式?
--情報求む!
--PSP上の自作アプリを使って解凍できることを確認
-公式コンバータで作ると画像データがRLZ圧縮されている
--背景画像がBMPのRLZ圧縮、他がGIMのRLZ圧縮
--BMPは指定したファイルそのまま
--GIMはプレビュー画像がフルカラーでアイコンがインデックスカラー(αつき)の2種類
**実験ネタ
-無圧縮の画像データを格納しても使えるか?
--圧縮フラグや圧縮前後のファイルサイズ値をかえればOK?
---無圧縮のGIM画像でためしたがだめぽ(PNGもダメと報告あり)
---アイコンデータが不適切な場合、デフォルトアイコンが表示される模様
-第1階層のデータIDが0x2cと0x2dと0x32以降が使われていない
--0x2c、0x2d、0x30、0x31はなにも変わらなかった
--他のIDはどうか?
**注意事項
-ここに載せている情報は公式発表されているものではありません
-情報の利用は自己責任でお願いします。PSPが壊れても責任は持ちません
-情報の追加&修正大歓迎!
**参考URL
[[A peak at the PTF format>http://endlessparadigm.com/forum/showthread.php?tid=4055&page=1]]
**大まかな構成
ptfファイルは以下の5つのパートで構成され、それぞれに複数のデータが格納されている。
+ヘッダー
++タイトル
++プロダクトID
++バージョン
+プレビュー&テーマカラーパート
++プレビューアイコン
++プレビュー画像
++テーマカラー
+壁紙パート
++壁紙
+カテゴリー列アイコンパート
++カテゴリー列アイコン
+第1階層アイコンパート
++第1階層アイコン
+第2階層アイコンパート
++第2階層アイコン
**ヘッダーのデータ構造
ヘッダーは以下のようなデータ構造になっている。
|アドレス|バイト数|内容|
|+00|4|PTFファイルシグネチャ (00 50 54 46)|
|+04|4|不明 (01 00 00)(フォーマットのバージョン情報?)|
|+08|128|タイトル (UTF-8文字列)|
|+88|48|プロダクトID|
|+B8|8|ツールのバージョン|
|+C0|8|バージョン|
|+C8|8|不明 (08 00 00 00 00 00 00 00)|
|+D0|48|データなし (0x00で埋め尽くされている)|
|+100|4|第1パート先頭アドレス|
|+104|4|第2パート先頭アドレス|
|+108|4|第3パート先頭アドレス|
|+10C|4|第4パート先頭アドレス|
|+110|4|第5パート先頭アドレス|
**各パートのデータ構造
ヘッダー以外の各パートは以下のようなデータ構造になっている。
|アドレス|バイト数|内容|
|+00|2|パートID|
|+02|2|格納データ数|
|+04|4|パート全体サイズ|
|+08|4|格納データ群先頭アドレス|
|+0C|20|データなし (0x00で埋め尽くされている)|
|+20|-|データ格納部 (データが順番に並ぶ)|
**データ格納部
データ格納部には以下の構造を持ったデータが順番に並んでいる。
|アドレス|バイト数|内容|
|+00|4|データID (アイコンID)|
|+04|2|データタイプ ※1|
|+06|2|圧縮方式? (0x02:RLZ圧縮、0x01:Deflate(zlib deflated), 0x00:無圧縮)|
|+08|4|データサイズ (圧縮後) = 格納時点のデータサイズ|
|+0C|4|データサイズ (圧縮前)|
|+10|16|データなし (0x00で埋め尽くされている)|
|+20|-|実データ (画像はRLZ圧縮されたデータが格納されている)|
※1)データタイプの対応表
|0x00|PNG|
|0x01|JPEG|
|0x02|TIFF|
|0x03|GIF|
|0x04|BMP|
|0x05|GIM (PSP専用画像形式)|
**パートIDとデータIDの対応表
|パートID|データID|内容|
|0x00||プレビュー&テーマカラーパート|
||0x00|プレビューアイコン|
||0x01|プレビュー画像|
||0x02|テーマカラーID (4バイト)|
|0x01||壁紙パート|
||0x00|壁紙|
|0x02||カテゴリー列アイコンパート|
||0x00|カテゴリー列デフォルトアイコン|
||0x01〜|カテゴリー列アイコン|
|0x03||第1階層アイコンパート|
||0x00|第1階層デフォルトアイコン|
||0x01|第1階層デフォルトアイコン (フォーカス)|
||0x02〜|第1階層アイコン (偶数:本体、奇数:フォーカス)|
|0x04||第2階層アイコンパート|
||0x00|第2階層デフォルトアイコン|
||0x01|第2階層デフォルトアイコン (フォーカス)|
||0x02〜|第2階層アイコン (偶数:本体、奇数:フォーカス)|
** RLZ圧縮フォーマット
RLZ圧縮データのフォーマットは以下となっている。
|アドレス|バイト数|内容|
|+00|2|0x78 0x9C (内容不明)|
|+02|N|圧縮データ(gzip形式) N = データサイズ (圧縮後) - 8|
|+02+N|6|不明|
-独自の圧縮形式
--圧縮データはgzip形式の「圧縮されたブロック」と等しい。
---参考: http://www.studyinghttp.net/cgi-bin/rfc.cgi?1952
--ptfファイルにCRC32が見つからないため、gzipではCRCエラーで展開できない。
--適当にgzipのヘッダとフッタを圧縮データにつければ、CRC32エラーは起きるが7zipで展開はできることは確認済み。
---7zip: http://sevenzip.sourceforge.jp/
--PSP上の自作アプリを使って解凍できることを確認
---PSP上の場合、圧縮データをPSP上のsceKernelGzipDecompress関数で展開できるらしい。おそらくCRC32チェックをしないgzip展開を行っている。
-公式コンバータで作ると画像データがRLZ圧縮されている
--背景画像がBMPのRLZ圧縮、他がGIMのRLZ圧縮
--BMPは指定したファイルそのまま
--GIMはプレビュー画像がフルカラーでアイコンがインデックスカラー(αつき)の2種類
**実験ネタ
-無圧縮の画像データを格納しても使えるか?
--圧縮フラグや圧縮前後のファイルサイズ値をかえればOK?
---無圧縮のGIM画像でためしたがだめぽ(PNGもダメと報告あり)
---アイコンデータが不適切な場合、デフォルトアイコンが表示される模様
-第1階層のデータIDが0x2cと0x2dと0x32以降が使われていない
--0x2c、0x2d、0x30、0x31はなにも変わらなかった
--他のIDはどうか?
表示オプション
横に並べて表示:
変化行の前後のみ表示: