From 8cd87236c98bc42cd98f80fc488460881cae2880 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 8 Jun 2020 14:29:55 +0300 Subject: [PATCH] miamification of some audio structs --- src/audio/AudioLogic.cpp | 23 +++++++++++++++++++++-- src/audio/AudioManager.cpp | 2 +- src/audio/AudioManager.h | 18 ++++++++++++++++-- src/audio/audio_enums.h | 31 +++++++++++++++++-------------- src/core/config.h | 4 ++-- src/vehicles/Cranes.cpp | 7 ++----- 6 files changed, 59 insertions(+), 26 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index ed27bdd3..a7d16dc4 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -149,10 +149,19 @@ cAudioManager::PostInitialiseGameSpecificSetup() m_nPoliceChannelEntity = CreateEntity(AUDIOTYPE_POLICERADIO, (void *)1); if (m_nPoliceChannelEntity >= 0) SetEntityStatus(m_nPoliceChannelEntity, 1); - - m_nBridgeEntity = CreateEntity(AUDIOTYPE_BRIDGE, (void *)1); +#ifdef GTA_BRIDGE + m_nBridgeEntity = CreateEntity(AUDIOTYPE_BRIDGE, (void*)1); if (m_nBridgeEntity >= 0) SetEntityStatus(m_nBridgeEntity, 1); +#endif // GTA_BRIDGE + m_nEscalatorEntity = CreateEntity(AUDIOTYPE_ESCALATOR, (void*)1); + if (m_nEscalatorEntity >= 0) + SetEntityStatus(m_nEscalatorEntity, 1); + + m_nExtraSoundsEntity = CreateEntity(AUDIOTYPE_EXTRA_SOUNDS, (void*)1); + if (m_nExtraSoundsEntity >= 0) + SetEntityStatus(m_nExtraSoundsEntity, 1); + m_sMissionAudio.m_nSampleIndex[0] = NO_SAMPLE; m_sMissionAudio.m_nLoadingStatus[0] = LOADING_STATUS_NOT_LOADED; @@ -178,10 +187,20 @@ cAudioManager::PostInitialiseGameSpecificSetup() void cAudioManager::PreTerminateGameSpecificShutdown() { +#ifdef GTA_BRIDGE if (m_nBridgeEntity >= 0) { DestroyEntity(m_nBridgeEntity); m_nBridgeEntity = AEHANDLE_NONE; } +#endif + if (m_nEscalatorEntity >= 0) { + DestroyEntity(m_nEscalatorEntity); + m_nEscalatorEntity = AEHANDLE_NONE; + } + if (m_nExtraSoundsEntity >= 0) { + DestroyEntity(m_nExtraSoundsEntity); + m_nExtraSoundsEntity = AEHANDLE_NONE; + } if (m_nPoliceChannelEntity >= 0) { DestroyEntity(m_nPoliceChannelEntity); m_nPoliceChannelEntity = AEHANDLE_NONE; diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 97cdacf9..d8d28e1e 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -281,7 +281,7 @@ cAudioManager::DestroyAllGameCreatedEntities() case AUDIOTYPE_PHYSICAL: case AUDIOTYPE_EXPLOSION: case AUDIOTYPE_WEATHER: - case AUDIOTYPE_CRANE: + //case AUDIOTYPE_CRANE: case AUDIOTYPE_GARAGE: case AUDIOTYPE_FIREHYDRANT: DestroyEntity(i); diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index e30c1068..e89efbd2 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -28,6 +28,7 @@ public: uint8 m_nLoopsRemaining; bool m_bRequireReflection; // Used for oneshots uint8 m_nOffset; + uint8 field_4C; int32 m_nReleasingVolumeDivider; bool m_bIsProcessed; bool m_bLoopEnded; @@ -35,7 +36,7 @@ public: int8 m_nVolumeChange; }; -VALIDATE_SIZE(tSound, 92); +VALIDATE_SIZE(tSound, 96); class CPhysical; class CAutomobile; @@ -193,6 +194,14 @@ public: CVector m_avecReflectionsPos[NUM_AUDIO_REFLECTIONS]; float m_afReflectionsDistances[NUM_AUDIO_REFLECTIONS]; cAudioScriptObjectManager m_sAudioScriptObjectManager; + + // miami + uint8 field_4B30; + uint8 m_bPlayerMood; + uint32 field_4B34; + uint8 field_rest[4]; + uint8 field_4B3C; + cPedComments m_sPedComments; int32 m_nFireAudioEntity; int32 m_nWaterCannonEntity; @@ -202,7 +211,11 @@ 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]; @@ -210,6 +223,7 @@ public: uint8 m_nUserPause; uint8 m_nPreviousUserPause; uint32 m_FrameCounter; + uint32 field_5554; cAudioManager(); ~cAudioManager(); @@ -408,7 +422,7 @@ public: }; #ifdef AUDIO_MSS -//static_assert(sizeof(cAudioManager) == 19220, "cAudioManager: error"); +static_assert(sizeof(cAudioManager) == 0x5558, "cAudioManager: error"); #endif extern cAudioManager AudioManager; diff --git a/src/audio/audio_enums.h b/src/audio/audio_enums.h index 90b87f1d..1f13521b 100644 --- a/src/audio/audio_enums.h +++ b/src/audio/audio_enums.h @@ -1267,18 +1267,21 @@ enum AudioEntityHandle { enum eAudioType : int32 { AUDIOTYPE_PHYSICAL = 0, - AUDIOTYPE_EXPLOSION = 1, - AUDIOTYPE_FIRE = 2, - AUDIOTYPE_WEATHER = 3, - AUDIOTYPE_CRANE = 4, - AUDIOTYPE_SCRIPTOBJECT = 5, - AUDIOTYPE_BRIDGE = 6, - AUDIOTYPE_COLLISION = 7, - AUDIOTYPE_FRONTEND = 8, - AUDIOTYPE_PROJECTILE = 9, - AUDIOTYPE_GARAGE = 10, - AUDIOTYPE_FIREHYDRANT = 11, - AUDIOTYPE_WATERCANNON = 12, - AUDIOTYPE_POLICERADIO = 13, - TOTAL_AUDIO_TYPES = 14, + AUDIOTYPE_EXPLOSION, + AUDIOTYPE_FIRE, + AUDIOTYPE_WEATHER, + AUDIOTYPE_SCRIPTOBJECT, +#ifdef GTA_BRIDGE + AUDIOTYPE_BRIDGE, +#endif + AUDIOTYPE_COLLISION, + AUDIOTYPE_FRONTEND, + AUDIOTYPE_PROJECTILE, + AUDIOTYPE_GARAGE, + AUDIOTYPE_FIREHYDRANT, + AUDIOTYPE_WATERCANNON, + AUDIOTYPE_ESCALATOR, + AUDIOTYPE_EXTRA_SOUNDS, + AUDIOTYPE_POLICERADIO, + TOTAL_AUDIO_TYPES, }; diff --git a/src/core/config.h b/src/core/config.h index b0ef3f67..104c78c9 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -126,9 +126,9 @@ enum Config { NUM_SOUNDS_SAMPLES_BANKS = 2, NUM_SOUNDS_SAMPLES_SLOTS = 27, - NUM_AUDIOENTITIES = 200, + NUM_AUDIOENTITIES = 250, - NUM_AUDIO_REFLECTIONS = 5, + NUM_AUDIO_REFLECTIONS = 8, NUM_SCRIPT_MAX_ENTITIES = 40, NUM_GARAGE_STORED_CARS = 4, diff --git a/src/vehicles/Cranes.cpp b/src/vehicles/Cranes.cpp index db7b514f..c8fa1c22 100644 --- a/src/vehicles/Cranes.cpp +++ b/src/vehicles/Cranes.cpp @@ -84,9 +84,6 @@ void CCranes::AddThisOneCrane(CEntity* pEntity) pCrane->m_nTimeForNextCheck = 0; pCrane->m_nCraneState = CCrane::IDLE; pCrane->m_bWasMilitaryCrane = false; - pCrane->m_nAudioEntity = DMAudio.CreateEntity(AUDIOTYPE_CRANE, &aCranes[NumCranes]); - if (pCrane->m_nAudioEntity >= 0) - DMAudio.SetEntityStatus(pCrane->m_nAudioEntity, 1); pCrane->m_bIsTop = (MODELID_CRANE_1 != pEntity->GetModelIndex()); #if 0 // Is this used to avoid military crane? @@ -669,11 +666,11 @@ void CCranes::Load(uint8* buf, uint32 size) if (pCrane->m_pVehiclePickedUp != nil) pCrane->m_pVehiclePickedUp = CPools::GetVehiclePool()->GetSlot((uintptr)pCrane->m_pVehiclePickedUp - 1); } - for (int i = 0; i < NUM_CRANES; i++) { + /*for (int i = 0; i < NUM_CRANES; i++) { aCranes[i].m_nAudioEntity = DMAudio.CreateEntity(AUDIOTYPE_CRANE, &aCranes[i]); if (aCranes[i].m_nAudioEntity != 0) DMAudio.SetEntityStatus(aCranes[i].m_nAudioEntity, 1); - } + }*/ VALIDATESAVEBUF(size); }