aboutsummaryrefslogtreecommitdiffstats
path: root/src/audio/AudioManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/AudioManager.h')
-rw-r--r--src/audio/AudioManager.h379
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 &params);
void ProcessRainOnVehicle(cVehicleParams &params);
bool8 ProcessReverseGear(cVehicleParams &params);
- void ProcessModelCarEngine(cVehicleParams &params);
+ void ProcessModelHeliVehicle(cVehicleParams &params);
+ void ProcessModelVehicle(cVehicleParams &params);
+ void ProcessVehicleFlatTyre(cVehicleParams &params);
bool8 ProcessVehicleRoadNoise(cVehicleParams &params);
bool8 ProcessWetRoadNoise(cVehicleParams &params);
void ProcessVehicleEngine(cVehicleParams &params);
- 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 &params);
- void ProcessPlayersVehicleEngine(cVehicleParams &params, CAutomobile *automobile);
+ void ProcessPlayersVehicleEngine(cVehicleParams &params, CVehicle *veh);
bool8 ProcessVehicleSkidding(cVehicleParams &params);
- 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 &params);
- 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 &params);
+ bool8 UsesSiren(cVehicleParams &params);
+ bool8 UsesSirenSwitching(cVehicleParams &params);
bool8 ProcessVehicleSirenOrAlarm(cVehicleParams &params);
- bool8 UsesReverseWarning(uint32 model); // inlined on PS2
+ bool8 UsesReverseWarning(uint32 model);
bool8 ProcessVehicleReverseWarning(cVehicleParams &params);
bool8 ProcessVehicleDoors(cVehicleParams &params);
bool8 ProcessAirBrakes(cVehicleParams &params);
- bool8 HasAirBrakes(uint32 model); // inlined on PS2
+ bool8 HasAirBrakes(uint32 model);
bool8 ProcessEngineDamage(cVehicleParams &params);
bool8 ProcessCarBombTick(cVehicleParams &params);
void ProcessVehicleOneShots(cVehicleParams &params);
+#ifdef GTA_TRAIN
bool8 ProcessTrainNoise(cVehicleParams &params);
+#endif
bool8 ProcessBoatEngine(cVehicleParams &params);
bool8 ProcessBoatMovingOverWater(cVehicleParams &params);
- bool8 ProcessHelicopter(cVehicleParams &params);
- void ProcessPlane(cVehicleParams &params); // inlined on PS2
+ void ProcessPlane(cVehicleParams &params);
void ProcessJumbo(cVehicleParams &params);
- 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 &params);
+ void ProcessPed(CPhysical *ped);
void ProcessPedOneShots(cPedParams &params);
+ void SetPedTalkingStatus(CPed *ped, bool8 status);
+ void SetPlayersMood(uint8 mood, uint32 time);
+ void ProcessPlayerMood();
// ped comments
void SetupPedComments(cPedParams &params, 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;