diff options
Diffstat (limited to 'src/audio/AudioManager.h')
-rw-r--r-- | src/audio/AudioManager.h | 379 |
1 files changed, 215 insertions, 164 deletions
diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 187a71a8..df978d5b 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -3,6 +3,8 @@ #include "audio_enums.h" #include "AudioCollision.h" #include "PolRadio.h" +#include "VehicleModelInfo.h" +#include "Vehicle.h" class tSound { @@ -30,6 +32,7 @@ public: uint8 m_nLoopsRemaining; bool8 m_bRequireReflection; // Used for oneshots uint8 m_nOffset; + uint8 field_4C; int32 m_nReleasingVolumeDivider; bool8 m_bIsProcessed; bool8 m_bLoopEnded; @@ -37,7 +40,7 @@ public: int8 m_nVolumeChange; }; -VALIDATE_SIZE(tSound, 92); +VALIDATE_SIZE(tSound, 96); class CPhysical; class CAutomobile; @@ -59,7 +62,7 @@ VALIDATE_SIZE(tAudioEntity, 40); class tPedComment { public: - int32 m_nSampleIndex; + uint32 m_nSampleIndex; int32 m_nEntityIndex; CVector m_vecPos; float m_fDistance; @@ -76,6 +79,10 @@ public: uint8 m_nIndexMap[NUM_PED_COMMENTS_BANKS][NUM_PED_COMMENTS_SLOTS]; uint8 m_nCommentsInBank[NUM_PED_COMMENTS_BANKS]; uint8 m_nActiveBank; +#ifdef GTA_PC + bool8 m_bDelay; + uint32 m_nDelayTimer; +#endif cPedComments() { @@ -93,23 +100,28 @@ public: void Process(); }; -VALIDATE_SIZE(cPedComments, 1164); +VALIDATE_SIZE(cPedComments, 0x490); class CEntity; +#define MISSION_AUDIO_SLOTS (2) + +// So instead of doing cMissionAudio [2] they've added [2] to every field of the struct... +// Only someone with a VERY EXTRAORDINARY mind could have come up with that class cMissionAudio { public: - CVector m_vecPos; - bool8 m_bPredefinedProperties; - int32 m_nSampleIndex; - uint8 m_nLoadingStatus; - uint8 m_nPlayStatus; - bool8 m_bIsPlaying; - int32 m_nMissionAudioCounter; - bool8 m_bIsPlayed; + CVector m_vecPos[MISSION_AUDIO_SLOTS]; + bool8 m_bPredefinedProperties[MISSION_AUDIO_SLOTS]; + int32 m_nSampleIndex[MISSION_AUDIO_SLOTS]; + uint8 m_nLoadingStatus[MISSION_AUDIO_SLOTS]; + uint8 m_nPlayStatus[MISSION_AUDIO_SLOTS]; + bool8 m_bIsPlaying[MISSION_AUDIO_SLOTS]; + int32 m_nMissionAudioCounter[MISSION_AUDIO_SLOTS]; + bool8 m_bIsPlayed[MISSION_AUDIO_SLOTS]; + bool8 m_bIsMobile[MISSION_AUDIO_SLOTS]; }; -VALIDATE_SIZE(cMissionAudio, 32); +VALIDATE_SIZE(cMissionAudio, 0x38); // name made up class cAudioScriptObjectManager @@ -146,6 +158,7 @@ public: class cVehicleParams { public: + int32 m_VehicleType; bool8 m_bDistanceCalculated; float m_fDistance; CVehicle *m_pVehicle; @@ -155,6 +168,7 @@ public: cVehicleParams() { + m_VehicleType = -1; m_bDistanceCalculated = false; m_fDistance = 0.0f; m_pVehicle = nil; @@ -164,22 +178,17 @@ public: } }; -VALIDATE_SIZE(cVehicleParams, 0x18); +VALIDATE_SIZE(cVehicleParams, 0x1C); enum { - /* - REFLECTION_YMAX = 0, top - REFLECTION_YMIN = 1, bottom - REFLECTION_XMIN = 2, left - REFLECTION_XMAX = 3, right - REFLECTION_ZMAX = 4, - */ - - REFLECTION_TOP = 0, - REFLECTION_BOTTOM, - REFLECTION_LEFT, - REFLECTION_RIGHT, - REFLECTION_UP, + REFLECTION_NORTH = 0, + REFLECTION_SOUTH, + REFLECTION_WEST, + REFLECTION_EAST, + REFLECTION_CEIL_NORTH, + REFLECTION_CEIL_SOUTH, + REFLECTION_CEIL_WEST, + REFLECTION_CEIL_EAST, MAX_REFLECTIONS, }; @@ -190,11 +199,12 @@ class cAudioManager { public: bool8 m_bIsInitialised; - bool8 m_bReverb; // unused + uint8 m_bReverb; // unused bool8 m_bFifthFrameFlag; uint8 m_nActiveSamples; uint8 field_4; // unused bool8 m_bDynamicAcousticModelingStatus; + int8 field_6; float m_fSpeedOfSound; bool8 m_bTimerJustReset; int32 m_nTimer; @@ -212,6 +222,14 @@ public: float m_afReflectionsDistances[NUM_AUDIO_REFLECTIONS]; #endif cAudioScriptObjectManager m_sAudioScriptObjectManager; + + // miami + bool8 m_bIsPlayerShutUp; + uint8 m_nPlayerMood; + uint32 m_nPlayerMoodTimer; + uint8 field_rest[4]; + bool8 m_bGenericSfx; + cPedComments m_sPedComments; int32 m_nFireAudioEntity; int32 m_nWaterCannonEntity; @@ -221,8 +239,13 @@ public: int32 m_nCollisionEntity; cAudioCollisionManager m_sCollisionManager; int32 m_nProjectileEntity; +#ifdef GTA_BRIDGE int32 m_nBridgeEntity; +#endif + int32 m_nEscalatorEntity; + int32 m_nExtraSoundsEntity; cMissionAudio m_sMissionAudio; + uint8 field_5538; // something related to phone dialogues int32 m_anRandomTable[5]; uint8 m_nTimeSpent; uint8 m_nUserPause; @@ -236,23 +259,25 @@ public: void Terminate(); void Service(); int32 CreateEntity(eAudioType type, void *entity); - void DestroyEntity(int32 id); + void DestroyEntity(int32 id); // inlined in vc bool8 GetEntityStatus(int32 id); void SetEntityStatus(int32 id, bool8 status); void *GetEntityPointer(int32 id); void PlayOneShot(int32 index, uint16 sound, float vol); void SetEffectsMasterVolume(uint8 volume); void SetMusicMasterVolume(uint8 volume); + void SetMP3BoostVolume(uint8 volume); void SetEffectsFadeVol(uint8 volume); void SetMusicFadeVol(uint8 volume); - void SetMonoMode(bool8 mono); + void SetOutputMode(bool8 surround); void ResetTimers(uint32 time); void DestroyAllGameCreatedEntities(); - + #ifdef GTA_PC uint8 GetNum3DProvidersAvailable(); char *Get3DProviderName(uint8 id); int8 GetCurrent3DProviderIndex(); + int8 AutoDetect3DProviders(); int8 SetCurrent3DProvider(uint8 which); void SetSpeakerConfig(int32 conf); bool8 IsMP3RadioChannelAvailable(); @@ -265,29 +290,29 @@ public: #endif void ServiceSoundEffects(); - uint32 FL(float f); // not used uint8 ComputeVolume(uint8 emittingVolume, float soundIntensity, float distance); void TranslateEntity(Const CVector *v1, CVector *v2); + int32 ComputeFrontRearMix(float, CVector *); int32 ComputePan(float, CVector *); - uint32 ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, float position2, float speedMultiplier); // inlined on PS2 + uint32 ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, float position2, float speedMultiplier); int32 RandomDisplacement(uint32 seed); - void InterrogateAudioEntities(); // inlined on PS2 + void InterrogateAudioEntities(); // inlined void AddSampleToRequestedQueue(); - void AddDetailsToRequestedOrderList(uint8 sample); // inlined on PS2 + void AddDetailsToRequestedOrderList(uint8 sample); // inlined in vc #ifdef GTA_PC void AddReflectionsToRequestedQueue(); void UpdateReflections(); #endif void AddReleasingSounds(); void ProcessActiveQueues(); - void ClearRequestedQueue(); // inlined on PS2 + void ClearRequestedQueue(); // inlined in vc void ClearActiveSamples(); - void GenerateIntegerRandomNumberTable(); // inlined on PS2 - void LoadBankIfNecessary(uint8 bank); // this is used only on PS2 but technically not a platform code + void GenerateIntegerRandomNumberTable(); + void LoadBankIfNecessary(uint8 bank); #ifdef GTA_PC - void AdjustSamplesVolume(); - uint8 ComputeEmittingVolume(uint8 emittingVolume, float intensity, float dist); + void AdjustSamplesVolume(); // inlined + uint8 ComputeEmittingVolume(uint8 emittingVolume, float intensity, float dist); // inlined #endif // audio logic @@ -297,145 +322,174 @@ public: void PostTerminateGameSpecificShutdown(); void ResetAudioLogicTimers(uint32 timer); void ProcessReverb(); - float GetDistanceSquared(const CVector &v); + float GetDistanceSquared(const CVector &v); // inlined in vc void CalculateDistance(bool8 &condition, float dist); + CVehicle *FindVehicleOfPlayer(); void ProcessSpecial(); void ProcessEntity(int32 sound); void ProcessPhysical(int32 id); // vehicles void ProcessVehicle(CVehicle *vehicle); + void ProcessCarHeli(cVehicleParams ¶ms); void ProcessRainOnVehicle(cVehicleParams ¶ms); bool8 ProcessReverseGear(cVehicleParams ¶ms); - void ProcessModelCarEngine(cVehicleParams ¶ms); + void ProcessModelHeliVehicle(cVehicleParams ¶ms); + void ProcessModelVehicle(cVehicleParams ¶ms); + void ProcessVehicleFlatTyre(cVehicleParams ¶ms); bool8 ProcessVehicleRoadNoise(cVehicleParams ¶ms); bool8 ProcessWetRoadNoise(cVehicleParams ¶ms); void ProcessVehicleEngine(cVehicleParams ¶ms); - void UpdateGasPedalAudio(CAutomobile *automobile); // inlined on PS2 + void UpdateGasPedalAudio(CVehicle *veh, int vehType); void PlayerJustGotInCar(); void PlayerJustLeftCar(); void AddPlayerCarSample(uint8 emittingVolume, uint32 freq, uint32 sample, uint8 bank, uint8 counter, bool8 notLooping); void ProcessCesna(cVehicleParams ¶ms); - void ProcessPlayersVehicleEngine(cVehicleParams ¶ms, CAutomobile *automobile); + void ProcessPlayersVehicleEngine(cVehicleParams ¶ms, CVehicle *veh); bool8 ProcessVehicleSkidding(cVehicleParams ¶ms); - float GetVehicleDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, cTransmission *transmission, float velocityChange); - float GetVehicleNonDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, cTransmission *transmission, float velocityChange); // inlined on PS2 - void ProcessVehicleHorn(cVehicleParams ¶ms); - bool8 UsesSiren(uint32 model); // inlined on PS2 - bool8 UsesSirenSwitching(uint32 model); // inlined on PS2 + float GetVehicleDriveWheelSkidValue(CVehicle *veh, tWheelState wheelState, float gasPedalAudio, cTransmission *transmission, float velocityChange); + float GetVehicleNonDriveWheelSkidValue(CVehicle *veh, tWheelState wheelState, cTransmission *transmission, float velocityChange); + bool8 ProcessVehicleHorn(cVehicleParams ¶ms); + bool8 UsesSiren(cVehicleParams ¶ms); + bool8 UsesSirenSwitching(cVehicleParams ¶ms); bool8 ProcessVehicleSirenOrAlarm(cVehicleParams ¶ms); - bool8 UsesReverseWarning(uint32 model); // inlined on PS2 + bool8 UsesReverseWarning(uint32 model); bool8 ProcessVehicleReverseWarning(cVehicleParams ¶ms); bool8 ProcessVehicleDoors(cVehicleParams ¶ms); bool8 ProcessAirBrakes(cVehicleParams ¶ms); - bool8 HasAirBrakes(uint32 model); // inlined on PS2 + bool8 HasAirBrakes(uint32 model); bool8 ProcessEngineDamage(cVehicleParams ¶ms); bool8 ProcessCarBombTick(cVehicleParams ¶ms); void ProcessVehicleOneShots(cVehicleParams ¶ms); +#ifdef GTA_TRAIN bool8 ProcessTrainNoise(cVehicleParams ¶ms); +#endif bool8 ProcessBoatEngine(cVehicleParams ¶ms); bool8 ProcessBoatMovingOverWater(cVehicleParams ¶ms); - bool8 ProcessHelicopter(cVehicleParams ¶ms); - void ProcessPlane(cVehicleParams ¶ms); // inlined on PS2 + void ProcessPlane(cVehicleParams ¶ms); void ProcessJumbo(cVehicleParams ¶ms); - void ProcessJumboTaxi(); // inlined on PS2 + void ProcessJumboTaxi(); void ProcessJumboAccel(CPlane *plane); - void ProcessJumboTakeOff(CPlane *plane); // inlined on PS2 - void ProcessJumboFlying(); // inlined on PS2 - void ProcessJumboLanding(CPlane *plane); // inlined on PS2 - void ProcessJumboDecel(CPlane *plane); // inlined on PS2 + void ProcessJumboTakeOff(CPlane *plane); + void ProcessJumboFlying(); + void ProcessJumboLanding(CPlane *plane); + void ProcessJumboDecel(CPlane *plane); bool8 SetupJumboTaxiSound(uint8 vol); bool8 SetupJumboWhineSound(uint8 emittingVol, uint32 freq); bool8 SetupJumboEngineSound(uint8 vol, uint32 freq); bool8 SetupJumboFlySound(uint8 emittingVol); bool8 SetupJumboRumbleSound(uint8 emittingVol); - int32 GetJumboTaxiFreq(); // inlined on PS2 + int32 GetJumboTaxiFreq(); // inlined in vc // peds - void ProcessPed(CPhysical *ped); // inlined on PS2 - void ProcessPedHeadphones(cPedParams ¶ms); + void ProcessPed(CPhysical *ped); void ProcessPedOneShots(cPedParams ¶ms); + void SetPedTalkingStatus(CPed *ped, bool8 status); + void SetPlayersMood(uint8 mood, uint32 time); + void ProcessPlayerMood(); // ped comments void SetupPedComments(cPedParams ¶ms, uint16 sound); - int32 GetPedCommentSfx(CPed *ped, uint16 sound); - void GetPhrase(uint32 &phrase, uint32 &prevPhrase, uint32 sample, uint32 maxOffset); // inlined on PS2 - uint32 GetPlayerTalkSfx(uint16 sound); // inlined on PS2 - uint32 GetCopTalkSfx(uint16 sound); - uint32 GetSwatTalkSfx(uint16 sound); - uint32 GetFBITalkSfx(uint16 sound); - uint32 GetArmyTalkSfx(uint16 sound); - uint32 GetMedicTalkSfx(uint16 sound); - uint32 GetFiremanTalkSfx(uint16 sound); // inlined on PS2 - uint32 GetBusinessMaleOldTalkSfx(uint16 sound); - uint32 GetBusinessMaleYoungTalkSfx(uint16 sound, uint32 model); - uint32 GetMafiaTalkSfx(uint16 sound); - uint32 GetTriadTalkSfx(uint16 sound); - uint32 GetDiabloTalkSfx(uint16 sound); - uint32 GetYakuzaTalkSfx(uint16 sound); - uint32 GetYardieTalkSfx(uint16 sound); - uint32 GetColumbianTalkSfx(uint16 sound); - uint32 GetHoodTalkSfx(uint16 sound); - uint32 GetBlackCriminalTalkSfx(uint16 sound); - uint32 GetWhiteCriminalTalkSfx(uint16 sound); - uint32 GetCasualMaleOldTalkSfx(uint16 sound); - uint32 GetCasualMaleYoungTalkSfx(uint16 sound); - uint32 GetBlackCasualFemaleTalkSfx(uint16 sound); - uint32 GetWhiteCasualFemaleTalkSfx(uint16 sound); - uint32 GetFemaleNo3TalkSfx(uint16 sound); - uint32 GetWhiteBusinessFemaleTalkSfx(uint16 sound, uint32 model); - uint32 GetBlackFatFemaleTalkSfx(uint16 sound); - uint32 GetWhiteFatMaleTalkSfx(uint16 sound); - uint32 GetBlackFatMaleTalkSfx(uint16 sound); - uint32 GetWhiteFatFemaleTalkSfx(uint16 sound); - uint32 GetBlackFemaleProstituteTalkSfx(uint16 sound); - uint32 GetWhiteFemaleProstituteTalkSfx(uint16 sound); - uint32 GetBlackProjectMaleTalkSfx(uint16 sound, uint32 model); - uint32 GetBlackProjectFemaleOldTalkSfx(uint16 sound); - uint32 GetBlackProjectFemaleYoungTalkSfx(uint16 sound); - uint32 GetChinatownMaleOldTalkSfx(uint16 sound); - uint32 GetChinatownMaleYoungTalkSfx(uint16 sound); - uint32 GetChinatownFemaleOldTalkSfx(uint16 sound); - uint32 GetChinatownFemaleYoungTalkSfx(uint16 sound); - uint32 GetLittleItalyMaleTalkSfx(uint16 sound); - uint32 GetLittleItalyFemaleOldTalkSfx(uint16 sound); - uint32 GetLittleItalyFemaleYoungTalkSfx(uint16 sound); - uint32 GetWhiteDockerMaleTalkSfx(uint16 sound); - uint32 GetBlackDockerMaleTalkSfx(uint16 sound); - uint32 GetScumMaleTalkSfx(uint16 sound); - uint32 GetScumFemaleTalkSfx(uint16 sound); - uint32 GetWhiteWorkerMaleTalkSfx(uint16 sound); - uint32 GetBlackWorkerMaleTalkSfx(uint16 sound); - uint32 GetBlackBusinessFemaleTalkSfx(uint16 sound); - uint32 GetSupermodelMaleTalkSfx(uint16 sound); - uint32 GetSupermodelFemaleTalkSfx(uint16 sound); - uint32 GetStewardMaleTalkSfx(uint16 sound); - uint32 GetStewardFemaleTalkSfx(uint16 sound); - uint32 GetFanMaleTalkSfx(uint16 sound, uint32 model); - uint32 GetFanFemaleTalkSfx(uint16 sound); - uint32 GetHospitalMaleTalkSfx(uint16 sound); - uint32 GetHospitalFemaleTalkSfx(uint16 sound); // inlined on PS2 - uint32 GetWhiteConstructionWorkerTalkSfx(uint16 sound); - uint32 GetBlackConstructionWorkerTalkSfx(uint16 sound); - uint32 GetShopperFemaleTalkSfx(uint16 sound, uint32 model); - uint32 GetStudentMaleTalkSfx(uint16 sound); - uint32 GetStudentFemaleTalkSfx(uint16 sound); - - uint32 GetSpecialCharacterTalkSfx(uint32 modelIndex, uint16 sound); - uint32 GetEightBallTalkSfx(uint16 sound); // inlined on PS2 - uint32 GetSalvatoreTalkSfx(uint16 sound); // inlined on PS2 - uint32 GetMistyTalkSfx(uint16 sound); - uint32 GetOldJapTalkSfx(uint16 sound); // inlined on PS2 - uint32 GetCatalinaTalkSfx(uint16 sound); // inlined on PS2 - uint32 GetBomberTalkSfx(uint16 sound); // inlined on PS2 - uint32 GetSecurityGuardTalkSfx(uint16 sound); - uint32 GetChunkyTalkSfx(uint16 sound); // inlined on PS2 - - uint32 GetAsianTaxiDriverTalkSfx(uint16 sound); // inlined on PS2 - uint32 GetPimpTalkSfx(uint16 sound); - uint32 GetNormalMaleTalkSfx(uint16 sound); - uint32 GetGenericMaleTalkSfx(uint16 sound); - uint32 GetGenericFemaleTalkSfx(uint16 sound); + uint32 GetPedCommentSfx(CPed *ped, uint16 sound); + void GetPhrase(uint32 &phrase, uint32 &prevPhrase, uint32 sample, uint32 maxOffset); + uint32 GetPlayerTalkSfx(CPed *ped, uint16 sound); + uint32 GetGenericMaleTalkSfx(CPed *ped, uint16 sound); // inlined in vc + uint32 GetGenericFemaleTalkSfx(CPed *ped, uint16 sound); // inlined in vc + uint32 GetDefaultTalkSfx(CPed *ped, uint16 sound); + uint32 GetCopTalkSfx(CPed *ped, uint16 sound); + uint32 GetSwatTalkSfx(CPed *ped, uint16 sound); + uint32 GetFBITalkSfx(CPed *ped, uint16 sound); + uint32 GetArmyTalkSfx(CPed *ped, uint16 sound); + uint32 GetMedicTalkSfx(CPed *ped, uint16 sound); + uint32 GetFiremanTalkSfx(CPed *ped, uint16 sound); + uint32 GetWFYG1TalkSfx(CPed *ped, uint16 sound); + uint32 GetWFYG2TalkSfx(CPed *ped, uint16 sound); + uint32 GetHFYSTTalkSfx(CPed *ped, uint16 sound); + uint32 GetHFOSTTalkSfx(CPed *ped, uint16 sound); + uint32 GetHMYSTTalkSfx(CPed *ped, uint16 sound); + uint32 GetHMOSTTalkSfx(CPed *ped, uint16 sound); + uint32 GetHFYRITalkSfx(CPed *ped, uint16 sound); + uint32 GetHFORITalkSfx(CPed *ped, uint16 sound); + uint32 GetHMYRITalkSfx(CPed *ped, uint16 sound); + uint32 GetHMORITalkSfx(CPed *ped, uint16 sound); + uint32 GetHFYBETalkSfx(CPed *ped, uint16 sound); + uint32 GetHFOBETalkSfx(CPed *ped, uint16 sound); + uint32 GetHMYBETalkSfx(CPed *ped, uint16 sound); + uint32 GetHMOBETalkSfx(CPed *ped, uint16 sound); + uint32 GetHFYBUTalkSfx(CPed *ped, uint16 sound); + uint32 GetHFYMDTalkSfx(CPed *ped, uint16 sound); + uint32 GetHFYCGTalkSfx(CPed *ped, uint16 sound); + uint32 GetHFYPRTalkSfx(CPed *ped, uint16 sound); + uint32 GetHFOTRTalkSfx(CPed *ped, uint16 sound); + uint32 GetHMOTRTalkSfx(CPed *ped, uint16 sound); + uint32 GetHMOCATalkSfx(CPed *ped, uint16 sound); + uint32 GetBMYCRTalkSfx(CPed *ped, uint16 sound); + uint32 GetBFYSTTalkSfx(CPed *ped, uint16 sound); + uint32 GetBFOSTTalkSfx(CPed *ped, uint16 sound); + uint32 GetBMYSTTalkSfx(CPed *ped, uint16 sound); + uint32 GetBMOSTTalkSfx(CPed *ped, uint16 sound); + uint32 GetBFYRITalkSfx(CPed *ped, uint16 sound); + uint32 GetBFORITalkSfx(CPed *ped, uint16 sound); + uint32 GetBMYRITalkSfx(CPed *ped, uint16 sound); + uint32 GetBFYBETalkSfx(CPed *ped, uint16 sound); + uint32 GetBMYBETalkSfx(CPed *ped, uint16 sound); + uint32 GetBFOBETalkSfx(CPed *ped, uint16 sound); + uint32 GetBMOBETalkSfx(CPed *ped, uint16 sound); + uint32 GetBMYBUTalkSfx(CPed *ped, uint16 sound); + uint32 GetBFYPRTalkSfx(CPed *ped, uint16 sound); + uint32 GetBFOTRTalkSfx(CPed *ped, uint16 sound); + uint32 GetBMOTRTalkSfx(CPed *ped, uint16 sound); + uint32 GetBMYPITalkSfx(CPed *ped, uint16 sound); + uint32 GetBMYBBTalkSfx(CPed *ped, uint16 sound); + uint32 GetWMYCRTalkSfx(CPed *ped, uint16 sound); + uint32 GetWFYSTTalkSfx(CPed *ped, uint16 sound); + uint32 GetWFYSKTalkSfx(CPed *ped, uint16 sound); + uint32 GetWMYSKTalkSfx(CPed *ped, uint16 sound); + uint32 GetWFOSTTalkSfx(CPed *ped, uint16 sound); + uint32 GetWMYSTTalkSfx(CPed *ped, uint16 sound); + uint32 GetWMOSTTalkSfx(CPed *ped, uint16 sound); + uint32 GetWFYRITalkSfx(CPed *ped, uint16 sound); + uint32 GetWFORITalkSfx(CPed *ped, uint16 sound); + uint32 GetWMYRITalkSfx(CPed *ped, uint16 sound); + uint32 GetWMORITalkSfx(CPed *ped, uint16 sound); + uint32 GetWFYBETalkSfx(CPed *ped, uint16 sound); + uint32 GetWMYBETalkSfx(CPed *ped, uint16 sound); + uint32 GetWFOBETalkSfx(CPed *ped, uint16 sound); + uint32 GetWMOBETalkSfx(CPed *ped, uint16 sound); + uint32 GetWMYCWTalkSfx(CPed *ped, uint16 sound); + uint32 GetWMYGOTalkSfx(CPed *ped, uint16 sound); + uint32 GetWFOGOTalkSfx(CPed *ped, uint16 sound); + uint32 GetWMOGOTalkSfx(CPed *ped, uint16 sound); + uint32 GetWFYLGTalkSfx(CPed *ped, uint16 sound); + uint32 GetWMYLGTalkSfx(CPed *ped, uint16 sound); + uint32 GetWFYBUTalkSfx(CPed *ped, uint16 sound); + uint32 GetWMYBUTalkSfx(CPed *ped, uint16 sound); + uint32 GetWMOBUTalkSfx(CPed *ped, uint16 sound); + uint32 GetWFYPRTalkSfx(CPed *ped, uint16 sound); + uint32 GetWFOTRTalkSfx(CPed *ped, uint16 sound); + uint32 GetWMOTRTalkSfx(CPed *ped, uint16 sound); + uint32 GetWMYPITalkSfx(CPed *ped, uint16 sound); + uint32 GetWMOCATalkSfx(CPed *ped, uint16 sound); + uint32 GetWFYSHTalkSfx(CPed *ped, uint16 sound); + uint32 GetWFOSHTalkSfx(CPed *ped, uint16 sound); + uint32 GetJFOTOTalkSfx(CPed *ped, uint16 sound); + uint32 GetJMOTOTalkSfx(CPed *ped, uint16 sound); + uint32 GetHNTalkSfx(CPed *ped, uint16 sound); + uint32 GetBKTalkSfx(CPed *ped, uint16 sound); + uint32 GetCBTalkSfx(CPed *ped, uint16 sound); + uint32 GetSGTalkSfx(CPed *ped, uint16 sound); + uint32 GetCLTalkSfx(CPed *ped, uint16 sound); + uint32 GetGDTalkSfx(CPed *ped, uint16 sound); + uint32 GetPGTalkSfx(CPed *ped, uint16 sound); + uint32 GetViceWhiteTalkSfx(CPed *ped, uint16 sound); + uint32 GetViceBlackTalkSfx(CPed *ped, uint16 sound); + uint32 GetBMODKTalkSfx(CPed *ped, uint16 sound); + uint32 GetHMYAPTalkSfx(CPed *ped, uint16 sound); + uint32 GetWFYJGTalkSfx(CPed *ped, uint16 sound); + uint32 GetWMYJGTalkSfx(CPed *ped, uint16 sound); + uint32 GetSpecialCharacterTalkSfx(CPed *ped, int32 model, uint16 sound); + + void DebugPlayPedComment(int32 sound); // particles void ProcessExplosions(int32 explosion); @@ -443,51 +497,46 @@ public: void ProcessWaterCannon(int32); // script objects - void ProcessScriptObject(int32 id); // inlined on PS2 + void ProcessScriptObject(int32 id); void ProcessOneShotScriptObject(uint8 sound); void ProcessLoopingScriptObject(uint8 sound); - void ProcessPornCinema(uint8 sound); - void ProcessWorkShopScriptObject(uint8 sound); - void ProcessSawMillScriptObject(uint8 sound); - void ProcessLaunderetteScriptObject(uint8 sound); - void ProcessShopScriptObject(uint8 sound); - void ProcessAirportScriptObject(uint8 sound); - void ProcessCinemaScriptObject(uint8 sound); - void ProcessDocksScriptObject(uint8 sound); - void ProcessHomeScriptObject(uint8 sound); - void ProcessPoliceCellBeatingScriptObject(uint8 sound); // misc void ProcessWeather(int32 id); void ProcessFrontEnd(); - void ProcessCrane(); + //void ProcessCrane(); void ProcessProjectiles(); + void ProcessEscalators(); + void ProcessExtraSounds(); void ProcessGarages(); void ProcessFireHydrant(); - // bridge - void ProcessBridge(); // inlined on PS2 +#ifdef GTA_BRIDGE + void ProcessBridge(); void ProcessBridgeWarning(); void ProcessBridgeMotor(); void ProcessBridgeOneShots(); +#endif // mission audio + const char *GetMissionAudioLoadedLabel(uint8 slot); bool8 MissionScriptAudioUsesPoliceChannel(uint32 soundMission); - void PreloadMissionAudio(Const char *name); - uint8 GetMissionAudioLoadingStatus(); - void SetMissionAudioLocation(float x, float y, float z); - void PlayLoadedMissionAudio(); - bool8 IsMissionAudioSampleFinished(); - bool8 IsMissionAudioSamplePlaying() { return m_sMissionAudio.m_nPlayStatus == PLAY_STATUS_PLAYING; } - bool8 ShouldDuckMissionAudio() { return IsMissionAudioSamplePlaying(); } - void ClearMissionAudio(); + void PreloadMissionAudio(uint8 slot, Const char *name); + uint8 GetMissionAudioLoadingStatus(uint8 slot); + void SetMissionAudioLocation(uint8 slot, float x, float y, float z); + void PlayLoadedMissionAudio(uint8 slot); + bool8 ShouldDuckMissionAudio(uint8 slot); + bool8 IsMissionAudioSamplePlaying(uint8 slot); + bool8 IsMissionAudioSampleFinished(uint8 slot); + void ClearMissionAudio(uint8 slot); // inlined in vc + void ProcessMissionAudioSlot(uint8 slot); void ProcessMissionAudio(); // police radio void InitialisePoliceRadioZones(); void InitialisePoliceRadio(); void ResetPoliceRadio(); - void SetMissionScriptPoliceAudio(uint32 sfx); + void SetMissionScriptPoliceAudio(uint32 sfx); // inlined and optimized int8 GetMissionScriptPoliceAudioPlayingStatus(); void DoPoliceRadioCrackle(); void ServicePoliceRadio(); @@ -496,7 +545,7 @@ public: void SetupSuspectLastSeenReport(); void ReportCrime(eCrimeType crime, const CVector &pos); void PlaySuspectLastSeen(float x, float y, float z); - void AgeCrimes(); // inlined on PS2 + void AgeCrimes(); // inlined in vc // collision stuff void ReportCollision(CEntity *entity1, CEntity *entity2, uint8 surface1, uint8 surface2, float collisionPower, float intensity2); @@ -506,7 +555,9 @@ public: uint32 SetLoopingCollisionRequestedSfxFreqAndGetVol(const cAudioCollision &audioCollision); float GetCollisionOneShotRatio(uint32 a, float b); float GetCollisionLoopingRatio(uint32 a, uint32 b, float c); // not used - float GetCollisionRatio(float a, float b, float c, float d); // inlined on PS2 + float GetCollisionRatio(float a, float b, float c, float d); // inlined in vc + + float Sqrt(float v) const { return v <= 0.0f ? 0.0f : ::Sqrt(v); } }; /* @@ -527,7 +578,7 @@ public: #endif #if defined(AUDIO_MSS) && !defined(PS2_AUDIO_CHANNELS) -static_assert(sizeof(cAudioManager) == 19220, "cAudioManager: error"); +static_assert(sizeof(cAudioManager) == 0x5558, "cAudioManager: error"); #endif extern cAudioManager AudioManager; |