Registry: Difference between revisions
(Resource names) |
m (Normalization) |
||
Line 100: | Line 100: | ||
| 0x13 || 0x1 || uint8_t || mu8LoadTime || || See [[#CgsSound::Playback::EContentLoadTime|EContentLoadTime]] |
| 0x13 || 0x1 || uint8_t || mu8LoadTime || || See [[#CgsSound::Playback::EContentLoadTime|EContentLoadTime]] |
||
|- |
|- |
||
| 0x14 || 0x4 || || || |
| 0x14 || 0x4 || || || Padding || Filled by 0xCD |
||
|} |
|} |
||
Line 214: | Line 214: | ||
| 0x13 || 0x1 || uint8_t || mu8VoiceType || || See [[#CgsSound::Playback::EVoiceType|EVoiceType]] |
| 0x13 || 0x1 || uint8_t || mu8VoiceType || || See [[#CgsSound::Playback::EVoiceType|EVoiceType]] |
||
|- |
|- |
||
| 0x14 || 0x4 || || || |
| 0x14 || 0x4 || || || Padding || Filled by 0xCD |
||
|} |
|} |
||
Revision as of 08:43, 3 October 2023
Registry | |
---|---|
Resource names | See names |
Type ID | 0xA000 |
Category | Sound |
Memory distribution |
Main Memory only |
Editor available? |
No |
Registry resources define how the game finds and accesses sounds in conjunction with AttribSys resources such as BurnoutGlobalData.
Each registry entry contains 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 | |
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 | Base class | ||
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 | Base class | ||
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 | Base class | ||
0x8 | 0x4 | ContentClass* | mpContentClass | Content class hash | Not actually a pointer |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | Base class | ||
0x8 | 0x8 | ContentClass* | mpContentClass | Content class hash | Not actually a pointer |
CgsSound::Playback::ContentClass
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | Base class |
Possible class values include:
- AemsVoiceCsisClass (hash:
84D7FBE7
) - GenericRwacFeatureImplementation (hash:
7CCDA2E7
)
CgsSound::Playback::FeatureSchema
Immediately followed by an array of sound hashes.
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | Base class | ||
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 | Base class | ||
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 | Base class | ||
0x8 | 0x4 | ContentClass* | mpContentClass | Content class hash | Not actually a pointer |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Entity | Base class | ||
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 | Base class | ||
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 | Base class | ||
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 |