Skip to content
Chris edited this page Jun 16, 2026 · 1 revision

*.dtz is a console memory dump containing the main game resources for GTA Liberty City Stories and GTA Vice City Stories.

The GAME.dtz file is packed with the deflate/zlib compression algorithm.

This file is especially interesting because it contains configuration data, interface elements, and models for some game objects. In most cases, these are binary equivalents of text files from the data folder and models with texture archives from the models folder in GTA Vice City.

Contents

  1. Header
    1. GTA LCS version
  2. Short description of contents
    1. Textures
    2. Animation
    3. Collision
    4. Models
    5. IDE / IPL / DAT
    6. Miscellaneous
  3. Structures
    1. IDE
      1. Binary IDE row structure
    2. cull.ipl
    3. ped.dat
    4. weapons data
      1. LCS version structure
      2. VCS version structure
    5. pedstats data
      1. LCS version structure
      2. VCS version structure
    6. handling data
      1. LCS version structure
      2. VCS version structure
    7. particle data
      1. LCS version structure
      2. VCS version structure
    8. carcols data
      1. LCS version structure
      2. VCS version structure

Header

GTA LCS version

The table below describes the DTZ header.

0x00 [4b FourCC] - DTZ signature, read as GTAG.

0x04 [4b int]    - unknown, usually 1.

0x08 [4b int]    - DTZ size.

0x0C [4b int]    - data size, not counting the tables used to relocate the file in memory.

0x10 [4b int]    - offset table used for pointer relocation in memory.
                   This is the Reallocation Table.

0x14 [4b int]    - number of offsets in the Reallocation Table.

0x18 [4b int]    - points to an offset table for Jenkins hashes.
                   These hashes are replaced with pointers to virtual method tables, or VMTs.

0x1C [2b short]  - number of Jenkins hashes in section 1 of the table.

0x1E [2b short]  - number of Jenkins hashes in section 2 of the table.
                   These are render methods in model Atomics.

0x20 [4b int]    - gpThePaths.

0x24 [4b int]    - CPools::ms_pBuildingPool.
                   Offset to data related to static object placement, or Buildings IPL.

0x28 [4b int]    - offset to data related to road placement, or Treadable IPL.

0x2C [4b int]    - offset to data related to dynamic object placement, or Dummy IPL.

0x30 [4b int]    - EntryInfoNodes.
                   Related to streaming dynamic map objects.

0x34 [4b int]    - PtrNodes.
                   Related to map streaming. Points to IPL data from the Buildings,
                   Treadables, and Dummys sections.

0x38 [4b int]    - IDE count.

0x3C [4b int]    - offset table for binary IDE entries.
                   The ID is assigned by offset counter, from 0 to IDE count.

0x40 [4b int]    - vehicle class table.
                   Classes include normal, poorfamily, and others.
                   There are 11 classes, with support for 25 vehicle IDE IDs per class.

0x44 [4b int]    - number of vehicle IDs in each class of the table above.

0x48 [4b int]    - offset to game zone data, such as info.zon and navig.zon.

0x4C [4b int]    - CWorld::ms_aSectors.
                   Game sector data. Points to PtrNode.

0x50 [4b int]    - CWorld::ms_bigBuildingsList.
                   Four pointers to PtrNode.

0x54 [4b int]    - number of rows in the 2dfx table.

0x58 [4b int]    - offset to the 2dfx effects table for objects from default.ide.
                   Each row is 64 bytes.

0x5C [4b int]    - offset to the hardcoded model index array.

0x60 [4b int]    - offset to the CHK texture archive loading block, or TexList.

0x64 [4b int]    - unknown, equals 0.

0x68 [4b int]    - offset to the COL2 file loading block.

0x6C [4b int]    - unknown, equals 0.

0x70 [4b int]    - offset to dummy collision data.

0x74 [4b int]    - offset to an object.dat equivalent.
                   Each row is 32 bytes. There are 117 rows.

