yoshis_story:smsr00_compression
Table of Contents
SMSR00 Compression
Yoshi's Story uses an LZ77-type compression format called SMSR00 which is very similar to SM64's MIO0 format. In the Yoshi's Story ROM, each SMSR00 block is preceded by a 16-byte 'CMPR' header which contains the size of the encoded block and its destination size.
CMPRHeader struct
struct CMPRHeader { /*00*/ char cmprSignature[4]; // 'CMPR' /*04*/ u32 srcSize; // size of encoded data /*08*/ u32 dstSize; // size of decoded data /*0C*/ u8 _pad[4]; // structure padding };
SMSRHeader struct
struct SMSRHeader { /*00*/ char smsrSignature[6]; // 'SMSR00' /*06*/ u8 _pad[2]; // structure padding /*08*/ u32 outputSize; // size of decoded data /*0C*/ u32 dataOffset; // offset of the data section in the smsr00 block };
Decoder implementations
yoshis_story/smsr00_compression.txt · Last modified: by shygoo