format > tah


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

アーカイブ (.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 もご覧ください。