This version is outdated by a newer approved version.DiffThis version (2017/01/05 18:39) was approved by zdimension.

This is an old revision of the document!


CUTSEQ file format (TR4-TR5)

Overview

The CUTSEQ.BIN file is a file containing information about all the engine-rendered cutscenes (as opposite to FMVs, which are pre-rendered videos). In TR4, this file is compressed and contained in a PAK file, and the resulting file is called CUTSEQ.PAK. In TR5, like many other things (e.g. level files), the file is not compressed, and is called CUTSEQ.BIN.

Layout

uint8_t DEL[8]; // "(C) DEL!", for Derek Leigh-Gilchrist
cutscene_header Cutscenes[N]; // N = 30 for TR4, 44 for TR5, 4 for Times Demo
uint8_t Padding[]; // Empty space between header and data
uint8_t CutsceneData[];
 
struct cutscene_header // 8 bytes
{
  uint32_t Offset; // Offset relative to start of file
  uint32_t Size; // Size in bytes
}
 
struct cutscene_data
{
  uint16_t NumActors; // Actor 1 is always Lara (slot ID 0)
  uint16_t NumFrames;
  int32_t OriginX; // Origin coordinates are in TR world coordinates
  int32_t OriginY; // Negative Y is up
  int32_t OriginZ;
  int32_t AudioTrackIndex; // -1 means no audio track
  uint32_t CameraDataOffset;
  actor_slot_header Actors[NumActors];
  camera_data CameraData;
  uint8_t Padding[];
  uint8_t ActorData[];
  uint8_t Padding[];
}
 
struct actor_slot_header // 8 bytes
{
  uint32_t DataOffset;
  uint16_t SlotNumber; // TR Moveable slot ID number
  uint16_t NumNodes; // Same as number of meshes in moveable
}
 
struct camera_data
{
  position_header TargetHeader;
  position_header CameraHeader;
  packed_coord TargetPosition;
  packed_coord CameraPosition;
}
 
struct actor_data
{
  mesh_header Meshes[NumNodes];
  mesh_data MeshData[NumNodes];
}
 
struct mesh_data
{
  packed_coord PositionData;
  packed_coord RotationData;
}
 
struct position_header // 14 bytes
{
  int16_t StartX;
  int16_t StartY;
  int16_t StartZ;
  uint16_t AxisBitsizes; // X = bits 14-11, Y = 9-6, Z = 4-1
  uint16_t NumValuesX;
  uint16_t NumValuesY;
  uint16_t NumValuesZ;
}
 
struct rotation_header // 14 bytes
{
  // 1024 = 360 degrees
  int16_t StartX;
  int16_t StartY;
  int16_t StartZ;
  uint16_t AxisBitsizes; // X = bits 14-11, Y = 9-6, Z = 4-1
  uint16_t NumValuesX;
  uint16_t NumValuesY;
  uint16_t NumValuesZ;
}
 
struct packed_coord // (variable length)
{
  dynamic Xaxis; // todo: explain better
  dynamic Yaxis; // core design, why did you make this
  dynamic Zaxis;
}

Notes

In TR4 CUTSEQ.PAK, DEL (Derek Leigh-Gilchrist) left a hidden message in the first Padding section:

Cutseq.JIZ , Compiled by Del using the one and only 'ASMLE.EXE'
Ok, I`ve got about 1.5k of padding here, so enjoy my ramblings...
Keep your greasy mits off my packed data...
Greets to...
Alex,Damon,Rich,Charlie,Jon,Dan,Dude,Martin,Jens,DaveS,DaveM,ZeoGrad and all the usual...
Tombraider IV Delta-Packed Animation Data (C) 1999 Core Design.
Sector padded for hotness...
Format:
dc.w num_actors
dc.w num_frames
dc.l orgx,orgy,orgz
dc.l audio_track
dc.l packed_camera_data_offset
dc.l packed_actor_data_offset
dc.w object_slot
dc.w num_nodes
nice eh?
hack away my friends...
NUDE CHEAT ALERT... NUDE CHEAT ALERT...
maybe...
EMAIL: del@nlights.demon.co.uk
OR del@core-design.com
Developer Credits:
Coding: Del,Gibby,Chris,Rich & Tom
Delta Compressor: MJ
Animation: Jerr
Art: Jibber,Pete,Phil,Andy,Rich,Jamie
Sound: Pete
FMV: Pete,Dave and some others...
Thanks to...
PsyQ,SCEE,MartinJ and the GNU people...
Don`t forget, ** PC-Engine RULES **
BTW people, 30% of the entire game is MIPS.
The rest is 'C' , but luckily GNU isn`t as dry as it used to be...
Some decent(ish) links:
http://www.nlights.demon.co.uk
http://www.core-design.com
http://www.hu6280.com
http://www.geeknews.com
http://www.hotmail.com
http://www.hitbox.com
http://www.tombraider.com
http://www.ign64.com
http://www.rareware.com
http://www.eidos.com
Special greet to my baby girl Abigail, and my Wife(?) Caroline...
See you in TR5.... bwhahahah

TR5 CUTSEQ.BIN also contains a message:

'cutseq.asm' Compiled by Del - 18:08:53 Thursday 26th of October 2000
trs/cutseq.1483619002.txt.gz · Last modified: 2017/01/05 12:23 by zdimension
Back to top
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0