This page describes version 0x45 of the file format. Everything is encoded in big-endian byte order.

OffsetSizeDescription
0x04Magic number (SLNK)
0x44File size
0x84Version number
0xC4Number of resources (N)
0x104 * NOffsets to resources
String table
Resources

The string table contains null-terminated strings. In official files, the strings are sorted alphabetically. The empty string is the first string in the table. Unused strings have been found in official files as well.

When a field is marked as 'reserved', its value does not matter. These fields are overwritten at runtime. Unless indicated otherwise, reserved fields are set to 0 in official files.

Resource

OffsetSizeDescription
0x04Always 1
0x44Resource size
0x84Name (offset into string table)
0xC4Number of sound call tables (P)
0x104Number of action call tables (Q)
0x144Number of sounds (R)
0x184Number of actions (S)
0x1C4Reserved for string table pointer
Set to resource size - 4 in official files
0x204Unknown (float)
0x244Unknown (float)
0x284Unknown (float)
0x2C4Unknown (float)
0x3020 * PSound call tables
20 * QAction call tables
92 * RSounds
76 * SActions
4Always 0

Call Table

OffsetSizeDescription
0x04Name (offset into string table)
0x44Reserved for name pointer
0x84Reserved for name hash
0xC1Unknown
0xD1Select by properties
0xE1Select randomly
0xF1Unknown
0x102First index
0x122Last index

Sound

Every sound is referenced by exactly one call table.

OffsetSizeDescription
0x04Index
0x44Reserved for call table pointer
0x84Property name 1 (offset into string table)
0xC4Property id 1
0x104Property name 2 (offset into string table)
0x144Property id 2
0x184Sound name in BFSAR (offset into string table)
0x1C4Reserved for item id
0x204Filename (offset into string table)
0x244Reserved for filename pointer
0x284Minimum volume (float)
0x2C4Maximum volume (float)
0x304Minimum pitch (float)
0x344Maximum pitch (float)
0x384Minimum lpf (float)
0x3C4Maximum lpf (float)
0x404Minimum pan (float)
0x444Maximum pan (float)
0x484Minimum surround pan (float)
0x4C4Maximum surround pan (float)
0x502Minimum delay
0x522Maximum delay
0x544Name of bone to follow (offset into string table)
0x581Is hold
0x591Is follow
0x5A1Use property id instead of name
0x5B1Unknown

Action

Every action is referenced by exactly one call table.

OffsetSizeDescription
0x04Index
0x44Reserved for action call table pointer
0x84Sound call table index
0xC4Reserved for sound call table pointer
0x108Unknown
0x182Flags:
4 = is follow
8 = is hold
0x1A2Unknown
0x1C4Minimum volume (float)
0x204Maximum volume (float)
0x244Minimum pitch (float)
0x284Maximum pitch (float)
0x2C4Minimum lpf (float)
0x304Maximum lpf (float)
0x344Minimum pan (float)
0x384Maximum pan (float)
0x3C4Minimum surround pan (float)
0x404Maximum surround pan (float)
0x442Minimum delay
0x462Maximum delay
0x484Unknown