# ntrcomp

## 説明

`ntrcomp` は、TWL-SDKの `MI_Uncompress*()` コマンドで扱える形式の圧縮データを作成するツールです。

## 使用方法

### 起動コマンド

`% ntrcomp <-d(8|16)|r|l|lex|h(4|8)> [-s] [-<t|T>[width]] [-H] [-A(4|8|16|32)] [-o outputFile] <inputFile>`
`% ntrcomp -x [-o outputFile] [-s] <inputFile>`

`inputFile`で指定された入力ファイルを、指定された形式で圧縮・変換します。
ランレングス圧縮、LZ77拡張圧縮、ハフマン圧縮、差分フィルタの変換が可能です。

-s オプションは、圧縮変換成功時に表示される成功メッセージを非表示にします。

-H オプションは、データにヘッダ情報をつけて圧縮するため、展開後のデータにもデータサイズが付加されます。

-Aオプションは、出力ファイルのサイズが引数nバイトにアライメントされるように末尾を0で埋めます。

-o オプションで、出力ファイルのファイル名を指定できます。 何も指定しなかった場合には、(入力ファイル名本体部)_(圧縮方式).bin という名前の出力ファイルが作成されます。

-t,-T オプションにより出力ファイルをc言語形式のテキストファイルとして出力可能です。
オプションに(1|2|4)を付けることで、型をu8,u16,u32から選択することも可能です。(デフォルトはu8)
u16,u32の場合に-tではリトルエンディアン、-Tではビッグエンディアンとして出力されます。

-x オプションを使用すると、`ntrcomp` を使用して圧縮したファイルをPC上で展開することができます。

### 圧縮方式指定オプション書式

圧縮方式として以下の形式が指定できます。

オプション | 変換方式 | パラメータ
--- | --- | ---
-d | 差分フィルタ | 比較する単位ビットサイズを指定 { 8 | 16 }
-r | ランレングス圧縮 | なし
-h | ハフマン圧縮 | 符号化するビットサイズを指定 { 4 | 8 }
-lex | LZ77拡張圧縮 | なし
-l | LZ77圧縮(旧互換) | なし

LZ77拡張圧縮(lex)はLZ77圧縮に比べてより高い圧縮率が期待できますが、旧互換の為に-lオプションが残されています。
どちらも同一の `MI_UncompressLZ*()` で展開が可能ですが、4.2以前のSDKを使用しているプログラムではLZ77拡張圧縮されたファイルを展開できませんのでご注意ください。

拡張版のLZ圧縮 (-lex) は、旧来のLZ圧縮 (-l) に比べてワーストケースでの圧縮時間が数倍になることがあり、 ランタイムで圧縮する場合には旧来版の方がデータによらず安定した速度での圧縮が期待できますが、展開速度は同等です。

## 場所

`$TwlSDK/tools/bin/ntrcomp.exe`

## 参照

`MI_UncompressHuffman, MI_UncompressRL*, MI_UncompressLZ*`

## 履歴

2007/11/01 解凍オプションを追加、LZ77拡張圧縮(lex)を追加、LZ77圧縮のオプションパラメータを削除、テキスト出力オプションにエンディアン指定を追加、アライメントに8byte,16byte,32byteを指定できるように修正
2005/03/03 新設されたオプションの説明を追加
2004/08/20 初版