Directors Cut Wiki : TrailerFiles

DirectorsCutModdingFoundry Categories PageIndex RecentChanges RecentlyCommented Login/Register
Trail: TextSearch TextSearchExpanded TextureCount TextureName ThatsDumb TheMoviesEditoR TotalPaths TrailerFiles

Most recent edit on 2007-02-26 13:24:20 by rileyman [Added full details for the Scene Block]

Additions:
The header section of the scene block is organized as follows:
<tr><td><font face=courier>0x0000</font></td><td>Integer</td><td align=right>4</td><td>Scene block identifier. This is always a value of 1.</td></tr>
<tr><td><font face=courier>0x0004</font></td><td>Integer</td><td align=right>4</td><td>Size of this complete scene block, measured in bytes.</td></tr>
<tr><td><font face=courier>0x0008</font></td><td>Plain Text</td><td align=right>64</td><td>Scene identifier.</td></tr>
<tr><td><font face=courier>0x0048</font></td><td>Plain Text</td><td align=right>32</td><td>Scene file to use (*.FLM file).</td></tr>
<tr><td><font face=courier>0x0068</font></td><td>Plain Text</td><td align=right>32</td><td>Mesh file to use for the set (*.MSH file).</td></tr>
<tr><td><font face=courier>0x0088</font></td><td>Plain Text</td><td align=right>32</td><td>Backdrop file to use (*.DDS file).</td></tr>
<tr><td><font face=courier>0x00A8</font></td><td>Integer[3]</td><td align=right>12</td><td>Unknown purpose.</td></tr>
<tr><td><font face=courier>0x00B4</font></td><td>Integer</td><td align=right>4</td><td>Clip front. This measures, in tenths of a second, how far into the clip to begin rendering this scene.</td></tr>
<tr><td><font face=courier>0x00B8</font></td><td>Integer</td><td align=right>4</td><td>Clip back. This measures, in tenths of a second, how far from the end of the clip to stop rendering this scene.</td></tr>
<tr><td><font face=courier>0x00BC</font></td><td>Integer[6]</td><td align=right>24</td><td>Unknown purpose.</td></tr>
<tr><td><font face=courier>0x00D4</font></td><td>Integer</td><td align=right>4</td><td>Number of slider values.</td></tr>
<tr><td><font face=courier>0x00D8</font></td><td>Integer</td><td align=right>4</td><td>Number of actors in this scene.</td></tr>
<tr><td><font face=courier>0x00DC</font></td><td>Integer</td><td align=right>4</td><td>Number of props used as set dressing.</td></tr>
<tr><td><font face=courier>0x00E0</font></td><td>Integer</td><td align=right>4</td><td>Number of props that actors can interact with.</td></tr>
<tr><td><font face=courier>0x00E4</font></td><td>Integer</td><td align=right>4</td><td>Unknown purpose. Appears to usually contain the value 14.</td></tr>
Special Note: The "Clip front" and "Clip back" values will be zero if the scene was not clipped using the "Split Scene" button. They are integer values, and are measured in tenths of a second, starting at the endpoints of the scene's timeline.
It may be possible to determine the default length of each scene, as adjusted by the slider values, by inspecting the associated *.FLM file. If this is possible, then the Devil's Bookmark scenes (as termed by JazzX, which appear as a black frame in the exported movie) could be identified programmatically. Devil's Bookmark scenes can be manually identified by looking at the "Clip back" value, and determining if it points to a position in the timeline before the "Clip front" value. Since you can't have a scene that ends before it begins, the game apparently gets confused when rendering the movie and just outputs black.
The slider list section of the scene block contains one entry for each slider value. Each entry is organized as follows:
<tr><td><font face=courier>0x0000</font></td><td>Float</td><td align=right>4</td><td>Slider value.</td></tr>
<tr><td><font face=courier>0x0004</font></td><td>Plain Text</td><td align=right>260</td><td>Slider identifier. Typical values include "sld_location", "sld_duration", and "ai_stunt_fail".</td></tr>
The actor list section of the scene block contains one entry for each actor appearing in the scene. Each entry is organized as follows:
<tr><td><font face=courier>0x0000</font></td><td>Float[5]</td><td align=right>20</td><td>Unknown purpose.</td></tr>
<tr><td><font face=courier>0x0014</font></td><td>Plain Text</td><td align=right>72</td><td>If this actor was created through the Starmaker, this is the folder name (with the characters "ud_" attached to the front). Otherwise, it is the template name used by the game to create the actor (*.HD file).</td></tr>
<tr><td><font face=courier>0x005C</font></td><td>Unicode Text</td><td align=right>128</td><td>In-game name of this actor.</td></tr>
<tr><td><font face=courier>0x00DC</font></td><td>Unicode Text</td><td align=right>128</td><td>In-game name of this character.</td></tr>
<tr><td><font face=courier>0x015C</font></td><td>Integer[2]</td><td align=right>8</td><td>Unknown purpose.</td></tr>
<tr><td><font face=courier>0x0164</font></td><td>Float</td><td align=right>4</td><td>Unknown purpose.</td></tr>
<tr><td><font face=courier>0x0168</font></td><td>Integer</td><td align=right>4</td><td>This looks like the length (measured in bytes) of the rest of the actor block (including this integer).</td></tr>
<tr><td><font face=courier>0x016C</font></td><td>Integer</td><td align=right>4</td><td>Unknown purpose.</td></tr>
<tr><td><font face=courier>0x0170</font></td><td>Plain Text</td><td align=right>32</td><td>Filename of base costume (*.COS file).</td></tr>
<tr><td><font face=courier>0x0190</font></td><td>Unknown</td><td align=right>Varies</td><td>This block of data appears to hold a variety of integer, float and string values. Some of this data indicates the filenames of textures for the eyes and eyebrows, and the mesh used for the hair. Work will continue on trying to decipher the structure of this data.</td></tr>
The set dressing props list of the scene block contains one entry for each prop placed in the scene. Each entry is organized as follows:
<tr><td><font face=courier>0x0000</font></td><td>Plain Text</td><td align=right>32</td><td>Filename of prop mesh (*.MSH file).</td></tr>
<tr><td><font face=courier>0x0020</font></td><td>Float[12]</td><td align=right>48</td><td>Position and orientation information for this prop, organized into a standard transformation matrix.</td></tr>
The interactive props list of the scene block contains one entry for each prop that interacts with an actor. Each entry is organized as follows:
<tr><td><font face=courier>0x0000</font></td><td>Integer</td><td align=right>4</td><td>Slot number for this prop.</td></tr>
<tr><td><font face=courier>0x0004</font></td><td>Plain Text</td><td align=right>32</td><td>Filename of prop mesh (*.MSH file).</td></tr>
The free-cam portion of the scene block is a little bit sketchy, but I think it is organized as follows:
<tr><td><font face=courier>0x0000</font></td><td>Integer[16]</td><td align=right>64</td><td>Unknown purpose. Usually all zeros?</td></tr>
<tr><td><font face=courier>0x0030</font></td><td>Integer[3]</td><td align=right>12</td><td>Not completely sure, but the second number here looks like a flag indicating whether Position 1 of the free-cam has been activated.</td></tr>
<tr><td><font face=courier>0x003C</font></td><td>Float[8]</td><td align=right>32</td><td>Position and orientation information for Position 1 of the free-cam.</td></tr>
<tr><td><font face=courier>0x005C</font></td><td>Integer[3]</td><td align=right>12</td><td>The second number here looks like a flag indicating whether Position 2 of the free-cam has been activated.</td></tr>
<tr><td><font face=courier>0x0068</font></td><td>Float[8]</td><td align=right>32</td><td>Position and orientation information for Position 2 of the free-cam.</td></tr>


