Smush: Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 10: Line 10:
The movie begins with a basic 8-byte section that looks like this:
The movie begins with a basic 8-byte section that looks like this:


  0x00|"SANM" FOURCC       |4 bytes big endian
  0x00|"SANM" FOURCC       |4 bytes big endian
  0x04|Movie size (in bytes)|4 bytes big endian
  0x04|Movie size (in bytes)|4 bytes big endian



Revision as of 20:51, 27 March 2006

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.

(More coming soon, I just have to dig this out of my notes)