0x78 [4b int]    - offset to the RGBA color palette used in carcols.dat.
                   Contains 256 colors.

0x7C [4b int]    - CStreamingInfo CStreaming::ms_aInfoForModel[].
                   Equivalent to GTA3PS*HR.DIR.

0x80 [4b int]    - offset to the ANIM file and animation loading block, or ped.ifp.

0x84 [4b int]    - fistfite.dat.

0x88 [4b int]    - PedAnimInfo[].

0x8C [4b int]    - equivalent to ped.dat.

0x90 [4b int]    - equivalent to pedstats.dat.

0x94 [4b int]    - number of rows in cull.ipl.

0x98 [4b int]    - offset to the cull.ipl equivalent.
                   Each row is 16 bytes.

0x9C [4b int]    - related to occlusions.
                   Unused, equals 0.

0xA0 [4b int]    - related to occlusions.
                   Unused, equals 0.

0xA4 [4b int]    - offset to a waterpro.dat equivalent.

0xA8 [4b int]    - offset to a HANDLING.CFG equivalent.

0xAC [4b int]    - offset to a surface.dat equivalent.

0xB0 [4b int]    - offset to a timecyc.dat equivalent.

0xB4 [4b int]    - offset to a pedgrp.dat equivalent.

0xB8 [4b int]    - offset to a particle.cfg equivalent.

0xBC [4b int]    - offset to a weapon.dat equivalent.

0xC0 [4b int]    - offset table for Clumps from MDL files embedded in DTZ.

0xC4 [4b int]    - offset to a CUTS.DIR equivalent.

0xC8 [4b int]    - offset to a ferry.dat equivalent, containing ferry paths.

0xCC [4b int]    - offset to equivalents of tracks.dat and tracks2.dat.

0xD0 [4b int]    - offset to a flight.dat equivalent.

0xD4 [4b int]    - offset to menu.chk.
                   Compressed with Deflate/Zlib.

0xD8 [4b int]    - real size of fonts.chk.

0xDC [4b int]    - offset to fonts.chk.
                   Compressed with Deflate/Zlib.

Short description of contents

At the moment, the following data is known to be stored in GAME.dtz.

Textures

Menu textures

Equivalent in previous games:
frontend.txd

Resource offsets:
LCS PS2: 0x4E4A30
LCS PSP: 0x4DA830
VCS PS2: 0x581330
VCS PSP: 0x51D95C

Comment:
Directory with menu textures, packed with the deflate/zlib algorithm. (*)

Font textures, fonts.chk

Equivalent in previous games:
fonts.txd

Resource offsets:
LCS PS2: 0x4EF4D8
LCS PSP: 0x4E2B1C
VCS PS2: 0x57BE4C
VCS PSP: 0x530AFC

Comment:
Directory with font textures, packed with the deflate/zlib algorithm. (*)

Particle-effect textures

Equivalent in previous games:
particle.txd

Resource offsets:
LCS PS2: 0x4A1C28
LCS PSP: 0x38AB90
VCS PS2: 0x761F0
VCS PSP: 0x3F7FB0

Comment:
Contains all particle-effect textures. (*)

Generic textures

Equivalent in previous games:
generic.txd
wheels.txd
vehicle.txd

Resource offsets:
LCS PS2: 0x4A1BFC
LCS PSP: 0x392B04
VCS PS2: 0x539E0
VCS PSP: 0x3D60B4

Comment:
Contains common vehicle textures and all wheel textures. (*)

Radar icons

Equivalent in previous games:
hud.txd

Resource offsets:
LCS PS2: 0x4A1BE4
LCS PSP: 0x38AD30
VCS PS2: 0x287B0
VCS PSP: 0x3B4678

Comment:
Contains HUD textures. (*)

Radar textures

Equivalent in previous games:
radarNN.txd

Resource offsets:
-