Deletions:
(More details to come...)



Edited on 2007-02-25 09:38:33 by rileyman [Added full details for the Actor Block and some unknowns]

Additions:
<tr><td><b>Offset</b></td><td><b>Data Type</b></td><td><b># Bytes</b></td><td><b>Description</b></td></tr>
The header section of the actor block is organized as follows:
<tr><td><b>Offset</b></td><td><b>Data Type</b></td><td><b># Bytes</b></td><td><b>Description</b></td></tr>
<tr><td><font face=courier>0x0004</font></td><td>Integer</td><td align=right>4</td><td>Size of this actors block, measured in bytes.</td></tr>
<tr><td><font face=courier>0x0008</font></td><td>Integer[6]</td><td align=right>24</td><td>Unknown. The third value seems to always be a value of 5; and thus might indicate the number of genres stored in the genre section. The fourth value appears to be the length of the actor icon image in bytes.</td></tr>
<tr><td><font face=courier>0x0020</font></td><td>Unicode Text</td><td align=right>Varies</td><td>In-game name of actor. This is a zero-terminated Unicode string.</td></tr>
<tr><td><font face=courier>Varies</font></td><td>Unicode Text</td><td align=right>Varies</td><td>In-game name of character. This is a zero-terminated Unicode string.</td></tr>
The genre list section of the actor block contains one entry for each genre. Each entry is organized as follows:
<tr><td><b>Offset</b></td><td><b>Data Type</b></td><td><b># Bytes</b></td><td><b>Description</b></td></tr>
<tr><td><font face=courier>0x0000</font></td><td>Float</td><td align=right>4</td><td>The in-game actor's experience rating for this genre. This is a value between 0 (not experienced) and 1 (fully experienced).</td></tr>
<tr><td><font face=courier>0x0004</font></td><td>Plain Text</td><td align=right>Varies</td><td>Genre identifier. This is a zero-terminated string.</td></tr>
The rest of the actor block contains the actor's icon image in JPEG format. If it does not end at a 4-byte boundary, it is padded with up to 3 extra zeroes.
Between the actor blocks and scene blocks exists a bunch of data always 52 bytes in length. It's likely this is actually three separate small blocks of data, because it follows the same basic structure as all other blocks (a block id, followed by the length of the block). This is speculation, but this appears to be organized as follows:
Unknown block #1:
<tr><td><b>Offset</b></td><td><b>Data Type</b></td><td><b># Bytes</b></td><td><b>Description</b></td></tr>
<tr><td><font face=courier>0x0000</font></td><td>Integer</td><td align=right>4</td><td>Block identifier, always a value of 8.</td></tr>
<tr><td><font face=courier>0x0004</font></td><td>Integer</td><td align=right>4</td><td>Size of this unknown block. This always seems to be 28.</td></tr>
<tr><td><font face=courier>0x0008</font></td><td>Integer[5]</td><td align=right>20</td><td>Five unknown integers.</td></tr>
Unknown block #2:
<tr><td><b>Offset</b></td><td><b>Data Type</b></td><td><b># Bytes</b></td><td><b>Description</b></td></tr>
<tr><td><font face=courier>0x0000</font></td><td>Integer</td><td align=right>4</td><td>Block identifier, always a value of 6.</td></tr>
<tr><td><font face=courier>0x0004</font></td><td>Integer</td><td align=right>4</td><td>Size of this unknown block. This always seems to be 16.</td></tr>
<tr><td><font face=courier>0x0008</font></td><td>Integer[2]</td><td align=right>8</td><td>Two unknown integers.</td></tr>
Unknown block #3:
<tr><td><b>Offset</b></td><td><b>Data Type</b></td><td><b># Bytes</b></td><td><b>Description</b></td></tr>
<tr><td><font face=courier>0x0000</font></td><td>Integer</td><td align=right>4</td><td>Block identifier, always a value of 3.</td></tr>
<tr><td><font face=courier>0x0004</font></td><td>Integer</td><td align=right>4</td><td>Size of this unknown block. This always seems to be 8.</td></tr>
And yes, it seems the third unknown block is always essentially empty. There may be cases I simply haven't come across yet that provide more clues as to what these unknown blocks mean. It's also possible some of this is just remnants of game features that never got implemented, or were removed.


