Directors Cut Wiki : FlmFormat

DirectorsCutModdingFoundry Categories PageIndex RecentChanges RecentlyCommented Login/Register
Trail: FileFormat GameAudioPlayer TheMoviesEditoR FormattingRules DirectdrawFiles FacialAnimations CategoryFlmFormat FlmFormat

Most recent edit on 2011-03-03 11:02:40 by Gleem!

Additions:
8-1: Byte (1 Byte) - RawRefcount ( if > 1, then Refcount is this value -1, otherwise 0)
8-x: Byte (3 Byte) - Padding
9: Int32 (4 Byte) - # of Oversize Int32's after fixed portion, set 1
10: Int32 (4 Byte) - # of Oversize Int32's after fixed portion, set 2. [0,1,2]
15: Int32 (4 Byte) - Reference to next item's SectionID. [Or -1 for the end ?]
17: Int32 (4 Byte) - [Usually 200] May relate to display size of block in LH's Original Editor ?
Location 8-1 controls the count of the following data:
Oversize set 1: Location 9 controls the count of the following data
Oversize set 2: Location 10 controls the count of the following data

Deletions:
8: Int32 (4 Byte) - Unknown. [1,2]
9: Int32 (4 Byte) - # of Oversize Int32's after fixed portion
10: Int32 (4 Byte) - Unknown. [0,1,2]
15: Int32 (4 Byte) - Reference to another Type's SectionID. [Or -1 for the end ?]
17: Int32 (4 Byte) - [-1, 0, 1]
18: Int32 (4 Byte) - [Usually 200] May relate to display size of block in LH's Original Editor ?
Oversize: Location 9 controls the count of the following data




Edited on 2011-02-10 02:20:44 by Gleem!

Additions:



3: Int32 (4 byte) - Subtype
4: Single (4 byte) - Lot X position
5: Single (4 byte) - Lot Y position
6: Single (4 byte) - Lot Z position
7: Single (4 byte) - Lot Z Angle
8: Byte(1 byte) - [1-6] Path Set Count ( + 3 bytes padding)

9: Int32 (4 byte) - Link1 Count
10: Int32 (4 byte) - Link2 Count
13: Int32 (4 byte) - SyncBitflag
15: Int32 (4 byte) - Branch name TextElement Index (-1, -2, and -3 are special cases... maybe random choices?)
16: Byte (1 byte) - Branch Count [1-10]
TotalPaths = ((Path Set Count) x (Branch Count)) + (Path Set Count)
There seems to be an extra 'default' path set, as well as each branch choice. Perhaps to offer a straight linked-list path through a timeline

To read the next sections, you have to loop in the following manner
for j = 0 to Branch Count
for k = 0 to Path Set Count -1
Int32 (4 byte) - NextItem
Int32 (4 byte) - Path Index
Int32 (4 byte) - Unknown
for l = 0 to Branch Count -1
Single (4 byte) - Probability value?








Deletions:
3: Int32 (4 byte) - Unknown. [0,2]. Actor ?
7: Single (4 byte) - Unknown. Rotation or Scale ?
8: Int32 (4 byte) - [1-6] Controls Oversize.
9: Int32 (4 byte) - [Always 0]
10: Int32 (4 byte) - [Always 0]
15: Int32 (4 byte) - Unknown. [-3,-2,-1, 0-34, 36-39, 42-44, 46, 49, 52]
16: Byte (1 byte) - Controls count of singles at end of this structure. [1-10]
Count of (Loc 8) * ((Loc 16) +1) data in the following format:
Int32 (4 bytes) - Reference to another Type's SectionID, or -1.
Int32 (4 bytes) - Unknown. [-1,0,1]
Int32 (4 bytes) - Unknown. [120]
Count of Loc 16 data follows:
Single (4 bytes) - [.5,.3333,.25, .2,.1]



Edited on 2007-05-22 14:59:47 by Gleem!

Additions:
Refer to the FlmMainHeader page to read more technical details.

Categories



Deletions:
0x000; Int32; 4 ; Header Size; Number of bytes in the entire Header section; ; 0x004; Int32; 4 ; Magic Number; 18 for Original Movies, 19 for S & E Addon; 18, 19;
0x008; Int32; 4 ; Text Element Size; Number of bytes in Entire TextElementOffsets Section plus Entire TextElement Section; ;
0x00C; Int32; 4 ; CrewTE; Index of Crew TextElement; ;
0x010; Int32; 4 ; ; ; Always -1 ;
0x014; Single; 4 ; Year Start; Year the scene first is available; Usually 0, meaning always available.;
0x018; Single; 4 ; Year End; Year the scene is no longer available ? ; Usually 0, meaning no end;
0x01C; Single; 4 ; Trickiness?; Not sure what trickiness is.. if this is even it. Term appears in some INI files.; 0 - .82;
0x020; Int32; 4 ; ; ; Always -1 ;
0x024; Int32; 4 ; ; ; Always -1 ;
0x028; Int32; 4 ; ; ; Always -1 ;
0x02C; Byte; 1 ; Genre Count; Number of Genres in TE; ;
0x02D; Byte; 1 ; EnviroPyro Count; Number of CraneRig or Pyrotechnics; never more than 1;
0x02E; Byte; 1 ; TE Count; Number of elements in TextElements Section; max limit of 255;
0x02F; Byte; 1 ; Slider Count; Number of Slider entries; max limit of 255;
0x030; Int16; 2 ; Start Frame; What frame 'filming' starts on; 0 in special cases, or 70-546;
0x032; Int16; 2 ; Element Count; Number of Elements that are not Timeline Heads; 1-90;
0x034; Byte; 1 ; Direction Count; Number of Directors directions; ;
0x035; Byte; 1 ; Edit Flags; Bit Flags: 1 = Unk, 2 = Has Slider, 4 = Has Extras, 8 = Dolly, 16 = Crane; Always 6,14, or 22;
0x036; Byte; 1 ; Timeline Head Count; Number of Elements that are Timeline Heads; 1-20;
0x037; Byte ;1 ; Extra Count; Number of TextElements Extra flm file names. See Extras Section; ;
0x038; Int32; 4 ; Shot TE; References TE Index for a [Shot:xxx] entry or Trailer in certain ai_ flm files; Usually -1;
"
}}




