ObjectFiles:Format

From TTWiki
Jump to navigationJump to search

The object files consists of a header of 16 bytes, and a block containing the details.

Most of this information comes from the source-code of Locotool.

Object file format

.DAT: Object data files
Block Short description
DAT Header This is not stored without the block header of 5 bytes.
Object data Information about the object.

DAT Header

Object header format
Offset Type Description
+00000001 1 byte The class of the object.
+00000001 3 bytes The subclass of the object.
+00000004 8 byte The internal name of the object, padded with spaces.
+0000000C 4 byte The checksum of the object file, before decoding, not including the 16-byte header.

It is possible that the subclass has some other purpose, since the fourth byte is always 0x11.

Valid classes

Value Var size Name Comment
0x00 24 Interfaces The buttons
0x01 12 Sound effects
0x02 12 Currencies
0x03 40 Exhaust effects Smoke, sparks, etc.
0x04 6 Cliff faces The vertical sides of the terrain
0x05 14 Water
0x06 30 Ground
0x07 26 Town names
0x08 31 Cargos
0x09 10 Fences
0x0A 30 Signals
0x0B 18 Crossings
0x0C 12 Street lights
0x0D 6 Tunnels
0x0E 44 Bridges
0x0F 174 Train stations
0x10 18 Track modifications I.e. Overhead electric wires
0x11 54 Tracks
0x12 110 Road stations
0x13 18 Road modifications I.e. Overhead electric wires
0x14 48 Roads
0x15 186 Airports
0x16 40 Docks
0x17 350 Vehicles Trains, Trucks, Trams, Airplanes, Helicopters
0x18 76 Trees
0x19 6 Snow Texture for snow
0x1A 10 Climates Settings for the seasons and snow-levels
0x1B 14 Shapes Height maps. Probably used for generating random maps.
0x1C 190 Buildings
0x1D 18 Scaffolding Parts of buildings being constructed
0x1E 244 Industries
0x1F 18 Regions
0x20 56 Companies AI opponents
0x21 6 Texts Scenario descriptions etc.

Object data

Depending on the class of the file, this block can have different sections. The size of each section varies with it's content. The general layout is as follows.

Section Type Content
0 objdata Various kinds of data, but for each class, the size is always the same.
1 lang One or more tables of names in different languages.

The different types used in the table above and in the rest of this page is these:

Type Descripton
objdata Variable data
lang List of strings, one entry for each language.
useobj List of object dependencies.
auxdata
auxdatafix
auxdatavar
strtable
cargo
sprites Images used in the game.
sounds Sounds used in the game.

Class 00: Interfaces

Section Type Content
0 objdata
1 lang
2 sprites

Class 01: Sounds

Section Type Content
0 objdata
1 lang
2 sounds

Class 02: Currencies

Section Type Content
0 objdata
1 lang
2 lang
3 lang
4 sprites

Class 03: Exhaust FX

Section Type Content
0 objdata
1 lang
2 auxdatavar
3 auxdatavar
4 useobj
5 sprites

Class 04: Cliff faces

Section Type Content
0 objdata
1 lang
2 sprites

Class 05: Water

Section Type Content
0 objdata
1 lang
2 sprites

Class 06: Ground

Section Type Content
0 objdata
1 lang
2 useobj
3 sprites

Class 07: Town names

Section Type Content
0 objdata
1 lang
2 strtable
3 strtable
4 strtable
5 strtable
6 strtable
7 strtable

Class 08: Cargo types

Section Type Content
0 objdata
1 lang
2 lang
3 lang
4 lang
5 sprites

Class 09: Fences

Section Type Content
0 objdata
1 lang
2 sprites

Class 0A: Signals

Section Type Content
0 objdata
1 lang
2 lang
3 sprites

Class 0B: Crossings

Section Type Content
0 objdata
1 lang
2 sprites

Class 0C: Street lights

Section Type Content
0 objdata
1 lang
2 sprites

Class 0D: Tunnels

Section Type Content
0 objdata
1 lang
2 sprites

Class 0E: Bridges

Section Type Content
0 objdata
1 lang
2 sprites

Class 0F: Train stations

Section Type Content
0 objdata
1 lang
2 auxdatavar
3 sprites

Class 10: Track mods

Section Type Content
0 objdata
1 lang
2 sprites

Class 11: Tracks

Section Type Content
0 objdata
1 lang
2 useobj
3 useobj
4 useobj
5 useobj
6 useobj
7 useobj
8 sprites

Class 12: Road stations

Section Type Content
0 objdata
1 lang
2 useobj
3 auxdatavar
4 sprites

Class 13: Road mods

Section Type Content
0 objdata
1 lang
2 sprites

Class 14: Roads

Section Type Content
0 objdata
1 lang
2 useobj
3 useobj
4 useobj
5 useobj
6 useobj
7 sprites

Class 15: Airports

Section Type Content
0 objdata
1 lang
2 auxdata
3 auxdata
4 auxdatavar
5 auxdatavar
6 auxdata
7 auxdata
8 sprites

Class 16: Docks

Section Type Content
0 objdata
1 lang
2 auxdata
3 auxdata
4 auxdatavar
5 sprites

Class 17: Vehicles

Section Type Content
0 objdata
1 lang
2 useobj
3 useobj
4 cargo
5 useobj
6 useobj
7 useobj
8 useobj
9 useobj
10 useobj
11 sprites

Class 18: Trees

Section Type Content
0 objdata
1 lang
2 sprites

Class 19: Snow

Section Type Content
0 objdata
1 lang
2 sprites

Class 1A: Climates

Section Type Content
0 objdata
1 lang

Class 1B: Shapes

Section Type Content
0 objdata
1 lang
2 sprites

Class 1C: Buildings

Section Type Content
0 objdata
1 lang
2 auxdata
3 auxdata
4 auxdatavar
5 useobj
6 auxdatafix
7 sprites

Class 1D: Scaffolding

Section Type Content
0 objdata
1 lang
2 sprites

Class 1E: Industries

Section Type Content
0 objdata
1 lang
2 lang
3 lang
4 lang
5 lang
6 lang
7 lang
8 lang
9 auxdata
10 auxdata
11 auxdatafix
12 auxdatavar
13 auxdatavar
14 auxdata
15 useobj
16 useobj
17 useobj
18 sprites

Class 1F: Regions

Section Type Content
0 objdata
1 lang
2 useobj
3 useobj
4 sprites

Class 20: Companies

Section Type Content
0 objdata
1 lang
2 lang
3 sprites

Class 21: Texts

Section Type Content
0 objdata
1 lang
2 lang