diff --git a/Core/Compatibility.cpp b/Core/Compatibility.cpp index 60790ddbfc..0a79f79810 100644 --- a/Core/Compatibility.cpp +++ b/Core/Compatibility.cpp @@ -124,6 +124,7 @@ void Compatibility::CheckSettings(IniFile &iniFile, const std::string &gameID) { CheckSetting(iniFile, gameID, "OldAdrenoPixelDepthRoundingGL", &flags_.OldAdrenoPixelDepthRoundingGL); CheckSetting(iniFile, gameID, "ForceCircleButtonConfirm", &flags_.ForceCircleButtonConfirm); CheckSetting(iniFile, gameID, "DisallowFramebufferAtOffset", &flags_.DisallowFramebufferAtOffset); + CheckSetting(iniFile, gameID, "RockmanDash2SoundFix", &flags_.RockmanDash2SoundFix); } void Compatibility::CheckVRSettings(IniFile &iniFile, const std::string &gameID) { diff --git a/Core/Compatibility.h b/Core/Compatibility.h index d5c03f42f0..99b16ce525 100644 --- a/Core/Compatibility.h +++ b/Core/Compatibility.h @@ -95,6 +95,7 @@ struct CompatFlags { bool OldAdrenoPixelDepthRoundingGL; bool ForceCircleButtonConfirm; bool DisallowFramebufferAtOffset; + bool RockmanDash2SoundFix; }; struct VRCompat { diff --git a/Core/HW/SasAudio.cpp b/Core/HW/SasAudio.cpp index 4d85d0fd7c..08393bf485 100644 --- a/Core/HW/SasAudio.cpp +++ b/Core/HW/SasAudio.cpp @@ -25,6 +25,7 @@ #include "Core/Config.h" #include "Core/Reporting.h" #include "Core/Util/AudioFormat.h" +#include "Core/Core.h" #include "SasAudio.h" // #define AUDIO_TO_FILE @@ -894,7 +895,11 @@ inline void ADSREnvelope::Step() { SetState(STATE_SUSTAIN); break; case STATE_SUSTAIN: - WalkCurve(sustainType, sustainRate); + if (PSP_CoreParameter().compat.flags().RockmanDash2SoundFix && sustainType == PSP_SAS_ADSR_CURVE_MODE_LINEAR_INCREASE) { + WalkCurve(PSP_SAS_ADSR_CURVE_MODE_LINEAR_DECREASE, sustainRate); + } else { + WalkCurve(sustainType, sustainRate); + } if (height_ <= 0) { height_ = 0; SetState(STATE_RELEASE); diff --git a/assets/compat.ini b/assets/compat.ini index 1bff998155..68e46c2fb5 100644 --- a/assets/compat.ini +++ b/assets/compat.ini @@ -1424,3 +1424,9 @@ UCES01264 = true UCJS10107 = true NPJG00073 = true UCAS40262 = true + +[RockmanDash2SoundFix] +# Rockman Dash 2, see #11442 +ULJM05037 = true +ULJM05216 = true +NPJH50181 = true \ No newline at end of file