Edited on 2007-05-22 14:53:36 by Gleem!

Additions:
CategoryFlmFormat



Edited on 2007-05-22 13:07:29 by Gleem! [Thinking of working some on this, but got distracted by other things :)]

Additions:
0x000; Int32; 4 ; PyroTE; contains the TextElement Index for a TE that says 'environmental_pyrotechnics' or 'rig_crane'. May be to indicate whether specialized crew is required and/or indicate usage of LotView props like the camera dolly.; ;
"}}

Deletions:
Int32 (4 bytes) - contains the TextElement Index for a special kind of prop (?)



Edited on 2007-03-27 01:59:14 by Gleem! [Changing all into to easier to read Tables]

Additions:
0x038; Int32; 4 ; Shot TE; References TE Index for a [Shot:xxx] entry or Trailer in certain ai_ flm files; Usually -1;
0x000; Int32; 4 ; Extra TE; contains the TextElement Index for a flm file name for an Extra to perform; ; "}}


Deletions:
0x038: Int32; 4 ; Shot TE; References TE Index for a [Shot:xxx] entry or Trailer in certain ai_ flm files; Usually -1
Int32 (4 bytes) - contains the TextElement Index for a flm file name for an Extra to perform.



Edited on 2007-03-27 01:53:41 by Gleem!

Additions:
The first part is a fixed-size of 60 Bytes. It contains all the significant information for the rest of the file.
Offset Type Size (bytes) Field Name Description Typical Values
0x000 Int32 4 Header Size Number of bytes in the entire Header section  
0x004 Int32 4 Magic Number 18 for Original Movies, 19 for S & E Addon 18, 19
0x008 Int32 4 Text Element Size Number of bytes in Entire TextElementOffsets Section plus Entire TextElement Section  
0x00C Int32 4 CrewTE Index of Crew TextElement  
0x010 Int32 4     Always -1
0x014 Single 4 Year Start Year the scene first is available Usually 0, meaning always available.
0x018 Single 4 Year End Year the scene is no longer available ? Usually 0, meaning no end
0x01C Single 4 Trickiness? Not sure what trickiness is.. if this is even it. Term appears in some INI files. 0 - .82
0x020 Int32 4     Always -1
0x024 Int32 4     Always -1
0x028 Int32 4     Always -1
0x02C Byte 1 Genre Count Number of Genres in TE  
0x02D Byte 1 EnviroPyro Count Number of CraneRig or Pyrotechnics never more than 1
0x02E Byte 1 TE Count Number of elements in TextElements Section max limit of 255
0x02F Byte 1 Slider Count Number of Slider entries max limit of 255
0x030 Int16 2 Start Frame What frame 'filming' starts on 0 in special cases, or 70-546
0x032 Int16 2 Element Count Number of Elements that are not Timeline Heads 1-90
0x034 Byte 1 Direction Count Number of Directors directions  
0x035 Byte 1 Edit Flags Bit Flags: 1 = Unk, 2 = Has Slider, 4 = Has Extras, 8 = Dolly, 16 = Crane Always 6,14, or 22
0x036 Byte 1 Timeline Head Count Number of Elements that are Timeline Heads 1-20
0x037 Byte 1 Extra Count Number of TextElements Extra flm file names. See Extras Section  
0x038: Int32 4 Shot TE References TE Index for a [Shot:xxx] entry or Trailer in certain ai_ flm files Usually -1

This section's number of elements is determined by the Extra Count in the Main Header. The data is the Text Element Index, starting at zero for the first Text Element. Usually the Text Elements for extras are named "023_x_A" which relates to a flm file, without the .flm extension. Any flm file from any set *can* be used, but unpredictable results happen. If the count is zero, there is no data in this section.