Deletions:
<tr><td><b>Offset</b></td><td><b>Data Type</b></td><td><b># Bytes</b></td><td><b>Description</b></td></tr>
Between the actor blocks and scene blocks exists a bunch of data always 52 bytes in length. It's likely this is actually three separate small blocks of data, because it follows the same basic structure as all other blocks (a block id, followed by the length of the block).




Edited on 2007-02-23 13:01:53 by rileyman [Updated some details -- found the markers for # actors and # scenes.]

Additions:
1) A list of actor blocks that indicate the in-game actor name and character name. Additional data appears to include aspects such as the actor's experience in each genre, and the in-game icon image in JPEG format. This only lists the actors that will get posted on the online film description (maximum of four entries).
  1. Several small unknown blocks, always appearing to total 52 bytes in length.
  2. A message digest block, always 1024 bytes in length. (identified by Reacher) It is believed this is generated using some kind of secure public key algorithm.
<tr><td><font face=courier>0x0004</font></td><td>Float[4]</td><td align=right>16</td><td>Four floating-point values, unknown purpose. It is possible this is the key information related to the message digest that appears at the end of the file.</td></tr>
<tr><td><font face=courier>0x0428</font></td><td>Integer</td><td align=right>4</td><td>Number of scene blocks.</td></tr>
<tr><td><font face=courier>0x042C</font></td><td>Integer</td><td align=right>4</td><td>Number of actor blocks, not including the director role.</td></tr>
<tr><td><font face=courier>0x0430</font></td><td>Integer</td><td align=right>4</td><td>Unknown purpose. It appears to always be slightly larger than the number of scene blocks.</td></tr>

TRL Unknown Blocks

Between the actor blocks and scene blocks exists a bunch of data always 52 bytes in length. It's likely this is actually three separate small blocks of data, because it follows the same basic structure as all other blocks (a block id, followed by the length of the block).


