From 0a58e3e4301bd73841e3547ac4220d6c8f8e8417 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 30 Sep 2020 16:25:21 +0300 Subject: [PATCH 1/2] fixed bad bug --- src/control/Script.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 4516acf0..95e93b6c 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -2118,7 +2118,7 @@ int32 CRunningScript::CollectNextParameterWithoutIncreasingPC(uint32 ip) case ARGUMENT_INT32: return CTheScripts::Read4BytesFromScript(pIp); case ARGUMENT_GLOBALVAR: - return *((int32*)&CTheScripts::ScriptSpace[CTheScripts::Read2BytesFromScript(pIp)]); + return *((int32*)&CTheScripts::ScriptSpace[(uint16)CTheScripts::Read2BytesFromScript(pIp)]); case ARGUMENT_LOCALVAR: return m_anLocalVariables[CTheScripts::Read2BytesFromScript(pIp)]; case ARGUMENT_INT8: @@ -2138,7 +2138,7 @@ void CRunningScript::StoreParameters(uint32* pIp, int16 number) for (int16 i = 0; i < number; i++){ switch (CTheScripts::Read1ByteFromScript(pIp)) { case ARGUMENT_GLOBALVAR: - *(int32*)&CTheScripts::ScriptSpace[CTheScripts::Read2BytesFromScript(pIp)] = ScriptParams[i]; + *(int32*)&CTheScripts::ScriptSpace[(uint16)CTheScripts::Read2BytesFromScript(pIp)] = ScriptParams[i]; break; case ARGUMENT_LOCALVAR: m_anLocalVariables[CTheScripts::Read2BytesFromScript(pIp)] = ScriptParams[i]; @@ -2155,7 +2155,7 @@ int32 *CRunningScript::GetPointerToScriptVariable(uint32* pIp, int16 type) { case ARGUMENT_GLOBALVAR: script_assert(type == VAR_GLOBAL); - return (int32*)&CTheScripts::ScriptSpace[CTheScripts::Read2BytesFromScript(pIp)]; + return (int32*)&CTheScripts::ScriptSpace[(uint16)CTheScripts::Read2BytesFromScript(pIp)]; case ARGUMENT_LOCALVAR: script_assert(type == VAR_LOCAL); return &m_anLocalVariables[CTheScripts::Read2BytesFromScript(pIp)]; @@ -2472,7 +2472,7 @@ int8 CRunningScript::ProcessOneCommand() { int8 retval = -1; ++CTheScripts::CommandsExecuted; - int32 command = CTheScripts::Read2BytesFromScript(&m_nIp); + int32 command = (uint16)CTheScripts::Read2BytesFromScript(&m_nIp); m_bNotFlag = (command & 0x8000); command &= 0x7FFF; #ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT @@ -3095,7 +3095,7 @@ int8 CRunningScript::ProcessCommands0To99(int32 command) pNew->m_anLocalVariables[i] = CTheScripts::Read4BytesFromScript(&m_nIp); break; case ARGUMENT_GLOBALVAR: - pNew->m_anLocalVariables[i] = *(int32*)&CTheScripts::ScriptSpace[CTheScripts::Read2BytesFromScript(&m_nIp)]; + pNew->m_anLocalVariables[i] = *(int32*)&CTheScripts::ScriptSpace[(uint16)CTheScripts::Read2BytesFromScript(&m_nIp)]; break; case ARGUMENT_LOCALVAR: pNew->m_anLocalVariables[i] = m_anLocalVariables[CTheScripts::Read2BytesFromScript(&m_nIp)]; @@ -4886,7 +4886,7 @@ int8 CRunningScript::ProcessCommands300To399(int32 command) { script_assert(CTheScripts::ScriptSpace[m_nIp] == ARGUMENT_GLOBALVAR); m_nIp++; - uint32 offset = CTheScripts::Read2BytesFromScript(&m_nIp); + uint16 offset = CTheScripts::Read2BytesFromScript(&m_nIp); CollectParameters(&m_nIp, 1); CUserDisplay::OnscnTimer.AddClock(offset, nil, ScriptParams[0] != 0); return 0; @@ -4895,14 +4895,14 @@ int8 CRunningScript::ProcessCommands300To399(int32 command) { script_assert(CTheScripts::ScriptSpace[m_nIp] == ARGUMENT_GLOBALVAR); m_nIp++; - CUserDisplay::OnscnTimer.ClearClock(CTheScripts::Read2BytesFromScript(&m_nIp)); + CUserDisplay::OnscnTimer.ClearClock((uint16)CTheScripts::Read2BytesFromScript(&m_nIp)); return 0; } case COMMAND_DISPLAY_ONSCREEN_COUNTER: { script_assert(CTheScripts::ScriptSpace[m_nIp] == ARGUMENT_GLOBALVAR); m_nIp++; - int32 counter = CTheScripts::Read2BytesFromScript(&m_nIp); + int16 counter = CTheScripts::Read2BytesFromScript(&m_nIp); CollectParameters(&m_nIp, 1); CUserDisplay::OnscnTimer.AddCounter(counter, ScriptParams[0], nil, 0); return 0; @@ -4911,7 +4911,7 @@ int8 CRunningScript::ProcessCommands300To399(int32 command) { script_assert(CTheScripts::ScriptSpace[m_nIp] == ARGUMENT_GLOBALVAR); m_nIp++; - CUserDisplay::OnscnTimer.ClearCounter(CTheScripts::Read2BytesFromScript(&m_nIp)); + CUserDisplay::OnscnTimer.ClearCounter((uint16)CTheScripts::Read2BytesFromScript(&m_nIp)); return 0; } case COMMAND_SET_ZONE_CAR_INFO: @@ -5286,7 +5286,7 @@ int8 CRunningScript::ProcessCommands300To399(int32 command) //case COMMAND_MOVE_CAMERA_ALONG_SPLINE: //case COMMAND_GET_CAMERA_POSITION_ALONG_SPLINE: case COMMAND_DECLARE_MISSION_FLAG: - CTheScripts::OnAMissionFlag = CTheScripts::Read2BytesFromScript(&++m_nIp); + CTheScripts::OnAMissionFlag = (uint16)CTheScripts::Read2BytesFromScript(&++m_nIp); return 0; case COMMAND_DECLARE_MISSION_FLAG_FOR_CONTACT: return 0; @@ -10065,7 +10065,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command) case COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_STRING: { script_assert(CTheScripts::ScriptSpace[m_nIp++] == ARGUMENT_GLOBALVAR); - int16 var = CTheScripts::Read2BytesFromScript(&m_nIp); + uint16 var = CTheScripts::Read2BytesFromScript(&m_nIp); CollectParameters(&m_nIp, 1); wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]); // ??? strncpy(onscreen_str, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT); @@ -10076,7 +10076,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command) case COMMAND_DISPLAY_ONSCREEN_COUNTER_WITH_STRING: { script_assert(CTheScripts::ScriptSpace[m_nIp++] == ARGUMENT_GLOBALVAR); - int16 var = CTheScripts::Read2BytesFromScript(&m_nIp); + uint16 var = CTheScripts::Read2BytesFromScript(&m_nIp); CollectParameters(&m_nIp, 1); wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]); // ??? strncpy(onscreen_str, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT); @@ -12709,7 +12709,7 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command) { char onscreen_str[12]; script_assert(CTheScripts::ScriptSpace[m_nIp++] == ARGUMENT_GLOBALVAR); - int16 var = CTheScripts::Read2BytesFromScript(&m_nIp); + uint16 var = CTheScripts::Read2BytesFromScript(&m_nIp); CollectParameters(&m_nIp, 2); wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]); // ??? strncpy(onscreen_str, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT); From 4ec5e44b68328072f1a285ccbb5d47d9f09ce7c6 Mon Sep 17 00:00:00 2001 From: Filip Gawin Date: Wed, 30 Sep 2020 18:14:50 +0200 Subject: [PATCH 2/2] Mark audio code which is the same in re3 as done --- src/audio/AudioManager.h | 70 ++++++++++++++++++--------------------- src/audio/PoliceRadio.cpp | 2 +- 2 files changed, 34 insertions(+), 38 deletions(-) diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 0b9dd4f7..f99acac8 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -235,31 +235,30 @@ public: float GetReflectionsDistance(int32 idx) const { return m_afReflectionsDistances[idx]; } int32 GetRandomNumber(int32 idx) const { return m_anRandomTable[idx]; } int32 GetRandomNumberInRange(int32 idx, int32 low, int32 high) const { return (m_anRandomTable[idx] % (high - low + 1)) + low; } - bool IsMissionAudioSamplePlaying(uint8 slot) const;// { return m_sMissionAudio.m_nPlayStatus == 1; } + bool IsMissionAudioSamplePlaying(uint8 slot) const; // { return m_sMissionAudio.m_nPlayStatus == 1; } bool ShouldDuckMissionAudio(uint8 slot) const; // "Should" be in alphabetic order, except "getXTalkSfx" - void AddDetailsToRequestedOrderList(uint8 sample); - void AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 bank, - uint8 counter, bool notLooping); //done - void AddReflectionsToRequestedQueue(); - void AddReleasingSounds(); - void AddSampleToRequestedQueue(); - void AgeCrimes(); + void AddDetailsToRequestedOrderList(uint8 sample); // done (inlined in vc) + void AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 bank, uint8 counter, bool notLooping); // done + void AddReflectionsToRequestedQueue(); // done + void AddReleasingSounds(); // done + void AddSampleToRequestedQueue(); // done + void AgeCrimes(); // done (inlined in vc) - void CalculateDistance(bool &condition, float dist); //done + void CalculateDistance(bool &condition, float dist); // done bool CheckForAnAudioFileOnCD() const; void ClearActiveSamples(); - void ClearMissionAudio(uint8 slot); + void ClearMissionAudio(uint8 slot); //done void ClearRequestedQueue(); int32 ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, float position2, float speedMultiplier) const; int32 ComputePan(float, CVector *); uint8 ComputeVolume(uint8 emittingVolume, float soundIntensity, float distance) const; - int32 CreateEntity(eAudioType type, void *entity); + int32 CreateEntity(eAudioType type, void *entity); // done void DestroyAllGameCreatedEntities(); - void DestroyEntity(int32 id); + void DestroyEntity(int32 id); //done (inlined in vc) void DoPoliceRadioCrackle(); // functions returning talk sfx, @@ -271,44 +270,42 @@ public: char *Get3DProviderName(uint8 id) const; uint8 GetCDAudioDriveLetter() const; int8 GetCurrent3DProviderIndex() const; - int8 AutoDetect3DProviders() const; + int8 AutoDetect3DProviders() const; // done float GetCollisionLoopingRatio(uint32 a, uint32 b, float c) const; // not used float GetCollisionOneShotRatio(int32 a, float b) const; float GetCollisionRatio(float a, float b, float c, float d) const; - float GetDistanceSquared(const CVector &v) const; //done + float GetDistanceSquared(const CVector &v) const; // done (inlined in vc) int32 GetJumboTaxiFreq() const; - uint8 GetMissionAudioLoadingStatus(uint8 slot) const; + uint8 GetMissionAudioLoadingStatus(uint8 slot) const; // done int8 GetMissionScriptPoliceAudioPlayingStatus() const; - uint8 GetNum3DProvidersAvailable() const; + uint8 GetNum3DProvidersAvailable() const; // done int32 GetPedCommentSfx(CPed *ped, int32 sound); void GetPhrase(uint32 *phrase, uint32 *prevPhrase, uint32 sample, uint32 maxOffset) const; - float GetVehicleDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, - cTransmission *transmission, float velocityChange); - float GetVehicleNonDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, - cTransmission *transmission, float velocityChange); + float GetVehicleDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, cTransmission *transmission, float velocityChange); + float GetVehicleNonDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, cTransmission *transmission, float velocityChange); - bool HasAirBrakes(int32 model) const; //done + bool HasAirBrakes(int32 model) const; // done - void Initialise(); + void Initialise(); // done void InitialisePoliceRadio(); void InitialisePoliceRadioZones(); void InterrogateAudioEntities(); bool IsAudioInitialised() const; bool IsMissionAudioSampleFinished(uint8 slot); - bool IsMP3RadioChannelAvailable() const; + bool IsMP3RadioChannelAvailable() const; // done bool MissionScriptAudioUsesPoliceChannel(int32 soundMission) const; - void PlayLoadedMissionAudio(uint8 slot); - void PlayOneShot(int32 index, int16 sound, float vol); + void PlayLoadedMissionAudio(uint8 slot); // done + void PlayOneShot(int32 index, int16 sound, float vol); // done void PlaySuspectLastSeen(float x, float y, float z); - void PlayerJustGotInCar() const; //done - void PlayerJustLeftCar() const; //done + void PlayerJustGotInCar() const; // done + void PlayerJustLeftCar() const; // done void PostInitialiseGameSpecificSetup(); - void PostTerminateGameSpecificShutdown(); //done - void PreInitialiseGameSpecificSetup() const; //done - void PreloadMissionAudio(uint8 slot, Const char *name); - void PreTerminateGameSpecificShutdown(); //done + void PostTerminateGameSpecificShutdown(); // done + void PreInitialiseGameSpecificSetup() const; // done + void PreloadMissionAudio(uint8 slot, Const char *name); // done + void PreTerminateGameSpecificShutdown(); // done /// processX - main logic of adding new sounds void ProcessActiveQueues(); bool ProcessAirBrakes(cVehicleParams *params); @@ -375,11 +372,10 @@ public: void ProcessExtraSounds(); //done int32 RandomDisplacement(uint32 seed) const; - void ReacquireDigitalHandle() const; - void ReleaseDigitalHandle() const; - void ReportCollision(CEntity *entity1, CEntity *entity2, uint8 surface1, uint8 surface2, - float collisionPower, float intensity2); - void ReportCrime(int32 crime, const CVector *pos); + void ReacquireDigitalHandle() const; // done + void ReleaseDigitalHandle() const; // done + void ReportCollision(CEntity *entity1, CEntity *entity2, uint8 surface1, uint8 surface2, float collisionPower, float intensity2); // done + void ReportCrime(int32 crime, const CVector *pos); // done void ResetAudioLogicTimers(uint32 timer); void ResetPoliceRadio(); void ResetTimers(uint32 time); @@ -394,7 +390,7 @@ public: void SetEffectsFadeVol(uint8 volume) const; void SetEffectsMasterVolume(uint8 volume) const; void SetMP3BoostVolume(uint8 volume) const; - void SetEntityStatus(int32 id, uint8 status); + void SetEntityStatus(int32 id, uint8 status); //done uint32 SetLoopingCollisionRequestedSfxFreqAndGetVol(const cAudioCollision &audioCollision); void SetMissionAudioLocation(uint8 slot, float x, float y, float z); void SetMissionScriptPoliceAudio(int32 sfx) const; diff --git a/src/audio/PoliceRadio.cpp b/src/audio/PoliceRadio.cpp index a0c727cc..bd29ad4b 100644 --- a/src/audio/PoliceRadio.cpp +++ b/src/audio/PoliceRadio.cpp @@ -725,7 +725,7 @@ cAudioManager::AgeCrimes() { for (uint8 i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) { if (m_sPoliceRadioQueue.crimes[i].type != CRIME_NONE) { - if (++m_sPoliceRadioQueue.crimes[i].timer > 1500) m_sPoliceRadioQueue.crimes[i].type = CRIME_NONE; + if (++m_sPoliceRadioQueue.crimes[i].timer > 1200) m_sPoliceRadioQueue.crimes[i].type = CRIME_NONE; } } }