MI_ReadUncompLZ*

構文

#include <nitro/mi/uncomp_stream.h>
s32 MI_ReadUncompLZ8( MIUncompContextLZ *context, const u8* data, u32 len );
s32 MI_ReadUncompLZ16( MIUncompContextLZ *context, const u8* data, u32 len );

引数

context LZ77圧縮されたデータの展開用コンテキスト構造体へのポインタです。
data 展開するデータの一部へのポインタです。
len 第二引数で与えたデータのデータサイズです。

返り値

展開されるデータの残りバイト数が返されます。
すべてのデータを展開し終えた場合には0となります。

説明

LZ77圧縮されたデータを、与えられたデータサイズ分だけ順次ストリーミング展開し、
MI_InitUncompContextLZ()で設定されたバッファへコピーします。
展開速度は、MI_UncompressLZ*()で一度に展開する場合に比べると低速です。

MI_ReadUncompLZ8() は、8bit単位で書き込みます。
NITROではVRAMに直接展開することはできません。TWLでは展開できますが速度はかなり低速です。

MI_ReadUncompLZ16()は、16bit単位で書き込みます。
NITRO/TWL共にVRAMにも直接展開できます。ただし、通常のメモリに比べると低速です。
圧縮データは一致文字列を2byte以前より検索したものにしてください。

ntrcompツールMI_CompressLZ*()関数で 圧縮されたLZ77圧縮、LZ77拡張圧縮フォーマットのデータを展開します。

内部動作

システムコール、DMAは使用せずCPUだけで処理します。

参照

MI_UncompressLZ*, MI_InitUncompContextLZ, MIUncompContextLZ, MI_ReadUncompRL*, MI_ReadUncompHuffman, MI_CompressLZ*

履歴

2008/12/05 TWLについての記述を追加
2007/11/01 LZ77拡張圧縮に関する記述を追加
2004/11/30 初版