Registry: Difference between revisions
m (Table normalization) |
(Conform to format documentation guidelines.) |
||
Line 4: | Line 4: | ||
Registry entries contain information on specific sounds. This is done by having a system where each sound is an entity and each entity is of a certain type. The most common of these is the ContentSpec, which specifies the load attributes and whether it is an [[AEMS Bank]] or a [[Generic RWAC Wave Content | Wave]]. The other entity types have not been properly researched. |
Registry entries contain information on specific sounds. This is done by having a system where each sound is an entity and each entity is of a certain type. The most common of these is the ContentSpec, which specifies the load attributes and whether it is an [[AEMS Bank]] or a [[Generic RWAC Wave Content | Wave]]. The other entity types have not been properly researched. |
||
= |
= Structures = |
||
=== CgsSound::Playback::Registry === |
=== CgsSound::Playback::Registry === |
||
==== 32-bit ==== |
==== 32-bit ==== |
||
Line 72: | Line 72: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x8 || Entity || super_Entity || The entity prior to the ContentSpec || |
| 0x0 || 0x8 || [[#CgsSound::Playback::Entity | Entity]] || super_Entity || The entity prior to the ContentSpec || |
||
|- |
|- |
||
| 0x8 || 0x4 || ContentType* || mpContentType || Content type hash || Not actually a pointer |
| 0x8 || 0x4 || [[#32-bit 2 | ContentType]]* || mpContentType || Content type hash || Not actually a pointer |
||
|- |
|- |
||
| 0xC || 0x2 || uint16_t || mu16PathLength || Length of the string immediately following the ContentSpec || |
| 0xC || 0x2 || uint16_t || mu16PathLength || Length of the string immediately following the ContentSpec || |
||
Line 88: | Line 88: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x8 || Entity || super_Entity || The entity prior to the ContentSpec || |
| 0x0 || 0x8 || [[#CgsSound::Playback::Entity | Entity]] || super_Entity || The entity prior to the ContentSpec || |
||
|- |
|- |
||
| 0x8 || 0x8 || ContentType* || mpContentType || Content type hash || Not actually a pointer |
| 0x8 || 0x8 || [[#64-bit 2 | ContentType]]* || mpContentType || Content type hash || Not actually a pointer |
||
|- |
|- |
||
| 0x10 || 0x2 || uint16_t || mu16PathLength || Length of the string immediately following the ContentSpec || |
| 0x10 || 0x2 || uint16_t || mu16PathLength || Length of the string immediately following the ContentSpec || |
||
Line 107: | Line 107: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x8 || Entity || super_Entity || The entity prior to the ContentSpec || |
| 0x0 || 0x8 || [[#CgsSound::Playback::Entity | Entity]] || super_Entity || The entity prior to the ContentSpec || |
||
|- |
|- |
||
| 0x8 || 0x4 || ContentClass* || mpContentClass || Content class hash || Not actually a pointer |
| 0x8 || 0x4 || [[#CgsSound::Playback::ContentClass | ContentClass]]* || mpContentClass || Content class hash || Not actually a pointer |
||
|} |
|} |
||
Line 117: | Line 117: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x8 || Entity || super_Entity || The entity prior to the ContentType || |
| 0x0 || 0x8 || [[#CgsSound::Playback::Entity | Entity]] || super_Entity || The entity prior to the ContentType || |
||
|- |
|- |
||
| 0x8 || 0x8 || ContentClass* || mpContentClass || Content class hash || Not actually a pointer |
| 0x8 || 0x8 || [[#CgsSound::Playback::ContentClass | ContentClass]]* || mpContentClass || Content class hash || Not actually a pointer |
||
|} |
|} |
||
Line 127: | Line 127: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x8 || Entity || super_Entity || The entity prior to the ContentClass || |
| 0x0 || 0x8 || [[#CgsSound::Playback::Entity | Entity]] || super_Entity || The entity prior to the ContentClass || |
||
|} |
|} |
||
Line 141: | Line 141: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x8 || Entity || super_Entity || The entity prior to the FeatureSchema || |
| 0x0 || 0x8 || [[#CgsSound::Playback::Entity | Entity]] || super_Entity || The entity prior to the FeatureSchema || |
||
|- |
|- |
||
| 0x8 || 0x4 || uint32_t || mu32ParameterSchemaCount || || |
| 0x8 || 0x4 || uint32_t || mu32ParameterSchemaCount || || |
||
Line 155: | Line 155: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x8 || Entity || super_Entity || The entity prior to the ParameterSchema || |
| 0x0 || 0x8 || [[#CgsSound::Playback::Entity | Entity]] || super_Entity || The entity prior to the ParameterSchema || |
||
|- |
|- |
||
| 0x8 || 0x4 || float || mf32Minimum || || |
| 0x8 || 0x4 || float || mf32Minimum || || |
||
Line 170: | Line 170: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x8 || Entity || super_Entity || The entity prior to the SlotSchema || |
| 0x0 || 0x8 || [[#CgsSound::Playback::Entity | Entity]] || super_Entity || The entity prior to the SlotSchema || |
||
|- |
|- |
||
| 0x8 || 0x4 || ContentClass* || mpContentClass || Content class hash || Not actually a pointer |
| 0x8 || 0x4 || [[#CgsSound::Playback::ContentClass | ContentClass]]* || mpContentClass || Content class hash || Not actually a pointer |
||
|} |
|} |
||
Line 180: | Line 180: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x8 || Entity || super_Entity || The entity prior to the SlotSchema || |
| 0x0 || 0x8 || [[#CgsSound::Playback::Entity | Entity]] || super_Entity || The entity prior to the SlotSchema || |
||
|- |
|- |
||
| 0x8 || 0x8 || ContentClass* || mpContentClass || Content class hash || Not actually a pointer |
| 0x8 || 0x8 || [[#CgsSound::Playback::ContentClass | ContentClass]]* || mpContentClass || Content class hash || Not actually a pointer |
||
|} |
|} |
||
Line 191: | Line 191: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x8 || Entity || super_Entity || The entity prior to the VoiceSpec || |
| 0x0 || 0x8 || [[#CgsSound::Playback::Entity | Entity]] || super_Entity || The entity prior to the VoiceSpec || |
||
|- |
|- |
||
| 0x8 || 0x4 || VoiceSchema* || mpVoiceSchema || || |
| 0x8 || 0x4 || [[#CgsSound::Playback::VoiceSchema | VoiceSchema]]* || mpVoiceSchema || || |
||
|- |
|- |
||
| 0xC || 0x1 || uint8_t || mu8SendCount || || |
| 0xC || 0x1 || uint8_t || mu8SendCount || || |
||
Line 209: | Line 209: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x8 || Entity || super_Entity || The entity prior to the VoiceSpec || |
| 0x0 || 0x8 || [[#CgsSound::Playback::Entity | Entity]] || super_Entity || The entity prior to the VoiceSpec || |
||
|- |
|- |
||
| 0x8 || 0x8 || VoiceSchema* || mpVoiceSchema || || |
| 0x8 || 0x8 || [[#CgsSound::Playback::VoiceSchema | VoiceSchema]]* || mpVoiceSchema || || |
||
|- |
|- |
||
| 0x10 || 0x1 || uint8_t || mu8SendCount || || |
| 0x10 || 0x1 || uint8_t || mu8SendCount || || |
||
Line 229: | Line 229: | ||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x8 || Entity || super_Entity || The entity prior to the VoiceSchema || |
| 0x0 || 0x8 || [[#CgsSound::Playback::Entity | Entity]] || super_Entity || The entity prior to the VoiceSchema || |
||
|- |
|- |
||
| 0x8 || 0x4 || uint32_t || mu32FeatureSchemaCount || || |
| 0x8 || 0x4 || uint32_t || mu32FeatureSchemaCount || || |
Revision as of 05:14, 14 August 2022
Registry resources define how the game finds and accesses sounds in conjunction with AttribSys resources such as BurnoutGlobalData.
Overview
Registry entries contain information on specific sounds. This is done by having a system where each sound is an entity and each entity is of a certain type. The most common of these is the ContentSpec, which specifies the load attributes and whether it is an AEMS Bank or a Wave. The other entity types have not been properly researched.
Structures
CgsSound::Playback::Registry
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | uint32_t | mu32EntityCount | Total number of entities | |
0x4 | 0x4 | uint32_t | mu32EntityCapacity | Space allocated for entities | Always 0x800 in Burnout. Entity pointers randomly placed throughout 0x1C-201B |
0x8 | 0x4 | size_t | muDataSize | Entity data size | |
0xC | 0x4 | uint8_t* | mpu8Data | Entity data end | |
0x10 | 0x4 | size_t | muStringTableSize | String table size | |
0x14 | 0x4 | char* | mpcStringTable | String table end | Effectively resource end |
0x18 | 0x4 | uintptr_t | muNameHashMask |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | uint32_t | mu32EntityCount | Total number of entities | |
0x4 | 0x4 | uint32_t | mu32EntityCapacity | Space allocated for entities | Always 0x800 in Burnout. Entity pointers randomly placed throughout 0x30-402F |
0x8 | 0x8 | size_t | muDataSize | Entity data size | |
0x10 | 0x8 | uint8_t* | mpu8Data | Entity data end | Start is always 0x1C |
0x18 | 0x8 | size_t | muStringTableSize | String table size | |
0x20 | 0x8 | char* | mpcStringTable | String table end | Effectively resource end |
0x28 | 0x8 | uintptr_t | muNameHashMask |
CgsSound::Playback::Entity
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | Name | mName | Entity name hash | Original string may be found in the string table |
0x4 | 0x4 | Name | mTypeName | Type name hash | Original string may be found in the string table |
Possible type names include:
- ~ParameterSchema~ (hash:
8D2C6829
) - ~ContentSpec~ (hash:
511A448B
) - ~FeatureSchema~ (hash:
CB8B64C5
) - ~VoiceSchema~ (hash:
C7382281
) - ~SlotSchema~ (hash:
EB396D83
) - ~VoiceSpec~ (hash:
3597AD9B
)
CgsSound::Playback::ContentSpec
Immediately followed by a string, usually a gamedb://
path.
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | super_Entity | The entity prior to the ContentSpec | |
0x8 | 0x4 | ContentType* | mpContentType | Content type hash | Not actually a pointer |
0xC | 0x2 | uint16_t | mu16PathLength | Length of the string immediately following the ContentSpec | |
0xE | 0x1 | uint8_t | mu8LoadMethod | See EContentLoadMethod | |
0xF | 0x1 | uint8_t | mu8LoadTime | See EContentLoadTime |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | super_Entity | The entity prior to the ContentSpec | |
0x8 | 0x8 | ContentType* | mpContentType | Content type hash | Not actually a pointer |
0x10 | 0x2 | uint16_t | mu16PathLength | Length of the string immediately following the ContentSpec | |
0x12 | 0x1 | uint8_t | mu8LoadMethod | See EContentLoadMethod | |
0x13 | 0x1 | uint8_t | mu8LoadTime | See EContentLoadTime | |
0x14 | 0x4 | padding | Filled by 0xCD |
CgsSound::Playback::ContentType
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | super_Entity | The entity prior to the ContentSpec | |
0x8 | 0x4 | ContentClass* | mpContentClass | Content class hash | Not actually a pointer |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | super_Entity | The entity prior to the ContentType | |
0x8 | 0x8 | ContentClass* | mpContentClass | Content class hash | Not actually a pointer |
CgsSound::Playback::ContentClass
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | super_Entity | The entity prior to the ContentClass |
Possible class values include:
- AemsVoiceCsisClass (hash:
84D7FBE7
) - GenericRwacFeatureImplementation (hash:
7CCDA2E7
)
CgsSound::Playback::FeatureSchema
Immediately followed by an array of Name hashes.
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | super_Entity | The entity prior to the FeatureSchema | |
0x8 | 0x4 | uint32_t | mu32ParameterSchemaCount | ||
0xC | 0x4 | uint32_t | mu32SlotSchemaCount | ||
0x10 | 0x4 | uint32_t | mu32OutputParamCount |
CgsSound::Playback::ParameterSchema
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | super_Entity | The entity prior to the ParameterSchema | |
0x8 | 0x4 | float | mf32Minimum | ||
0xC | 0x4 | float | mf32Maximum | ||
0x10 | 0x4 | uint32_t | mu32Direction |
CgsSound::Playback::SlotSchema
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | super_Entity | The entity prior to the SlotSchema | |
0x8 | 0x4 | ContentClass* | mpContentClass | Content class hash | Not actually a pointer |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | super_Entity | The entity prior to the SlotSchema | |
0x8 | 0x8 | ContentClass* | mpContentClass | Content class hash | Not actually a pointer |
CgsSound::Playback::VoiceSpec
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | super_Entity | The entity prior to the VoiceSpec | |
0x8 | 0x4 | VoiceSchema* | mpVoiceSchema | ||
0xC | 0x1 | uint8_t | mu8SendCount | ||
0xD | 0x1 | uint8_t | mu8ProcessingStage | ||
0xE | 0x1 | uint8_t | mu8ChannelCount | ||
0xF | 0x1 | uint8_t | mu8VoiceType | See EVoiceType |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | super_Entity | The entity prior to the VoiceSpec | |
0x8 | 0x8 | VoiceSchema* | mpVoiceSchema | ||
0x10 | 0x1 | uint8_t | mu8SendCount | ||
0x11 | 0x1 | uint8_t | mu8ProcessingStage | ||
0x12 | 0x1 | uint8_t | mu8ChannelCount | ||
0x13 | 0x1 | uint8_t | mu8VoiceType | See EVoiceType | |
0x14 | 0x4 | padding | Filled by 0xCD |
CgsSound::Playback::VoiceSchema
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | super_Entity | The entity prior to the VoiceSchema | |
0x8 | 0x4 | uint32_t | mu32FeatureSchemaCount | ||
0x10 | 0x4 | uint32_t | mu32SlotCount | ||
0x11 | 0x4 | uint32_t | mu32ParameterCount | ||
0x12 | 0x4 | uint32_t | mu32OutputParamCount |
Enumerations
CgsSound::Playback::EContentLoadMethod
Name | Value | Comments |
---|---|---|
E_CONTENT_LOAD_INVALID | 0 | |
E_CONTENT_LOAD_RESOURCE_MODULE | 1 |
CgsSound::Playback::EContentLoadTime
Name | Value | Comments |
---|---|---|
E_CONTENT_LOAD_JUST_IN_TIME | 0 | |
E_CONTENT_LOAD_IMMEDIATE | 1 |
CgsSound::Playback::EParameterDirection
Name | Value | Comments |
---|---|---|
E_PARAMETER_INPUT | 0 | |
E_PARAMETER_OUTPUT | 1 |
CgsSound::Playback::EVoiceType
Name | Value | Comments |
---|---|---|
E_PLAYER_VOICE | 0 | |
E_SUBMIX_VOICE | 1 | |
E_MASTER_VOICE | 2 | |
E_VOICE_TYPE_COUNT | 3 |
Bundle resource names
Unlike some resource types, Registry resources are most often listed in the Bundle debug data as simply having the name "Registry". This is only the name of one resource. For convenience, all resource names are listed here.
File | Hash | Name | Comments |
---|---|---|---|
PLAYBACKREGISTRY.BUNDLE | CDA81D0A | Registry | |
RWACFEATUREREGISTRY.BUNDLE | 45DA3125 | RwacFeatureRegistry | |
SOUND/SOUNDENTITY.BUNDLE | 93ED63CD | SoundEntity | |
SOUND/STREAMS/STREAMSREGISTRY.BUNDLE | 8D8FA6F0 | StreamsRegistry | Other languages have same name |
SOUND/AEMS/CSIS.BUNDLE | D725BF37 | BoostCsisEntityReg | |
SOUND/AEMS/CSIS.BUNDLE | 89C1A799 | BoostCsisVoiceReg | |
SOUND/AEMS/CSIS.BUNDLE | 1FD8B917 | BoostCsisFactoryReg | |
SOUND/AEMS/CSIS.BUNDLE | 44E7DFC5 | TrafficCsisEntityReg | |
SOUND/AEMS/CSIS.BUNDLE | 425EC814 | TrafficCsisVoiceReg | |
SOUND/AEMS/CSIS.BUNDLE | 4CF8E847 | TrafficCsisFactoryReg | |
SOUND/AEMS/CSIS.BUNDLE | 8CE32170 | SkidsCsisEntityReg | |
SOUND/AEMS/CSIS.BUNDLE | 91F1FD26 | SkidsCsisVoiceReg | |
SOUND/AEMS/CSIS.BUNDLE | F73BABBA | SkidsCsisFactoryReg | |
SOUND/AEMS/CSIS.BUNDLE | F76C41FC | HornsCsisEntityReg | |
SOUND/AEMS/CSIS.BUNDLE | AFBADFEC | HornsCsisVoiceReg | |
SOUND/AEMS/CSIS.BUNDLE | 134EEBD1 | HornsCsisFactoryReg | |
SOUND/AEMS/CSIS.BUNDLE | 1345FDC7 | ScrapesCsisEntityReg | |
SOUND/AEMS/CSIS.BUNDLE | 88C9EF60 | ScrapesCsisVoiceReg | |
SOUND/AEMS/CSIS.BUNDLE | A2A12B49 | ScrapesCsisFactoryReg | |
SOUND/AEMS/CSIS.BUNDLE | 5679585E | InAirCsisEntityReg | |
SOUND/AEMS/CSIS.BUNDLE | 6B30034D | InAirCsisVoiceReg | |
SOUND/AEMS/CSIS.BUNDLE | 2B373C0C | InAirCsisFactoryReg | |
SOUND/AEMS/CSIS.BUNDLE | 498CBDB2 | SurfaceCsisEntityReg | |
SOUND/AEMS/CSIS.BUNDLE | 4456819E | SurfaceCsisVoiceReg | |
SOUND/AEMS/CSIS.BUNDLE | 829467BA | SurfaceCsisFactoryReg | |
SOUND/AEMS/CSIS.BUNDLE | E9F9266F | TurboCsisEntityReg | |
SOUND/AEMS/CSIS.BUNDLE | 3B2F247E | TurboCsisVoiceReg | |
SOUND/AEMS/CSIS.BUNDLE | 7A56BC48 | TurboCsisFactoryReg | |
SOUND/AEMS/CSIS.BUNDLE | 6D87D547 | GearWhineCsisEntityReg | |
SOUND/AEMS/CSIS.BUNDLE | FB9DD26D | GearWhineCsisVoiceReg | |
SOUND/AEMS/CSIS.BUNDLE | 4F676A41 | GearWhineCsisFactoryReg | |
SOUND/AEMS/CSIS.BUNDLE | AB17EF30 | CrumpleCsisEntityReg | |
SOUND/AEMS/CSIS.BUNDLE | 677E1757 | CrumpleCsisVoiceReg | |
SOUND/AEMS/CSIS.BUNDLE | 81C01EE4 | CrumpleCsisFactoryReg | |
ENGINES/*.BUNDLE | <name>Registry | e.g., C5_ENRegistry |