Comment:
Only in GTA VCS. Packed with the deflate/zlib algorithm.

Animation

?          ped.ifp
?          swim.ifp      only in GTA VCS
?          fight.ifp     only in GTA VCS
?          driveby.ifp   only in GTA VCS

Collision

Pedestrian collisions (**)
Equivalent: peds.col
Comment: one for all :)

Vehicle collisions (**)
Equivalent: vehicles.col

Weapon collisions (**)
Equivalent: weapons.col

Collisions for all models from MasterWRLD and for script objects from the GTA3XXX.IMG archive (**)
Equivalent: generic.col

Collisions for all other objects in the game (**)
Comment:
These contain only the bounding box and bounding sphere.
Everything else is in streaming COL2 from GTA3XXX.IMG.

Models

Ring (***)
Equivalent: race_ring.dff
Resource offset:
VCS PS2: E02E3F
Comment: ring

Arrow (***)
Equivalent: Shape .dff
Resource offsets:
LCS PS2: 30643F
VCS PS2: 28233F
Comment: arrow

Long cylinder (***)
Equivalent: zonecyla.dff
Resource offset:
VCS PS2: C4223F
Comment: long cylinder

Small sphere (***)
Equivalent: zoneaphr.dff
Resource offset:
VCS PS2: E8B03E
Comment: small sphere

Entrance cone (***)
Equivalent: entercone.dff
Resource offset:
VCS PS2: A0B03E
Comment: entrance cone

Cylinder (***)
Equivalent: zonecylb.dff
Resource offsets:
LCS PS2: 64EA3F
VCS PS2: 70AD3E
Comment: cylinder

Arrow 2 (***)
Equivalent: arrow.dff
Resource offsets:
LCS PS2: 800643
VCS PS2: 882938 9C7D3E
Comment:
LCS arrow
VCS arrow

Wheel LODs (***)
Equivalent: wheels.dff
Resource offsets:
LCS PS2: 800643
          E8C249 50C349 B8C349 ECC349 88C449 94EB49
Comment: wheel LODs

Wheel 1 (***)
Equivalent: wheels.dff
Resource offset:
LCS PS2: 80C249
Comment: wheel 1

Wheel 2 (***)
Equivalent: wheels.dff
Resource offset:
LCS PS2: B4C249
Comment: wheel 2

Wheel 3 (***)
Equivalent: wheels.dff
Resource offset:
LCS PS2: 1CC349
Comment: wheel 3

Wheel 4 (***)
Equivalent: wheels.dff
Resource offset:
LCS PS2: 84C349
Comment: wheel 4

Wheel 5 (***)
Equivalent: wheels.dff
Resource offset:
LCS PS2: 20C449
Comment: wheel 5

Wheel 6 (***)
Equivalent: wheels.dff
Resource offset:
LCS PS2: 54C449
Comment: wheel 6

Plane LOD (***)
Equivalent: air_vlo.dff
Resource offset:
LCS PS2: 2CEB49
Comment: winged pencil

Wheel 7 (***)
Equivalent: wheels.dff
Resource offset:
LCS PS2: 60EB49
Comment: wheel 7

IDE / IPL / DAT

IDE equivalent (**)
Equivalent: *.ide
Comment:
Contains all initialization data for models, textures, and collisions.

IPL equivalent (**)
Equivalent: *.ipl
Comment:
Contains all coordinates used for placing collisions and generic objects in the game.

Vehicle colors (**)
Equivalent: carcols.dat

Pedestrian colors (**)
Equivalent: pedcols.dat
Comment:
Only in GTA VCS.

cullzone data
Equivalent: cullzone.dat

fistfite data
Equivalent: fistfite.dat

handling data (**)
Equivalent: handling.dat
Resource offsets:
LCS PS2: 0x1647A0
LCS PSP: 0x50190
VCS PS2: 0x4C2A10
VCS PSP: 0x3AF30F
Comment:
The structures differ between LCS and VCS.

