From 965daea4558e6fc4b148bda359cc19128f70bc6e Mon Sep 17 00:00:00 2001 From: sum2012 Date: Sun, 14 Aug 2022 09:51:49 +0800 Subject: [PATCH] Add atrac hack setting --- Core/Config.cpp | 1 + Core/Config.h | 1 + Core/HLE/sceAtrac.cpp | 5 +++++ UI/GameSettingsScreen.cpp | 1 + assets/lang/en_US.ini | 1 + assets/lang/zh_CN.ini | 1 + assets/lang/zh_TW.ini | 1 + 7 files changed, 11 insertions(+) diff --git a/Core/Config.cpp b/Core/Config.cpp index 91264ca5b4..1cf2bde22a 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -956,6 +956,7 @@ static ConfigSetting soundSettings[] = { ConfigSetting("AltSpeedVolume", &g_Config.iAltSpeedVolume, -1, true, true), ConfigSetting("AudioDevice", &g_Config.sAudioDevice, "", true, false), ConfigSetting("AutoAudioDevice", &g_Config.bAutoAudioDevice, true, true, false), + ConfigSetting("HackSound", &g_Config.bHackSound, false, true, false), ConfigSetting(false), }; diff --git a/Core/Config.h b/Core/Config.h index e682234ba3..0939c89ed3 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -256,6 +256,7 @@ public: bool bExtraAudioBuffering; // For bluetooth std::string sAudioDevice; bool bAutoAudioDevice; + bool bHackSound; // UI bool bShowDebuggerOnLoad; diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index 6a7559ab7e..6a2c619842 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -1170,6 +1170,11 @@ static u32 sceAtracAddStreamData(int atracID, u32 bytesToAdd) { atrac->first_.offset += bytesToAdd; atrac->bufferValidBytes_ += bytesToAdd; + if (g_Config.bHackSound && atrac->bufferState_ == ATRAC_STATUS_STREAMED_LOOP_FROM_END && atrac->RemainingFrames() > 2) { // Code Lyoko don't like SeekToSample for unknown reason + atrac->loopNum_++; + atrac->SeekToSample(atrac->loopStartSample_ - atrac->FirstOffsetExtra() - atrac->firstSampleOffset_); + } + return hleLogSuccessI(ME, 0); } diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index a21fcde46f..5b3cf71d5d 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -693,6 +693,7 @@ void GameSettingsScreen::CreateViews() { PopupMultiChoiceDynamic *MicChoice = audioSettings->Add(new PopupMultiChoiceDynamic(&g_Config.sMicDevice, a->T("Microphone Device"), micList, nullptr, screenManager())); MicChoice->OnChoice.Handle(this, &GameSettingsScreen::OnMicDeviceChange); } + audioSettings->Add(new CheckBox(&g_Config.bHackSound, a->T("Hack sound"))); // Control LinearLayout *controlsSettings = AddTab("GameSettingsControls", ms->T("Controls")); diff --git a/assets/lang/en_US.ini b/assets/lang/en_US.ini index 2d696f4ee4..b929cbe199 100644 --- a/assets/lang/en_US.ini +++ b/assets/lang/en_US.ini @@ -33,6 +33,7 @@ Disabled = Disabled DSound (compatible) = DSound (compatible) Enable Sound = Enable sound Global volume = Global volume +Hack sound = Hack sound Microphone = Microphone Microphone Device = Microphone device Mute = Mute diff --git a/assets/lang/zh_CN.ini b/assets/lang/zh_CN.ini index 93ba6ebe35..430f122c08 100644 --- a/assets/lang/zh_CN.ini +++ b/assets/lang/zh_CN.ini @@ -9,6 +9,7 @@ Disabled = 禁用 DSound (compatible) = DirectSound(兼容) Enable Sound = 开启声音 Global volume = 全局音量 +Hack sound = 破解声音修复 Microphone = 麦克风 Microphone Device = 麦克风设备 Mute = 静音 diff --git a/assets/lang/zh_TW.ini b/assets/lang/zh_TW.ini index 86670da9e3..5b55d4e293 100644 --- a/assets/lang/zh_TW.ini +++ b/assets/lang/zh_TW.ini @@ -9,6 +9,7 @@ Disabled = Disabled DSound (compatible) = DirectSound(兼容) Enable Sound = 啟用音效 Global volume = 全局音量 +Hack sound = 破解聲音修復 Microphone = Microphone Microphone Device = 麥克風裝置 Mute = 靜音