Sound Driver Globals Asset: Difference between revisions

From COD Engine Research
No edit summary
No edit summary
Line 10: Line 10:
The global sound drivers asset (snddriverglobals) is part of the D3DBSP system produced by Radiant, and has existed on every CoD game so far. Only 1 is loaded into memory at a time, and they control how sound reacts in different rooms, particularly for 5.1 channel systems. While it has remained mostly unchanged on Infinity Ward games, Treyarch has completely changed it.
The global sound drivers asset (snddriverglobals) is part of the D3DBSP system produced by Radiant, and has existed on every CoD game so far. Only 1 is loaded into memory at a time, and they control how sound reacts in different rooms, particularly for 5.1 channel systems. While it has remained mostly unchanged on Infinity Ward games, Treyarch has completely changed it.
== Infinity Ward Games ==
== Infinity Ward Games ==
<syntaxhighlight lang="cpp">
struct XAUDIOREVERBSETTINGS
struct XAUDIOREVERBSETTINGS
{
{
Line 47: Line 48:
#else
#else
   XaReverbSettings (*reverbSettings)[0x1A];
   XaReverbSettings (*reverbSettings)[0x1A];
#endif
   const char *name;
   const char *name;
};
};
</syntaxhighlight>
== World at War ==
== World at War ==
<syntaxhighlight lang="cpp">
struct SndDriverGlobals
struct SndDriverGlobals
{
{
Line 55: Line 59:
       char unknown[0x5C00];
       char unknown[0x5C00];
};
};
</syntaxhighlight>
== Black Ops 1 ==
== Black Ops 1 ==
<syntaxhighlight lang="cpp">
struct SndDriverGlobals
struct SndDriverGlobals
{
{
Line 72: Line 78:
       char * masters; //Size = masterCount * 0xB0
       char * masters; //Size = masterCount * 0xB0
};
};
</syntaxhighlight>
== Black Ops 2 ==
== Black Ops 2 ==
<syntaxhighlight lang="cpp">
struct SndDriverGlobals
struct SndDriverGlobals
{
{
Line 93: Line 101:
       char * unknown5; //Size = unknownCount5 * 0x64
       char * unknown5; //Size = unknownCount5 * 0x64
};
};
</syntaxhighlight>

Revision as of 18:30, 31 January 2014

The global sound drivers asset (snddriverglobals) is part of the D3DBSP system produced by Radiant, and has existed on every CoD game so far. Only 1 is loaded into memory at a time, and they control how sound reacts in different rooms, particularly for 5.1 channel systems. While it has remained mostly unchanged on Infinity Ward games, Treyarch has completely changed it.

Infinity Ward Games

struct XAUDIOREVERBSETTINGS
{
  unsigned int ReflectionsDelay;
  char ReverbDelay;
  char RearDelay;
  char PositionLeft;
  char PositionRight;
  char PositionMatrixLeft;
  char PositionMatrixRight;
  char EarlyDiffusion;
  char LateDiffusion;
  char LowEQGain;
  char LowEQCutoff;
  char HighEQGain;
  char HighEQCutoff;
  float RoomFilterFreq;
  float RoomFilterMain;
  float RoomFilterHF;
  float ReflectionsGain;
  float ReverbGain;
  float DecayTime;
  float Density;
  float RoomSize;
};

struct XaReverbSettings
{
  int presetOverridden;
  XAUDIOREVERBSETTINGS reverbSettings;
};

struct SndDriverGlobals
{
#ifdef GHOSTS
  XaReverbSettings (*reverbSettings)[0x1C];
#else
  XaReverbSettings (*reverbSettings)[0x1A];
#endif
  const char *name;
};

World at War

struct SndDriverGlobals
{
  const char * name;
       char unknown[0x5C00];
};

Black Ops 1

struct SndDriverGlobals
{
  const char * name;
       unsigned int groupCount;
       char * groups; //Size = ((groupCount << 2) + groupCount) << 4
       unsigned int curveCount;
       char * curves; //Size = curveCount * 0x64
       unsigned int panCount;
       char * pans; //Size = panCount * 0x3C
       unsigned int snapshotGroupCount;
       char * snapshotGroups; //Size = snapshotGroupCount << 5
       unsigned int contextCount;
       char * contexts; //Size = ((contextCount << 2) + contextCount) << 3
       unsigned int masterCount;
       char * masters; //Size = masterCount * 0xB0
};

Black Ops 2

struct SndDriverGlobals
{
  const char * name;
       unsigned int groupCount;
       char * groups; //Size = ((groupCount << 2) + groupCount) << 4
       unsigned int curveCount;
       char * curves; //Size = curveCount * 0x64
       unsigned int panCount;
       char * pans; //Size = panCount * 0x3C
       unsigned int unknownCount1;
       char * unknown1; //Size = ((unknownCount1 << 3) + unknownCount1) << 2
       unsigned int unknownCount2;
       char * unknown2; //Size = ((unknownCount2 << 3) + unknownCount2) << 2
       unsigned int unknownCount3;
       char * unknown3; //Size = unknownCount3 * 0xF0
       unsigned int unknownCount4;
       char * unknown4; //Size = unknownCount4 * 0x3C
       unsigned int unknownCount5;
       char * unknown5; //Size = unknownCount5 * 0x64
};