info.zon

map.zon

object data
Equivalent: object.dat

particle data
Equivalent: particle.cfg
Resource offset:
LCS PS2: 0x3917D0
Comment:
Special-effect characteristics.

pedstats data
Equivalent: pedstats.dat
Resource offsets:
LCS PS2:
  part 1 - 0x49E820
  part 2 - 0x49EB78
  part 3 - 0x4A1A10

LCS PSP:
  0x391DA0

VCS PS2:
  part 1 - 0x4C8080
  part 2 - 0x4C8428

VCS PSP:
  0x3B1F10

Comment:
Pedestrian characteristics.

Counts:
LCS PS2:
  part 1 - 15 items
  part 2 - 18 items
  part 3 - 9 items

LCS PSP:
  42 items

VCS PS2:
  part 1 - 6 items
  part 2 - 36 items

VCS PSP:
  42 items

timecyc data
Equivalent: timecyc.dat
Comment:
Weather characteristics.

waterpro data
Equivalent: waterpro.dat
Comment:
Water-surface data.

weapon data
Equivalent: weapon.dat
Resource offsets:
LCS PS2:
  0x40A980
  0x44FAE0

VCS PS2:
  0x3D7530

VCS PSP:
  0x2E8B60

Miscellaneous

SDT files
Resource offsets:
LCS: 0x377720

Comment:
Only in PSP versions.

Notes

Offsets are given for unpacked game.dtz.

Data marked with (*) can be opened with GTA Stories Texture Explorer.

Data marked with (**) can be viewed with Stories WRLD Tool.

Data marked with (***) can be imported into 3D Studio Max with MDL importer.

Structures

Below are some structures for the data described above.

IDE

In DTZ, IDE is represented as a global binary table containing data for every model in the game, whether the model is a vehicle, pedestrian, or simple object.

The IDE count and the offset to the IDE table can be found in DTZ at offsets 0x38 and 0x3C for all console games.

The IDE table is a table of pointers to binary IDE rows. The model ID is assigned by pointer index, from 0 to the IDE count.

If a pointer is 0, that ID is free.

Binary IDE row structure

Each binary IDE row contains global data and additional data that depends on the type of IDE being loaded.

The global data is 44 bytes long and has this structure:

4b - free space for placing a pointer in memory
4b - free space for placing a pointer in memory
4b - IDE/model name, hashed with the CRC32 algorithm
4b - free space for placing a pointer in memory
1b - IDE type.
     Determines which additional data must be loaded after the global data.
1b - number of 2dfx entries
2b - unknown
4b - offset to model collision
2b - 2dfx ID
2b - unknown, 0xFFFF
2b - unknown, usually zeroes
2b - texture-file name number in the TexList table
4b - section-type hash
4b - unknown, usually zeroes
4b - draw distance.
     For vehicles and pedestrians, this is 0xFFFFFFFF.

Additional data:

Type 1 section: objs

Type 3 section: tobj

Type 6 section: cars

Type 6 section: cars

1b   - current primary vehicle color ID.
       This is used in memory. In the file, it is always 0.

1b   - current secondary vehicle color ID.
       This is used in memory. In the file, it is always 0.

14b  - vehicle name in GXT

4b   - wheel size

2b   - wheel model ID

2b   - row number in the binary HANDLING.CFG

1b   - number of doors

1b   - class:
       -1 - ignore
        0 - normal
        1 - poorfamily
        2 - richfamily
        3 - executive
        4 - worker
        5 - big
        6 - taxi
        7 - moped
        8 - motorbike
        9 - leisureboat
       10 - workerboat

1b   - level

1b   - unknown

4b   - frequency

4b   - unknown, usually zeroes

16b  - 3x float single + 4b alignment:
       headlights position

16b  - 3x float single + 4b alignment:
       taillights position

16b  - 3x float single + 4b alignment:
       ped_frontseat position

