Files
isle/docs/dta.ksy

136 lines
3.9 KiB
Plaintext

meta:
id: dta
title: Animation Data File
application: LEGO Island
file-extension: dta
license: CC0-1.0
endian: le
doc: |
Animation data file format for LEGO Island (1997). Contains animation
information for world objects including their positions, orientations,
and associated models.
DTA files are located at `<install_path>/lego/data/<world>inf.dta` where
<world> is the world name (e.g., "isle", "act1", "act2m", etc.). They are
loaded by LegoAnimationManager::LoadWorldInfo() to populate animation
information for the current world.
File structure:
1. Header - version (must be 3) and animation count
2. AnimInfo entries - animation references with nested model placement data
seq:
- id: version
type: u4
doc: |
File format version. Must be 3 for valid files.
The game rejects files with mismatched versions.
- id: num_anims
type: u2
doc: Number of animation info entries in this file.
- id: anims
type: anim_info
repeat: expr
repeat-expr: num_anims
doc: Animation information entries.
types:
anim_info:
doc: |
Animation information for a single animation (AnimInfo struct).
Contains metadata about the animation and a list of models involved.
Parsed by LegoAnimationManager::ReadAnimInfo().
seq:
- id: name_length
type: u1
doc: Length of the animation name in bytes.
- id: name
type: str
size: name_length
encoding: ASCII
doc: |
Animation name identifier. The last two characters are used
to look up a character index via GetCharacterIndex().
- id: object_id
type: u4
doc: Object ID used to identify this animation in the game.
- id: location
type: s2
doc: |
Location index referencing a LegoLocation. A value of -1
indicates no specific location is assigned.
- id: unk_0x0a
type: u1
doc: Boolean flag (MxBool). Purpose unknown.
- id: unk_0x0b
type: u1
doc: Unknown byte field.
- id: unk_0x0c
type: u1
doc: Unknown byte field.
- id: unk_0x0d
type: u1
doc: Unknown byte field.
- id: unk_0x10
type: f4
repeat: expr
repeat-expr: 4
doc: Array of 4 unknown float values (16 bytes total).
- id: model_count
type: u1
doc: Number of model entries that follow.
- id: models
type: model_info
repeat: expr
repeat-expr: model_count
doc: Model information for each model in this animation.
model_info:
doc: |
Model information defining position and orientation for a single
model within an animation (ModelInfo struct). Used to place characters
and objects in the world during animation playback.
Parsed by LegoAnimationManager::ReadModelInfo().
seq:
- id: name_length
type: u1
doc: Length of the model name in bytes.
- id: name
type: str
size: name_length
encoding: ASCII
doc: |
Model name used to look up the character or vehicle.
Examples: "caprc01" (race car), "irt001d1" (character).
- id: unk_0x04
type: u1
doc: Unknown byte field.
- id: position
type: vertex3
doc: World position (X, Y, Z) of the model.
- id: direction
type: vertex3
doc: Forward direction vector of the model.
- id: up
type: vertex3
doc: Up direction vector of the model.
- id: unk_0x2c
type: u1
doc: |
Boolean flag. When non-zero, this model is considered a vehicle
and tracked in the animation's vehicle list (m_unk0x2a).
vertex3:
doc: A 3D point or vector with X, Y, Z components.
seq:
- id: x
type: f4
doc: X component.
- id: y
type: f4
doc: Y component.
- id: z
type: f4
doc: Z component.