libnds
Enumerations | Functions
decompress.h File Reference

Wraps the bios decompress functionality into something a bit easier to use. More...

#include <nds/bios.h>
#include <nds/ndstypes.h>

Enumerations

enum  DecompressType {
  LZ77 ,
  LZ77Vram ,
  HUFF ,
  RLE ,
  RLEVram
}
 The types of decompression available. More...
 

Functions

void decompress (const void *data, void *dst, DecompressType type)
 Decompresses data using the suported type. More...
 
void decompressStream (const void *data, void *dst, DecompressType type, getByteCallback readCB, getHeaderCallback getHeaderCB)
 Decompresses data using the suported type. More...
 
void decompressStreamStruct (const void *data, void *dst, DecompressType type, void *param, TDecompressionStream *ds)
 Decompresses data using the suported type. More...
 

Detailed Description

Wraps the bios decompress functionality into something a bit easier to use.

Enumeration Type Documentation

◆ DecompressType

The types of decompression available.

Enumerator
LZ77 

LZ77 decompression.

LZ77Vram 

VRAM safe LZ77 decompression.

HUFF 

VRAM safe huff decompression.

RLE 

Run length encoded decompression.

RLEVram 

VRAM safe run length encoded decompression.

Function Documentation

◆ decompress()

void decompress ( const void *  data,
void *  dst,
DecompressType  type 
)

Decompresses data using the suported type.

When 'type' is HUFF, this function will allocate 512 bytes in the stack as a temporary buffer.

Parameters
dstDestination to decompress to.
dataData to decompress.
typeType of data to decompress.

◆ decompressStream()

void decompressStream ( const void *  data,
void *  dst,
DecompressType  type,
getByteCallback  readCB,
getHeaderCallback  getHeaderCB 
)

Decompresses data using the suported type.

Only LZ77Vram, HUFF and RLEVram support streaming, but HUFF isn't supported by this function at all, use decompressStreamStruct() instead.

Parameters
dstDestination to decompress to.
dataData to decompress.
typeType of data to decompress.
readCBA callback to read the next byte of data.
getHeaderCBA callback to read the 32 byte header.

◆ decompressStreamStruct()

void decompressStreamStruct ( const void *  data,
void *  dst,
DecompressType  type,
void *  param,
TDecompressionStream ds 
)

Decompresses data using the suported type.

Only LZ77Vram, HUFF and RLEVram support streaming.

For HUFF, make sure to pass a 512 byte buffer in 'param' to be used as a temporary buffer by the decompression code.

Parameters
dstDestination to decompress to.
dataData to decompress.
typeType of data to decompress.
paramA value to be passed to getHeaderCallback(), or a temporary buffer for HUFF.
dsA struct with callbacks to be used by the decompression routine.