16b  - 3x float single + 4b alignment:
       ped_backseat position

16b  - 3x float single + 4b alignment:
       exhaust position

4b   - CompRules

4b   - unknown, 0x4479FF5C.
       Possibly an identifier for the vehicle repaint-pointer section.

100b - 25x longint:
       global pointer array for model material colors affected by the primary color.
       Filled with pointers from the matching section of the model itself.
       If this is zeroed in memory, the car stops changing color.

100b - 25x longint:
       global pointer array for model material colors affected by the secondary color.
       Filled with pointers from the matching section of the model itself.
       If this is zeroed in memory, the car stops changing color.

8b   - array of primary color IDs from the carcols.dat palette

8b   - array of secondary color IDs from the carcols.dat palette

1b   - total number of used colors

1b   - vehicle color-scheme index from the color arrays.
       In memory, this is constantly randomized from 0 to the color count.
       In the file, it is always 0.

1b   - current primary vehicle color ID.
       This is used in memory. In the file, it is always -1.

1b   - current secondary vehicle color ID.
       This is used in memory. In the file, it is always -1.

4b   - amount the normals are splayed by to improve the environment mapping on PSP

4b   - unknown

4b   - animation ID.
       Examples: van, bikeh, bikev, and so on.
       -1 means null.
Type 7 section: peds

cull.ipl

Each row is 16 bytes and has the following structure.

The coordinates contain real rounded values.

2b: Box Lower X Coord
2b: Box Upper X Coord
2b: Box Lower Y Coord
2b: Box Upper Y Coord
2b: Box Lower Z Coord
2b: Box Upper Z Coord
2b: Flag 1
2b: Flag 2

ped.dat

4b dword: MaskID
4b float: Walkspeed*
4b float: Runspeed*
4b float: Fastrunspeed*
4b float: Flee Distance
4b float: Heading Change
4b dword: Threats Mask
4b dword: Avoid Mask

* multiply by 50

weapons data

Consists of two CWeaponModelInfo entries. Reading happens directly from the DaTa Zlib header.

LCS version structure

Header

typedef struct Weapon_lcs_header
{
    offset         CWeaponModelInfo1;
    offset         CWeaponModelInfo2;
};

weapons data

Total number of records: 38.

typedef struct vFireOffset{
    float       x;
    float       y;
    float       z;
};

typedef struct vTimeStrc{
    float       a;
    float       b;
    float       c;
};

typedef struct weapondata{
    int         iFireType;
    float       fRange;
    int         iFiringRate;
    int         iReload;
    int         iAmountOfAmmunition;
    int         iDamage;
    float       fSpeed;
    float       fRadius;
    float       fLifeSpan;
    float       fSpread;
    DWORD       dwPadding1;
    DWORD       dwPadding2;
    vFireOffset FireOffset;
    DWORD       dwZero;
    DWORD       dwAnim_id;
    vTimeStrc   time1;
    vTimeStrc   time2;
    float       unk;
    DWORD       dwModelID;
    DWORD       dwModelID2;
    DWORD       dwweapon_slot;
    DWORD       dwFlags <format=hex>;
};

VCS version structure

Total number of records: 40.

typedef struct vFireOffset{
    float       x;
    float       y;
    float       z;
};

typedef struct vTimeStrc{
    float       a;
    float       b;
    float       c;
};

typedef struct weapondata{
    DWORD       dwType;
    int         iFireType;
    float       fRange;
    int         iFiringRate;
    int         iReload;
    int         iAmountOfAmmunition;
    int         iDamage;
    float       fSpeed;
    float       fRadius;
    float       fLifeSpan;
    float       fSpread;
    DWORD       dwPadding;       // padding, 0xAA
    vFireOffset m_vFireOffset;   // vector
    DWORD       _f3C;            // always zero
    DWORD       _f40;            // integer value
    DWORD       _f44;            // DWORD? unknown
    vTimeStrc   m_vTimeStrc;
    vTimeStrc   m_vTimeStrc;
    float       unk;
    DWORD       dwModelID;
    DWORD       dwModel2ID;
    DWORD       dwWeaponSlot
    DWORD       _f6C;            // padding, 0xAA
};

