データを弄る前に…

LZ11で圧縮されているので、ここのlzx.exeを使えば解凍できます。
https://gbatemp.net/threads/nintendo-ds-gba-compressors.313278/
解凍時には-d、圧縮時には-evbをオプションに(仕様で元ファイルを上書きするので注意

LZ11の解凍が済んだら次のスクリプトを使用可能です。
アーカイブの展開が可能であることを示すために突貫で作成したのでこれを使うより直接アーカイブをバイナリエディタで編集したほうが楽です
スクリプト

大まかな構造

  • ヘッダ
  • アドレステーブル
  • データ部
  • ファイルのパラメータ(名前、ディレクトリ)

ヘッダ

サイズ: 0x14
0x00 char[4] ="XBIN"
0x04 u32 =0x12340200
0x08 u32 アーカイブのサイズ
0x0C u32 =0x000003A4
0x10 u32 ファイル個数

アドレステーブル

格納されているファイルのデータ部分とファイル名(ディレクトリ構造含む)を保持
サイズ: 0x08 * ファイル個数
struct[ファイル個数]
0x00 u32 ファイル名へのアドレス
0x04 u32 データ部へのアドレス

データ部

サイズは格納されてるファイル全ての合計(最初のファイル名へのアドレス-最初のファイルのデータ部へのアドレスあるいは0x14+0x08*ファイル個数)

ファイル名

サイズ: 0x04 + ファイル名 + padding
struct[ファイル個数]
0x00 u32 ファイル名の長さ
0x04 char ファイル名(ディレクトリ構造)
padding(0fillで、長さは2以上、structが0x04の倍数の位置から始まるように調整されている)
最終更新:2016年07月03日 10:38
添付ファイル