Vehicle Data

From Burnout Wiki
Revision as of 21:22, 20 January 2021 by AcuteSyntax (talk | contribs)

The Burnout Vehicle file format is used to store data for a particular vehicle in all Burnout games from Takedown to Dominator. It uses the file extension .bgv, or .btv for traffic vehicles. It is the successor to Point of Impact's Burnout 2 Race Car file format.

This format contains most of the data related to any given vehicle, including mesh data, Level of Detail models, texture data, pointers to external files, deformation matrices, collision detection parameters and physics configuration info.

Versions

Burnout Vehicle version
0x14 0x17 0x1D 0x1F 0x25
Date Apr 2004 Jul 2004 May 2005 Jul 2005 Jan 2006
Games Takedown (Early Demo) Takedown
Legends
Dominator (PSP)
Revenge (2005, Early Demo) Revenge (2005)
Dominator (PS2)
Revenge (360)
Body parts
Max body parts 6 6 8 8 8
  • 0x14 BGVs are the only version to use global pointers for their LOD database submesh lists. These point to the exact location in the file of each submesh, whereas local pointers, used by 0x17 and up, use offsets relative to the beginning of the LOD. For example, a pointer to offset 0x1820 in a 0x14 BGV would appear to point to 0x140 in all other revisions.
  • Version 0x1D and onward store deformation matrices in a different order to previous revisions.

Subtypes

LOD Database

The LOD Database format stores both a given vehicle's LOD model as well as the model's rendering parameters.

LODs, or Levels of Detail, are lower-poly, lower-detail (hence the name) models that games use for objects that are far away from the player, to keep framerates smooth. BGVs contain 4 LOD Databases, which in turn each contain one LOD model of minimum (LOD 0), low (LOD 1), medium (LOD 2) and high (LOD 3) quality.

It seems the maximum amount of submeshes a LOD Database can contain is 12, though it's unknown if this rule is enforced by the game or if it can be larger than that.

Layout

Offset Type Description
0x00 Submesh* Submesh offset(s)

Layout

Version 0x17

Offset Name Type Value Notes
0x00 Version number RwUInt32 0x17
0x08 File size in bytes RwInt32
0x0C Bodypart count RwInt8
0x0D Wheel count RwInt8
0x0F Minimum LOD RwInt16
0x10 Maximum LOD RwInt16
0x14 Global X Coordinate RwReal
0x18 Global Y Coordinate RwReal
0x4C LOD database offset(s) CB4VehicleLODData*[5]
0x60 Vehicle texture offset CGtTexture*
...

Version 0x1F

Offset Name Type Value Notes
0x00 mxVersionNumber RwUInt32 0x1F
0x04 mxLoadedState RwInt32 0x00
0x08 mn8NumBodyParts RwInt8
0x09 mn8NumWheels RwInt8
0x0A mn8MinLOD RwInt8
0x0B mn8MaxLOD RwInt8
0x0C mrObjectRadius RwReal
0x10 mrWheelRadius RwReal
0x14 marWheelScales RwReal[6]
0x2C marBodyPartRadii RwReal[8]
0x4C marBodyPartRadii CB4VehicleLODData*[5]
0x60 mpTexture CGtTexture*
...