AttribSys Vault: Difference between revisions
Added breakdown and replaced Node with AttribEntry.
(Add array and refspec.) |
(Added breakdown and replaced Node with AttribEntry.) |
||
(11 intermediate revisions by the same user not shown) | |||
Line 1:
{{ParadiseResourceTypeInfobox
| name = AttribSysVault
| resourcenames = BurnoutGlobalData<br />CameraVault<br />Engine name, e.g. C5_EN<br />postfxvault<br />surfacelist<br />*_AttribSys<br /><sup><small>*Vehicle ID, e.g. PUSMC01</small></sup><br />WorldVault
| id = 0x1C
| category = Generic
| memdist = Main Memory only
| editor = Vehicles only<br />Use [https://github.com/burninrubber0/Bundle-Manager/releases/latest Bundle Manager]
AttribSys vault resources act as a database which holds attributes for vehicles, engines, surfaces and more. They are split into the vault, which holds information needed to access the data, and the bin, which holds the actual attribute data. Vaults work with the [[AttribSys schema]] found in the executable.
Line 5 ⟶ 14:
==== 32-bit ====
{| class="wikitable"
|-▼
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
Line 19 ⟶ 27:
==== 64-bit ====
{| class="wikitable"
|-▼
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
Line 26 ⟶ 33:
| 0x8 || 0x4 || uint32_t || muVltSizeInBytes || ||
|-
| 0xC || 0x4 || || ||
|-
| 0x10 || 0x8 || uint8_t* || mpau8BinData || ||
|-
| 0x18 || 0x4 || uint32_t || muBinSizeInBytes || ||
|}▼
=== Attrib::Array ===▼
{| class="wikitable"▼
! Offset !! Length !! Type !! Name !! Description !! Comments▼
▲|-
| 0x0 || 0x2 || uint16_t || mAlloc || Number of entries allocated || ▼
▲|-
| 0x2 || 0x2 || uint16_t || mCount || Number of entries used || ▼
|-▼
| 0x4 || 0x2 || uint16_t || mSize || The length of each entry || ▼
|-▼
| 0x6 || 0x2 || uint16_t || mEncodedTypePad || Padding || ▼
|}▼
=== Attrib::RefSpec ===▼
{| class="wikitable"▼
! Offset !! Length !! Type !! Name !! Description !! Comments▼
|-▼
| 0x0 || 0x8 || [[Attribute hash|Key]] || mClassKey || || ▼
|-▼
| 0x8 || 0x8 || [[Attribute hash|Key]] || mCollectionKey || || ▼
|-▼
| 0x10 || 0x4 || Collection* || mCollectionPtr || || Always nullptr in resource▼
|-▼
| 0x14 || 0x4 || || || Padding || ▼
|}
= Vault =
[[File:PUSMC01 AttribSys Breakdown.svg|thumb|A breakdown diagram of the Cavalry's vault.]]
The vault is a set of structures with [[#Attrib::Vault::ChunkBlock|ChunkBlocks]] which are read sequentially. In Burnout Paradise, these are:
* '''Vers''': The version
Line 44 ⟶ 80:
=== Attrib::Vault::ChunkBlock ===
{| class="wikitable"
▲|-
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
Line 55 ⟶ 90:
=== Attrib::Vault::VersionNode ===
{| class="wikitable"
▲|-
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 || [[#Attrib::Vault::ChunkBlock|ChunkBlock]] ||
|-
| 0x8 || 0x8 || uint64_t || mVersion || Version hash ||
Line 66 ⟶ 100:
=== Attrib::Vault::DependencyNode ===
{| class="wikitable"
▲|-
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 || [[#Attrib::Vault::ChunkBlock|ChunkBlock]] ||
|-
| 0x8 || 0x8 || [[Attribute hash|HashInt]] || mCount || Number of dependencies ||
Line 78 ⟶ 111:
== Start node ==
{| class="wikitable"
▲|-
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 || [[#Attrib::Vault::ChunkBlock|ChunkBlock]] ||
|-
| ??? || || || || ||
Line 90 ⟶ 122:
== Data node ==
{| class="wikitable"
▲|-
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 || [[#Attrib::Vault::ChunkBlock|ChunkBlock]] ||
|}
Line 102 ⟶ 133:
=== Attrib::CollectionLoadData ===
{| class="wikitable"
▲|-
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
Line 123 ⟶ 153:
| 0x28 || 0x4 || void* || mLayout || || Always nullptr in resource
|-
| 0x2C || 0x4 || || ||
|}
This is always followed by the types, then the
=== Attrib::
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 || [[Attribute hash|Key]] || mKey || ||
|-
| 0x8 || 0x4 ||
|-
| 0xC || 0x2 || uint16_t ||
|-
| 0xE || 0x1 || uint8_t ||
|-
| 0xF || 0x1 || uint8_t ||
▲|}
▲{| class="wikitable"
|}
Line 161 ⟶ 176:
=== Attrib::Vault::ExportNode ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 || [[#Attrib::Vault::ChunkBlock|ChunkBlock]] ||
|-
| 0x8 || 0x8 || [[Attribute hash|HashInt]] || mCount || Number of
|}
Followed by [[#Attrib::Vault::ExportEntry|export entries]] of an amount defined by <code>mCount</code>.
=== Attrib::Vault::ExportEntry ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
Line 188 ⟶ 201:
=== Attrib::Vault::PointerNode ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 || [[#Attrib::Vault::ChunkBlock|ChunkBlock]] ||
|}
Line 198 ⟶ 210:
=== Attrib::PtrRef ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
Line 212 ⟶ 223:
=== Attrib::PtrRef::anon_union_0 ===
{| class="wikitable"
! Length !! Type !! Name !! Description !! Comments
|-
Line 221 ⟶ 231:
=== EPtrRefType ===
Information from Need for Speed ProStreet (RU PS2).
{| class="wikitable"
Line 247 ⟶ 257:
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 || [[#Attrib::Vault::ChunkBlock|ChunkBlock]] ||
|}
Line 256 ⟶ 266:
* [[Engines (Burnout Paradise)/Attributes]]
* [[Vehicles (Burnout Paradise)/Attributes]]
▲== Common structures ==
▲=== Attrib::Array ===
▲{| class="wikitable"
▲! Offset !! Length !! Type !! Name !! Description !! Comments
▲| 0x0 || 0x2 || uint16_t || mAlloc || Number of entries allocated ||
▲| 0x2 || 0x2 || uint16_t || mCount || Number of entries used ||
▲| 0x4 || 0x2 || uint16_t || mSize || The length of each entry ||
▲| 0x6 || 0x2 || uint16_t || mEncodedTypePad || Padding ||
▲|}
▲=== Attrib::RefSpec ===
▲! Offset !! Length !! Type !! Name !! Description !! Comments
▲| 0x0 || 0x8 || [[Attribute hash|Key]] || mClassKey || ||
▲| 0x8 || 0x8 || [[Attribute hash|Key]] || mCollectionKey || ||
▲| 0x10 || 0x4 || Collection* || mCollectionPtr || || Always nullptr in resource
▲| 0x14 || 0x4 || || || Padding ||
▲|}
|