Deletions:
The first part is a fixed-size of 60 Bytes. It most likely contains all the significant information for the rest of the file.
0: Int32 (4 bytes) - # of bytes in the entire MainHeader section (or offset to next section, if you like)
1: Int32 (4 bytes) - Always 18
2: Int32 (4 bytes) - # of bytes in Entire 'TextElementOffsets' Section plus Entire 'TextElement' Section
(or offset to next section after TextElements Section)
3: Int32 (4 bytes) - Count of Text Element entries
4: Int32 (4 bytes) - Always -1 (FF FF FF FF in hex)
5: Single (4 bytes) - Year Appearing.
[Usually 0. 1900 in _2_critical_conversation, 1950 in 001_scan_for_aliens, 1985 in _firing_blanks]
6: Single (4 bytes) - [0 or 1]
7: Single (4 bytes) - [0 - .82] Trickiness?
8: Int32 (4 bytes) - Always -1 (FF FF FF FF in hex)
9: Int32 (4 bytes) - Always -1 (FF FF FF FF in hex)
10: Int32 (4 bytes) - Always -1 (FF FF FF FF in hex)
11: Byte (1 byte) - # of TextElement elements related to a Genre
12: Byte (1 byte) - # of TextElement elements regarding use of the CraneRig or Pyrotechnics ?
13: Byte (1 byte) - # of elements in TextElementOffsets Section (and # of elements in TextElement Section)
so there is a maximum limit of 255 TextElements
14: Byte (1 byte) - # of Slider entries (and # of EndBlock -1 entries)
15: Int16 (2 byte) - Unknown. [0, or 70-546].
0 only in extra flm's like 005_x_chatters_1.flm, and crew flm's like 006_crew_00.flm. Camera ?
16: Int16 (2 byte) - Unknown [1-90]
17: Byte (1 byte) - # of Direction Entries
18: Byte (1 byte) - Unknown. [Always 6,14, or 22]
19: Byte (1 byte) - Unknown. [1-20]
20: Byte (1 byte) - # of TextElements relating to Extras. See Extras Section
21: Int32 (4 byte) - Usually -1, but can reference the TextElement Index for the "[Shot:xxx]" entry
or "Trailer" in certain ai_ flm files.
This section's number of elements is determined by the byte (20) in the Main Header. The data is the Text Element Index, starting at zero for the first Text Element. Usually the Text Elements for extras are named "023_x_A" which relates to a flm file. Any flm file from any set *can* be used, but unpredictable results happen. If the Header byte is zero, there is no data in this section.




Oldest known version of this page was edited on 2007-03-26 09:16:44 by Reacher []
Page view:

The Movies .flm Format


The Main Header of the Lionhead flm File is 60 bytes, then there are dynamic sections based upon various values in the first 60 bytes. Technically, I suppose the first four bytes give the entire length of this header, but I have divided up the dynamic sections for ease of interpretation.

This is the way I broke down the flm file format into following Sections:

Main Header:


The first part is a fixed-size of 60 Bytes. It most likely contains all the significant information for the rest of the file.

0: Int32 (4 bytes) - # of bytes in the entire MainHeader section (or offset to next section, if you like)
1: Int32 (4 bytes) - Always 18
2: Int32 (4 bytes) - # of bytes in Entire 'TextElementOffsets' Section plus Entire 'TextElement' Section
(or offset to next section after TextElements Section)
3: Int32 (4 bytes) - Count of Text Element entries
4: Int32 (4 bytes) - Always -1 (FF FF FF FF in hex)
5: Single (4 bytes) - Year Appearing.
[Usually 0. 1900 in _2_critical_conversation, 1950 in 001_scan_for_aliens, 1985 in _firing_blanks]
6: Single (4 bytes) - [0 or 1]
7: Single (4 bytes) - [0 - .82] Trickiness?
8: Int32 (4 bytes) - Always -1 (FF FF FF FF in hex)
9: Int32 (4 bytes) - Always -1 (FF FF FF FF in hex)
10: Int32 (4 bytes) - Always -1 (FF FF FF FF in hex)
11: Byte (1 byte) - # of TextElement elements related to a Genre
12: Byte (1 byte) - # of TextElement elements regarding use of the CraneRig or Pyrotechnics ?
13: Byte (1 byte) - # of elements in TextElementOffsets Section (and # of elements in TextElement Section)
so there is a maximum limit of 255 TextElements
14: Byte (1 byte) - # of Slider entries (and # of EndBlock -1 entries)
15: Int16 (2 byte) - Unknown. [0, or 70-546].
0 only in extra flm's like 005_x_chatters_1.flm, and crew flm's like 006_crew_00.flm. Camera ?
16: Int16 (2 byte) - Unknown [1-90]
17: Byte (1 byte) - # of Direction Entries
18: Byte (1 byte) - Unknown. [Always 6,14, or 22]
19: Byte (1 byte) - Unknown. [1-20]
20: Byte (1 byte) - # of TextElements relating to Extras. See Extras Section
21: Int32 (4 byte) - Usually -1, but can reference the TextElement Index for the "[Shot:xxx]" entry
or "Trailer" in certain ai_ flm files.



Extras Section


This section's number of elements is determined by the byte (20) in the Main Header. The data is the Text Element Index, starting at zero for the first Text Element. Usually the Text Elements for extras are named "023_x_A" which relates to a flm file. Any flm file from any set *can* be used, but unpredictable results happen. If the Header byte is zero, there is no data in this section.

Each entry is :

Int32 (4 bytes) - contains the TextElement Index for a flm file name for an Extra to perform.


Pyrotechnics Section


This section's number of elements is determined by the byte (12) in the Main header. The data is the Text Element Index. This only appears in a handful of flm files, and where there is one, there is always only one entry. Usually the Text Element is named 'environmental_pyrotechnics' or 'rig_crane'. If the header byte is zero, there is no data in this section.

Each entry is :

Int32 (4 bytes) - contains the TextElement Index for a special kind of prop (?)


Genres Section


This section's number of elements is determined by the byte (11) in the Main Header. The data is the Text Element Index relating to the Genre named by the Text Element. If the Header byte is zero, there is no data in this section.

Each entry is:

Int32 (4 bytes) - contains the TextElement Index for a genre. Seems to indicate a genre.ini in the genre data folder.



