Falcon 4 .OBJ file
Falcon 4.0 Forum, Falcon 4 Home, Falcon 4 Campaign, Falcon 4 Cockpits, Falcon 4 Database, Falcon 4 File Formats, Falcon 4 SRTM Terrain, Falcon 4 Terrain, Falcon 4 Textures, Falcon 4 Tools
The OBJ file holds all the objectives in a mission. Objectives are basically static things, like towns, cities, bridges, bases. Things which cannot be moved.
Objectives are usually composed of features. Each feature being a particular part of the overall objective. So an airbase objective may have runway, hangar and control tower as features.
Objectives also have a fixed position on the map governed by their X, Y coordinates. They may also have:
a parent - an objective that they are a child of, used in the naming sometimes.
a name - an index into the strings file used to name the objective. 0 indicates the objective has no name of its own.
a campaign ID - ID2 - used to related things.
an owner - which side owns this objective.
a controller - which side actually controls the objective.
a type - an index into the OCD file showing which objective type this is.
Various flags associated with the objective
Details of each feature composing the objective, detailing how damaged it is.
A list of links to other objectives - this gives routes to other places.
Raw (compressed contents)
Field | Data Type | Width (in bytes) | Description |
NumObjectives | Signed 16-bit integer | 2 | Number of objective records in the data that follows |
UncompressedSize | Signed 32-bit integer | 4 | Size, in bytes, of the data that follows, when it's uncompressed |
CompressedSize | Signed 32-bit integer | 4 | Size, in bytes, of the compressed file to follow |
DATA | byte[] | (CompressedSize) | LZSS-compressed binary data. |
Uncompressed contents of the DATA field
Field | Data Type | Width (in bytes) | Description | Versions |
objectiveRecords[] | ObjectiveRecord[NumObjectives] | | | All |
Structures Used
ObjectiveRecord structure
Field | Data Type | Width (in bytes) | Description | Versions |
objectiveType | unsigned 16-bit integer | 2 | | All |
objective | ObjectiveClass | | | All |
ObjectiveClass structure
Field | Data Type | Width (in bytes) | Description | Versions |
id | VU_ID | 8 | | All |
entityType | unsigned 16-bit integer | 2 | | All |
x | Signed 16-bit integer | 2 | | All |
y | Signed 16-bit integer | 2 | | All |
z | single-precision 32-bit floating point | 4 | | >=70 |
spotTime | unsigned 32-bit integer | 4 | | All |
spotted | signed 16-bit integer | 2 | | All |
baseFlags | signed 16-bit integer | 2 | | All |
owner | byte | 1 | | All |
campId | signed 16-bit integer | 2 | | All |
lastRepair | unsigned 32-bit integer | 4 | | All |
obj_flags | unsigned 32-bit integer | 4 | | >1 |
obj_flags | unsigned 16-bit integer | 2 | | < = 1 |
supply | byte | 1 | | All |
fuel | byte | 1 | | All |
losses | byte | 1 | | All |
numStatuses | byte | 1 | | All |
fStatus[] | byte[numStatuses] | (numStatuses) bytes | | All |
priority | byte | 1 | | All |
nameId | Signed 16-bit integer | 2 | | All |
parent | VU_ID | 8 | | All |
first_owner | byte | 1 | | All |
numLinks | byte | 1 | | All |
link_data[] | ObjectiveLink[numLinks] | | | All |
hasRadarData | byte | 1 | | >=20 |
detect_ratio[] | array of single-precision 32-bit floating point * 8 | 4*8 = 32 bytes | Only present if hasRadarData field <> 0 | >=20 |
ObjectiveLink structure
Field | Data Type | Width (in bytes) | Description |
costs[] | byte[8] | 8 | |
newId | VU_ID | 8 | |
VU_ID structure
Field | Data Type | Width (in bytes) | Description |
num_ | unsigned 32-bit integer | 4 | |
creator_ | unsigned 32-bit integer | 4 | |