# compstatic

## 説明

このコマンドは NITRO ROM 用のものです。TWL ROM については `compstatic.TWL` を参照してください。

`compstatic` は、NITRO のアプリケーションの IPL によってロードされる常駐領域部分及びオーバーレイの ROM イメージを圧縮するためのツールです。これにより ROM 容量を節約できます。

## 使用方法

### 起動コマンド

    % compstatic [-d] [-9] [-c] [-a[FILE]] [-F|-eSUFFIX] [-lFILE] STATICMODULE OVERLAYDEFS [OVERLAYTABLE]

または

    % compstatic [-d] [-9] [-c] [-a[FILE]] [-F|-eSUFFIX] [-lFILE] -f RESPONSE_FILE

`-9` オプションは、`STATICMODULE` で指定された ROM 常駐領域のファイルを ARM9 のコードと見なし圧縮するためのオプションです。展開処理は TWL-SDK の crt0.o および FS ライブラリと統合されているため、アプリケーション作成者は何も追加作業は必要ありません。

`-f` オプションは、圧縮処理対象の実行ファイルやオーバーレィ処理ファイル`(STATICMODULE OVERLAYDEFS および OVERLAYTABLE)`のファイル名をコマンドライン引数で指定する代わりに、処理対象のファイル名が記録されたファイル`(RESPONSE_FILE)`経由で指定するためのものです。この `-f` オプションに与える `RESPONSE_FILE` の内容は`STATICMODULE,OVERLAYDEFS,OVERLAYTABLE` の実際のファイル名を `'\0'` で終端処理し、順に格納したものとなっています。このときに指定するファイルは `RESPONSE_FILE` が置かれているディレクトリからの相対パスで指定されているとみなされます。

`-c` オプションが指定されている場合は `OVERLAYDEFS` で指定されているオーバーレイファイルも圧縮します。

`-e`,`-F` オプションで圧縮後のファイル名を制御します。これらのオプションがない場合は、元のファイル名に拡張子 `_LZ` が後置された名前のファイルへ圧縮結果が出力されます。この後置子の `_LZ` を変更したいときは`-e` オプションで指定します。また、`-F` オプションが指定されると、元のファイルへ圧縮後のファイルを上書きします。

`-l` オプションは、`-c` と共に指定します。後述のリストファイルをパラメータで渡すことにより、圧縮から除外するオーバーレイモジュールを指定することができます。

`-a` オプションでオーバーレイのダイジェスト値を常駐領域に埋め込むことが可能です。これは無線などにより受け渡しを行なうオーバーレイモジュールの正当性を確認するために使用します。 なお、ダイジェスト値を埋め込む領域は事前に確保しておく必要があります。LCF ファイルを作成する際に ARM9-TS-C.lcf.template を使用すると、必要な領域を確保するリンカスクリプトが生成されます。 LCF ファイルの作成については、`makelcf` の説明を参照して下さい。

`-d` オプションは `compstatic` のデバグ用メッセージ出力用のオプションです。実行時にデバグ用メッセージを出力します。普段は指定する必要はありません。

現在 ARM7 の常駐領域の圧縮処理については、展開側のライブラリが対応していないため使用できません。

TWL-SDK の make 環境を使用している場合は、環境変数 TWL_COMPRESS に何らかの値が定義してある場合、ARM9 の常駐領域およびオーバーレイの圧縮処理が有効になります。

## 圧縮指定リストのフォーマット

`-c` オプションを指定すると、全ての Overlay モジュールが圧縮されます。下記のフォーマットのファイルを作成することによって、特定のファイルを圧縮から除外することができます。

下記のように、1行に Overlayモジュールファイル名 と 圧縮指定文字 をカンマで区切って記述します。

    main_overlay_1.sbin, E
    main_overlay_2.sbin, E
    main_overlay_3.sbin, S

Overlayモジュールファイル名 には、実際に `$(BINDIR)` に出力される圧縮前のファイル名を記述します。

圧縮指定文字 の意味は、それぞれ以下の通りです。

`圧縮指定文字` | 意味
--- | ---
`S` | `SMART` の意味。`-c` のオプションに従い、圧縮をかけます。デフォルトの動作なので、この行は省略することができます。
`E` | `EXCLUSION` の意味。圧縮対象から除外されます。

TWL-SDK の make 環境を使用している場合は、環境変数 TWL_COMPRESS と共に環境変数 COMPSTATIC_SPEC_FILE を定義します。

    TWL_COMPRESS         = TRUE
    COMPSTATIC_SPEC_FILE = FilePath

TWL-SDK 5.4 からは LSF ファイルのパラメータ情報を元に、圧縮指定リストファイルが自動的に生成されるようになりました。(参照 makelcf)
`COMPSTATIC_SPEC_FILE` の指定がない場合は、自動生成されたファイルが使われます。

## 場所

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

## 参照

`makerom, makelcf`

## 履歴

2009/05/14 -l オプションの記述追加。それに伴い、「圧縮指定リストのフォーマット」の項目を追加。
2008/10/28 -a オプションの説明を加筆修正
2006/05/16 -f オプションの記述追加
2004/09/21 初版作成