TextElementOffset Section


This section's number of elements is determined by the byte (13) in the Main Header. The data is a list of offsets from this section's start to the end of each TextElement. The first entry is the size in bytes of the entire section, followed by a list of offsets. Or another way to think about it is that the difference between the current TEO (TextElementOffset) and the next, is the length in characters of the corresponding string at the same Index position in the next section -- the TextElement section.

Each entry is:

Int32 (4 bytes) - contains the offset from the start of this section to the end of the corresponding TextElement.



TextElement Section


This section's number of elements is the same as the previous, and is determined by the byte (13) in the Main Header. The data is a list of null-terminated strings (ending with Chr(0)) describing the list of various elements comprising the flm animation. There are so many different aspects in every animation, and this section reflects that. The order fo their appearance, if there is one, is unknown at this time. Their Indexes are derived from their position in the list, with zero as the first.

* The first few entries seem to be for housekeeping for the game engine, like 'endshoot', 'ai_ended_by_user' ,'ai_actor_mood', 'ai_director_mood'.
* The next are where slider definitions appear, first the slider name like 'sld_beating', then the LHTS stringname from the game's string database, representing the text of the actual choices, like 'FLT_ACTION_AGGRESSIVE.' There is an entry for each slider position. The individual slider's position count and TextElement index are defined in a later section.
* Following the sliders are usually three entries required for a film. 'action', 'take_end' and 'cut'. Their Indexes get stored in the Direction section.
* There is always an entry for 'dummy_extra.'
* Files can have an entry for their Genre defined, such as 'genre_action'. Refers to an ini file in the Genres directory.
* Files can have a costume defined here. It appears to refer to an ini file in the Costume directory.
* The various .anm and .seq files that comprise the animation are usually next. Depending upon the scene slider's choices, the first batch might relate to the first actor's animations when the slider is in the first position, followed by the second actor when the slider is in the first position, and so on. Some might refer to the actions taken by crew or actors if you were watching the scene being filmed in-game, rather than in the AMM. The actual order and placement still is unknown.
* Files can have a 'fclexp' entry for facial expressions.
* Files can have a 'mumble' and 'mumble_off' entry.
* Files can have a 'playsnd' entry that refers to a sound in an .sfx file, and the positional coordinates of that sound
* Files can have props and metaprops defined here. Refers to an ini file in the Props directory.
* Files can have other .flm files for the extras to perform defined here. Their Indexes are stored in the Extras section. Usually in the form of '020_x_B_smoke' without the .flm extension
* The last entry is usually the .flm file for the crew animation you would see if you were to watch the scene filmed from Lot View. Includes .flm extension.
* In a handful of files, there is an entry '[shot:xxx]'. Unknown purpose.

[A separate wikipage might be better suited for defining what these are and what they do, as they become known.]

The last element is padded with nulls to the next 4-byte boundary.

Each entry is:

Char (varying length) Null-terminated - A string representing the name of an element of the animation.


Direction Section


This section's number of elements comes from the byte in the Main Header. Each element is a reference to the TextElement for 'action', 'cut', 'take_end' and 'dummy_extra'.

Each entry is:

Int32 (4 bytes) - The Index of the corresponding TextElement
Int16 (2 bytes) - 256 or 257.
Int16 (2 bytes) - Usually 0. Also might be two single bytes. Not sure at this time.



Sliders Section


