Burnout Game Data (Takedown-Dominator)/Burnout 3: Difference between revisions

m
Remove WIP pretext
(Track data)
m (Remove WIP pretext)
 
(3 intermediate revisions by the same user not shown)
Line 1:
<pre>This page is a work in progress. Check back later for more complete information.</pre>
= Structures =
Names are guessed based on debugging symbols from [[Burnout Revenge (2005-07-14 build)]].
Line 12 ⟶ 11:
| 0x8 || 0x190 || [[GtID]][50] || maStageDataIDs || Stage IDs ||
|-
| 0x198 || 0xC8 || RwInt32[50] || manStageDataOffsets || Stage data (individual stages) || See [[#CB3GameStageDataStruct|CB3GameStageDataStruct]]
|-
| 0x260 || 0x4 || RwInt32 || mnNumStages || Number of stages ||
|-
| 0x264 || 0x4 || RwInt32 || mnSingleRaceDataOffset? || Single raceStage data || See [[#CB3SingleRaceDataStructCB3GameStageDataStruct|CB3SingleRaceDataStructCB3GameStageDataStruct]]
|-
| 0x268 || 0x4 || RwInt32 || mnTrackDataOffset || Track data || See [[#CB3TrackDataStruct|CB3TrackDataStruct]]
Line 28 ⟶ 27:
 
=== CB3GameStageDataStruct ===
{{todo|Verify the medal thresholds are actually medal thresholds and check further samples to see if the end fields (0x3E0+) exist.}}
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
Line 48 ⟶ 46:
| 0x3B0 || 0x4 || RwInt32 || ? || || 20 in samples
|-
| 0x3B4 || 0x4 || RwInt32 || mnNumDrivers || Number of drivers || 6Up into samples6
|-
| 0x3B8 || 0x4 || RwInt32 || mnNumLaps || Number of laps ||
Line 68 ⟶ 66:
| 0x3D8 || 0x4 || RwInt32 || mnAILanesSetOffset || AI lanes || See [[#CB3AILanesDataStruct|CB3AILanesDataStruct]]
|-
| 0x3E00x3DC || 0x10x4 || RwUInt8 || mu8HardStart || Hard startPadding ||
|-
| 0x3E1 || 0x1 || RwInt8 || mn8CrashGolfPar || Crash golf par ||
|-
| 0x3E2 || 0x2 || RwUInt8[2] || mau8Pad || Padding ||
|}
 
Line 106 ⟶ 100:
 
=== CB3TrackDataStruct ===
{{todo|Find out whether crash pickups or ramps are present (it's one or the other).}}
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
Line 188 ⟶ 181:
 
=== CB3TrafficDataStruct ===
{{todo|DocumentList structureflags.}}
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 || [[GtID]] || mHelicopterID || ||
|-
| 0x8 || 0x8 || [[GtID]] || mLTrainID || ||
|-
| 0x10 || 0x8 || [[GtID]] || mTramID || ||
|-
| 0x18 || 0x8 || [[GtID]] || mMonoRailID || ||
|-
| 0x20 || 0x8 || [[GtID]] || mPlaneID || ||
|-
| 0x28 || 0x4 || RwUInt32 || mu32VersionNumber || || 8
|-
| 0x2C || 0x4 || [[#CB3StopJunctionStruct|CB3StopJunctionStruct]]* || mpStopJunctions || ||
|-
| 0x30 || 0x4 || RwInt32 || mnNumStopJunctions || ||
|-
| 0x34 || 0x4 || [[#CB3TrafficLightPositionStruct|CB3TrafficLightPositionStruct]]* || mpTrafficLights || ||
|-
| 0x38 || 0x4 || RwInt32 || mnNumTrafficLights || ||
|-
| 0x3C || 0x4 || [[#CB3TrafficValvePositionStruct|CB3TrafficValvePositionStruct]]* || mpTrafficValves || ||
|-
| 0x40 || 0x4 || RwInt32 || mnNumTrafficValves || ||
|-
| 0x44 || 0x4 || [[#CB3TrafficSplitterPositionStruct|CB3TrafficSplitterPositionStruct]]* || mpTrafficSplitters || ||
|-
| 0x48 || 0x4 || RwInt32 || mnNumTrafficSplitters || ||
|-
| 0x4C || 0x4 || [[#CB3TriggerStruct|CB3TriggerStruct]]* || mpTriggers || ||
|-
| 0x50 || 0x4 || RwInt32 || mnNumTriggers || ||
|-
| 0x54 || 0x4 || [[#CB3TrafficVehicleWeightStruct|CB3TrafficVehicleWeightStruct]]* || mpCarWeightings || ||
|-
| 0x58 || 0x4 || RwInt32 || mnNumCarWeightings || ||
|-
| 0x5C || 0x4 || RwInt32 || mnTotalCarWeighting || ||
|-
| 0x60 || 0x4 || [[#CB3TrafficVehicleWeightStruct|CB3TrafficVehicleWeightStruct]]* || mpVanWeightings || ||
|-
| 0x64 || 0x4 || RwInt32 || mnNumVanWeightings || ||
|-
| 0x68 || 0x4 || RwInt32 || mnTotalVanWeighting || ||
|-
| 0x6C || 0x4 || [[#CB3TrafficVehicleWeightStruct|CB3TrafficVehicleWeightStruct]]* || mpBusWeightings || ||
|-
| 0x70 || 0x4 || RwInt32 || mnNumBusWeightings || ||
|-
| 0x74 || 0x4 || RwInt32 || mnTotalBusWeighting || ||
|-
| 0x78 || 0x4 || [[#CB3TrafficVehicleWeightStruct|CB3TrafficVehicleWeightStruct]]* || mpLorryWeightings || ||
|-
| 0x7C || 0x4 || RwInt32 || mnNumLorryWeightings || ||
|-
| 0x80 || 0x4 || RwInt32 || mnTotalLorryWeighting || ||
|-
| 0x84 || 0x4 || [[#CB3TrafficVehicleWeightStruct|CB3TrafficVehicleWeightStruct]]* || mpArticCabWeightings || ||
|-
| 0x88 || 0x4 || RwInt32 || mnNumArticCabWeightings || ||
|-
| 0x8C || 0x4 || RwInt32 || mnTotalArticCabWeighting || ||
|-
| 0x90 || 0x4 || [[#CB3TrafficVehicleWeightStruct|CB3TrafficVehicleWeightStruct]]* || mpArticTrailerWeightings || ||
|-
| 0x94 || 0x4 || RwInt32 || mnNumArticTrailerWeightings || ||
|-
| 0x98 || 0x4 || RwInt32 || mnTotalArticTrailerWeighting || ||
|-
| 0x9C || 0x4 || [[#CB3CrashTrafficDestructorStruct|CB3CrashTrafficDestructorStruct]]* || mpCrashTrafficDestructors || ||
|-
| 0xA0 || 0x4 || RwInt32 || mnNumCrashTrafficDestructors || ||
|-
| 0xA4 || 0x4 || [[#CB3TrafficHullStruct|CB3TrafficHullStruct]]* || mpTrafficHulls || ||
|-
| 0xA8 || 0x4 || RwInt32 || mnNumTrafficHulls || ||
|-
| 0xAC || 0x4 || [[#CB3TrafficLightCoronaStruct|CB3TrafficLightCoronaStruct]]* || mpTrafficLightCoronas || ||
|-
| 0xB0 || 0x4 || RwInt32 || mnNumTrafficLightCoronas || ||
|-
| 0xB4 || 0x1 || RwUInt8 || mx8Flags || ||
|-
| 0xB5 || 0x1 || RwUInt8 || mu8UsedSpecialVehicles || ||
|-
| 0xB6 || 0x1 || RwUInt8 || mu8NumSpecialVehicles || ||
|-
| 0xB7 || 0x1 || RwUInt8 || mu8Pad || Padding ||
|}
 
=== CB3StopJunctionStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x18 || RwInt32[6] || manLaneIndices || ||
|-
| 0x18 || 0x10 || RwInt32[4] || manControlSectionStartNodes || ||
|-
| 0x28 || 0x10 || RwInt32[4] || manControlSectionStopNodes || ||
|-
| 0x38 || 0x18 || RwInt32[6] || manExclusionZoneEndNodes || ||
|-
| 0x50 || 0x4 || RwInt32 || mnNumControlZones || ||
|-
| 0x54 || 0x4 || RwInt32 || mnNumExclusionZoneLanes || ||
|}
 
=== CB3TrafficLightPositionStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || RwInt32* || mpnStartSegments || ||
|-
| 0x4 || 0x4 || RwInt32* || mpnStopSegments || ||
|-
| 0x8 || 0x4 || RwInt32* || mpnEndSegments || ||
|-
| 0xC || 0x4 || RwInt32* || mpnLanesIndices || ||
|-
| 0x10 || 0x4 || RwUInt8[4] || mau8CoronaIndices || ||
|-
| 0x14 || 0x1 || RwUInt8 || mu8NumCoronas || ||
|-
| 0x15 || 0x1 || RwUInt8 || mu8NumLanes || ||
|-
| 0x16 || 0x2 || RwUInt8[2] || mau8Pad || Padding ||
|}
 
=== CB3TrafficValvePositionStruct ===
{{todo|List specials flags.}}
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || RwInt32* || mpnLanes || ||
|-
| 0x4 || 0x4 || RwInt32* || mpnSegments || ||
|-
| 0x8 || 0x4 || RwInt32 || mnNumLanes || ||
|-
| 0xC || 0x1 || RwUInt8 || mx8IsAGenerator || ||
|-
| 0xD || 0x1 || RwUInt8 || mx8Specials || ||
|-
| 0xE || 0x2 || RwUInt8[2] || mau8Pad || Padding ||
|}
 
=== CB3TrafficSplitterPositionStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || RwInt32 || mnLaneIndex || ||
|-
| 0x4 || 0x4 || RwInt32 || mnSegmentIndex || ||
|}
 
=== CB3TriggerStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || [[#CB3TrafficFillerStruct|CB3TrafficFillerStruct]]* || mpKillFillers || ||
|-
| 0x4 || 0x4 || [[#CB3TrafficValveLaneSpeedStruct|CB3TrafficValveLaneSpeedStruct]]* || mpValveLaneSpeeds || ||
|-
| 0x8 || 0x4 || RwUInt8* || mpu8ValveSpeedChangeIndices || ||
|-
| 0xC || 0x4 || RwUInt8* || mpu8ValveLaneSpeedChangeIndices || ||
|-
| 0x10 || 0x4 || [[#CB3TrafficValveLaneFlowStruct|CB3TrafficValveLaneFlowStruct]]* || mpValveLaneFlows || ||
|-
| 0x14 || 0x4 || RwUInt8* || mpu8ValveFlowChangeIndices || ||
|-
| 0x18 || 0x4 || RwUInt8* || mpu8ValveLaneFlowChangeIndices || ||
|-
| 0x1C || 0x4 || [[#CB3FormationBehaviourStruct|CB3FormationBehaviourStruct]]* || mpValveLaneFormations || ||
|-
| 0x20 || 0x4 || RwUInt8* || mpu8ValveFormationsChangeIndices || ||
|-
| 0x24 || 0x4 || RwUInt8* || mpu8ValveLaneFormationChangeIndices || ||
|-
| 0x28 || 0x4 || [[#CB3TrafficSplitterFlowStruct|CB3TrafficSplitterFlowStruct]]* || mpSplitterFlows || ||
|-
| 0x2C || 0x4 || RwUInt8* || mpu8SplitterFlowChangeIndices || ||
|-
| 0x30 || 0x4 || [[#CB3TrafficLightTimingsStruct|CB3TrafficLightTimingsStruct]]* || mpTrafficLightTimings || ||
|-
| 0x34 || 0x4 || RwUInt8* || mpu8TrafficLightIndices || ||
|-
| 0x38 || 0x4 || [[#CB3CrashTrafficSequenceStruct|CB3CrashTrafficSequenceStruct]]* || mpCrashJunctionSequences || ||
|-
| 0x3C || 0x4 || RwInt32 || mnNumCrashJunctionSequences || ||
|-
| 0x40 || 0x4 || RwInt32 || mnNumValveSpeedChanges || ||
|-
| 0x44 || 0x4 || RwInt32 || mnNumValveFlowChanges || ||
|-
| 0x48 || 0x4 || RwInt32 || mnNumValveFormationChanges || ||
|-
| 0x4C || 0x4 || RwReal || mrTriggerTime || ||
|-
| 0x50 || 0x2 || RwUInt16 || mu16TriggerSlice || ||
|-
| 0x52 || 0x1 || RwUInt8 || mu8TriggerLap || ||
|-
| 0x53 || 0x1 || RwUInt8 || mu8KillFillerCounts || ||
|-
| 0x54 || 0x1 || RwUInt8 || mu8NumSplitterFlowChanges || ||
|-
| 0x55 || 0x1 || RwUInt8 || mu8NumTrafficLightTimingChanges || ||
|-
| 0x56 || 0x2 || || || Padding ||
|}
 
=== CB3TrafficFillerStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x2 || RwInt16 || mu16StartSegmentIndex || ||
|-
| 0x2 || 0x2 || RwInt16 || mu16EndSegmentIndex || ||
|-
| 0x4 || 0x1 || RwUInt8 || mu8LaneIndex || ||
|-
| 0x5 || 0x1 || RwUInt8 || mu8FillerType || ||
|}
 
=== CB3TrafficValveLaneSpeedStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || RwReal || marLaneSpeed || ||
|}
 
=== CB3TrafficValveLaneFlowStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x1C || RwReal[7] || marFlowValues ||
|}
 
=== CB3FormationBehaviourStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || RwReal* || mprSameLaneDist || ||
|-
| 0x4 || 0x4 || RwReal* || mprLeftLaneDist || ||
|-
| 0x8 || 0x4 || RwReal* || mprRightLaneDist || ||
|-
| 0xC || 0x4 || RwReal || mrMaxDist || ||
|-
| 0x10 || 0x4 || RwInt32 || mnNumBehaviours || ||
|}
 
=== CB3TrafficSplitterFlowStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x18 || RwInt32[6] || mnForwardFlowPercent || ||
|-
| 0x18 || 0x18 || RwInt32[6] || mnLeftFlowPercent || ||
|-
| 0x30 || 0x18 || RwInt32[6] || mnRightFlowPercent || ||
|}
 
=== CB3TrafficLightTimingsStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
! 0x0 || 0x4 || RwReal || mrTimeToGreen ||
|-
| 0x4 || 0x4 || RwReal || mrRedTime ||
|-
| 0x8 || 0x4 || RwReal || mrGreenTime ||
|-
| 0xC || 0x4 || RwReal || mrOrangeTime ||
|}
 
=== CB3CrashTrafficSequenceStruct ===
{{todo|Verify structure is same as Revenge (none in samples).}}
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || [[#CB3CrashTrafficVehicleStruct|CB3CrashTrafficVehicleStruct]]* || mpVehicles || ||
|-
| 0x4 || 0x4 || RwReal || mrGenerationDistance || ||
|-
| 0x8 || 0x1 || RwUInt8 || mu8NumVehicles || ||
|-
| 0x9 || 0x1 || RwUInt8 || mu8NumRolledOutVehicles || ||
|-
| 0xA || 0x1 || RwUInt8 || mu8ValveIndex || ||
|-
| 0xB || 0x1 || RwUInt8 || mu8ValveLaneIndex || ||
|}
 
=== CB3CrashTrafficVehicleStruct ===
{{todo|List type flags. Verify structure is same as Revenge (none in samples).}}
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 || [[GtID]] || mVehicleType || ||
|-
| 0x8 || 0x8 || [[GtID]] || mTrailerType || ||
|-
| 0x10 || 0x4 || RwReal || mrGenerationDistance || ||
|-
| 0x14 || 0x4 || RwReal || mrGenerationTime || ||
|-
| 0x18 || 0x1 || RwUInt8 || mu8VehicleClass || ||
|-
| 0x19 || 0x1 || RwUInt8 || mu8VehicleColour || ||
|-
| 0x1A || 0x1 || RwUInt8 || mu8TrailerColour || ||
|-
| 0x1B || 0x1 || RwUInt8 || mx8TypeFlags || ||
|-
| 0x1C || 0x4 || || || Padding ||
|}
 
=== CB3TrafficVehicleWeightStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 || [[GtID]] || mVehicleID || ||
|-
| 0x8 || 0x8 || RwUInt8[8] || mau8ColourWeights || ||
|-
| 0x10 || 0x4 || RwInt32 || mnWeighting || ||
|-
| 0x14 || 0x4 || || || Padding ||
|}
 
=== CB3CrashTrafficDestructorStruct ===
{{todo|Verify structure is same as Revenge (none in samples).}}
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x2 || RwUInt16 || mu16SegmentIndex || ||
|-
| 0x2 || 0x1 || RwUInt8 || mu8LaneIndex || ||
|-
| 0x3 || 0x1 || RwUInt8 || mu8Pad || Padding ||
|}
 
=== CB3TrafficHullStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || [[#CB3TrafficFillerStruct|CB3TrafficFillerStruct]]* || mpTrafficFillers || ||
|-
| 0x4 || 0x4 || RwInt32 || mnStartSlice || ||
|-
| 0x8 || 0x4 || RwInt32 || mnEndSlice || ||
|-
| 0xC || 0x4 || RwUInt16* || mpu16ExtraSegments || ||
|-
| 0x10 || 0x4 || RwUInt8* || mpu8ValveIndices || ||
|-
| 0x14 || 0x1 || RwUInt8 || mu8NumTrafficFillers || ||
|-
| 0x15 || 0x1 || RwUInt8 || mu8NumValveIndices || ||
|-
| 0x16 || 0x2 || RwUInt8[2] || mau8Pad || Padding ||
|}
 
=== CB3TrafficLightCoronaStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[CGtV3d]] || mPos || ||
|-
| 0x10 || 0x10 || [[CGtV3d]] || mAt || ||
|}
 
=== CB3TrafficLanesStruct ===
{| class="wikitable"
{{todo|Document structure.}}
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || [[#CB3TrafficLaneStruct|CB3TrafficLaneStruct]]* || mpLanes || ||
|-
| 0x4 || 0x4 || [[CGtV3d]]* || mpNodes || ||
|-
| 0x8 || 0x4 || RwInt32 || mnNumLanes || ||
|}
 
=== CB3TrafficLaneStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || [[#CB3SegmentNodeStruct|CB3SegmentNodeStruct]]* || mpSegmentNodeData || ||
|-
| 0x4 || 0x4 || [[#CB3SegmentDimensions|CB3SegmentDimensions]]* || mpSegmentDimensions || ||
|-
| 0x8 || 0x4 || [[#CB3TrafficSegmentStruct|CB3TrafficSegmentStruct]]* || mpTrafficSegmentData || ||
|-
| 0xc || 0x4 || [[CGtV3d]]* || mpNodes || ||
|-
| 0x10 || 0x4 || RwInt32 || mnNumSegments || ||
|}
 
=== CB3SegmentNodeStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || RwUInt16[2] || mau16Nodes || ||
|}
 
=== CB3SegmentDimensions ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || RwReal || mrCumulativeLength || ||
|-
| 0x4 || 0x4 || RwReal || mrWidth || ||
|}
 
=== CB3TrafficSegmentStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0xC || RwUInt16[6] || mau16NeighbourLaneSegments || ||
|-
| 0xC || 0x6 || RwUint8[6] || mau8NeighbourLaneIndices || ||
|}
 
=== CB3AILanesDataStruct ===
{{todo|Check whether the color fields at the end still exist (they may not).}}
{{todo|Document structure.}}
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || RwUInt32 || mnLaneDataVersion || Version number || 3
|-
| 0x4 || 0x4 || RwInt32 || mnLaneCount || Number of AI lanes ||
|-
| 0x8 || 0x4 || RwInt32 || mnSliceCount || Number of slices ||
|-
| 0xC || 0x4 || RwInt32 || mnCornerCount || Number of AI corners ||
|-
| 0x10 || 0x4 || RwUInt32 || mnCheckpointCount || Number of AI checkpoints ||
|-
| 0x14 || 0x4 || [[#CB3AILaneStruct|CB3AILaneStruct]]* || mpLanesArray || AI lanes ||
|-
| 0x18 || 0x4 || [[#CB3SliceStruct|CB3SliceStruct]]* || mpSlicesArray || Slices ||
|-
| 0x1C || 0x4 || [[#CB3AICornerStruct|CB3AICornerStruct]]* || mpCornersArray || AI corners ||
|-
| 0x20 || 0x4 || [[CGtV3d]]* || mpNodesArray || Nodes ||
|-
| 0x24 || 0x80 || [[#CB3AICheckpoint|CB3AICheckpoint]][8] || maCheckpoints || AI checkpoints ||
|-
| 0xA4 || 0x1 || RwUInt8 || mn8ColourOccluded || Colour occluded ||
|-
| 0xA5 || 0x1 || RwUInt8 || mn8ColourVisible || Is colour visible ||
|-
| 0xA6 || 0x2 || || || Padding ||
|}
 
=== CB3SingleRaceDataStructCB3AILaneStruct ===
{| class="wikitable"
{{todo|Document structure.}}
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || [[#CB3AIRungStruct|CB3AIRungStruct]]* || mpRungsArray || ||
|-
| 0x4 || 0x4 || [[#CB3AISegmentDimensionStruct|CB3AISegmentDimensionStruct]]* || mpSegmentDimensionsArray || ||
|-
| 0x8 || 0x4 || [[#CB3AISegmentStruct|CB3AISegmentStruct]]* || mpSegmentsArray || ||
|-
| 0xC || 0x2 || RwUInt16 || mu16SegmentCount || ||
|-
| 0xE || 0x1 || RwUInt8 || mu8Looped || ||
|-
| 0xF || 0x1 || RwInt8 || mn8Pad1 || Padding ||
|}
 
=== CB3AIRungStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || RwUInt16[2] || mau16Nodes || ||
|}
 
=== CB3AISegmentDimensionStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || RwReal || mrCumulativeLength || ||
|-
| 0x4 || 0x4 || RwReal || mrWidth || ||
|}
 
=== CB3AISegmentStruct ===
{{todo|List type flags.}}
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x2 || RwInt16 || mn16SliceIndex || ||
|-
| 0x2 || 0x1 || RwUInt8 || mu8CornerIndex || ||
|-
| 0x3 || 0x1 || RwUInt8 || mx8TypeFlags || ||
|-
| 0x4 || 0x1 || RwUInt8[2] || mau8ChangeLaneIndices || ||
|-
| 0x6 || 0x4 || RwUInt16[2] || mau16ChangeLaneSegments || ||
|}
 
=== CB3SliceStruct ===
{{todo|Confirm fields after length still exist.}}
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || RwReal || mrCumulativeLength || Cumulative length ||
|-
| 0x4 || 0x1 || RwUInt8 || mu8Indicator || Indicator ||
|-
| 0x5 || 0x1 || RwUInt8 || mu8WeatherIntensity || Weather intensity ||
|-
| 0x6 || 0x1 || RwInt8 || mn8Pad1 || Padding ||
|-
| 0x7 || 0x1 || RwInt8 || mn8Pad2 || Padding ||
|}
 
=== CB3AICornerStruct ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x2 || RwUInt16 || mu16StartIndex || ||
|-
| 0x2 || 0x2 || RwUInt16 || mu16ApexIndex || ||
|-
| 0x4 || 0x2 || RwUInt16 || mu16EndIndex || ||
|-
| 0x6 || 0x2 || RwUInt16 || mu16Radius || ||
|-
| 0x8 || 0x1 || RwUInt8 || mu8LaneIndex || ||
|-
| 0x9 || 0x1 || RwInt8 || mn8DriftValue || ||
|-
| 0xA || 0x1 || RwInt8 || mx8CornerDirection || ||
|-
| 0xB || 0x1 || RwInt8 || mn8Pad || ||
|}
 
=== CB3AICheckpoint ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || RwReal || mrDistance || Distance ||
|-
| 0x4 || 0x4 || RwReal || mrMinTime || Minimum time ||
|-
| 0x8 || 0x4 || RwReal || mrMaxTime || Maximum time ||
|-
| 0xC || 0x2 || RwUInt16 || mu16Slice || Slice ||
|-
| 0xE || 0x2 || RwUInt16 || mu16Pad || Padding ||
|}
 
= Enumerations =
=== EB3SignatureTakedownType ===
{{todo|Compare to Revenge to confirm takedown counts don't go beyond the max here.}}
{| class="wikitable"
! Name !! Value !! Comments