format > tah

「format/tah」の編集履歴(バックアップ)一覧はこちら

format/tah」(2011/09/24 (土) 20:11:39) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

**アーカイブ (.tah) TDCGのアーカイブ形式です。 公開ソースコード: -TAHdecrypt (C#) --関数形式なので流用は難しい。TAH versionに未対応。 -TDCGMan (C#) --クラスとして実装 -TDCGExplorer (C#) --TAH読み書きともクラスとして実装 ***構造 ヘッダー部分 uint32 magic;    ※ TAH2 uint32 numentries; ※ エントリーの数 uint32 version; ※ TAHバージョン uint32 nouse; ※ 予約 エントリー部分 uint32 hash; ※ ハッシュ値 uint32 offset; ※ データ先頭オフセット ※上記uint32をnumentries回数繰り返す ディレクトリ部分 uint32 dirlen; ※ 展開後のディレクトリテーブル長 ※圧縮データの長さはこの位置から、エントリーの最初のオフセットまで LZSS Deflate圧縮に、圧縮前の長さをメルセンヌツイスタの初期乱数種で作った乱数と XORした物によって、以下のデータを格納する(以後同様のデータはDeflate+MTと略する) TAHdecryptでは32byte以下の圧縮データを生成しない。これはバッファオーバーランが 起きる為であると説明されている。TDCGManではスライド辞書ウインドウの開始位置が、 スライド辞書ウインドウの長さより短いデータを生成してしまう。現時点では、 3Dカスタム少女の動作に支障を与えた例は報告されていないが、いずれの場合に おいても圧縮されたデータを元に戻す事ができない。いずれの問題も、TDCGExplorerの TAHクラスでは対応している。 圧縮率はTDCGExplorerが最も高く、TAHdecryptorが低い。この為、同じデータを 両者で圧縮するとファイルサイズが一致しない。これはTAHdecryptorのスライド 辞書ウインドウ候補を4個しか保持しないのに対して、TDCGExplorerは4096個保持する。 圧縮前のデータ構造は以下の様に記述される。 data/<NUL> script/<NUL> script/items/<NUL> ※最後に示されたディレクトリ名がファイル名に結合する N999BODY_A00.TBN<NUL> ※大文字小文字は無視される。内部的には大文字にする方が間違い。 data/icon/<NUL> data/model/<NUL> N999BODY_A00.TSO<NUL> data/icon/items/<NUL> N999BODY_A00.PSD<NUL> ※<NUL>とは1バイトの0値。 ※3Dカスタム少女上では、tbnファイルのみ格納すれば良い。  それ以外のファイル名はハッシュ値によって識別される。 データ実体 ファイル末端まで、以後データ実体が格納される。 データ実体の形式は、 uint32 length; ※展開後のサイズ Deflate+MT ※上記の構造がヘッダー部numentriesの数だけ繰り返される。 ※最後の構造はファイル長さ-オフセットによって圧縮サイズを求める。
**アーカイブ (.tah) TDCGのアーカイブ形式です。 公開ソースコード: -TAHdecrypt (C#) --関数形式なので流用は難しい。TAH versionに未対応。 -TDCGMan (C#) --クラスとして実装 -TDCGExplorer (C#) --TAH読み書きともクラスとして実装 ***構造 ヘッダー部分 uint32 magic;    ※ TAH2 uint32 numentries; ※ エントリーの数 uint32 version; ※ TAHバージョン uint32 nouse; ※ 予約 エントリー部分 uint32 hash; ※ ハッシュ値 uint32 offset; ※ データ先頭オフセット ※上記uint32をnumentries回数繰り返す ディレクトリ部分 uint32 dirlen; ※ 展開後のディレクトリテーブル長 ※圧縮データの長さはこの位置から、エントリーの最初のオフセットまで LZSS Deflate圧縮に、圧縮前の長さをメルセンヌツイスタの初期乱数種で作った乱数と XORした物によって、以下のデータを格納する(以後同様のデータはDeflate+MTと略する) TAHdecryptでは32byte以下の圧縮データを生成しない。これはバッファオーバーランが 起きる為であると説明されている。TDCGManではスライド辞書ウインドウの開始位置が、 スライド辞書ウインドウの長さより短いデータを生成してしまう。現時点では、 3Dカスタム少女の動作に支障を与えた例は報告されていないが、いずれの場合に おいても圧縮されたデータを元に戻す事ができない。いずれの問題も、TDCGExplorerの TAHクラスでは対応している。 圧縮率はTDCGExplorerが最も高く、TAHdecryptが低い。この為、同じデータを 両者で圧縮するとファイルサイズが一致しない。これはTAHdecryptorのスライド 辞書ウインドウ候補を4個しか保持しないのに対して、TDCGExplorerは4096個保持する。 圧縮前のデータ構造は以下の様に記述される。 data/<NUL> script/<NUL> script/items/<NUL> ※最後に示されたディレクトリ名がファイル名に結合する N999BODY_A00.TBN<NUL> ※大文字小文字は無視される。内部的には大文字にする方が間違い。 data/icon/<NUL> data/model/<NUL> N999BODY_A00.TSO<NUL> data/icon/items/<NUL> N999BODY_A00.PSD<NUL> ※<NUL>とは1バイトの0値。 ※3Dカスタム少女上では、tbnファイルのみ格納すれば良い。  それ以外のファイル名はハッシュ値によって識別される。 データ実体 ファイル末端まで、以後データ実体が格納される。 データ実体の形式は、 uint32 length; ※展開後のサイズ Deflate+MT ※上記の構造がヘッダー部numentriesの数だけ繰り返される。 ※最後の構造はファイル長さ-オフセットによって圧縮サイズを求める。

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。