2022-10-09 05:13:17 +00:00
|
|
|
#ifndef _CAUDIOSYS
|
|
|
|
#define _CAUDIOSYS
|
2022-08-13 01:26:00 +00:00
|
|
|
|
|
|
|
#include "types.h"
|
|
|
|
|
2023-01-07 21:24:16 +00:00
|
|
|
#include "rstl/map.hpp"
|
|
|
|
#include "rstl/rc_ptr.hpp"
|
|
|
|
#include "rstl/string.hpp"
|
|
|
|
#include "rstl/vector.hpp"
|
|
|
|
|
2022-12-01 13:45:36 +00:00
|
|
|
#include "Kyoto/Math/CVector3f.hpp"
|
|
|
|
|
2023-01-07 21:24:16 +00:00
|
|
|
class CAudioGroupSet;
|
|
|
|
|
2022-09-13 04:26:54 +00:00
|
|
|
enum ETRKSampleRate {
|
|
|
|
kTSR_Zero,
|
|
|
|
kTSR_One,
|
|
|
|
// TODO
|
|
|
|
};
|
|
|
|
|
|
|
|
enum ETRKRepeatMode {
|
|
|
|
// TODO
|
|
|
|
};
|
|
|
|
|
2022-08-13 01:26:00 +00:00
|
|
|
class CAudioSys {
|
2023-01-07 21:24:16 +00:00
|
|
|
static const rstl::string mpDefaultInvalidString;
|
|
|
|
|
2022-08-13 01:26:00 +00:00
|
|
|
public:
|
2022-10-31 16:19:28 +00:00
|
|
|
enum ESurroundModes { kSM_Mono, kSM_Stereo, kSM_Surround };
|
2023-01-07 21:24:16 +00:00
|
|
|
class CEmitterData {
|
2023-01-08 01:42:15 +00:00
|
|
|
public:
|
|
|
|
CEmitterData() : _50(0), _51(0), _52(kEmitterMedPriority){};
|
|
|
|
|
|
|
|
private:
|
|
|
|
char data[0x50];
|
|
|
|
char _50;
|
|
|
|
char _51;
|
|
|
|
uchar _52;
|
2023-01-07 21:24:16 +00:00
|
|
|
};
|
2022-10-31 16:19:28 +00:00
|
|
|
|
2022-12-01 13:45:36 +00:00
|
|
|
struct C3DEmitterParmData {
|
|
|
|
C3DEmitterParmData(const CVector3f& pos, const CVector3f& dir, float maxDist, float distComp,
|
|
|
|
uint flags, ushort sfxId, float maxVol, float minVol, bool important,
|
|
|
|
uchar prio)
|
|
|
|
: x0_pos(pos)
|
|
|
|
, xc_dir(dir)
|
|
|
|
, x18_maxDist(maxDist)
|
|
|
|
, x1c_distComp(distComp)
|
|
|
|
, x20_flags(flags)
|
|
|
|
, x24_sfxId(sfxId)
|
|
|
|
, x26_maxVol(maxVol)
|
|
|
|
, x27_minVol(minVol)
|
|
|
|
, x28_important(important)
|
|
|
|
, x29_prio(prio) {}
|
|
|
|
|
|
|
|
CVector3f x0_pos;
|
|
|
|
CVector3f xc_dir;
|
|
|
|
float x18_maxDist;
|
|
|
|
float x1c_distComp;
|
|
|
|
uint x20_flags;
|
|
|
|
ushort x24_sfxId;
|
|
|
|
float x26_maxVol;
|
|
|
|
float x27_minVol;
|
|
|
|
bool x28_important; // Can't be allocated over, regardless of priority
|
|
|
|
uchar x29_prio;
|
|
|
|
};
|
|
|
|
|
2023-01-07 21:24:16 +00:00
|
|
|
class CTrkData {};
|
|
|
|
|
|
|
|
CAudioSys(char, char, char, char, uint);
|
2022-10-01 06:19:09 +00:00
|
|
|
~CAudioSys();
|
2022-09-13 04:26:54 +00:00
|
|
|
|
2022-10-09 05:37:23 +00:00
|
|
|
static void SysSetVolume(uchar, uint, uchar);
|
2022-10-31 16:19:28 +00:00
|
|
|
static void SysSetSfxVolume(uchar, ushort, uchar, uchar);
|
|
|
|
|
2022-10-09 05:37:23 +00:00
|
|
|
static void SetDefaultVolumeScale(short);
|
|
|
|
static void SetVolumeScale(short);
|
2022-10-31 16:19:28 +00:00
|
|
|
static void SetSurroundMode(ESurroundModes);
|
2022-09-13 04:26:54 +00:00
|
|
|
static void TrkSetSampleRate(ETRKSampleRate);
|
|
|
|
|
2022-10-09 05:37:23 +00:00
|
|
|
static short GetDefaultVolumeScale();
|
2023-01-08 01:42:15 +00:00
|
|
|
static bool GetVerbose();
|
2022-09-13 04:26:54 +00:00
|
|
|
|
2023-01-07 21:24:16 +00:00
|
|
|
static bool mInitialized;
|
2023-01-08 01:42:15 +00:00
|
|
|
static bool mIsListenerActive;
|
2023-01-07 21:24:16 +00:00
|
|
|
static bool mVerbose;
|
|
|
|
static uchar mMaxNumEmitters;
|
|
|
|
static rstl::map< rstl::string, rstl::ncrc_ptr< CAudioGroupSet > >* mpGroupSetDB;
|
|
|
|
static rstl::map< uint, rstl::string >* mpGroupSetResNameDB;
|
|
|
|
static rstl::map< rstl::string, rstl::ncrc_ptr< CTrkData > >* mpDVDTrackDB;
|
2023-01-08 01:42:15 +00:00
|
|
|
static rstl::vector< CEmitterData >* mpEmitterDB;
|
2023-01-07 21:24:16 +00:00
|
|
|
static unkptr mpListener;
|
|
|
|
|
|
|
|
/* TODO: Remaining globals */
|
|
|
|
|
|
|
|
static ESurroundModes mSurroundMode;
|
|
|
|
static uint mMaxAramUsage;
|
2023-01-08 01:42:15 +00:00
|
|
|
static uint mCurrentAramUsage;
|
2023-01-07 21:24:16 +00:00
|
|
|
static bool mProLogic2;
|
2022-10-09 05:37:23 +00:00
|
|
|
static const uchar kMaxVolume;
|
2023-01-08 01:42:15 +00:00
|
|
|
static uchar kEmitterMedPriority;
|
2022-08-13 01:26:00 +00:00
|
|
|
};
|
|
|
|
|
2022-10-09 05:13:17 +00:00
|
|
|
#endif // _CAUDIOSYS
|