This section contains the slider definitions. The number of entries is partially controlled by MainHeader Loc 14. If it is zero, there is no data in this section. Header 14 determines how many TextElements will be read. How the section is defined is dependent upon the data in TextElements. Each element corresponds with a TextElement, starting at the first one. Unless the TE starts with 'sld_', the value is 0 (or should be...I think there is actually an error in LH's definition for 015_subway_entrance.flm!). If the TE data starts with 'sld_', then the data is the Slider Pos Count. The next Sliders elements (to Slider Pos Count) are the TE indexes that relate to the positions of that slider, which are LHTS string database identifiers. All elements are Int32s. I believe the TE's that aren't sliders in this section, are actually variable names used by the AMM.

For example, from 037_miniature_saucer.flm:
TE VALUE SLIDER DATA NOTES
endshoot 0
ai_ended_by_user 0
ai_director_mood 0
ai_actor_mood 0
ai_crew_speed 0
sld_duration 3 count of Slider Positions
FLT_TIME_SHORT 7 Value is the TE index for FLT_TIME_SHORT
FLT_TIME_MEDIUM 8 Value is the TE Index
FLT_TIME_LONG 9 Value is the TE Index
sld_scifi_miniature 2 count of Slider Positions
FLT_MINIATURE_SCIFI_FLYING 10 Value is the TE Index
FLT_MINIATURE_SCIFI_TURBULENCE 11 Value is the TE Index


EndBlock Section


This section contains Int32s all with the value of -1, count determined by MainHeader Loc 14.

Types Sections


The following sections from here to the end of the file are one of 10 types (0 through 9). Each type has its own structure. Some of the structures are fixed size, some are variable. What they control and how they are inter-linked is still mostly unknown at the moment. They control the parameters of the scene, such as camera position, actor position, timing, etc.
Each starts with the same format: an Int32 for the Type, an Int32 for the size of the structure, an Int32 for the ID of the section.

* Type 0, May control extras ?

0: Int32 (4 byte) - Type of this section. [0]
1: Int32 (4 byte) - Size of this section. [72 minimum, 76-120]
2: Int32 (4 Byte) - SectionID. A unique ID for this section.
3: Int32 (4 Byte) - Unknown. [0,1,2] Actor?
4: Single (4 byte) - X position ?
5: Single (4 byte) - Y position ?
6: Single (4 byte) - Z position ?
7: Single (4 byte) - Rotation or Scale ?
8: Int32 (4 Byte) - Unknown. [1,2]
9: Int32 (4 Byte) - # of Oversize Int32's after fixed portion
10: Int32 (4 Byte) - Unknown. [0,1,2]
[2 in 007_dying_wish, 013_drink_alone ] [5 in 020_rom_chase]...
11: Int32 (4 Byte) - Unknown. [-1,0,1-2500]
12: Int32 (4 Byte) - Unknown. [Usually 0] [1-110]
13: Int32 (4 Byte) - [Always 0]
14: Int32 (4 Byte) - [Always 0]
15: Int32 (4 Byte) - Reference to another Type's SectionID. [Or -1 for the end ?]
16: Int32 (4 Byte) - [-1, 0-759 ?]
17: Int32 (4 Byte) - [-1, 0, 1]
18: Int32 (4 Byte) - [Usually 200] May relate to display size of block in LH's Original Editor ?
[0 in 015_drive_by] [701 in 009_diplomat, 009_political_speech]
[791 in 009_diplomat, 009_political_speech]

Oversize: Location 9 controls the count of the following data
OvrX: Int32 (4 byte) - Reference to another Type's SectionID



* Type 1, Varying size (minimum 84 bytes) - Controls actor positions.

0: Int32 (4 byte) - Type of this section. [1]
1: Int32 (4 byte) - Size of this section. [84-112]
2: Int32 (4 Byte) - SectionID. A unique ID for this section.
3: Int32 (4 byte) - Unknown. [0-2]. Actor ?
4: Single (4 byte) - X position
5: Single (4 byte) - Y position
6: Single (4 byte) - Z position
7: Single (4 byte) - Rotation around Z. -0.7169123 = 180 degrees reversed
8: Byte (1 byte) - Controls count of first set of Oversize data. 1= No oversize set, 2=1 oversize set,
3=2 oversize sets etc [1-4, 6]
9: Byte (1 byte) - Unknown [0,1,2,4,5]
10: Byte (1 byte) - Unknown [0,1]
11: Byte (1 byte) - [Always 0]
12: Int32 (4 byte) - Controls count of second set of Oversize Data [0-4]
13: Int32 (4 byte) - Controls count of third set of Oversize Data [0-6]
14: Int32 (4 byte) - Unknown. [-1,0,1-55,60-66, etc]
15: Int32 (4 byte) - Unknown. [0-30,32-33,35,40,48,50,55,60,65,75]
16: Int32 (4 byte) - Unknown. [0,1,2,4,8,16,32,64,128,256]
17: Int32 (4 byte) - [always 0]
18: Int32 (4 byte) - TextElement Index actor will perform.
19: Int32 (4 byte) - Unknown. [-1,0,1,2,3,4]
20: Int32 (4 byte) - Unknown. [-1,7,13,21,25,26,30]
21: Int32 (4 byte) - Reference to another Type's SectionID.
22: Int32 (4 byte) - Unknown. [-1,0,1,23]
23: Int32 (4 byte) - Unknown. [Usually 200] [104-1000]

Location 8 controls the count of the following data:
Int32 (4 byte) - Reference to another Type's SectionID [or -1]
Int32 (4 byte) - [-1,0,1]
Int32 (4 byte) - [Usually 120]

Location 12 controls the count of the following data:
Int32 (4 byte) - Reference to another Type's SectionID

Location 13 controls the count of the following data:
Int32 (4 byte) - Reference to another Type's SectionID



* Type 2, Varying size (Minimum 132 bytes), Controls motion, such as walk/jog movement cycles through up to two waypoints, or linear tweened movement from Start point to End point while rotating actor to point at up to two points (rotation around Z axis only)

0: Int32 (4 byte) - Type of this section. [2]
1: Int32 (4 byte) - Size of this section. Usually 132, can be up to 152.
2: Int32 (4 Byte) - SectionID. A unique ID for this section.
3: Int32 (4 byte) - Unknown. [0,1,2]
4: Single (4 byte) - Starting X position of actor when viewed from Lot view
5: Single (4 byte) - Starting Y position of actor when viewed from Lot view
6: Single (4 byte) - Starting Z position of actor when viewed from Lot view -- Unused ?, actor drops to floor
7: Single (4 byte) - Starting Rotation of actor when viewed from Lot view
8: Byte (1 byte) - Controls Oversize1 [1,2] 2 control oversize of specific type
9: Byte (1 byte) - Unknown [0,1]
10: Byte: (1 byte) - [Always 0]
11: Byte: (1 byte) - [Always 0]
9: Int32 (4 byte) - Controls Oversize2 [0,1,2,3,4]
10: Int32 (4 byte) - Controls Oversize3 [0,1,2,3,4]
11: Int32 (4 byte) - [Always 0]
12: Int32 (4 byte) - [Always 0]
13: Int32 (4 byte) - [Always 0]
14: Single (4 byte) - [Usually 0] Only non-zero on ai_birds_crew_facility.flm and ai_birds_gate.flm
15: Single (4 byte) - X position of Waypoint 1 (Start Position)
16: Single (4 byte) - Y position of Waypoint 1 (Start Position)
17: Single (4 byte) - Z Position of Waypoint 1 (Start Position) -- Unused ?, actor drops to floor
18: Single (4 byte) - X position of Waypoint 2
19: Single (4 byte) - Y position of Waypoint 2
20: Single (4 byte) - Z Position of Waypoint 2 -- Unused ?, actor drops to floor
21: Single (4 byte) - X position of Waypoint 3
22: Single (4 byte) - Y position of Waypoint 3
23: Single (4 byte) - Z Position of Waypoint 3 -- Unused ?, actor drops to floor
24: Single (4 byte) - X position of Waypoint 4 (End Position)
25: Single (4 byte) - Y position of Waypoint 4 (End Position)
26: Single (4 byte) - Z Position of Waypoint 4 (End Position) -- Unused ?, actor drops to floor
27: Single (4 byte) - Duration (Not used during Tweening)
28: Int32 (4 byte) - TextElement Index that Actor will perform.
Must be a 'walk' animation unless using Tweening, see next.
29: Int32 (4 byte) - [0 or 1] Flag for Tweening. Will travel from Start to End while pointing at Waypoints.
Duration of transition is default length of TextElement Animation
30: Int32 (4 byte) - Reference to another Type's SectionID.
31: Int32 (4 byte) - Unknown. [0,1,-1]
32: Int32 (4 byte) - Unknown. [Usually 200] Can range up to 1000

Oversize1
Value of Loc 8 = 2 there is a section of following data:
Int32 (4 byte) - Reference to another Type's SectionID.
Int32 (4 byte) - [0,1]
Int32 (4 byte) - [200]

Loc 9 controls count of Oversize of the following data:
Int32 (4 byte) - Reference to another Type's SectionID. (Always Type 7. Camera track Start?)

Loc 10 controls count of Oversize of the following data:
Int32 (4 byte) - Reference to another Type's SectionID. (Always Type 7. Camera track End?)



* Type 3, Varying size. 76 bytes static, followed by 12-byte structures, then singles. Seems to be branching for viewing scene from Lot view or actual Movie ?
* The ending Singles count is controlled by location 16. For the most part, they also seem to all add up to 1. So if there are two singles, both are .5. Three singles, 0.3333333. Four singles, .25, etc. Though this is not a rule

0: Int32 (4 byte) - Type of this section. [3]
1: Int32 (4 byte) - Size of this section. [104-380]
2: Int32 (4 Byte) - SectionID. A unique ID for this section.
3: Int32 (4 byte) - Unknown. [0,2]. Actor ?
4: Single (4 byte) - X position ?
5: Single (4 byte) - Y position ?
6: Single (4 byte) - Z position ?
7: Single (4 byte) - Unknown. Rotation or Scale ?
8: Int32 (4 byte) - [1-6] Controls Oversize.
9: Int32 (4 byte) - [Always 0]
10: Int32 (4 byte) - [Always 0]
11: Int32 (4 byte) - [Always 0]
12: Int32 (4 byte) - [Always 0]
13: Int32 (4 byte) - [Always 0]
14: Int32 (4 byte) - [Always 0]
15: Int32 (4 byte) - Unknown. [-3,-2,-1, 0-34, 36-39, 42-44, 46, 49, 52]
16: Byte (1 byte) - Controls count of singles at end of this structure. [1-10]
17: Byte (1 byte) - [Always 1]
18: Byte (1 byte) - [Always 0]
19: Byte (1 byte) - [Always 0]
20: Byte (1 byte) - Unknown. [0-255]
21: Byte (1 byte) - Unknown. [0-255] *
22: Byte (1 byte) - Unknown. [0-255]
23: Byte (1 byte) - Unknown. [0-255] *
24: Byte (1 byte) - Unknown. [0-255]
25: Byte (1 byte) - Unknown. [0-255] *
26: Byte (1 byte) - Unknown. [0-255]
27: Byte (1 byte) - Unknown. [0-255] *
*Often, these values are the same

Count of (Loc 8) * ((Loc 16) +1) data in the following format:
Int32 (4 bytes) - Reference to another Type's SectionID, or -1.
Int32 (4 bytes) - Unknown. [-1,0,1]
Int32 (4 bytes) - Unknown. [120]

Count of Loc 16 data follows:
Single (4 bytes) - [.5,.3333,.25, .2,.1]



* Type 4, 144 bytes. Unknown control

0: Int32 (4 byte) - Type of this section. [4]
1: Int32 (4 byte) - Size of this section. [144, 148,152]
2: Int32 (4 Byte) - SectionID. A unique ID for this section.
3: Int32 (4 byte) - Unknown [0,2]
4: Single (4 byte) - X position
5: Single (4 byte) - Y position
6: Single (4 byte) - Z position
7: Single (4 byte) - Rotation ?
8: Int32 (4 byte) - [Always 1]
9: Int32 (4 byte) - Unknown [0,1,2]
10: Int32 (4 byte) - Unknown [0,1,2]
11: Int32 (4 byte) - [Always 0]
12: Int32 (4 byte) - [Always 0]
13: Int32 (4 byte) - [Always 0]
14: Int32 (4 byte) - [Always 0]
15: Byte (1 byte) - [0,1]
16: Byte (1 byte) - [0,1]
17: Byte (1 byte) - [Always 0]
18: Byte (1 byte) - [Always 0]
19: Int32 (4 byte) - [Always 0]
20: Int32 (4 byte) - [-1,0-19, 22, 23, 24, 26]
21: Int32 (4 byte) - [-1, 0-6]
22: Int32 (4 byte) - [Always 1]
23: Int32 (4 byte) - [-1,0]
24: Int32 (4 byte) - [-1, 0] [0 only in _crew_ flms, _sunset, 017_cowboy dismount, 017_pow_escape]
25: Int16 (2 byte) - [-1, 0-33, 53]
26: Int16 (2 byte) - [0,1,2]
27: Single (4 byte) - [Range 0-1]
28: Int32 (4 byte) - Ref to another Type's SectionID or 0
29: Int32 (4 byte) - [0 - 99990, usually multiples of 10 or 100]
30: Single (4 byte) - X Position ?
31: Single (4 byte) - Y Position ?
32: Single (4 byte) - Z Position ?
33: Int16 (2 byte) - [0,1,2,3]
34: Int16 (2 byte) - [0-18,20,22,23,25-27...200,2000]
35: Int32 (4 byte) - [-1,0,1,2,8,96,512,1024]
36: Int32 (4 byte) - [-1, 0]
37: Byte (1 byte) - [0-255]
38: Byte (1 byte) - [0,1,2,3,4,8,12,16,32,63,127,192,255]
39: Byte (1 byte) - [0,32,64,255]
40: Byte (1 byte) - [0,4,8,255]
41: Int32 (4 byte) - [0,1]
42: Int32 (4 byte) - Ref to another Type's SectionID
43: Int32 (4 byte) - [-1, 0,1,2]
44: Int32 (4 byte) - [Always 120]

If size is over 144, Oversize is the following:
Ovr: Int32 (4 byte) - Ref to another SectionID



* Type 5, Refers to props placement, primarily for lot view, before actor utilizes it.

0: Int32 (4 byte) - Type of this section. [5]
1: Int32 (4 byte) - Size of this section. [64,80]
2: Int32 (4 Byte) - SectionID. A unique ID for this section.
3: Int32 (4 byte) - [Always 4]
4: Int32 (4 byte) - [0,1,2,3,4,5,255]
5: Int32 (4 byte) - Reference to another Type's ID
6: Int32 (4 byte) - TextElement Index for Prop
7: Int32 (4 byte) - [Always 0]
8: Int16 (2 byte) - Controls oversize state. [3,19] 3 = 64 bytes, 19 = 80 bytes
9: Int16 (2 byte) - [0,1]
10: Single (4 byte) - X ?
11: Single (4 byte) - Y ?
12: Single (4 byte) - Z ?
13: Single (4 byte) - X Rotation ?
14: Single (4 byte) - Y Rotation ?
15: Single (4 byte) - Z Rotation ?
16: Int32 (4 byte) - [Always 255]

Oversize
17: Single (4 byte) - X ?
18: Single (4 byte) - Y ?
19: Single (4 byte) - Z ?
20: Single (4 byte) - Rot ?



* Type 6. Costumes.

0: Int32 (4 byte) - Type of this section. [6]
1: Int32 (4 byte) - Size of this section. [64, 80, 84...]
2: Int32 (4 Byte) - SectionID. A unique ID for this section.
3: Int32 (4 byte) - Unknown.
4: Int32 (4 byte) - Unknown.
5: Int32 (4 byte) - Reference to Next Type's SectionID.
6: Int32 (4 byte) - Costume TextElement ID [or -1]
7: Byte - Unknown. [0-15,23,25,27,29-31,63-64,79,87,101,103,109-111,126-127,230-231]
8: Byte - Unknown. [0,1,2] 1 & 2 only appear in Crew flms
9: Byte - [Always 0]
10: Byte - [Always 0]
11: Byte - [Usually 3] [2,3,10,19,22,26]
12: Byte - [Always 0]
13: Byte - Oversize has 4 singles after 64 Bytes [0,1]
14: Byte - # of Oversize Int32's after 64 Bytes
15: Single (4 byte) - X Position ? [0 or -15.418 in 018_fire.flm]
16: Single (4 byte) - Y Position ? [0 or -7.689 in 018_fire.flm]
17: Single (4 byte) - Z Position ? [Always 0]
18: Single (4 byte) - Angle ? [Always 0]
19: Int32 (4 byte) - [Always 0]
20: Int32 (4 byte) - [Always 0]
21: Int32 (4 byte) - [Always 255]

If Loc 13, data is as follows:
Single (4 byte) - X Location where actor changes in Lot View
Single (4 byte) - Y Location where actor changes in Lot View
Single (4 byte) - Z Location where actor changes in Lot View
Single (4 byte) - Rotation where actor changes in Lot View

If Loc 14 above is set, # of Int32s follow:
Int32 (4 byte) - Reference to Other Type's SectionID



* Type 7, Refers to Camera position.

0: Int32 (4 byte) - Type of this section. [7]
1: Int32 (4 byte) - Size of this section. [116, 120, 124, 148]
2: Int32 (4 Byte) - SectionID. A unique ID for this section.
3: Int32 (4 byte) - [Always 0]
4: Int32 (4 byte) - [Always 0]
5: Int32 (4 byte) - [Always 0]
6: Int32 (4 byte) - [Always 0]
7: Int32 (4 byte) - [Always 0]
8: Int32 (4 byte) - [Always 1]
9: Int32 (4 byte) - Controls count of Oversize1 Int32's [0,1,2,3,8]
10: Int32 (4 byte) - Controls Count of of Oversize2 [0,1,2]
11: Int32 (4 byte) - Duration in .1 second. So 50 = 5 seconds. [or -1] Unknown result at -1
12: Int32 (4 byte) - Unknown. [0-18,20,22,23-25,30,32,34-37,40,42,45,50,53,83]
13: Int32 (4 byte) - Unknown. [1,2,4,8,16,32,64]
14: Int32 (4 byte) - [Always 0]
15: Int32 (4 byte) - [Always 0]
16: Single (4 byte) - Camera X position.
17: Single (4 byte) - Camera Y position.
18: Single (4 byte) - Camera Z position.
19: Single (4 byte) - CameraTarget X position. &~ What the camera points at.
20: Single (4 byte) - CameraTartget Y position.
21: Single (4 byte) - CameraTarget Z position.
22: Single (4 byte) - Field of View ?
23: Single (4 byte) - Zoom.
24: Single (4 byte) - Rotation amount per second [0, 3.1415926 (pi)]
25: Byte - Flag for motion shot ? [0,1]
26: Byte - Flag for static shot ? [0,1]
27: Byte - x .1 seconds before transition with next (or previous ?) camera position
28: Byte - Flag. [0,1]
29: Int32 (4 byte) - Reference to another Type's SectionID.
30: Int32 (4 byte) - Unknown. [-1, 0, 2]
31: Int32 (4 byte) - Unknown. [200]

Oversize1 Loc 9 controls count
Int32 (4 byte) - Reference to another Type's SectionID.
Oversize2 Loc 10 controls count
Int32 (4 byte) - Reference to another Type's SectionID.



* Type 8, Usually 80 bytes. Unknown control. There are no Type 8's in ai_ flms

0: Int32 (4 byte) - Type of this section. [8]
1: Int32 (4 byte) - Size of this section. [80]
2: Int32 (4 Byte) - SectionID. A unique ID for this section.
3: Int32 (4 byte) - [Always 7]
4: Int32 (4 byte) - [0,255]
5: Byte (1 byte) - [0-255]
6: Byte (1 byte) - [0-255]
7: Byte (1 byte) - [0-13,15-17,19,20-22,24-26,38,41,56,255]
8: Byte (1 byte) - [0,255]
9: Int32 (4 byte) - [Always -1]
10: Int32 (4 byte) - [0,1-7,9-14,18-19,28,29,30,60,70]
11: Int16 (2 byte) - [Always 19]
12: Int16 (2 byte) - [0,1]
13: Int32 (4 byte) - [Always 0]
14: Int32 (4 byte) - [Always 0]
15: Int32 (4 byte) - [Always 0]
16: Int32 (4 byte) - [Always 0]
16: Int32 (4 byte) - [Always 0]
17: Int32 (4 byte) - [Always 0]
18: Int32 (4 byte) - [Always 0]
19: Int32 (4 byte) - [Always 255]
20: Int32 (4 byte) - [Always 0]
21: Int32 (4 byte) - [Always 0]
22: Single (4 byte) - Unknown
23: Int32 (4 byte) - [Always 0]



* Type 9, refers to Facial Expressions

0: Int32 (4 byte) - Type of this section. [9]
1: Int32 (4 byte) - Size of this section. [124, 128]
2: Int32 (4 Byte) - SectionID. A unique ID for this section.
3: Int32 (4 byte) - [0,2]
4: Single (4 byte) - X ?
5: Single (4 byte) - Y ?
6: Single (4 byte) - Z ?
7: Single (4 byte) - Rotation or Scale ?
8: Int32 (4 byte) - [Always 1]
9: Int32 (4 byte) - [0,1]
10: Int32 (4 byte) - Controls Oversize [0,1]
11: Int32 (4 byte) - [Always 0]
12: Int32 (4 byte) - [Always 0]
13: Int32 (4 byte) - [Always 0]
14: Int32 (4 byte) - [Always 0]
15: Single (4 byte) - Unknown. [-1.9 - 2, 5, 20]
16: Single (4 byte) -
17: Int32 (4 byte) - [10,11]
18: Int32 (4 byte) - TE Index of 'fclexp' entry
19: Int32 (4 byte) - fan file Control ID
20: Int32 (4 byte) - [0-30,32-38, 40-56, 58-60, 62, 65-72, 75,80 ... 165]
21: Int32 (4 byte) - [0 - 99999999999] Multiples of 10 or 100
22: Single (4 byte) - [0 - 1]
23: Int32 (4 byte) - [-1, 7-101,103-104, 110-169, 171-172]
24: Int32 (4 byte) - [-1, 7-101, 103-104, 110-169, 171-172]
25: Int32 (4 byte) - [-1, 11-16, 19-65, 67-68, 70,76,79,81 ... 168,170]
26: Int32 (4 byte) - [0-26, 28-33,35-38,40-43 ... 110,115]
27: Int32 (4 byte) - [Always 0]
28: Int32 (4 byte) - Reference to another Type's ID
29: Int32 (4 byte) - [-1,0,1,2,3]
30: Int32 (4 byte) - [Always 120]

Loc 9 controls Oversize
31: Int32 (4 byte) - Reference to another Type's ID
Valid XHTML 1.0 Transitional Valid CSS Powered by Wikka Wakka Wiki 1.1.6.2
Page was generated in 0.7170 seconds