Vehicle Data/Burnout 3: Difference between revisions
(Add texture structures (identical to Revenge).) |
(Added payload structure) |
||
(10 intermediate revisions by the same user not shown) | |||
Line 76: | Line 76: | ||
| 0xF60 || 0x100 || ? || ? || || Null in available samples |
| 0xF60 || 0x100 || ? || ? || || Null in available samples |
||
|- |
|- |
||
| 0x1060 || 0x500 || [[# |
| 0x1060 || 0x500 || [[#CB3ConvexHullVehicle|CB3ConvexHullVehicle]] || mHull || Hull || |
||
|- |
|- |
||
| 0x1660 || 0x4 || RwBool || mbHullExists || Does hull exist || |
| 0x1660 || 0x4 || RwBool || mbHullExists || Does hull exist || |
||
Line 311: | Line 311: | ||
|} |
|} |
||
=== |
=== CB3ConvexHullVehicle === |
||
{| class="wikitable" |
|||
{{todo|List hull structure.}} |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x1C || [[#CB3ConvexHull|CB3ConvexHull]] || || Base class || |
|||
|- |
|||
| 0x1C || 0x78 || [[#CB3ConvexHullPlane|CB3ConvexHullPlane]][40] || maPlaneVertData || || Max used is 28 |
|||
|- |
|||
| 0x94 || 0xC || || || Padding || |
|||
|- |
|||
| 0xA0 || 0x280 || [[CGtPlane]][40] || maPlaneData || || Max used is 28 |
|||
|- |
|||
| 0x320 || 0x100 || [[CGtV3d]][16] || maVertData || || |
|||
|- |
|||
| 0x420 || 0x60 || ? || ? || || Possibly space for maVertData. Unusable if so as vert map is limited to 16 |
|||
|- |
|||
| 0x480 || 0x78 || [[#CB3ConvexHullEdge|CB3ConvexHullEdge]][60] || maEdgeData || || Max used is 42 |
|||
|- |
|||
| 0x4F8 || 0xC0 || [[#CB3ConvexHullVertMap|CB3ConvexHullVertMap]][16] || maVertWeightData || || |
|||
|- |
|||
| 0x5B8 || 0x8 || || || Padding || |
|||
|} |
|||
=== CB3ConvexHull === |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x4 || [[#CB3ConvexHullPlane|CB3ConvexHullPlane]]* || maPlaneVerts || || |
|||
|- |
|||
| 0x4 || 0x4 || [[CGtPlane]]* || maPlanes || || |
|||
|- |
|||
| 0x8 || 0x4 || [[CGtV3d]]* || maVerts || || |
|||
|- |
|||
| 0xC || 0x4 || [[#CB3ConvexHullEdge|CB3ConvexHullEdge]]* || maEdges || || |
|||
|- |
|||
| 0x10 || 0x4 || [[#CB3ConvexHullVertMap|CB3ConvexHullVertMap]]* || maVertWeights || || |
|||
|- |
|||
| 0x14 || 0x4 || RwUInt32 || mxFlags || || |
|||
|- |
|||
| 0x18 || 0x1 || RwUInt8 || mu8NumVerts || || |
|||
|- |
|||
| 0x19 || 0x1 || RwUInt8 || mu8NumPlanes || || |
|||
|- |
|||
| 0x1A || 0x1 || RwUInt8 || mu8NumEdges || || |
|||
|- |
|||
| 0x1B || 0x1 || || || Padding || |
|||
|} |
|||
=== CB3ConvexHullPlane === |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x3 || RwUInt8[3] || mau8Verts || || TODO: Confirm this is 3 and not 4 like in Revenge |
|||
|} |
|||
=== CB3ConvexHullEdge === |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x1 || RwUInt8 || mu8Vert0 || || |
|||
|- |
|||
| 0x1 || 0x1 || RwUInt8 || mu8Vert1 || || |
|||
|} |
|||
=== CB3ConvexHullVertMap === |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x8 || RwReal[2] || marWeights || || |
|||
|- |
|||
| 0x8 || 0x2 || RwUInt8[2] || mau8Bones || || |
|||
|- |
|||
| 0xA || 0x2 || || || Padding || |
|||
|} |
|||
=== CB3VehicleTag === |
=== CB3VehicleTag === |
||
{| class="wikitable" |
|||
{{todo|List vehicle tag point structure.}} |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x10 || [[CGtV3dPlus]] || mPosAndSize || || |
|||
|- |
|||
| 0x10 || 0x10 || [[CGtV3dPlus]] || mNormalAndConeAngle || || |
|||
|- |
|||
| 0x20 || 0x4 || [[RwRGBA]] || mColour || || |
|||
|- |
|||
| 0x24 || 0x8 || RwReal[2] || marWeights || || |
|||
|- |
|||
| 0x2C || 0x2 || RwUInt8[2] || mau8BoneIndices || || |
|||
|- |
|||
| 0x2E || 0x2 || || || Padding || |
|||
|} |
|||
=== CB3VehiclePayloadSet === |
=== CB3VehiclePayloadSet === |
||
{| class="wikitable" |
|||
{{todo|List payload set structure.}} |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x1 || RwInt8 || mn8NumPayloads || || |
|||
|- |
|||
| 0x1 || 0x3 || || || Padding || |
|||
|- |
|||
| 0x4 || 0x4 || RwUInt32 || mxFlags || || |
|||
|- |
|||
| 0x8 || 0x4 || [[#CB4VehiclePayload|CB4VehiclePayload]]* || mpaPayloads || || |
|||
|} |
|||
=== CB3VehiclePayload === |
=== CB3VehiclePayload === |
||
{| class="wikitable" |
|||
{{todo|List payload structure.}} |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x8 || [[GtID]] || mPartID || || |
|||
|- |
|||
| 0x8 || 0x4 || RwUInt32 || mxFlags || || No flags used in retail game |
|||
|- |
|||
| 0xC || 0x1 || RwInt8 || mnPartIndex || || |
|||
|- |
|||
| 0xD || 0x3 || || || Padding || |
|||
|- |
|||
| 0x10 || 0x40 || [[CGtMatrix3x4]] || mPosition || || |
|||
|} |
|||
=== CB3SoundESMStruct === |
=== CB3SoundESMStruct === |
||
{{todo|List ESM structure.}} |
|||
This format contains playback parameters and pitching info for a given vehicle's engine sound effects, stored mostly as floating-point numbers. BGVs use two of these files for high and low speed ranges. The files were merged into the BGV starting with revision 0x17; prior to this, they were stored externally in the same folder as the BGV, with the file extensions <code>.HSM</code> and <code>.LSM</code>. |
This format contains playback parameters and pitching info for a given vehicle's engine sound effects, stored mostly as floating-point numbers. BGVs use two of these files for high and low speed ranges. The files were merged into the BGV starting with revision 0x17; prior to this, they were stored externally in the same folder as the BGV, with the file extensions <code>.HSM</code> and <code>.LSM</code>. |
||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x38 || [[#CB3SoundESMInputLag|CB3SoundESMInputLag]][7] || maInputLags || || |
|||
|- |
|||
| 0x38 || 0x4 || RwUInt32 || mun32VersionNumber || || 4 |
|||
|- |
|||
| 0x3C || 0x4 || [[#CB3SoundESMPartialStruct|CB3SoundESMPartialStruct]]* || mpPartials || || |
|||
|- |
|||
| 0x40 || 0x1 || RwUInt8 || mun8PartialCount || || |
|||
|- |
|||
| 0x41 || 0x3 || || || Padding || |
|||
|- |
|||
| 0x44 || 0x4 || RwBool || mbHighDetail || || |
|||
|} |
|||
=== CB3SoundESMInputLag === |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x4 || RwReal || mrMin || || |
|||
|- |
|||
| 0x4 || 0x4 || RwReal || mrMax || || |
|||
|} |
|||
=== CB3SoundESMPartialStruct === |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x8 || [[GtID]] || mWaveID || || |
|||
|- |
|||
| 0x8 || 0x4 || [[#CB3SoundESMGraphStruct|CB3SoundESMGraphStruct]]* || mpGraphs || Negative pointer relative to partial start || |
|||
|- |
|||
| 0xC || 0x1 || RwUInt8 || mun8GraphCount || || |
|||
|- |
|||
| 0xD || 0x1 || RwUInt8 || mun8Type || || See [[#EPartialType|EPartialType]] |
|||
|- |
|||
| 0xE || 0x2 || || || Padding || |
|||
|} |
|||
=== CB3SoundESMGraphStruct === |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x4 || [[#CB3SoundESMPointStruct|CB3SoundESMPointStruct]]* || mpPoints || Negative pointer relative to graph start || |
|||
|- |
|||
| 0x4 || 0x1 || RwUInt8 || mun8PointCount || || |
|||
|- |
|||
| 0x5 || 0x1 || RwInt8 || mn8XAxis || || |
|||
|- |
|||
| 0x6 || 0x1 || RwInt8 || mn8YAxis || || |
|||
|- |
|||
| 0x7 || 0x1 || || || Padding || |
|||
|} |
|||
=== CB3SoundESMPointStruct === |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x4 || RwReal || mrXpos || || |
|||
|- |
|||
| 0x4 || 0x4 || RwReal || mrYpos || || |
|||
|} |
|||
= Typedefs = |
|||
=== GtSkyRasterExt === |
|||
{| class="wikitable" |
|||
! Name !! Type !! Length !! Comments |
|||
|- |
|||
| GtSkyRasterExt || [[#GtSkyRasterExtTag|GtSkyRasterExtTag]] || 0x38 || |
|||
|} |
|||
=== GtTextureExt === |
|||
{| class="wikitable" |
|||
! Name !! Type !! Length !! Comments |
|||
|- |
|||
| GtTextureExt || [[#GtTextureExtTag|GtTextureExtTag]] || 0x5C || |
|||
|} |
|||
= Enumerations = |
= Enumerations = |
||
Line 347: | Line 533: | ||
|- |
|- |
||
| ? || 1 || Body part |
| ? || 1 || Body part |
||
|} |
|||
=== EPartialType === |
|||
{{todo|Check what high nibble means (sometimes marked as 1).}} |
|||
{| class="wikitable" |
|||
! Name !! Value !! Comments |
|||
|- |
|||
| ePartialNormal || 0 || |
|||
|- |
|||
| ePartialTurbo || 1 || |
|||
|- |
|||
| ePartialGinsu || 2 || |
|||
|} |
|} |
Latest revision as of 00:54, 6 February 2023
Based on information from Burnout Revenge Alpha 7 debugging symbols.
Structures
CB3VehicleData
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | RwUInt32 | mxVersionNumber | Version number | 29 |
0x4 | 0x4 | RwInt32 | mxLoadedState | Loaded state | Always 0 in asset. Set in memory |
0x8 | 0x4 | RwInt32 | ? | File size (bytes) | |
0xC | 0x1 | RwInt8 | mn8NumBodyParts | Body Part count | |
0xD | 0x1 | RwInt8 | mn8NumWheels | Wheel count | |
0xE | 0x2 | RwInt16 | mn16MinLOD | Minimum LOD | |
0x10 | 0x2 | RwInt16 | mn16MaxLOD | Maximum LOD | |
0x12 | 0x2 | Padding | |||
0x14 | 0x4 | RwReal | mrObjectRadius | Object radius | |
0x18 | 0x4 | RwReal | mrWheelRadius | Wheel radius | |
0x1C | 0x18 | RwReal[6] | marWheelScales | Wheel scales | |
0x34 | 0x18 | RwReal[6] | marBodyPartRadii | Body part radii | |
0x4C | 0x14 | CB3VehicleLODData*[5] | mapLODData | LODs | |
0x60 | 0x4 | CGtTexture* | mpTexture | Vehicle texture | |
0x64 | 0x4 | CB3VehicleObject* | mpShadowBodyObject | Shadow body object | |
0x68 | 0x4 | CB3VehicleObject* | mpShadowWheelObject | Shadow wheel object | |
0x6C | 0x4 | CGtTexture* | mpTextureColourOverlay | Texture colour overlay | |
0x70 | 0x500 | CGtMatrix3x4[20] | ? | Chassis bone deform matrices | |
0x570 | 0x500 | CGtMatrix3x4[20] | ? | Chassis skin-to-bone deform matrices | |
0xA70 | 0x50 | RwReal[20] | ? | Chassis bone lengths | |
0xAC0 | 0x4 | EBoneRigType | meMainBoneRigType | Chassis bone rig type | |
0xAC4 | 0x18 | EBodyPartType[6] | maeBodyPartType | Body part types | |
0xADC | 0x6 | RwUInt8[6] | mau8HingeAxes | Hinge axes | |
0xAE2 | 0xC | RwUInt8[6][2] | maau8BodyPartBoneIndices | Body part bone indices | |
0xAEE | 0xC | RwUInt8[6][2] | maau8WheelBoneIndices | Wheel bone indices | |
0xAFA | 0x2 | Padding | |||
0xAFC | 0x18 | RwReal[6] | marHingeMaxAngles | Hinge max angles | |
0xB14 | 0x30 | RwReal[6][2] | maarBodyPartBoneWeights | Body part bone weights | |
0xB44 | 0x30 | RwReal[6][2] | maarWheelBoneWeights | Wheel bone weights | |
0xB74 | 0xC | Padding | |||
0xB80 | 0x180 | CGtMatrix3x4[6] | maWheelMatrices | Wheel matrices | |
0xD00 | 0x180 | CGtMatrix3x4[6] | maBodyPartMatrices | Body part matrices | |
0xE80 | 0x20 | CGtAxisAlignedBox | mBBox | ||
0xEA0 | 0xC0 | CGtAxisAlignedBox[6] | maBodyPartBBoxes | ||
0xF60 | 0x100 | ? | ? | Null in available samples | |
0x1060 | 0x500 | CB3ConvexHullVehicle | mHull | Hull | |
0x1660 | 0x4 | RwBool | mbHullExists | Does hull exist | |
0x1664 | 0x48 | CB3VehicleTag*[18] | mpaTagPoints | Tag points | |
0x16AC | 0x12 | RwUInt8[18] | mauTagPointCounts | Tag point counts | |
0x16BE | 0x2 | Padding | |||
0x16C0 | 0x4 | CB3VehiclePayloadSet* | mpaPayloadSets | ||
0x16C4 | 0x4 | CB3VehiclePayload* | mpaPayloads | ||
0x16C8 | 0x1 | RwInt8 | mn8NumPayloadSets | Number of payload sets | |
0x16C9 | 0x1 | RwInt8 | mn8NumPayloads | Number of payloads | |
0x16CA | 0x1 | RwInt8 | mn8CurrentPayloadSet | Current payload set | -1 if not set |
0x16CB | 0x1 | Padding | |||
0x16CC | 0x10 | ? | ? | Null in available samples | |
0x16DC | 0x8 | CB3SoundESMStruct*[2] | mapESMs | ESMs |
CB3VehicleLODData
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x40 | CB3VehicleLODDataBase | Base class |
CB3VehicleLODDataBase
The LOD Database format stores a given vehicle's LOD model.
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 3), low (LOD 2), medium (LOD 1) and high (LOD 0) quality.
It seems a LOD Database can contain a maximum of 12 vehicle objects, though it's unknown if this rule is enforced by the game or if it can be larger than that.
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | CB3VehicleObject* | mpBodyObject | Body object | |
0x4 | 0x18 | CB3VehicleObject*[6] | mapBodyParts | Body parts | |
0x18 | 0xC | CB3VehicleObject*[3] | mapWheelObject | Wheel objects |
CB3VehicleObject
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x1 | RwInt8 | mn8NumMeshes | Mesh count | |
0x1 | 0x1 | RwInt8 | mn8GlassMeshIndex | Glass mesh index | |
0x2 | 0x2 | Padding | |||
0x4 | 0x4 | CB3VehicleMesh* | mpaMeshes | Meshes | |
0x8 | 0x4 | RwReal | Normal shift |
CB3VehicleMesh
The format for a Vehicle Mesh definition differs by platform.
PS2
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | RwUInt8* | mpRenderDataFirst | Render data (first) | |
0x4 | 0x4 | RwUInt8* | mpRenderDataRest | Render data (rest) | |
0x8 | 0x2 | RwUInt16 | mx16MeshFlags | Mesh flags | TODO: List flags |
0xA | 0x1 | RwUInt8 | mu8Alpha1 | Alpha1 | |
0xB | 0x1 | RwUInt8 | mu8TextureIndex | Texture index | |
0xC | 0x1 | RwUInt8 | mu8SourceOpacity | Source opacity | |
0xD | 0x1 | RwUInt8 | mu8CurrentOpacity | Current opacity | |
0xE | 0x1 | RwUInt8 | mu8Shininess | Shininess | |
0xF | 0x1 | RwUInt8 | mu8UNUSED | Unused |
Xbox
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | RwReal | ? | ||
0x4 | 0x4 | RwReal | ? | ||
0x8 | 0x4 | RwReal | ? | ||
0xC | 0x4 | RwInt8* | ? | Render data | |
0x10 | 0x4 | RwUInt32 | ? | Render data size | |
0x14 | 0x4 | RwUInt32 | ? | ||
0x18 | 0x1 | RwUInt8 | ? | ||
0x19 | 0x1 | RwUInt8 | ? | ||
0x1A | 0x1 | RwUInt8 | ? | ||
0x1B | 0x1 | RwUInt8 | ? |
CGtTexture
To do: Move this and other texture-related structures to their own page if it doesn't already exist. |
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x34 | RwRaster | mRwRaster | ||
0x34 | 0x5C | GtSkyRasterExt | mSkyRasterExt | ||
0x90 | 0x38 | GtTextureExt | mTextureExt |
RwRaster
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | RwRaster* | parent | ||
0x4 | 0x4 | RwUInt8* | cpPixels | ||
0x8 | 0x4 | RwUInt8* | palette | ||
0xC | 0x4 | RwInt32 | width | ||
0x10 | 0x4 | RwInt32 | height | ||
0x14 | 0x4 | RwInt32 | depth | ||
0x18 | 0x4 | RwInt32 | stride | ||
0x1C | 0x2 | RwInt16 | nOffsetX | ||
0x1E | 0x2 | RwInt16 | nOffsetY | ||
0x20 | 0x1 | RwUInt8 | cType | ||
0x21 | 0x1 | RwUInt8 | cFlags | ||
0x22 | 0x1 | RwUInt8 | privateFlags | ||
0x23 | 0x1 | RwUInt8 | cFormat | ||
0x24 | 0x4 | RwUInt8* | originalPixels | ||
0x28 | 0x4 | RwInt32 | originalWidth | ||
0x2C | 0x4 | RwInt32 | originalHeight | ||
0x30 | 0x4 | RwInt32 | originalStride |
GtSkyRasterExtTag
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | RwInt32 | dmaRefCount | ||
0x4 | 0x4 | RwInt32 | dmaClrCount | ||
0x8 | 0x4 | RwUInt32 | lsb | ||
0xC | 0x4 | RwUInt32 | msb | ||
0x10 | 0x4 | RwUInt32 | palOffset | ||
0x14 | 0x2 | RwUInt16 | mipmapKL | ||
0x16 | 0x1 | RwUInt8 | maxMipLevel | ||
0x17 | 0x1 | RwUInt8 | bLocked | ||
0x18 | 0x4 | RwUInt32 | miptbp1Lsb | ||
0x1C | 0x4 | RwUInt32 | miptbp1Msb | ||
0x20 | 0x4 | RwUInt32 | miptbp2Lsb | ||
0x24 | 0x4 | RwUInt32 | miptbp2Msb | ||
0x28 | 0x4 | RwUInt32 | sysMemSize | ||
0x2C | 0x4 | RwUInt32 | sysMemPalSize | ||
0x30 | 0x4 | RwUInt32 | nTexCacheSize | ||
0x34 | 0x1 | RwUInt8 | cachePkts | ||
0x35 | 0x1 | RwUInt8 | lockedMipLevel | ||
0x36 | 0x1 | RwUInt8 | flags | ||
0x37 | 0x1 | RwUInt8[1] | pad | ||
0x38 | 0x4 | void* | palUploadPkt | ||
0x3C | 0x1C | void*[7] | mipUploadPkts | ||
0x58 | 0x4 | _SkyMemBlock* | mpCacheEntry |
GtTextureExtTag
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x10 | RwUInt16[8] | mau16PaletteGSOffsets | ||
0x10 | 0x1 | RwUInt8 | mu8NumPalettes | ||
0x11 | 0x1 | RwUInt8 | mu8PaletteWidth | ||
0x12 | 0x1 | RwUInt8 | mu8PaletteHeight | ||
0x13 | 0x1 | RwUInt8 | mu8CurrentPalette | ||
0x14 | 0x4 | RwUInt32 | muSizeInMemory | ||
0x18 | 0x20 | char[32] | macName |
CB3ConvexHullVehicle
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x1C | CB3ConvexHull | Base class | ||
0x1C | 0x78 | CB3ConvexHullPlane[40] | maPlaneVertData | Max used is 28 | |
0x94 | 0xC | Padding | |||
0xA0 | 0x280 | CGtPlane[40] | maPlaneData | Max used is 28 | |
0x320 | 0x100 | CGtV3d[16] | maVertData | ||
0x420 | 0x60 | ? | ? | Possibly space for maVertData. Unusable if so as vert map is limited to 16 | |
0x480 | 0x78 | CB3ConvexHullEdge[60] | maEdgeData | Max used is 42 | |
0x4F8 | 0xC0 | CB3ConvexHullVertMap[16] | maVertWeightData | ||
0x5B8 | 0x8 | Padding |
CB3ConvexHull
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | CB3ConvexHullPlane* | maPlaneVerts | ||
0x4 | 0x4 | CGtPlane* | maPlanes | ||
0x8 | 0x4 | CGtV3d* | maVerts | ||
0xC | 0x4 | CB3ConvexHullEdge* | maEdges | ||
0x10 | 0x4 | CB3ConvexHullVertMap* | maVertWeights | ||
0x14 | 0x4 | RwUInt32 | mxFlags | ||
0x18 | 0x1 | RwUInt8 | mu8NumVerts | ||
0x19 | 0x1 | RwUInt8 | mu8NumPlanes | ||
0x1A | 0x1 | RwUInt8 | mu8NumEdges | ||
0x1B | 0x1 | Padding |
CB3ConvexHullPlane
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x3 | RwUInt8[3] | mau8Verts | TODO: Confirm this is 3 and not 4 like in Revenge |
CB3ConvexHullEdge
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x1 | RwUInt8 | mu8Vert0 | ||
0x1 | 0x1 | RwUInt8 | mu8Vert1 |
CB3ConvexHullVertMap
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | RwReal[2] | marWeights | ||
0x8 | 0x2 | RwUInt8[2] | mau8Bones | ||
0xA | 0x2 | Padding |
CB3VehicleTag
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x10 | CGtV3dPlus | mPosAndSize | ||
0x10 | 0x10 | CGtV3dPlus | mNormalAndConeAngle | ||
0x20 | 0x4 | RwRGBA | mColour | ||
0x24 | 0x8 | RwReal[2] | marWeights | ||
0x2C | 0x2 | RwUInt8[2] | mau8BoneIndices | ||
0x2E | 0x2 | Padding |
CB3VehiclePayloadSet
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x1 | RwInt8 | mn8NumPayloads | ||
0x1 | 0x3 | Padding | |||
0x4 | 0x4 | RwUInt32 | mxFlags | ||
0x8 | 0x4 | CB4VehiclePayload* | mpaPayloads |
CB3VehiclePayload
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | GtID | mPartID | ||
0x8 | 0x4 | RwUInt32 | mxFlags | No flags used in retail game | |
0xC | 0x1 | RwInt8 | mnPartIndex | ||
0xD | 0x3 | Padding | |||
0x10 | 0x40 | CGtMatrix3x4 | mPosition |
CB3SoundESMStruct
This format contains playback parameters and pitching info for a given vehicle's engine sound effects, stored mostly as floating-point numbers. BGVs use two of these files for high and low speed ranges. The files were merged into the BGV starting with revision 0x17; prior to this, they were stored externally in the same folder as the BGV, with the file extensions .HSM
and .LSM
.
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x38 | CB3SoundESMInputLag[7] | maInputLags | ||
0x38 | 0x4 | RwUInt32 | mun32VersionNumber | 4 | |
0x3C | 0x4 | CB3SoundESMPartialStruct* | mpPartials | ||
0x40 | 0x1 | RwUInt8 | mun8PartialCount | ||
0x41 | 0x3 | Padding | |||
0x44 | 0x4 | RwBool | mbHighDetail |
CB3SoundESMInputLag
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | RwReal | mrMin | ||
0x4 | 0x4 | RwReal | mrMax |
CB3SoundESMPartialStruct
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | GtID | mWaveID | ||
0x8 | 0x4 | CB3SoundESMGraphStruct* | mpGraphs | Negative pointer relative to partial start | |
0xC | 0x1 | RwUInt8 | mun8GraphCount | ||
0xD | 0x1 | RwUInt8 | mun8Type | See EPartialType | |
0xE | 0x2 | Padding |
CB3SoundESMGraphStruct
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | CB3SoundESMPointStruct* | mpPoints | Negative pointer relative to graph start | |
0x4 | 0x1 | RwUInt8 | mun8PointCount | ||
0x5 | 0x1 | RwInt8 | mn8XAxis | ||
0x6 | 0x1 | RwInt8 | mn8YAxis | ||
0x7 | 0x1 | Padding |
CB3SoundESMPointStruct
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | RwReal | mrXpos | ||
0x4 | 0x4 | RwReal | mrYpos |
Typedefs
GtSkyRasterExt
Name | Type | Length | Comments |
---|---|---|---|
GtSkyRasterExt | GtSkyRasterExtTag | 0x38 |
GtTextureExt
Name | Type | Length | Comments |
---|---|---|---|
GtTextureExt | GtTextureExtTag | 0x5C |
Enumerations
EBoneRigType
Name | Value | Comments |
---|---|---|
eNormalBoneRig | 0 | Normal bone rig |
eLargeBoneRig | 1 | Large bone rig |
eNoBoneRig | 2 | No bone rig |
EBodyPartType
To do: Update with correct information: goes up to at least 5 |
Name | Value | Comments |
---|---|---|
? | 0 | Wheel |
? | 1 | Body part |
EPartialType
To do: Check what high nibble means (sometimes marked as 1). |
Name | Value | Comments |
---|---|---|
ePartialNormal | 0 | |
ePartialTurbo | 1 | |
ePartialGinsu | 2 |