Sims 3:0x6B20C4F3
From SimsWiki
S3Clip (NOT complete in any sense of the word - Karybdis)
--Main Header DWORD - TID DWORD offset // Offset of a linked clip - purpose unknown DWORD size of _S3Clip_ Section --- Offset Table 5 DWORD offsets index 0 - Offset to _S3Clip_ index 1 - SIMoffset (Offset to #BLOCK) index 2 - Offset to Object/Sim index 3 - Offset to =CE= index 4 - blank or 2? // unknown // you use these offsets by fseek(filehandle, table_start_offset+(4*index)+table[index], SEEK_SET); // the table starts at 12, SEEK_SET seeks from the start of file DWORD - count // all examples have been 1 DWORD - Offset to post soundEntry 16 BYTES (from beginning of this DWORD); // the same formula as above will work 16 BYTES blank? // looks like a zeroes out slot for a TGI[sub]64[/sub] reference --S1 Header QWORD _S3Clip_ DWORD version 2 DWORD blank? 4 BYTES hash? 4 BYTES DWORD S1 entry1count DWORD blank? DWORD Offset entry1entries from S1 start DWORD Offset entry2entries from S1 start DWORD Offset to anim name from S1 start DWORD Offset to .ma filename from S1 start --entry1entries (20 BYTES each) DWORD Offset from S1 start to this entry2entry (Sanity Check this. saw it pointed at a 7E once) 4 BYTES hash? FLOAT FLOAT WORD entry2entry count for this entry1entry 2 BYTES (IF 1402, entry2entry entrysize = 12. IF 1201, entry2entry entrysize = 8. IF 0B01 and 1102, special cases - Notice the 0 counts; Keyframe markers?) STRING - Anim name 00 terminated STRING - .ma filename 00 terminated --entry2entries (8,12 or 16 BYTE sections) (Count determined by summing the entry1entry count values) WORD frameIndex? (0 based. each subsequent same code entry, increase by 1. else reset to 0) WORD code (if entrysize = 8, FLOAT) (if entrysize = 12, WORD WORD WORD WORD) --S2 7E padding to next DWORD IF SIMoffset !=0 (# Block) Else Object (STRING - Object Target 00 terminated) 7E padding to next DWORD STRING =CE= DWORD version (259) DWORD soundEntry count DWORD OffsetToSoundEnd (from soundEntries start) DWORD --soundEntries (variable size) 12 BYTES FLOAT #BLOCK STRUCTURE ---------------- --Header DWORD - block section count DWORD - block section offset from end of count --Sections 7E7E7E7E - padding DWORD - block subsection count --Subsections Offsets DWORD - Subsection offset from beginning of first offset --Subsections DWORD - Zero based subsection index WORD Repeating # (510 BYTES) STRING 00 terminated Repeating # ((512 - string+00 length) BYTES) WORD soundENTRIES ---------------- DWORD TYPE (0000-0600, 0900-0A00) WORD E4C1 DWORD Assignment? (usually incremental for same types of pieces) FLOAT FLOAT FLOAT DWORD DWORD len STRING lenBytes PADDING 00's to DWORD --Type Dependent Data soundENTRY TYPES ---------------- 0000 (embedded - same structure as a full Type 0400 soundENTRY, but embedded inside a type 0300 directly after the second string and padding) 0100 (0 String len) 4x4 matrix 0200 8 BYTES 0400 end (nothing more than the STRING) 0500 20 BYTES DWORD 0x00000000 0600 (0 String len) 4 BYTES FLOAT 0900 4 BYTES 0x00000000 FLOAT 0A00 4 BYTES 4 BYTES 0x00000000 ----------------- Events (by Atavera) Event 0500 DWORD DWORD DWORD hash //FX name DWORD hash //Object(destination) name DWORD hash //Slot(destination) name DWORD Event 0100 DWORD hash //Object(prop) name DWORD hash //Object(destination) name DWORD hash //Slot(destination) name DWORD 16 FLOAT matrix