Voice Hierarchy: Difference between revisions
Content added Content deleted
(Added infobox.) |
m (Normalization) |
||
Line 11: | Line 11: | ||
=== CgsSound::Logic::VoiceHierarchy === |
=== CgsSound::Logic::VoiceHierarchy === |
||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode |
| 0x0 || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode|VoiceHierarchyNode]]* || mpNodes || || |
||
|- |
|- |
||
| 0x4 || 0x4 || int32_t || miNumNodes || || |
| 0x4 || 0x4 || int32_t || miNumNodes || || |
||
|- |
|- |
||
| 0x8 || 0x4 || [[#CgsSound::Logic::ExternalConnectionDescriptor |
| 0x8 || 0x4 || [[#CgsSound::Logic::ExternalConnectionDescriptor|ExternalConnectionDescriptor]]* || mpExternalConnections || || |
||
|- |
|- |
||
| 0xC || 0x4 || int32_t || miNumExternalConnections || || |
| 0xC || 0x4 || int32_t || miNumExternalConnections || || |
||
Line 26: | Line 25: | ||
| 0x14 || 0x1 || uint8_t || mu8DebugDataPresent || Indicates whether debug names are present? || |
| 0x14 || 0x1 || uint8_t || mu8DebugDataPresent || Indicates whether debug names are present? || |
||
|- |
|- |
||
| 0x15 || 0x3 || || || |
| 0x15 || 0x3 || || || Padding || |
||
|} |
|} |
||
=== CgsSound::Logic::VoiceHierarchyNode === |
=== CgsSound::Logic::VoiceHierarchyNode === |
||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x4 || char8_t* || mpcDebugName || Name of the node || |
| 0x0 || 0x4 || char8_t* || mpcDebugName || Name of the node || |
||
|- |
|- |
||
| 0x4 || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode::VoiceId |
| 0x4 || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode::VoiceId|VoiceId]] || mId || ID of the node || Hash of the debug name. |
||
|- |
|- |
||
| 0x8 || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode::VoiceId |
| 0x8 || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode::VoiceId|VoiceId]] || mParentId || Parent ID of the node || Hash of the parent debug name.<br/>If this is the same as mId, the node has no parent. |
||
|- |
|- |
||
| 0xC || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode::QueueElement |
| 0xC || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode::QueueElement|QueueElement]] || mDefaultSendName || Hash of default send descriptor name. || Hash is 0xA579E0DD. Unknown string. |
||
|- |
|- |
||
| 0x10 || 0x4 || [[#CgsSound::Logic::SendDescriptor |
| 0x10 || 0x4 || [[#CgsSound::Logic::SendDescriptor|SendDescriptor]]* || mpOtherSends || || Always nullptr in available samples |
||
|- |
|- |
||
| 0x14 || 0x4 || int32_t || miNumOtherSends || || Always null in available samples |
| 0x14 || 0x4 || int32_t || miNumOtherSends || || Always null in available samples |
||
|- |
|- |
||
| 0x18 || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode::QueueElement |
| 0x18 || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode::QueueElement|QueueElement]] || mVoiceSpec || || |
||
|- |
|- |
||
| 0x1C || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode::eVoiceType |
| 0x1C || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode::eVoiceType|eVoiceType]] || meVoiceType || || |
||
|- |
|- |
||
| 0x20 || 0x1 || bool8_t || mb8IsGlobal || || |
| 0x20 || 0x1 || bool8_t || mb8IsGlobal || || |
||
|- |
|- |
||
| 0x21 || 0x3 || || || |
| 0x21 || 0x3 || || || Padding || |
||
|} |
|} |
||
=== CgsSound::Logic::SendDescriptor === |
=== CgsSound::Logic::SendDescriptor === |
||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode::QueueElement |
| 0x0 || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode::QueueElement|QueueElement]] || mSendName || || |
||
|- |
|- |
||
| 0x4 || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode::VoiceId |
| 0x4 || 0x4 || [[#CgsSound::Logic::VoiceHierarchyNode::VoiceId|VoiceId]] || mVoiceId || || |
||
|- |
|- |
||
| 0x8 || 0x4 || int32_t || miTargetMapState || || |
| 0x8 || 0x4 || int32_t || miTargetMapState || || |
||
Line 68: | Line 65: | ||
| 0xC || 0x1 || bool8_t || mb8IsExternal || || |
| 0xC || 0x1 || bool8_t || mb8IsExternal || || |
||
|- |
|- |
||
| 0xD || 0x3 || || || |
| 0xD || 0x3 || || || Padding || |
||
|} |
|} |
||
=== CgsSound::Logic::ExternalConnectionDescriptor === |
=== CgsSound::Logic::ExternalConnectionDescriptor === |
||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
Line 84: | Line 80: | ||
=== CgsSound::Logic::VoiceHierarchyNode::QueueElement === |
=== CgsSound::Logic::VoiceHierarchyNode::QueueElement === |
||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|||
! Name !! Type !! Length !! Comments |
! Name !! Type !! Length !! Comments |
||
|- |
|- |
||
| QueueElement || uint32_t || 0x4 || Same hash algorithm as [[Sound hash |
| QueueElement || uint32_t || 0x4 || Same hash algorithm as [[Sound hash|CgsSound::Playback::Name]] |
||
|} |
|} |
||
=== CgsSound::Logic::VoiceHierarchyNode::VoiceId === |
=== CgsSound::Logic::VoiceHierarchyNode::VoiceId === |
||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|||
! Name !! Type !! Length !! Comments |
! Name !! Type !! Length !! Comments |
||
|- |
|- |
||
| VoiceId || [[#CgsSound::Logic::VoiceHierarchyNode::QueueElement |
| VoiceId || [[#CgsSound::Logic::VoiceHierarchyNode::QueueElement|QueueElement]] || 0x4 || |
||
|} |
|} |
||
Line 101: | Line 95: | ||
=== CgsSound::Logic::VoiceHierarchyNode::eVoiceType === |
=== CgsSound::Logic::VoiceHierarchyNode::eVoiceType === |
||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|||
! Name !! Value !! Comments |
! Name !! Value !! Comments |
||
|- |
|- |
Latest revision as of 08:12, 3 October 2023
VoiceHierarchy | |
---|---|
Type ID | 0x18 |
Category | Generic |
Memory distribution |
Main Memory only |
Editor available? |
No |
Voice hierarchy is a resource type found in Black 2 (2007-02-13 build).
Structures
CgsSound::Logic::VoiceHierarchy
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | VoiceHierarchyNode* | mpNodes | ||
0x4 | 0x4 | int32_t | miNumNodes | ||
0x8 | 0x4 | ExternalConnectionDescriptor* | mpExternalConnections | ||
0xC | 0x4 | int32_t | miNumExternalConnections | ||
0x10 | 0x4 | int32_t | miMapState | ||
0x14 | 0x1 | uint8_t | mu8DebugDataPresent | Indicates whether debug names are present? | |
0x15 | 0x3 | Padding |
CgsSound::Logic::VoiceHierarchyNode
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | char8_t* | mpcDebugName | Name of the node | |
0x4 | 0x4 | VoiceId | mId | ID of the node | Hash of the debug name. |
0x8 | 0x4 | VoiceId | mParentId | Parent ID of the node | Hash of the parent debug name. If this is the same as mId, the node has no parent. |
0xC | 0x4 | QueueElement | mDefaultSendName | Hash of default send descriptor name. | Hash is 0xA579E0DD. Unknown string. |
0x10 | 0x4 | SendDescriptor* | mpOtherSends | Always nullptr in available samples | |
0x14 | 0x4 | int32_t | miNumOtherSends | Always null in available samples | |
0x18 | 0x4 | QueueElement | mVoiceSpec | ||
0x1C | 0x4 | eVoiceType | meVoiceType | ||
0x20 | 0x1 | bool8_t | mb8IsGlobal | ||
0x21 | 0x3 | Padding |
CgsSound::Logic::SendDescriptor
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | QueueElement | mSendName | ||
0x4 | 0x4 | VoiceId | mVoiceId | ||
0x8 | 0x4 | int32_t | miTargetMapState | ||
0xC | 0x1 | bool8_t | mb8IsExternal | ||
0xD | 0x3 | Padding |
CgsSound::Logic::ExternalConnectionDescriptor
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | int32_t | miMapState | ||
0x4 | 0x4 | int32_t | miNodeIndex |
Typedefs
CgsSound::Logic::VoiceHierarchyNode::QueueElement
Name | Type | Length | Comments |
---|---|---|---|
QueueElement | uint32_t | 0x4 | Same hash algorithm as CgsSound::Playback::Name |
CgsSound::Logic::VoiceHierarchyNode::VoiceId
Name | Type | Length | Comments |
---|---|---|---|
VoiceId | QueueElement | 0x4 |
Enumerations
CgsSound::Logic::VoiceHierarchyNode::eVoiceType
Name | Value | Comments |
---|---|---|
E_VOICE_TYPE_INVALID | 0 | |
E_VOICE_TYPE_UNKNOWN | 1 | |
E_VOICE_TYPE_PLAYER | 2 | |
E_VOICE_TYPE_SUBMIX | 3 | |
E_VOICE_TYPE_COUNT | 4 |