Mercurial > mm7
view Media/Audio/AudioPlayer.h @ 2542:bacf9809126a
.
author | a.parshin |
---|---|
date | Sun, 10 May 2015 02:04:52 +0200 |
parents | abc6a9d079b9 |
children | d87bfbd3bb3b |
line wrap: on
line source
#pragma once #include "OSAPI.h" #include "Media/MediaPlayer.h" #pragma pack(push, 1) struct _PROVIDER {char unk_0;}; struct _SAMPLE {char unk_0;}; //struct _STREAM {char unk_0;}; struct _REDBOOK {char unk_0;}; struct _DIG_DRIVER {char unk_0;}; struct _SEQUENCE {char unk_0;}; #pragma pack(pop) /* 22 */ #pragma pack(push, 1) struct AudioPlayer_3DSample { inline AudioPlayer_3DSample() { hSample = 0; field_4 = 0; field_8 = 0; field_C = 0; } void *hSample; int field_4; int field_8; int field_C; }; #pragma pack(pop) /* 26 */ /*#pragma pack(push, 1) struct SoundHeader { char pSoundName[40]; unsigned int uFileOffset; unsigned int uCompressedSize; unsigned int uDecompressedSize; }; #pragma pack(pop)*/ /* 27 */ #pragma pack(push, 1) struct MixerChannel { inline MixerChannel(): hSample(nullptr), source_pid(0), uSourceTrackIdx(0), uSourceTrackID(0) {} _SAMPLE *hSample; int source_pid; unsigned int uSourceTrackIdx; unsigned int uSourceTrackID; }; #pragma pack(pop) /* 308 */ enum SoundID { SOUND_Invalid = 0, SOUND_enter = 6, SOUND_WoodDoorClosing = 7, SOUND_fireBall = 0x8, SOUND_ClickMinus = 0x14,//20 SOUND_ClickMovingSelector = 0x15,//21 SOUND_ClickPlus = 0x17,//23 SOUND_ClickSkill = 0x18,//24 SOUND_error = 27, SOUND_metal_vs_metal03h = 47, SOUND_48 = 0x30, SOUND_RunBadlands = 49, SOUND_RunCarpet = 50, SOUND_RunCooledLava = 51, SOUND_RunDesert = 52, SOUND_RunDirt = 53, SOUND_RunGrass = 54, SOUND_RunRoad = 57, SOUND_RunSnow = 58, SOUND_RunSwamp = 61, SOUND_RunWater = 62, SOUND_RunWaterIndoor = 63, SOUND_RunWood = 64, SOUND_SelectingANewCharacter = 66, SOUND_shoot_blaster01 = 67, SOUND_shoot_bow01 = 71, SOUND_StartMainChoice02 = 75, SOUND_swing_with_axe01 = 78, SOUND_swing_with_axe03 = 80, SOUND_swing_with_blunt_weapon01 = 81, SOUND_swing_with_blunt_weapon03 = 83, SOUND_swing_with_sword01 = 84, SOUND_swing_with_sword02 = 85, SOUND_WalkBadlands = 88, SOUND_WalkCarpet = 89, SOUND_WalkCooledLava = 90, SOUND_WalkDesert = 91, SOUND_WalkDirt = 92, SOUND_WalkGrass = 93, SOUND_WalkRoad = 96, SOUND_WalkSnow = 97, SOUND_WalkSwamp = 100, SOUND_WalkWater = 101, SOUND_WalkWaterIndoor = 102, SOUND_WalkWood = 103, SOUND_bricks_down = 0x78,//120 SOUND_bricks_up = 0x79, SOUND_damage = 0x7A, SOUND_deal = 0x7B, SOUND_defeat = 0x7C, SOUND_querry_up = 0x7D, SOUND_querry_down = 0x7E, SOUND_shuffle = 0x7F, SOUND_title = 0x80, SOUND_tower_up = 0x81, SOUND_typing = 0x82, SOUND_victory = 0x83, SOUND_wall_up = 0x84, SOUND_luteguitar = 133, // 85 SOUND_panflute = 134, // 86 SOUND_trumpet = 135, // 87 SOUND_gold01 = 0xC8,//200 SOUND_heal = 202, SOUND_fizzle = 203, SOUND_TurnPageU = 204, SOUND_batlleen = 206, SOUND_batllest = 207, SOUND_openchest0101 = 208, SOUND_spellfail0201 = 0xD1, SOUND_drink = 0xD2, SOUND_eat = 211, // D3 SOUND_gong = 0xD7, SOUND_hurp = 0xD9, SOUND_church = 0xDA, //218 SOUND_chimes = 0xDB, SOUND_splash = 220, SOUND_star1 = 0xDD, SOUND_star2 = 0xDE, SOUND_star4 = 0xE0, SOUND_eradicate = 0xE1, SOUND_eleccircle = 0xE2, SOUND_encounter = 0xE3, SOUND_openbook = 230, SOUND_closebook = 231, SOUND_hf445a = 5788, SOUND_Haste = 10040, SOUND_21fly03 = 11090, SOUND_WaterWalk = 12040, SOUND_Stoneskin = 13040, SOUND_Bless = 14010, SOUND_Fate = 14020, SOUND_51heroism03 = 14060, SOUND_94dayofprotection03 = 17070, SOUND_9armageddon01 = 17080, SOUND_Sacrifice2 = 18060, SOUND_quest = 20001, }; enum MusicID: unsigned __int32 { MUSIC_Credits = 15 }; /* 20 */ #pragma pack(push, 1) struct AudioPlayer { //----- (004A9669) -------------------------------------------------------- AudioPlayer(): bPlayerReady(false), b3DSoundInitialized(false), hAILRedbook(nullptr), hStream(nullptr) { /*AudioPlayer_3DSample *v0; //ecx@1 signed int v1; //edi@1 v0 = p3DSamples; v1 = 32; do { v0->field_4 = 0; v0->field_8 = 0; v0->field_C = 0; v0->hSample = 0; ++v0; --v1; } while (v1);*/ uMixerChannels = 16; field_2D0_time_left = 256; uNumRedbookTracks = 0; uCurrentMusicTrackLength = 0; field_2D4 = 0; s3DSoundVolume = 127; } inline ~AudioPlayer(){ Release(); }; void SetMusicVolume(int vol); void SetMasterVolume(float fVolume); void _4AA258(int a2); void PlaySound(SoundID eSoundID, signed int a3, unsigned int uNumRepeats, signed int a5, signed int a6, int a7, float uVolume, int sPlaybackRate); void UpdateSounds(); void StopChannels(int uStartChannel, int uEndChannel); void LoadAudioSnd();// void Initialize();// void CheckA3DSupport(bool query); void Release(); void FreeChannel(MixerChannel *pChannel); void _4ABF23(AudioPlayer_3DSample *a2); void SetEAXPreferences(); void SetMapEAX(); int _4AC0A2(); void PlayMusicTrack(enum MusicID eTrack); void MessWithChannels(); unsigned int bEAXSupported; unsigned int b3DSoundInitialized; int s3DSoundVolume; struct _PROVIDER *h3DSoundProvider; int uNum3DSamples; struct AudioPlayer_3DSample p3DSamples[32]; int field_214; int sRedbookVolume; char p3DSoundProvider[128]; unsigned int bPlayerReady; //HWND hWindow; class OSWindow *window; struct _REDBOOK *hAILRedbook; struct _DIG_DRIVER *hDigDriver; int dword_0002AC; struct _SEQUENCE *hSequence; int dword_0002B4; struct SoundHeader *pSoundHeaders; HANDLE hAudioSnd; unsigned int uNumSoundHeaders; unsigned int uMasterVolume; int dword_0002C8; int dword_0002CC; int field_2D0_time_left; int field_2D4; unsigned int uCurrentMusicTrackLength; unsigned int uNumRedbookTracks; unsigned int uCurrentMusicTrackStartMS; unsigned int uCurrentMusicTrackEndMS; struct MixerChannel pMixerChannels[16]; int uMixerChannels; int field_3EC; char pDeviceNames[16][128]; int pFrequency[16]; int array_000C30[16]; unsigned int uNumDevices; struct _STREAM *hStream; char field_C78[8]; int cGameCDDriveLetter; }; #pragma pack(pop) /* 325 */ enum SOUND_DESC_TYPE : __int32 { SOUND_DESC_LEVEL = 0x0, SOUND_DESC_SYSTEM = 0x1, SOUND_DESC_SWAP = 0x2, SOUND_DESC_3 = 0x3, SOUND_DESC_LOCK = 0x4, }; struct TSearchRec { int Time; int Size; int Attr; char Name[32]; int ExcludeAttr; int FindHandle; _WIN32_FIND_DATAA FindData; } ; /* 326 */ enum SOUND_DESC_FLAGS { SOUND_DESC_LOCKED = 0x1, SOUND_DESC_3D = 0x2, }; #pragma pack(push, 1) struct SoundData { unsigned int uDataSize; char pData[1]; }; struct SoundDesc_mm6 { inline bool Is3D() {return (uFlags & SOUND_DESC_3D) != 0;} char pSoundName[32]; unsigned int uSoundID; SOUND_DESC_TYPE eType; int uFlags; SoundData *pSoundData[17]; }; struct SoundDesc: public SoundDesc_mm6 { void *p3DSound; int bDecompressed; }; #pragma pack(pop) #pragma pack(push, 1) struct SoundList { inline SoundList(): sNumSounds(0), pSL_Sounds(nullptr), uTotalLoadedSoundSize(0) {} void Initialize(); __int16 LoadSound(int a1, unsigned int a3); int LoadSound(unsigned int a2, LPVOID lpBuffer, int uBufferSizeLeft, int *pOutSoundSize, int a6); SoundDesc *Release(); void _4A9D79(int a2); void UnloadSound(unsigned int uSoundID, char a3); void ToFile(); void FromFile(void *data_mm6, void *data_mm7, void *data_mm8); int FromFileTxt(const char *Args); signed int sNumSounds; SoundDesc *pSL_Sounds; unsigned int uTotalLoadedSoundSize; }; #pragma pack(pop) /* 241 */ #pragma pack(push, 1) struct Sound { unsigned int uID; char SoundName[120]; SoundData *pSoundData; }; #pragma pack(pop) extern int Aureal3D_SplashScreen; extern int Aureal3D_SplashAudio; extern int uFindSound_BinSearch_ResultID; // weak extern int uLastLoadedSoundID; // weak extern int sLastTrackLengthMS; extern std::array<Sound, 3000> pSounds; extern AudioPlayer *pAudioPlayer; extern SoundList *pSoundList; extern unsigned __int8 uSoundVolumeMultiplier; extern unsigned __int8 uVoicesVolumeMultiplier; extern unsigned __int8 uMusicVolimeMultiplier; extern int bWalkSound; // idb extern std::array<float, 10> pSoundVolumeLevels; // idb /* 379 */ #pragma pack(push, 1) struct stru339_spell_sound { int AddPartySpellSound(int uSoundID, int a6); char pSounds[44744]; int field_AEC8[45]; int field_AF7C[18]; int field_AFC4; int pSoundsSizes[2]; int pSoundsOffsets[2]; }; #pragma pack(pop) extern std::array<stru339_spell_sound, 4> stru_A750F8; extern std::array<stru339_spell_sound, 4> AA1058_PartyQuickSpellSound; struct SoundHeader *FindSound_BinSearch(unsigned int uStart, unsigned int uEnd, const char *pName); struct SoundData *LoadSound(const char *pSoundName, struct SoundData *pOutBuff, unsigned int uID); int __fastcall sub_4AB66C(int, int); // weak int GetSoundStrengthByDistanceFromParty(int x, int y, int z); void PlayLevelMusic();