# SVC_UncompressLZ*

## 構文

      #include <nitro/os/common/systemCall.h>

      void SVC_UncompressLZ8( const void* srcp, void* destp );

      s32 SVC_UncompressLZ16FromDevice( const void* srcp,
                                        void* destp,
                                        const void* paramp,
                                        const MIReadStreamCallbacks *callbacks);

## 引数

srcp | LZ77圧縮データの格納されているソースアドレス
destp | 展開するディスティネーションアドレス
paramp | `MIReadStreamCallbacks` 構造体の `initStream`関数へ渡すパラメータのアドレス
callbacks | `MIReadStreamCallbacks` 構造体のアドレス

## 返り値

`SVC_UncompressLZ8()` の返り値はありません。
`SVC_UncompressLZ16FromDevice()` の返り値は 0以上ならば展開したサイズで、0より小さければエラーです。

## 説明

LZ77圧縮データを展開し、指定のメモリ領域に書き込みます。

srcp で指定する圧縮データを展開し、destp で指定する領域に格納されます。

・SVC_UncompressLZ8
`SVC_UncompressLZ8()` は、8bit単位で書き込みます。
VRAMに直接展開することは出来ません。

・SVC_UncompressLZ16FromDevice
`SVC_UncompressLZ16FromDevice()`は、16bit単位で書き込みます。
メモリマッピングされていないデバイス上の圧縮データをテンポラリバッファを使わずに直接展開することが出来ます。
バイトアクセス出来ないRAMにも展開できますが `SVC_UncompressLZ8()` より低速です。

srcp で指定するデータは '`ntrcomp -l 2`' で圧縮したものとしてください。
srcp の境界制限は `initStream` コールバック関数の実装依存となります。

## 参照

`MI_UncompressLZ*, SVC_UncompressHuffmanFromDevice, SVC_UncompressRL*
`

## 履歴

2004/07/22 初版