# SVC_UncompressRL*

## C Specification

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

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

      s32 SVC_UncompressRL16FromDevice(
              const void*			srcp,
              void*				destp,
              const void*			paramp,
              const ReadStreamCallbacks*	callbacks );

## Description

This function decompresses run length compressed data and writes the data to the specified region of memory.

Match the source address `src` to the 4-byte boundary. If the size of the compressed data is not a multiple of 4, make adjustments by paring it back using zeros.

The `SVC_UncompressRL8()` function can be written in 8-bit units. You cannot decompress directly to VRAM().

The `SVC_UncompressRL16FromDevice()` function can be written in 16-bit units. Compressed data on devices that are not memory mapped can be decompressed directly without using a temporary buffer.

## Arguments

`srcp` | The source address where run length compressed data is stored.
`destp` | The destination address for decompressed data.
`paramp` | The parameter address that is handed to the `initStream` function of the `MIReadStreamCallbacks` structure.
`callbacks` | The address of the MIReadStreamCallbacks structure.

## Return Values

There is no return value for `SVC_UncompressRL8()`. If the return value for `SVC_UncompressRL16FromDevice()` is greater than `0`, it is the decompressed size. If it is less than `0`, it is an error.

## See Also

`MI_UncompressRL*, SVC_UncompressLZ*, SVC_UncompressHuffmanFromDevice`

## Revision History

07/22/2004 Initial version