Sims 3:0x6B20C4F3

From SimsWiki
Revision as of 12:40, 19 August 2009 by Tiger (Talk | contribs)

Jump to: navigation, search

S3Clip (NOT complete in any sense of the word - Karybdis)

These resources do not always hash from the animation name to the resource key. Any age specifiers (a2p, t2o, etc) are converted to only reference adult or objects (a or o) respectively to generate the hash, and the high bit is stripped off. This becomes the "default" animation if no age specific override is provided. Age overrides are found by XORing an age mask with the high byte (Or the second high byte for the second actor in an animation).

--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 4 if count > 0 (Offset (from this location) of soundEntries) otherwise 0
--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


Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox