# SVC_UncompressRL*

## Syntax

  `#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,`
  `ReadStreamCallbacks *callbacks``);`

## Arguments

srcp | The source address where run length compressed data is stored.
destp | Destination address for decompression.
paramp | Parameter address that is handed to the `initStream` function of the MIReadStreamCallBacks structure.
callbacks | Address of the `MIReadStreamCallbacks` socket.

## 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.

## 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 the size back using `0`.

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.

## See Also

`MI_UncompressRL*, SVC_UncompressLZ*, SVC_UncompressHuffmanFromDevice`

## Revision History

2004/07/22 Initial version.

CONFIDENTIAL