Deletions:
1) A list of actor blocks that indicate the in-game actor name and character name. Additional data appears to include aspects such as the actor's experience in each genre, and the in-game icon image in JPEG format.
  1. A message digest block, always 1024 bytes in length. (identified by Reacher)
<tr><td><font face=courier>0x0004</font></td><td>Float[4]</td><td align=right>16</td><td>Four floating-point values. Unknown purpose.</td></tr>
<tr><td><font face=courier>0x0428</font></td><td>Integer[3]</td><td align=right>12</td><td>Unknown purpose.</td></tr>
Note: I'm still trying to figure out how the game knows how many actor and scene blocks exist in the file. Some of the "unknown" values in the table above may hold the key to this… but it may also be a case of reading the opening portion of each block to determine what it contains.




Oldest known version of this page was edited on 2007-02-20 12:51:04 by rileyman [Started Feb. 20, 2007 by rileyman]
Page view:

The Movies File Formats - Trailer Files (*.trl)

(started by rileyman)

These files contain most of the information needed for the game to render and export a single movie. The INI files of the same name contain the rest of the data, which includes extra audio information and visual fades. These are the files that are opened in both the Advanced Movie Maker (AMM) and Post Production (PP) buildings, as well as the Movie Player off the game's main menu.

TRL Files are organized in the following manner:
  1. A header block that contains global information about the movie. This includes the movie title, genre, studio name, type of film stock, and year of release.
  2. A list of actor blocks that indicate the in-game actor name and character name. Additional data appears to include aspects such as the actor's experience in each genre, and the in-game icon image in JPEG format.
  3. A list of scene blocks that indicate most of the information needed to render each scene. This includes the set, scene, backdrop, slider values, actors used, set dressing, props, and free-cam information.
  4. The film's thumbnail in JPEG format, if one was taken.
  5. A complete list of all the custom music and sound files available, presumably used as a cache for the file list.
  6. A message digest block, always 1024 bytes in length. (identified by Reacher)

TRL Header Block

The following table provides the offsets for each piece of data stored in the opening portion of every TRL file.
OffsetData Type# BytesDescription
0x0000Integer4Always 17. This likely acts as a way for the game to identify the file as a TRL file.
0x0004Float[4]16Four floating-point values. Unknown purpose.
0x0014Integer4Size of this header block, in bytes. This appears to always by 4256 (or 0x10A0).
0x0018Unicode Text520Name of movie.
0x0220Unicode Text520Name of movie, again. I'm not sure why this exists twice!
0x0428Integer[3]12Unknown purpose.
0x0434Unicode Text520If the film has been uploaded to TMO, this is the user account name. If not, it is the name of the studio head, as chosen in the game.
0x063CInteger or Float[3]12Unknown purpose.
0x0648Plain Text260Genre identifier. This is always one of "genre_action", "genre_comedy", "genre_horror", "genre_romance", or "genre_sci-fi".
0x074CUnicode Text520Studio name, as chosen in the game.
0x0954Plain Text260Film size.
0x0A58Plain Text260Film stock.
0x0B5CPlain Text260Type of camera.
0x0C60Plain Text260Type of sound.
0x0D64Plain Text260Type of camera rig.
0x0E68Integer4Unknown purpose.
0x0E6CInteger4Year of release (as mentioned in game time).
0x0E70Float[2]8Unknown purpose.
0x0E78Unicode Text520Full pathname of the last WMV file exported.
0x1080Integer[5]20Unknown purpose.
0x1094Plain Text12Language / locale identifier. This is typically "EN_US" or "EN_UK" for English copies of the game.


Note: I'm still trying to figure out how the game knows how many actor and scene blocks exist in the file. Some of the "unknown" values in the table above may hold the key to this… but it may also be a case of reading the opening portion of each block to determine what it contains.

TRL Actor Block

Each actor block appears to consist of three sections, as follows.
  1. A header section with the in-game actor name and character name. It also contains some additional bits of data.
  2. A list of genres, with an accompanying float value. As the float value is probably the actor's experience rating, it is likely this data is used to calculate the in-game star rating of the film.
  3. The actor icon image, in JPEG format.

(More details to come...)

TRL Scene Block

Each scene block appears to consist of six sections, as follows.
  1. A header section containing the scene, set, and backdrop information. It also contains the clipping information, and counts for the sections that follow.
  2. A list of slider values.
  3. A list of actors used in the scene.
  4. A list of props used as set dressing.
  5. A list of props that the actors can interact with (telephones, cars, cigarettes, guns, etc.)
  6. Free-cam position and orientation.

(More details to come...)
Valid XHTML 1.0 Transitional Valid CSS Powered by Wikka Wakka Wiki 1.1.6.2
Page was generated in 0.0980 seconds