AI Sections: Difference between revisions
Content added Content deleted
(Formatted for wiki display.) |
(Added infobox and normalized some content.) |
||
(6 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{ParadiseResourceTypeInfobox |
|||
| name = AISections |
|||
| othernames = AIMapData |
|||
| resourcenames = WorldMapData |
|||
| id = 0x10001 |
|||
| category = Game-specific<br />(Burnout Paradise) |
|||
| memdist = Main Memory only |
|||
}} |
|||
{{subpage|Development|text=Information on versions of the AI sections resource type used during development.}} |
|||
The AI sections resource encompasses the routes the AI takes along with details on each section such as speed and shortcut information. |
The AI sections resource encompasses the routes the AI takes along with details on each section such as speed and shortcut information. |
||
Line 7: | Line 18: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x4 || [[#BrnAI::AISection |
| 0x0 || 0x4 || [[#BrnAI::AISection|AISection]]* || mpaSections || || |
||
|- |
|- |
||
| 0x4 || 0x4 || [[#BrnAI::SectionResetPair |
| 0x4 || 0x4 || [[#BrnAI::SectionResetPair|SectionResetPair]]* || mpaSectionResetPairs || || |
||
|- |
|- |
||
| 0x8 || 0x14 || float32_t[5] || mafSectionMinSpeeds || || |
| 0x8 || 0x14 || float32_t[5] || mafSectionMinSpeeds || || |
||
Line 15: | Line 26: | ||
| 0x1C || 0x14 || float32_t[5] || mafSectionMaxSpeeds || || |
| 0x1C || 0x14 || float32_t[5] || mafSectionMaxSpeeds || || |
||
|- |
|- |
||
| 0x30 || 0x4 || uint32_t || muNumSections || || |
| 0x30 || 0x4 || uint32_t || muNumSections || || Maximum of 20,000 |
||
|- |
|- |
||
| 0x34 || 0x4 || uint32_t || muNumSectionResetPairs || || |
| 0x34 || 0x4 || uint32_t || muNumSectionResetPairs || || |
||
Line 28: | Line 39: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x8 || [[#BrnAI::AISection |
| 0x0 || 0x8 || [[#BrnAI::AISection|AISection]]* || mpaSections || || |
||
|- |
|- |
||
| 0x8 || 0x8 || [[#BrnAI::SectionResetPair |
| 0x8 || 0x8 || [[#BrnAI::SectionResetPair|SectionResetPair]]* || mpaSectionResetPairs || || |
||
|- |
|- |
||
| 0x10 || 0x14 || float32_t[5] || mafSectionMinSpeeds || || |
| 0x10 || 0x14 || float32_t[5] || mafSectionMinSpeeds || || |
||
Line 50: | Line 61: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x4 || [[#BrnAI::Portal |
| 0x0 || 0x4 || [[#BrnAI::Portal|Portal]]* || mpaPortals || || |
||
|- |
|- |
||
| 0x4 || 0x4 || [[#BrnAI::BoundaryLine |
| 0x4 || 0x4 || [[#BrnAI::BoundaryLine|BoundaryLine]]* || mpaNoGoLines || || |
||
|- |
|- |
||
| 0x8 || 0x4 || [[ |
| 0x8 || 0x4 || [[Vector2]]* || mpaCorners || || |
||
|- |
|- |
||
| 0xC || 0x4 || [[#BrnAI::AISection::AISectionId |
| 0xC || 0x4 || [[#BrnAI::AISection::AISectionId|AISectionId]] || mId || Section GameDB ID || |
||
|- |
|- |
||
| 0x10 || 0x2 || [[#BrnStreetData::Road::SpanIndex |
| 0x10 || 0x2 || [[#BrnStreetData::Road::SpanIndex|SpanIndex]] || miSpanIndex || || |
||
|- |
|- |
||
| 0x12 || 0x2 || uint16_t || muNumNoGoLines || || |
| 0x12 || 0x2 || uint16_t || muNumNoGoLines || || Maximum of 200 walls |
||
|- |
|- |
||
| 0x14 || 0x1 || uint8_t || mu8NumPortals || || |
| 0x14 || 0x1 || uint8_t || mu8NumPortals || || Maximum of 32 |
||
|- |
|- |
||
| 0x15 || 0x1 || uint8_t || muSpeed || SectionSpeed || See [[#BrnAI::SectionSpeed |
| 0x15 || 0x1 || uint8_t || muSpeed || SectionSpeed || See [[#BrnAI::SectionSpeed|SectionSpeed]] |
||
|- |
|- |
||
| 0x16 || 0x1 || uint8_t || mu8eDistrict || District || Always null |
| 0x16 || 0x1 || uint8_t || mu8eDistrict || District || Always null |
||
|- |
|- |
||
| 0x17 || 0x1 || uint8_t || mx8Flags || Flags || See [[#AISection flags |
| 0x17 || 0x1 || uint8_t || mx8Flags || Flags || See [[#AISection flags|flags]] |
||
|} |
|} |
||
Line 75: | Line 86: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x8 || [[#BrnAI::Portal |
| 0x0 || 0x8 || [[#BrnAI::Portal|Portal]]* || mpaPortals || || |
||
|- |
|- |
||
| 0x8 || 0x8 || [[#BrnAI::BoundaryLine |
| 0x8 || 0x8 || [[#BrnAI::BoundaryLine|BoundaryLine]]* || mpaNoGoLines || || |
||
|- |
|- |
||
| 0x10 || 0x8 || [[ |
| 0x10 || 0x8 || [[Vector2]]* || mpaCorners || || |
||
|- |
|- |
||
| 0x18 || 0x4 || [[#BrnAI::AISection::AISectionId |
| 0x18 || 0x4 || [[#BrnAI::AISection::AISectionId|AISectionId]] || mId || Section GameDB ID || |
||
|- |
|- |
||
| 0x1C || 0x2 || [[#BrnStreetData::Road::SpanIndex |
| 0x1C || 0x2 || [[#BrnStreetData::Road::SpanIndex|SpanIndex]] || miSpanIndex || || |
||
|- |
|- |
||
| 0x1E || 0x2 || uint16_t || muNumNoGoLines || || |
| 0x1E || 0x2 || uint16_t || muNumNoGoLines || || |
||
Line 89: | Line 100: | ||
| 0x20 || 0x1 || uint8_t || mu8NumPortals || || |
| 0x20 || 0x1 || uint8_t || mu8NumPortals || || |
||
|- |
|- |
||
| 0x21 || 0x1 || uint8_t || muSpeed || SectionSpeed || See [[#BrnAI::SectionSpeed |
| 0x21 || 0x1 || uint8_t || muSpeed || SectionSpeed || See [[#BrnAI::SectionSpeed|SectionSpeed]] |
||
|- |
|- |
||
| 0x22 || 0x1 || uint8_t || mu8eDistrict || District || Always null |
| 0x22 || 0x1 || uint8_t || mu8eDistrict || District || Always null |
||
|- |
|- |
||
| 0x23 || 0x1 || uint8_t || mx8Flags || Flags || See [[#AISection flags |
| 0x23 || 0x1 || uint8_t || mx8Flags || Flags || See [[#AISection flags|flags]] |
||
|- |
|- |
||
| 0x24 || 0x4 || || || |
| 0x24 || 0x4 || || || Padding || |
||
|} |
|} |
||
Line 109: | Line 120: | ||
| 0x8 || 0x4 || float32_t || mPositionZ || || |
| 0x8 || 0x4 || float32_t || mPositionZ || || |
||
|- |
|- |
||
| 0xC || 0x4 || [[#BrnAI::BoundaryLine |
| 0xC || 0x4 || [[#BrnAI::BoundaryLine|BoundaryLine]]* || mpaBoundaryLines || || |
||
|- |
|- |
||
| 0x10 || 0x2 || uint16_t || mu16LinkSection || Section index || |
| 0x10 || 0x2 || uint16_t || mu16LinkSection || Section index || |
||
Line 115: | Line 126: | ||
| 0x12 || 0x1 || uint8_t || mu8NumBoundaryLines || || |
| 0x12 || 0x1 || uint8_t || mu8NumBoundaryLines || || |
||
|- |
|- |
||
| 0x13 || 0x1 || uint8_t[1] || mau8Pad || |
| 0x13 || 0x1 || uint8_t[1] || mau8Pad || Padding || |
||
|} |
|} |
||
Line 128: | Line 139: | ||
| 0x8 || 0x4 || float32_t || mPositionZ || || |
| 0x8 || 0x4 || float32_t || mPositionZ || || |
||
|- |
|- |
||
| 0xC || 0x4 || || || |
| 0xC || 0x4 || || || Padding || |
||
|- |
|- |
||
| 0x10 || 0x8 || [[#BrnAI::BoundaryLine |
| 0x10 || 0x8 || [[#BrnAI::BoundaryLine|BoundaryLine]]* || mpaBoundaryLines || || |
||
|- |
|- |
||
| 0x18 || 0x2 || uint16_t || mu16LinkSection || Section index || |
| 0x18 || 0x2 || uint16_t || mu16LinkSection || Section index || |
||
Line 136: | Line 147: | ||
| 0x1A || 0x1 || uint8_t || mu8NumBoundaryLines || || |
| 0x1A || 0x1 || uint8_t || mu8NumBoundaryLines || || |
||
|- |
|- |
||
| 0x1B || 0x1 || uint8_t[1] || mau8Pad || |
| 0x1B || 0x1 || uint8_t[1] || mau8Pad || Padding || |
||
|- |
|- |
||
| 0x1C || 0x4 || || || |
| 0x1C || 0x4 || || || Padding || |
||
|} |
|} |
||
Line 145: | Line 156: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x10 || [[ |
| 0x0 || 0x10 || [[Vector4]] || mVerts || || |
||
|} |
|} |
||
Line 152: | Line 163: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x4 || uint32_t || meResetSpeed || || See [[#BrnAI::EResetSpeedType |
| 0x0 || 0x4 || uint32_t || meResetSpeed || || See [[#BrnAI::EResetSpeedType|EResetSpeedType]] |
||
|- |
|- |
||
| 0x4 || 0x2 || uint16_t || muStartSectionIndex |
| 0x4 || 0x2 || uint16_t || muStartSectionIndex || || |
||
|- |
|- |
||
| 0x6 || 0x2 || uint16_t || muResetSectionIndex |
| 0x6 || 0x2 || uint16_t || muResetSectionIndex || || |
||
|} |
|} |
||
Line 162: | Line 173: | ||
=== BrnAI::AISection::AISectionId === |
=== BrnAI::AISection::AISectionId === |
||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|||
! Name !! Type !! Length !! Comments |
! Name !! Type !! Length !! Comments |
||
|- |
|- |
||
Line 170: | Line 180: | ||
=== BrnStreetData::Road::SpanIndex === |
=== BrnStreetData::Road::SpanIndex === |
||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|||
! Name !! Type !! Length !! Comments |
! Name !! Type !! Length !! Comments |
||
|- |
|- |
||
| SpanIndex || int16_t || |
| SpanIndex || int16_t || 0x2 || |
||
|} |
|} |
||
Line 179: | Line 188: | ||
=== BrnAI::SectionSpeed === |
=== BrnAI::SectionSpeed === |
||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|||
! Name !! Value !! Comments |
! Name !! Value !! Comments |
||
|- |
|- |
||
Line 197: | Line 205: | ||
=== AISection flags === |
=== AISection flags === |
||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|||
! Name !! Value !! Comments |
! Name !! Value !! Comments |
||
|- |
|- |
||
| |
| KX_SECTION_FLAG_SHORTCUT || 0x1 || |
||
|- |
|- |
||
| |
| KX_SECTION_FLAG_NO_RESET || 0x2 || No reset on track point |
||
|- |
|- |
||
| |
| KX_SECTION_FLAG_IN_AIR || 0x4 || Typically right before jumps |
||
|- |
|- |
||
| |
| KX_SECTION_FLAG_SPLIT || 0x8 || Road split, like at Moore/E. Crawford |
||
|- |
|- |
||
| |
| KX_SECTION_FLAG_JUNCTION || 0x10 || Likely required for events |
||
|- |
|- |
||
| |
| KX_SECTION_FLAG_TERMINATOR || 0x20 || Indicates walls etc. May not be end of the road |
||
|- |
|- |
||
| |
| KX_SECTION_FLAG_AI_SHORTCUT || 0x40 || |
||
|- |
|- |
||
| |
| KX_SECTION_FLAG_AI_INTERSTATE_EXIT || 0x80 || |
||
|} |
|} |
||
=== BrnAI::EResetSpeedType === |
=== BrnAI::EResetSpeedType === |
||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|||
! Name !! Value !! Comments |
! Name !! Value !! Comments |
||
|- |
|- |
Latest revision as of 05:36, 4 October 2023
AISections | |
---|---|
aka AIMapData | |
Resource names | WorldMapData |
Type ID | 0x10001 |
Category | Game-specific (Burnout Paradise) |
Memory distribution |
Main Memory only |
Editor available? |
No |
Development Information on versions of the AI sections resource type used during development. |
The AI sections resource encompasses the routes the AI takes along with details on each section such as speed and shortcut information.
Structures
BrnAI::AISectionsData
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | AISection* | mpaSections | ||
0x4 | 0x4 | SectionResetPair* | mpaSectionResetPairs | ||
0x8 | 0x14 | float32_t[5] | mafSectionMinSpeeds | ||
0x1C | 0x14 | float32_t[5] | mafSectionMaxSpeeds | ||
0x30 | 0x4 | uint32_t | muNumSections | Maximum of 20,000 | |
0x34 | 0x4 | uint32_t | muNumSectionResetPairs | ||
0x38 | 0x4 | uint32_t | muVersion | 12 | |
0x3C | 0x4 | uint32_t | muSizeInBytes |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | AISection* | mpaSections | ||
0x8 | 0x8 | SectionResetPair* | mpaSectionResetPairs | ||
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 |
BrnAI::AISection
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | Portal* | mpaPortals | ||
0x4 | 0x4 | BoundaryLine* | mpaNoGoLines | ||
0x8 | 0x4 | Vector2* | mpaCorners | ||
0xC | 0x4 | AISectionId | mId | Section GameDB ID | |
0x10 | 0x2 | SpanIndex | miSpanIndex | ||
0x12 | 0x2 | uint16_t | muNumNoGoLines | Maximum of 200 walls | |
0x14 | 0x1 | uint8_t | mu8NumPortals | Maximum of 32 | |
0x15 | 0x1 | uint8_t | muSpeed | SectionSpeed | See SectionSpeed |
0x16 | 0x1 | uint8_t | mu8eDistrict | District | Always null |
0x17 | 0x1 | uint8_t | mx8Flags | Flags | See flags |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Portal* | mpaPortals | ||
0x8 | 0x8 | BoundaryLine* | mpaNoGoLines | ||
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 | See SectionSpeed |
0x22 | 0x1 | uint8_t | mu8eDistrict | District | Always null |
0x23 | 0x1 | uint8_t | mx8Flags | Flags | See flags |
0x24 | 0x4 | Padding |
BrnAI::Portal
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | float32_t | mPositionX | ||
0x4 | 0x4 | float32_t | mPositionY | ||
0x8 | 0x4 | float32_t | mPositionZ | ||
0xC | 0x4 | BoundaryLine* | mpaBoundaryLines | ||
0x10 | 0x2 | uint16_t | mu16LinkSection | Section index | |
0x12 | 0x1 | uint8_t | mu8NumBoundaryLines | ||
0x13 | 0x1 | uint8_t[1] | mau8Pad | Padding |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | float32_t | mPositionX | ||
0x4 | 0x4 | float32_t | mPositionY | ||
0x8 | 0x4 | float32_t | mPositionZ | ||
0xC | 0x4 | Padding | |||
0x10 | 0x8 | BoundaryLine* | mpaBoundaryLines | ||
0x18 | 0x2 | uint16_t | mu16LinkSection | Section index | |
0x1A | 0x1 | uint8_t | mu8NumBoundaryLines | ||
0x1B | 0x1 | uint8_t[1] | mau8Pad | Padding | |
0x1C | 0x4 | Padding |
BrnAI::BoundaryLine
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x10 | Vector4 | mVerts |
BrnAI::SectionResetPair
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | uint32_t | meResetSpeed | See EResetSpeedType | |
0x4 | 0x2 | uint16_t | muStartSectionIndex | ||
0x6 | 0x2 | uint16_t | muResetSectionIndex |
Typedefs
BrnAI::AISection::AISectionId
Name | Type | Length | Comments |
---|---|---|---|
AISectionId | uint32_t | 0x4 |
BrnStreetData::Road::SpanIndex
Name | Type | Length | Comments |
---|---|---|---|
SpanIndex | int16_t | 0x2 |
Enumerations
BrnAI::SectionSpeed
Name | Value | Comments |
---|---|---|
E_SECTION_SPEED_VERY_SLOW | 0 | |
E_SECTION_SPEED_SLOW | 1 | |
E_SECTION_SPEED_NORMAL | 2 | |
E_SECTION_SPEED_FAST | 3 | |
E_SECTION_SPEED_VERY_FAST | 4 | |
E_SECTION_SPEED_COUNT | 5 |
AISection flags
Name | Value | Comments |
---|---|---|
KX_SECTION_FLAG_SHORTCUT | 0x1 | |
KX_SECTION_FLAG_NO_RESET | 0x2 | No reset on track point |
KX_SECTION_FLAG_IN_AIR | 0x4 | Typically right before jumps |
KX_SECTION_FLAG_SPLIT | 0x8 | Road split, like at Moore/E. Crawford |
KX_SECTION_FLAG_JUNCTION | 0x10 | Likely required for events |
KX_SECTION_FLAG_TERMINATOR | 0x20 | Indicates walls etc. May not be end of the road |
KX_SECTION_FLAG_AI_SHORTCUT | 0x40 | |
KX_SECTION_FLAG_AI_INTERSTATE_EXIT | 0x80 |
BrnAI::EResetSpeedType
Name | Value | Comments |
---|---|---|
E_RESET_SPEED_TYPE_CUSTOM | 0 | |
E_RESET_SPEED_TYPE_NONE | 1 | |
E_RESET_SPEED_TYPE_SLOW | 2 | |
E_RESET_SPEED_TYPE_FAST | 3 | |
E_RESET_SPEED_TYPE_SLOW_NORTH_FACE | 4 | |
E_RESET_SPEED_TYPE_SLOW_SOUTH_FACE | 5 | |
E_RESET_SPEED_TYPE_SLOW_EAST_FACE | 6 | |
E_RESET_SPEED_TYPE_SLOW_WEST_FACE | 7 | |
E_RESET_SPEED_TYPE_SLOW_REVERSE | 8 | |
E_RESET_SPEED_TYPE_STOP_REVERSE | 9 | |
E_RESET_SPEED_TYPE_STOP_NORTH_FACE | 10 | |
E_RESET_SPEED_TYPE_STOP_SOUTH_FACE | 11 | |
E_RESET_SPEED_TYPE_STOP_EAST_FACE | 12 | |
E_RESET_SPEED_TYPE_STOP_WEST_FACE | 13 | |
E_RESET_SPEED_TYPE_STOP_NORTH_EAST_FACE | 14 | |
E_RESET_SPEED_TYPE_STOP_SOUTH_WEST_FACE | 15 | |
E_RESET_SPEED_TYPE_NONE_AND_IGNORE | 16 | |
E_RESET_SPEED_TYPE_WEST_AND_IGNORE | 17 | |
E_RESET_SPEED_TYPE_REVERSE_AND_IGNORE | 18 | |
E_RESET_SPEED_TYPE_REVERSE_AND_IGNORE_SLOW | 19 | |
E_RESET_SPEED_TYPE_COUNT | 20 |