pedstats data

LCS version structure

Header

Address array size: 42. Reading happens directly from the DaTa Zlib header.

typedef struct pedstat_lcs_header
{
    offset         Pedstat_offset;
};

pedstats data

On PS2, it is divided into three fragments:

15 + 18 + 9 = 42

Total number of records: 42.

typedef struct pedstat_lcs{
    int         iNumber;
    char        name[24];
    float       fFleeDistance;
    float       fHeadingChangeRate;
    byte        btFear;
    byte        btTemper;
    byte        btLawfullness;
    byte        btView;
    float       fAttackStrength;
    float       fDefendWeakness;
    WORD        btStatFlags;
    byte        padding[2];
};

VCS version structure

Total number of records: 42.

On PS2, it is divided into two fragments:

6 + 36 = 42
typedef struct pedstat_vcs{
    int         iNumber;
    float       fFleeDistance;
    float       fHeadingChangeRate;
    float       fAttackStrength;
    float       fDefendWeakness;
    byte        btStatFlags;
    byte        btZero;
    byte        btFear;
    byte        btTemper;
    byte        btLawfullness;
    byte        btView;
    char        name[26];
};

handling data

LCS version structure

Header

Reading happens directly from the DaTa Zlib header.

typedef struct lcs_handling_header
{
    float       unknow;
    float       unknow;
    float       unknow;
    float       unknow;
    float       unknow;
    float       null;
    float       null;
    float       null;
};

handling data

Total number of records: 81.

typedef struct lcs_handling_item
{
    float       fMass;                    // B
    float       fTurnMass;                // C
    float       fTractionMultiplier;      // J
    float       fCollisionDamageMultiplier; // fCollisionDamageMultiplier = (fMass / 2000.0) * fCollisionDamageMultiplier // ab
    DWORD       CarId;
    float       1/fMass;
    float       fDragMult;                // D
    float       _f1C;                     // null
    float       CentreOfMassX;            // F
    float       CentreOfMassY;            // G
    float       CentreOfMassZ;            // H
    float       _f2C;                     // null
    int         nPercentSubmerged         // I
    float       (fMass * 0.8) / nPercentSubmerged;
    float       _f38;                     // duplicates _f94 // set by engine
    float       _f3C;                     // 0xBC23D70A // set by engine
    float       _f40;                     // duplicates _f94 // set by engine
    float       _f44;                     // unknown, transmission gear 1 related
    float       _f48;                     // unknown, transmission gear 1 related
    float       _f4C;                     // 0xBC23D70A // set by engine
    float       _f50;                     // unknown, transmission gear 2 related
    float       _f54;                     // unknown, transmission gear 2 related
    float       _f58;                     // unknown, transmission gear 2 related
    float       _f5C;                     // unknown, transmission gear 3 related
    float       _f60;                     // unknown, transmission gear 3 related
    float       _f64;                     // unknown, transmission gear 3 related
    float       _f68;                     // unknown, transmission gear 4 related
    float       _f6C;                     // unknown, transmission gear 4 related
    float       _f70;                     // unknown, transmission gear 4 related
    float       _f74;                     // unknown, transmission gear 5 related
    float       _f78;                     // unknown, transmission gear 5 related
    float       _f7C;                     // unknown, transmission gear 5 related
    char        cDriveType_TransmissionData;     // Q
    char        cEngineType_TransmissionData;    // R
    byte        nNumberOfGears_TransmissionData; // M
    byte        padding;                         // null
    float       fEngineAcceleration;             // fEngineAcceleration = fEngineAcceleration * 2500 * 5 (*2 for 4wd) // O
    float       fEngineInertia;                  // P
    float       fMaxVelocity;                    // fMaxVelocity = fMaxVelocity * 180.0
    float       fMaxVelocity / 1.2;
    float       _f94                           // = -0.2 for all vehicles, -0.05 for bikes // set by engine
    float       _f98;
    float       fBrakeDeceleration;              // fBrakeDeceleration = fBrakeDeceleration * 2500 // S
    float       fBrakeBias;                      // T
    float       bABS;                            // U
    float       fSteeringLock;                   // V
    float       fTractionLoss;                   // K
    float       fTractionBias;                   // L
    float       _fB4;                            // null
    float       fSuspensionForceLevel;           // a
    float       fSuspensionDampingLevel;         // b
    float       fSuspensionUpperLimit;           // d
    float       fSuspensionLowerLimit;           // e
    float       fSuspensionBias;                 // f
    float       fSuspensionAntiDive;             // g
    DWORD       dwflags <format=hex>;            // ag
    float       fSeatOffsetDistance;             // aa
    DWORD       dwMonetaryValue;                 // ac
    byte        bFrontLights;                    // ah
    byte        bRearLights;                     // ai
    byte        padding[18];
};

