# MI_FilterDiff*

## Syntax

  `#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 );`

## Arguments

srcp | The source address where difference filtered-data is stored.
destp | The destination address where the data is expanded. Can be the same region as the source address.
size | Size of the source address. It is expressed in bytes.
bitsize | Bit depth of the difference filter. 16-bit if TRUE; 8-bit if FALSE.

## Return Values

None.

## Description

Encodes data using a difference filter, then writes it to a specified memory region. The source address must be aligned to a 4-byte boundary. When the size of the compressed data is not a multiple of 4, adjust by padding it with zeros. The pointers to the source and destination addresses may point to the same region.

`MI_FilterDiff8()` writes in 8-bit units. On NITRO, you cannot decompress directly to VRAM.
`MI_FilterDiff16()` writes in 16-bit units. It is also possible to decompress to DTCM or VRAM.
`MI_FilterDiff32()` writes in 32-bit units. It operates at a higher speed than both `MI_FilterDiff8()` and `MI_FilterDiff16()`. It is also possible to decompress to DTCM or VRAM.

## Internal Operation

Processing only takes place on the CPU, without the use of a system call or DMA.

## See Also

`MI_UnfilterDiff, MI_CompressRL, MI_CompressHuffman`

## Revision History

2008/07/02 Initial version.

CONFIDENTIAL