Documentation and notes collected for SMLT research.  2015/02/16 11:46 - MarkeyJester.

All values are assumed hexadecimal, and are displayed in big endian (from little endian) in this document.

--------------------------------

The SMLT files appear to be nothing more than an archive for the other S### data that the sound driver uses.
This consists of a table of entries, where each entry contains information about each S### data (Offset, size, etc).

Offset		(Size)	= Description

00000000	(Long)	= Standard ASCII identifier "SMLT".
00000004	(Long)	= Unknown, it's usually 00000002 or 00000101 (Version?).
00000008	(Long)	= Number of entries.
0000000C - 0000001F	= Always seems to be NULL (FFFFFFFF), each entry appears to be fixed at a size of 20 bytes.

The entries themselves starting at offset 00000020:

Offset		(Size)	= Description
+0000		(Long)	= ASCII identifier of the current entry "S###".
+0004		(Long)	= Unknown, sometimes this is 00000000, 00000001 or 00000002 (Version?).
+0008		(Long)	= Write offset?  I'm assuming this offset is linked to the Dreamcast's sound RAM, signifying where to extract this entry's data to.
+000C		(Long)	= Write size?  As above, the size of the data to copy.
+0010		(Long)	= Data offset.  This is the location of the entry's data.
+0014		(Long)	= Data size.  This is the size of the entry's data.
+0018		(Long)	= Unknown, always 00000000.
+001C		(Long)	= Unknown, always 00000000.

+0010 and +0014 can sometimes be NULL (FFFFFFFF), I believe it's possible this tells the system to clear the sound RAM at the offset of +0008 and size of +000C.
(i.e. clearing the space rather than copying data to it).