A text version decompiled with Stories WRLD Tool can be downloaded from the gtamodding.ru archive.

VCS version structure

0x00  4b  float  ?   = -0.2 for cars and -0.05 for bikes, set by engine
0x04  4b  float  ?   = 0xBC23D70A, set by engine
0x08  4b  float  ?   = -0.2 for cars and -0.05 for bikes, set by engine
0x0C  4b  float  ?   unknown, Gear 1 ratio
0x10  4b  float  ?   unknown, Gear 1 ratio
0x14  4b  float  ?   = 0xBC23D70A, set by engine
0x18  4b  float  ?   unknown, Gear 2 ratio
0x1C  4b  float  ?   unknown, Gear 2 ratio
0x20  4b  float  ?   unknown, Gear 2 ratio
0x24  4b  float  ?   unknown, Gear 3 ratio
0x28  4b  float  ?   unknown, Gear 3 ratio
0x2C  4b  float  ?   unknown, Gear 3 ratio
0x30  4b  float  ?   unknown, Gear 4 ratio
0x34  4b  float  ?   unknown, Gear 4 ratio
0x38  4b  float  ?   unknown, Gear 4 ratio
0x3C  4b  float  ?   unknown, Gear 5 ratio
0x40  4b  float  ?   unknown, Gear 5 ratio
0x44  4b  float  ?   unknown, Gear 5 ratio
0x48  4b  float  N   fEngineAcceleration;
                         fEngineAcceleration = fEngineAcceleration * 12500
                         (*2 for 4wd vehicles)
0x4C  4b  float  P   TransmissionData.fEngineInertia
0x50  4b  float  ?   unknown.
                         Seems to be the maximum gear ratio.
                         All gear ratios are calculated using this value and the number of gears.
0x54  4b  float  ?   value above / 1.2
0x58  4b  float  ?   = -0.2 for cars and -0.05 for bikes, set by engine
0x5C  1b  char   Q   TransmissionData.nDriveType
0x5D  1b  char   R   TransmissionData.nEngineType
0x5E  1b  int    M   TransmissionData.nNumberOfGears
0x5F  1b  -      -   padding
0x60  4b  float  R   fBrakeDeceleration;
                         fBrakeDeceleration = fBrakeDeceleration * 2500
