Registry

From Burnout Wiki
Registry
aka {{{othernames}}}
No Example
Resource names See names
Type ID 0xA000
Category Sound
Memory
distribution
Main Memory only
Imports Unknown
Imported by Unknown
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 Base class
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