Smush
This page attempts to document the LucasArts Smush codec, FOURCC "SANM". Note that at this stage the document is quite incomplete as the codec is still being reversed. Most information regarding codecs here is speculative, at best. Structural information is quite correct unless otherwise noted.
Use in Grim Fandango
SANM is used in Grim Fandango for cut-scenes and in-game animations. The actual SNM movie files are stored inside LAB archive files (which are quite easy to extract, there are many tools) and gzippe'd. You must use a tool like *nix's "gunzip" to decompress the SNM files first. A decompressed Smush file has the "SANM" FOURCC as the first four bytes.
Organization
This section deals with the structural properties of Smush movies. In other words, we describe the various headers used.
Preamble
The movie begins with a basic 8-byte section that looks like this:
0x00|"SANM" FOURCC |4 bytes big endian 0x04|Movie size (in bytes)|4 bytes big endian
Video Header
This header immediately follows the preamble. It describes the movie's video properties.
0x000|"SHDR" FOURCC |4 bytes big endian 0x004|Header size (in bytes) |4 bytes big endian 0x008|Version |2 bytes little endian 0x00A|# of frames |4 bytes little endian 0x00E|Padding? |2 bytes 0x010|Width |2 bytes little endian 0x012|Height |2 bytes little endian 0x014|Padding? |2 bytes 0x016|Frame delay (microseconds)|4 bytes little endian 0x01A|Color palette? |1024 bytes 0x41A|Padding? |16 bytes
Audio/Keyframe Header
The information here is incomplete.