AI Sections
AISectionsData
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x4 | AISection * | mpaSections | AISection format | ||
0x4 | 0x4 | SectionResetPair * | mpaSectionResetPairs | SectionResetPair format | ||
0x8 | 0x14 | float32_t[5] | mafSectionMinSpeeds | |||
0x1C | 0x14 | float32_t[5] | mafSectionMaxSpeeds | |||
0x30 | 0x4 | uint32_t | muNumSections | |||
0x34 | 0x4 | uint32_t | muNumSectionResetPairs | |||
0x38 | 0x4 | uint32_t | muVersion | 12 | ||
0x3C | 0x4 | uint32_t | muSizeInBytes |
AISection
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x4 | Portal * | mpaPortals | Portal format | ||
0x4 | 0x4 | BoundaryLine * | mpaNoGoLines | BoundaryLine format | ||
0x8 | 0x4 | Vector2 * | mpaCorners | |||
0xC | 0x4 | AISectionId | mId | Section GameDB ID | ||
0x10 | 0x2 | SpanIndex | miSpanIndex | |||
0x12 | 0x2 | uint16_t | muNumNoGoLines | |||
0x14 | 0x1 | uint8_t | mu8NumPortals | |||
0x15 | 0x1 | uint8_t | muSpeed | SectionSpeed | 0x0 = E_SECTION_SPEED_VERY_SLOW | |
0x1 = E_SECTION_SPEED_SLOW | ||||||
0x2 = E_SECTION_SPEED_NORMAL | ||||||
0x3 = E_SECTION_SPEED_FAST | ||||||
0x4 = E_SECTION_SPEED_VERY_FAST | ||||||
0x5 = E_SECTION_SPEED_COUNT | ||||||
0x16 | 0x1 | uint8_t | mu8eDistrict | District | Always null | |
0x17 | 0x1 | uint8_t | mx8Flags | 0x01 (Bit 0) = IsShortcut | ||
0x02 (Bit 1) = IsNoReset | No reset on track point | |||||
0x04 (Bit 2) = IsInAir | Typically right before jumps | |||||
0x08 (Bit 3) = IsTerminator | Indicates walls etc. May not be end of the road | |||||
0x10 (Bit 4) = IsJunction | Likely required for events | |||||
0x20 (Bit 5) = IsSplit | Road split, like at Moore/E. Crawford | |||||
0x40 (Bit 6) = IsAIShortcut | ||||||
0x80 (Bit 7) = IsInterstateExit |
Portal
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x4 | float32_t | mPositionX | |||
0x4 | 0x4 | float32_t | mPositionY | |||
0x8 | 0x4 | float32_t | mPositionZ | |||
0xC | 0x4 | BoundaryLine * | mpaBoundaryLines | BoundaryLine format | ||
0x10 | 0x2 | uint16_t | mu16LinkSection | Section index | ||
0x12 | 0x1 | uint8_t | mu8NumBoundaryLines | |||
0x13 | 0x1 | uint8_t[1] | mau8Pad | padding |
BoundaryLine
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x10 | Vector4 | mVerts |
SectionResetPair
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x4 | uint32_t | meResetSpeed | EResetSpeedType | 0x00 = E_RESET_SPEED_TYPE_CUSTOM | |
0x01 = E_RESET_SPEED_TYPE_NONE | ||||||
0x02 = E_RESET_SPEED_TYPE_SLOW | ||||||
0x03 = E_RESET_SPEED_TYPE_FAST | ||||||
0x04 = E_RESET_SPEED_TYPE_SLOW_NORTH_FACE | ||||||
0x05 = E_RESET_SPEED_TYPE_SLOW_SOUTH_FACE | ||||||
0x06 = E_RESET_SPEED_TYPE_SLOW_EAST_FACE | ||||||
0x07 = E_RESET_SPEED_TYPE_SLOW_WEST_FACE | ||||||
0x08 = E_RESET_SPEED_TYPE_SLOW_REVERSE | ||||||
0x09 = E_RESET_SPEED_TYPE_STOP_REVERSE | ||||||
0x0A = E_RESET_SPEED_TYPE_STOP_NORTH_FACE | ||||||
0x0B = E_RESET_SPEED_TYPE_STOP_SOUTH_FACE | ||||||
0x0C = E_RESET_SPEED_TYPE_STOP_EAST_FACE | ||||||
0x0D = E_RESET_SPEED_TYPE_STOP_WEST_FACE | ||||||
0x0E = E_RESET_SPEED_TYPE_STOP_NORTH_EAST_FACE | ||||||
0x0F = E_RESET_SPEED_TYPE_STOP_SOUTH_WEST_FACE | ||||||
0x10 = E_RESET_SPEED_TYPE_NONE_AND_IGNORE | ||||||
0x11 = E_RESET_SPEED_TYPE_WEST_AND_IGNORE | ||||||
0x12 = E_RESET_SPEED_TYPE_REVERSE_AND_IGNORE | ||||||
0x13 = E_RESET_SPEED_TYPE_REVERSE_AND_IGNORE_SLOW | ||||||
0x14 = E_RESET_SPEED_TYPE_COUNT | ||||||
0x4 | 0x2 | uint16_t | muStartSectionIndex | |||
0x6 | 0x2 | uint16_t | muResetSectionIndex |
AISectionPointMap
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x4 | int32_t | miGridWidth | AISectionPointMap unused in file | ||
0x4 | 0x4 | int32_t | miGridHeight | |||
0x8 | 0x8 | padding | ||||
0x10 | 0x10 | Vector2 | mvGridUnitSize | |||
0x20 | 0x10 | Vector2 | mvGridMin | |||
0x30 | 0x4 | Vector3 * | mpPoints | |||
0x34 | 0x4 | uint16_t * | mpuSections | |||
0x38 | 0x4 | uint16_t * | mpuGridUnitMap | |||
0x3C | 0x4 | uint16_t * | mpuGridUnitPointIndices | |||
0x40 | 0x4 | uint16_t * | mpuGridUnitPointCount | |||
0x44 | 0xC | padding |
BoundingBox
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x80 | Vector3[8] | maCorners | BoundingBox unused in file |
DrivingCollisionTriangle
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x30 | Vector3[3] | maVerts | DrivingCollisionTriangle unused in file |
PS4
AISectionsData
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x8 | AISection * | mpaSections | AISection format | ||
0x8 | 0x8 | SectionResetPair * | mpaSectionResetPairs | SectionResetPair format | ||
0x10 | 0x14 | float32_t[5] | mafSectionMinSpeeds | |||
0x24 | 0x14 | float32_t[5] | mafSectionMaxSpeeds | |||
0x38 | 0x4 | uint32_t | muNumSections | |||
0x3C | 0x4 | uint32_t | muNumSectionResetPairs | |||
0x40 | 0x4 | uint32_t | muVersion | 12 | ||
0x44 | 0x4 | uint32_t | muSizeInBytes |
AISection
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x8 | Portal * | mpaPortals | Portal format | ||
0x8 | 0x8 | BoundaryLine * | mpaNoGoLines | BoundaryLine format | ||
0x10 | 0x8 | Vector2 * | mpaCorners | |||
0x18 | 0x4 | AISectionId | mId | Section GameDB ID | ||
0x1C | 0x2 | SpanIndex | miSpanIndex | |||
0x1E | 0x2 | uint16_t | muNumNoGoLines | |||
0x20 | 0x1 | uint8_t | mu8NumPortals | |||
0x21 | 0x1 | uint8_t | muSpeed | SectionSpeed | 0x0 = E_SECTION_SPEED_VERY_SLOW | |
0x1 = E_SECTION_SPEED_SLOW | ||||||
0x2 = E_SECTION_SPEED_NORMAL | ||||||
0x3 = E_SECTION_SPEED_FAST | ||||||
0x4 = E_SECTION_SPEED_VERY_FAST | ||||||
0x5 = E_SECTION_SPEED_COUNT | ||||||
0x22 | 0x1 | uint8_t | mu8eDistrict | District | Always null | |
0x23 | 0x1 | uint8_t | mx8Flags | 0x01 (Bit 0) = IsShortcut | ||
0x02 (Bit 1) = IsNoReset | No reset on track point | |||||
0x04 (Bit 2) = IsInAir | Typically right before jumps | |||||
0x08 (Bit 3) = IsTerminator | Indicates walls etc. May not be end of the road | |||||
0x10 (Bit 4) = IsJunction | Likely required for events | |||||
0x20 (Bit 5) = IsSplit | Road split, like at Moore/E. Crawford | |||||
0x40 (Bit 6) = IsAIShortcut | ||||||
0x80 (Bit 7) = IsInterstateExit | ||||||
0x24 | 0x4 | padding |
Portal
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x4 | float32_t | mPositionX | |||
0x4 | 0x4 | float32_t | mPositionY | |||
0x8 | 0x4 | float32_t | mPositionZ | |||
0xC | 0x4 | padding | ||||
0x10 | 0x8 | BoundaryLine * | mpaBoundaryLines | BoundaryLine format | ||
0x18 | 0x4 | padding | ||||
0x1C | 0x2 | uint16_t | mu16LinkSection | Section index | ||
0x1E | 0x1 | uint8_t | mu8NumBoundaryLines | |||
0x1F | 0x1 | uint8_t[1] | mau8Pad | padding |
BoundaryLine
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x10 | Vector4 | mVerts |
SectionResetPair
Offset | Size | Type | Name | Description | More Information |
---|---|---|---|---|---|
0x0 | 0x4 | uint32_t | meResetSpeed | EResetSpeedType | 0x00 = E_RESET_SPEED_TYPE_CUSTOM |
0x01 = E_RESET_SPEED_TYPE_NONE | |||||
0x02 = E_RESET_SPEED_TYPE_SLOW | |||||
0x03 = E_RESET_SPEED_TYPE_FAST | |||||
0x04 = E_RESET_SPEED_TYPE_SLOW_NORTH_FACE | |||||
0x05 = E_RESET_SPEED_TYPE_SLOW_SOUTH_FACE | |||||
0x06 = E_RESET_SPEED_TYPE_SLOW_EAST_FACE | |||||
0x07 = E_RESET_SPEED_TYPE_SLOW_WEST_FACE | |||||
0x08 = E_RESET_SPEED_TYPE_SLOW_REVERSE | |||||
0x09 = E_RESET_SPEED_TYPE_STOP_REVERSE | |||||
0x0A = E_RESET_SPEED_TYPE_STOP_NORTH_FACE | |||||
0x0B = E_RESET_SPEED_TYPE_STOP_SOUTH_FACE | |||||
0x0C = E_RESET_SPEED_TYPE_STOP_EAST_FACE | |||||
0x0D = E_RESET_SPEED_TYPE_STOP_WEST_FACE | |||||
0x0E = E_RESET_SPEED_TYPE_STOP_NORTH_EAST_FACE | |||||
0x0F = E_RESET_SPEED_TYPE_STOP_SOUTH_WEST_FACE | |||||
0x10 = E_RESET_SPEED_TYPE_NONE_AND_IGNORE | |||||
0x11 = E_RESET_SPEED_TYPE_WEST_AND_IGNORE | |||||
0x12 = E_RESET_SPEED_TYPE_REVERSE_AND_IGNORE | |||||
0x13 = E_RESET_SPEED_TYPE_REVERSE_AND_IGNORE_SLOW | |||||
0x14 = E_RESET_SPEED_TYPE_COUNT | |||||
0x4 | 0x2 | uint16_t | muStartSectionIndex | ||
0x6 | 0x2 | uint16_t | muResetSectionIndex |
AISectionPointMap
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x4 | int32_t | miGridWidth | AISectionPointMap unused in file, PS4 structure guessed | ||
0x4 | 0x4 | int32_t | miGridHeight | |||
0x8 | 0x8 | padding | ||||
0x10 | 0x10 | Vector2 | mvGridUnitSize | |||
0x20 | 0x10 | Vector2 | mvGridMin | |||
0x30 | 0x8 | Vector3 * | mpPoints | |||
0x38 | 0x8 | uint16_t * | mpuSections | |||
0x40 | 0x8 | uint16_t * | mpuGridUnitMap | |||
0x48 | 0x8 | uint16_t * | mpuGridUnitPointIndices | |||
0x50 | 0x8 | uint16_t * | mpuGridUnitPointCount | |||
0x58 | 0x8 | padding |
BoundingBox
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x80 | Vector3[8] | maCorners | BoundingBox unused in file |
DrivingCollisionTriangle
Offset | Size | Type | Name | Description | More Information | Comments |
---|---|---|---|---|---|---|
0x0 | 0x30 | Vector3[3] | maVerts | DrivingCollisionTriangle unused in file |