# MI_FilterDiff*

## 構文

  `#include <nitro/mi.h>`
  `void MI_FilterDiff8( const void *srcp, void *destp, u32 size, BOOL bitsize );`
  `void MI_FilterDiff16( const void *srcp, void *destp, u32 size, BOOL bitsize );`
  `void MI_FilterDiff32( const void *srcp, void *destp, u32 size, BOOL bitsize );`

## 引数

srcp | 差分フィルタがかけられたデータの格納されているソースアドレス
destp | 展開するディスティネーションアドレス。ソースアドレスと同じ領域でも構いません。
size | ソースアドレスのサイズ。単位はbyteです。
bitsize | 差分フィルタのビット深度。TRUEの場合16bitで、FALSEの場合8bit。

## 返り値

なし。

## 説明

データを差分フィルタで符号化し、指定のメモリ領域に書き込みます。
ソースアドレスは4byte 境界に合わせてください。
圧縮データのサイズが4の倍数にならなかった場合は出来るだけ0で詰めて調整してください。
ソースアドレスとデスティネーションアドレスに同じ領域へのポインタを渡しても構いません。

`MI_FilterDiff8()` は、8bit単位で書き込みます。
NITROではVRAMに直接展開することは出来ません。
`MI_FilterDiff16()`は、16bit単位で書き込みます。
DTCMやVRAMにも展開できます。
`MI_FilterDiff32()`は、32bit単位で書き込みます。
`MI_FilterDiff8()・MI_FilterDiff16()`よりも高速に動作します。
DTCMやVRAMにも展開できます。

## 内部動作

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

## 参照

`MI_UnfilterDiff, MI_CompressRL, MI_CompressHuffman`

## 履歴

2008/07/02 初版