AI Sections: Difference between revisions
Added infobox and normalized some content.
(Created page with "=== AISectionsData === {| class="wikitable" ! 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 || muNumSectio...") |
(Added infobox and normalized some content.) |
||
(7 intermediate revisions by 2 users not shown) | |||
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.
= Structures =
=== BrnAI::AISectionsData ===
==== 32-bit ====
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x4 || [[#BrnAI::AISection
|-
| 0x4 || 0x4 || [[#BrnAI::SectionResetPair
|-
| 0x8 || 0x14 || float32_t[5] || mafSectionMinSpeeds
|-
| 0x1C || 0x14 || float32_t[5] || mafSectionMaxSpeeds
|-
| 0x30 || 0x4 || uint32_t || muNumSections || || Maximum
|-
| 0x34 || 0x4 || uint32_t || muNumSectionResetPairs
|-
| 0x38 || 0x4 || uint32_t || muVersion || || 12
|-
| 0x3C || 0x4 || uint32_t || muSizeInBytes
|}
==== 64-bit ====
{| class="wikitable"
! Offset !!
|-
| 0x0 ||
|-
| 0x8 || 0x8 || [[#BrnAI::SectionResetPair|SectionResetPair]]* || mpaSectionResetPairs || ||
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|}
=== BrnAI::AISection ===
==== 32-bit ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 ||
|-
| 0x4 || 0x4 ||
|-
| 0x8 || 0x4 || [[Vector2]]* || mpaCorners ||
|-
| 0xC || 0x4 ||
|-
| 0x10 || 0x2 ||
|-
|
|-
|
|-
| 0x15 || 0x1 || uint8_t || muSpeed || SectionSpeed || See [[#BrnAI::SectionSpeed|SectionSpeed]]
|-
| 0x16 || 0x1 || uint8_t || mu8eDistrict ||
|-
| 0x17 || 0x1 || uint8_t || mx8Flags || Flags || See [[#AISection flags|flags]]
|}
==== 64-bit ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 ||
|-
| 0x8 || 0x8 || [[#BrnAI::BoundaryLine|BoundaryLine]]* || mpaNoGoLines || ||
|-
| 0x10 || 0x8 || [[Vector2]]* ||
|-
| 0x18 || 0x4 || [[#BrnAI::AISection::AISectionId|AISectionId]] || mId ||
|-
|
|-
|
|-
|
|-
| 0x21 || 0x1 || uint8_t || muSpeed || SectionSpeed || See [[#BrnAI::SectionSpeed|SectionSpeed]]
|-
|
|-
|
|-
|
|}
=== BrnAI::Portal ===
==== 32-bit ====
{| class="wikitable"
! Offset !!
|-
| 0x0 ||
|-
|
|-
| 0x8 || 0x4 || float32_t || mPositionZ ||
|-
| 0xC || 0x4 ||
|-
| 0x10 || 0x2 || uint16_t || mu16LinkSection || Section
|-
| 0x12 || 0x1 || uint8_t || mu8NumBoundaryLines ||
|-
| 0x13 || 0x1 || uint8_t[1] || mau8Pad ||
|}
==== 64-bit ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || float32_t || mPositionX ||
|-
| 0x4 || 0x4 || float32_t || mPositionY ||
|-
| 0x8 || 0x4 || float32_t || mPositionZ ||
|-
| 0xC || 0x4 || || ||
|-
| 0x10 || 0x8 || [[#BrnAI::BoundaryLine|BoundaryLine]]* || mpaBoundaryLines || ||
|-
| 0x18 || 0x2 || uint16_t || mu16LinkSection || Section
|-
| 0x1A || 0x1 || uint8_t || mu8NumBoundaryLines ||
|-
| 0x1B || 0x1 || uint8_t[1] || mau8Pad ||
|-
| 0x1C || 0x4 || || ||
|
=== BrnAI::BoundaryLine ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
|
|}
=== BrnAI::SectionResetPair ===
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x4 ||
|-
| 0x4 ||
|-
|
|}
= Typedefs =
=== BrnAI::AISection::AISectionId ===
{| class="wikitable"
!
|-
| AISectionId || uint32_t || 0x4 ||
|}
=== BrnStreetData::Road::SpanIndex ===
{| class="wikitable"
!
|-
| SpanIndex || int16_t || 0x2 ||
|}
= Enumerations =
=== BrnAI::SectionSpeed ===
{| class="wikitable"
|-
| 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 ===
{| class="wikitable"
|-
| 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 ===
{| class="wikitable"
|-
| E_RESET_SPEED_TYPE_CUSTOM || 0 ||
|-
| E_RESET_SPEED_TYPE_NONE || 1 ||
|-
| E_RESET_SPEED_TYPE_SLOW || 2 ||
|-
|
|-
| E_RESET_SPEED_TYPE_SLOW_NORTH_FACE || 4 ||
|-
|
|-
| 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_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 ||
|}
|