0x64  4b  float  T   fBrakeBias
0x68  4b  float  V   fSteeringLock
0x6C  4b  float  K   fTractionLoss
0x70  4b  float  L   fTractionBias
0x74  4b  float  a   fSuspensionForceLevel
0x78  4b  float  b   fSuspensionDampingLevel
0x7C  4b  float  d   suspension upper limit
0x80  4b  float  e   suspension lower limit
0x84  4b  float  f   suspension bias between front and rear
0x88  4b  float  g   suspension anti-dive multiplier
0x8C  4b  float  aa  fSeatOffsetDistance
0x90  4b  int    ac  nMonetaryValue
0x94  1b  int    ah  front lights
0x95  1b  int    ai  rear lights
0x96  2b  -          padding
0x98  4b  float  D   fDragMult
0x9C  4b  -          padding, maybe
0xA0  4b  float  F   CentreOfMass.x
0xA4  4b  float  G   CentreOfMass.y
0xA8  4b  float  H   CentreOfMass.z
0xAC  4b  -          padding
0xB0  4b  int    I   nPercentSubmerged
0xB4  4b  float  ?   = fMass * 0.8 / nPercentSubmerged
0xB8  4b  float  N   TransmissionData.fMaxVelocity
0xBC  4b  float  B   fMass
0xC0  4b  float  C   fTurnMass
0xC4  4b  float  J   fTractionMultiplier
0xC8  4b  float  Y   fCollisionDamageMultiplier;
                         fCollisionDamageMultiplier = fMass / 2000 * fCollisionDamageMultiplier
0xCC  4b  int    ag  handlingFlags
0xD0  4b  int    af  modelFlags
0xD4  12b -          padding

particle data

LCS version structure

Total number of records: 82.

There is no section header. Reading happens directly from the DaTa Zlib header.

typedef struct particle
{
    DWORD       dwID;
    char        Name[20];             // A
    float       CreateRange;          // CR
    float       DefInitRadius;        // E
    float       ExpRate;              // F
    word        InitAngle;            // GZA
    word        ChangeTimeA;          // IZA
    word        AngleChangeAmount;    // HZA
    word        InitZRadius;          // HZR
    float       ChangeTimeZ;          // GZR
    float       ZRadiusChangeAmount;  // IZR
    word        FadeTime;             // H
    word        InitInten;            // G
    word        FadeAmount;           // I
    word        InitIntenA;           // GA
    word        FadeTimeA;            // HA
    word        FadeAmountA;          // IA
    byte        StartAnimFr;          // K
    byte        FinalAnimFr;          // L
    word        AnimSpeed;            // J
    int         RotSpeed;             // M
    float       GravitAccel;          // N
    int         DragFrictDeccel;      // O
    int         DefLifeSpan;          // P
    float       PosRandomError;       // Q
    float       VelRandomError;       // R
    float       ExpRateError;         // S
    int         RotRateError;         // T
    int         LSErrorShape;         // U
    float       TrailLengthMult;      // V
    int         Flags <format=hex>;   // Z
    byte        ColourR;              // B
    byte        ColourG;              // C
    word        ColourB;              // D
    byte        InitColourVar;        // CV
    byte        FadeColourR;          // B2
    byte        FadeColourG;          // C2
    byte        FadeColourB;          // D2
    DWORD       unk1;
    int         ColourFadeTime;       // FT
    float       StretchTexX;          // WX
    float       StretchTexY;          // WY
    float       WindFactor;           // WI
    DWORD       unk2;
};

VCS version structure

This part of the article is unfinished. You can help the project by correcting and expanding it.

carcols data

LCS version structure

col section

Total number of records: 1.

There is no section header. Reading happens directly from the DaTa Zlib header.

Data array size: 102.

Limit: 256. In memory, it consumes 1024 bytes.

typedef struct colors
{
    byte        Red;        // red color
    byte        Grey;       // green color
    byte        Blue;       // blue color
    byte        Alpha;      // color alpha channel
};

car section

Total number of records: equal to the number of vehicles in the game.

This is part of the IDE structure's cars section.

Data array size: 8.

If the number of vehicle color schemes is less than 8, the empty values are filled with zeroes.

typedef struct carcolors1
{
    byte        ColorID1;   // first color number
};

typedef struct carcolors2
{
    byte        ColorID2;   // second color number
};

VCS version structure

TBA