From 3d0ef8c6e1f7f21605fae2a510f7f91759851e16 Mon Sep 17 00:00:00 2001 From: Jamie Bainbridge Date: Wed, 16 Apr 2025 01:05:42 +1000 Subject: [PATCH 1/2] SDL audio: Add config slider for audio samples As described on Issue #12705 several users have problems with audio popping, crackling, and distorion with different sample values. Previous commit ece6edf reduced default samples from 1024 to 256 but there does not seem to be an ideal value for all platforms. Make the option configurable in Audio Backend Settings. Signed-off-by: Jamie Bainbridge --- Core/Config.cpp | 1 + Core/Config.h | 1 + Core/ConfigValues.h | 2 ++ Qt/QtMain.cpp | 2 +- SDL/SDLMain.cpp | 2 +- UI/GameSettingsScreen.cpp | 2 ++ 6 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Core/Config.cpp b/Core/Config.cpp index a264fef029..ae0f4af587 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -769,6 +769,7 @@ static const ConfigSetting soundSettings[] = { ConfigSetting("Enable", &g_Config.bEnableSound, true, CfgFlag::PER_GAME), ConfigSetting("AudioBackend", &g_Config.iAudioBackend, 0, CfgFlag::PER_GAME), ConfigSetting("ExtraAudioBuffering", &g_Config.bExtraAudioBuffering, false, CfgFlag::DEFAULT), + ConfigSetting("AudioSamples", &g_Config.iAudioSamples, 256, CfgFlag::DEFAULT), // Legacy volume settings, these get auto upgraded through default handlers on the new settings. NOTE: Must be before the new ones in the order here. // The default settings here are still relevant, they will get propagated into the new ones. diff --git a/Core/Config.h b/Core/Config.h index 27a88251e0..8260540653 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -286,6 +286,7 @@ public: // Sound bool bEnableSound; int iAudioBackend; + int iAudioSamples; // Legacy volume settings, 0-10. These get auto-upgraded and should not be used. int iLegacyGameVolume; diff --git a/Core/ConfigValues.h b/Core/ConfigValues.h index 6f48e61055..fe4e7efc5f 100644 --- a/Core/ConfigValues.h +++ b/Core/ConfigValues.h @@ -32,6 +32,8 @@ constexpr int PSP_DEFAULT_FIRMWARE = 660; constexpr int VOLUME_OFF = 0; constexpr int VOLUME_FULL = 10; constexpr int VOLUMEHI_FULL = 100; // for newer volume params. will convert them all later +constexpr int AUDIOSAMPLES_MIN = 0; +constexpr int AUDIOSAMPLES_MAX = 2048; // This matches exactly the old shift-based curve. float Volume10ToMultiplier(int volume); diff --git a/Qt/QtMain.cpp b/Qt/QtMain.cpp index f572587a7c..102ed01af2 100644 --- a/Qt/QtMain.cpp +++ b/Qt/QtMain.cpp @@ -87,7 +87,7 @@ static void InitSDLAudioDevice() { fmt.freq = 44100; fmt.format = AUDIO_S16; fmt.channels = 2; - fmt.samples = 256; + fmt.samples = g_Config.iAudioSamples; fmt.callback = &mixaudio; fmt.userdata = nullptr; diff --git a/SDL/SDLMain.cpp b/SDL/SDLMain.cpp index 75fb4fbbde..349db10b9f 100644 --- a/SDL/SDLMain.cpp +++ b/SDL/SDLMain.cpp @@ -146,7 +146,7 @@ static void InitSDLAudioDevice(const std::string &name = "") { fmt.freq = g_sampleRate; fmt.format = AUDIO_S16; fmt.channels = 2; - fmt.samples = 256; + fmt.samples = g_Config.iAudioSamples; fmt.callback = &sdl_mixaudio_callback; fmt.userdata = nullptr; diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index f96341b339..5c18117679 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -715,6 +715,8 @@ void GameSettingsScreen::CreateAudioSettings(UI::ViewGroup *audioSettings) { PopupMultiChoiceDynamic *MicChoice = audioSettings->Add(new PopupMultiChoiceDynamic(&g_Config.sMicDevice, a->T("Microphone Device"), micList, I18NCat::NONE, screenManager())); MicChoice->OnChoice.Handle(this, &GameSettingsScreen::OnMicDeviceChange); } + + PopupSliderChoice *audioSamples = audioSettings->Add(new PopupSliderChoice(&g_Config.iAudioSamples, AUDIOSAMPLES_MIN, AUDIOSAMPLES_MAX, 256, a->T("Audio Samples"), screenManager())); } void GameSettingsScreen::CreateControlsSettings(UI::ViewGroup *controlsSettings) { From 486370852f0adee1c6255410c5bbf73aa22a7a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 15 Apr 2025 18:17:02 +0200 Subject: [PATCH 2/2] Restrict SDL audio buffer setting to 128, 256, 512, 1024, 2048. UI improvmeents --- Common/UI/PopupScreens.cpp | 2 + Common/UI/PopupScreens.h | 12 ++++ Common/UI/View.cpp | 116 +++++++++++++++++++++++++++-------- Common/UI/View.h | 7 +++ Core/Config.cpp | 2 +- Core/Config.h | 2 +- Qt/QtMain.cpp | 2 +- SDL/SDLMain.cpp | 6 +- UI/GameSettingsScreen.cpp | 11 +++- Windows/MainWindowMenu.cpp | 1 - assets/lang/ar_AE.ini | 1 + assets/lang/az_AZ.ini | 1 + assets/lang/bg_BG.ini | 1 + assets/lang/ca_ES.ini | 1 + assets/lang/cz_CZ.ini | 1 + assets/lang/da_DK.ini | 1 + assets/lang/de_DE.ini | 1 + assets/lang/dr_ID.ini | 1 + assets/lang/en_US.ini | 1 + assets/lang/es_ES.ini | 1 + assets/lang/es_LA.ini | 1 + assets/lang/fa_IR.ini | 1 + assets/lang/fi_FI.ini | 1 + assets/lang/fr_FR.ini | 1 + assets/lang/gl_ES.ini | 1 + assets/lang/gr_EL.ini | 1 + assets/lang/he_IL.ini | 1 + assets/lang/he_IL_invert.ini | 1 + assets/lang/hr_HR.ini | 1 + assets/lang/hu_HU.ini | 1 + assets/lang/id_ID.ini | 1 + assets/lang/it_IT.ini | 1 + assets/lang/ja_JP.ini | 1 + assets/lang/jv_ID.ini | 1 + assets/lang/ko_KR.ini | 1 + assets/lang/ku_SO.ini | 1 + assets/lang/lo_LA.ini | 1 + assets/lang/lt-LT.ini | 1 + assets/lang/ms_MY.ini | 1 + assets/lang/nl_NL.ini | 1 + assets/lang/no_NO.ini | 1 + assets/lang/pl_PL.ini | 1 + assets/lang/pt_BR.ini | 1 + assets/lang/pt_PT.ini | 1 + assets/lang/ro_RO.ini | 1 + assets/lang/ru_RU.ini | 1 + assets/lang/sv_SE.ini | 1 + assets/lang/tg_PH.ini | 1 + assets/lang/th_TH.ini | 1 + assets/lang/tr_TR.ini | 1 + assets/lang/uk_UA.ini | 1 + assets/lang/vi_VN.ini | 1 + assets/lang/zh_CN.ini | 1 + assets/lang/zh_TW.ini | 1 + 54 files changed, 172 insertions(+), 33 deletions(-) diff --git a/Common/UI/PopupScreens.cpp b/Common/UI/PopupScreens.cpp index eb2cf44b76..753ffa82ad 100644 --- a/Common/UI/PopupScreens.cpp +++ b/Common/UI/PopupScreens.cpp @@ -208,6 +208,7 @@ EventReturn PopupSliderChoice::HandleClick(EventParams &e) { SliderPopupScreen *popupScreen = new SliderPopupScreen(value_, minValue_, maxValue_, defaultValue_, ChopTitle(text_), step_, units_, liveUpdate_); if (!negativeLabel_.empty()) popupScreen->SetNegativeDisable(negativeLabel_); + popupScreen->RestrictChoices(fixedChoices_, numFixedChoices_); popupScreen->OnChange.Handle(this, &PopupSliderChoice::HandleChange); if (e.v) popupScreen->SetPopupOrigin(e.v); @@ -369,6 +370,7 @@ void SliderPopupScreen::CreatePopupContents(UI::ViewGroup *parent) { LinearLayout *vert = parent->Add(new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(UI::Margins(10, 10)))); slider_ = new Slider(&sliderValue_, minValue_, maxValue_, new LinearLayoutParams(UI::Margins(10, 10))); slider_->OnChange.Handle(this, &SliderPopupScreen::OnSliderChange); + slider_->RestrictChoices(fixedChoices_, numFixedChoices_); vert->Add(slider_); LinearLayout *lin = vert->Add(new LinearLayout(ORIENT_HORIZONTAL, new LinearLayoutParams(UI::Margins(10, 10)))); diff --git a/Common/UI/PopupScreens.h b/Common/UI/PopupScreens.h index 0b82464f07..be57d09ef6 100644 --- a/Common/UI/PopupScreens.h +++ b/Common/UI/PopupScreens.h @@ -88,6 +88,10 @@ public: negativeLabel_ = str; disabled_ = *value_ < 0; } + void RestrictChoices(const int *fixedChoices, size_t numFixedChoices) { + fixedChoices_ = fixedChoices; + numFixedChoices_ = numFixedChoices; + } const char *tag() const override { return "SliderPopup"; } @@ -113,6 +117,8 @@ private: bool liveUpdate_; bool changing_ = false; bool disabled_ = false; + const int *fixedChoices_ = nullptr; + size_t numFixedChoices_ = 0; }; class SliderFloatPopupScreen : public PopupScreen { @@ -310,6 +316,10 @@ public: void SetNegativeDisable(std::string_view str) { negativeLabel_ = str; } + void RestrictChoices(const int *fixedChoices, size_t numFixedChoices) { + fixedChoices_ = fixedChoices; + numFixedChoices_ = numFixedChoices; + } Event OnChange; @@ -332,6 +342,8 @@ private: ScreenManager *screenManager_; bool restoreFocus_ = false; bool liveUpdate_ = false; + const int *fixedChoices_ = nullptr; + size_t numFixedChoices_ = 0; }; class PopupSliderChoiceFloat : public AbstractChoiceWithValueDisplay { diff --git a/Common/UI/View.cpp b/Common/UI/View.cpp index 4e3d2e21d0..299a48b29f 100644 --- a/Common/UI/View.cpp +++ b/Common/UI/View.cpp @@ -1484,32 +1484,71 @@ bool Slider::Key(const KeyInput &input) { } bool Slider::ApplyKey(InputKeyCode keyCode) { - switch (keyCode) { - case NKCODE_DPAD_LEFT: - case NKCODE_MINUS: - case NKCODE_NUMPAD_SUBTRACT: - *value_ -= step_; - break; - case NKCODE_DPAD_RIGHT: - case NKCODE_PLUS: - case NKCODE_NUMPAD_ADD: - *value_ += step_; - break; - case NKCODE_PAGE_UP: - *value_ -= step_ * 10; - break; - case NKCODE_PAGE_DOWN: - *value_ += step_ * 10; - break; - case NKCODE_MOVE_HOME: - *value_ = minValue_; - break; - case NKCODE_MOVE_END: - *value_ = maxValue_; - break; - default: - return false; + SnapToFixed(); + + if (numFixedChoices_) { + // Find the current one. + int curIndex = -1; + for (int i = 0; i < numFixedChoices_; i++) { + if (*value_ == fixedChoices_[i]) { + curIndex = i; + } + } + switch (keyCode) { + case NKCODE_DPAD_LEFT: + case NKCODE_MINUS: + case NKCODE_NUMPAD_SUBTRACT: + case NKCODE_PAGE_DOWN: + if (curIndex >= 1) { + *value_ = fixedChoices_[curIndex - 1]; + } + break; + case NKCODE_DPAD_RIGHT: + case NKCODE_PLUS: + case NKCODE_NUMPAD_ADD: + case NKCODE_PAGE_UP: + if (curIndex < numFixedChoices_ - 1) { + *value_ = fixedChoices_[curIndex + 1]; + } + break; + case NKCODE_MOVE_HOME: + *value_ = fixedChoices_[0]; + break; + case NKCODE_MOVE_END: + *value_ = fixedChoices_[numFixedChoices_ - 1]; + break; + default: + return false; + } + } else { + switch (keyCode) { + case NKCODE_DPAD_LEFT: + case NKCODE_MINUS: + case NKCODE_NUMPAD_SUBTRACT: + *value_ -= step_; + break; + case NKCODE_DPAD_RIGHT: + case NKCODE_PLUS: + case NKCODE_NUMPAD_ADD: + *value_ += step_; + break; + case NKCODE_PAGE_UP: + *value_ -= step_ * 10; + break; + case NKCODE_PAGE_DOWN: + *value_ += step_ * 10; + break; + case NKCODE_MOVE_HOME: + *value_ = minValue_; + break; + case NKCODE_MOVE_END: + *value_ = maxValue_; + break; + default: + return false; + } } + EventParams params{}; params.v = this; params.a = (uint32_t)(*value_); @@ -1544,6 +1583,9 @@ void Slider::Clamp() { // Clamp the value to be a multiple of the nearest step (e.g. if step == 5, value == 293, it'll round down to 290). *value_ = *value_ - fmodf(*value_, step_); + + // If it's a fixed set, snap it. + SnapToFixed(); } void Slider::Draw(UIContext &dc) { @@ -1588,6 +1630,30 @@ void Slider::Update() { } } +void Slider::SnapToFixed() { + if (!numFixedChoices_) { + return; + } + + int val = *value_; + // Find the closest value. + int minDist = 999999999; + int best = -1; + for (int i = 0; i < numFixedChoices_; i++) { + int dist = val - fixedChoices_[i]; + if (dist < 0) + dist = -dist; + if (dist < minDist) { + minDist = dist; + best = i; + } + } + + if (best >= 0) { + *value_ = fixedChoices_[best]; + } +} + void Slider::GetContentDimensions(const UIContext &dc, float &w, float &h) const { // TODO w = 100; diff --git a/Common/UI/View.h b/Common/UI/View.h index d2ca7e8282..fd1b78ebfa 100644 --- a/Common/UI/View.h +++ b/Common/UI/View.h @@ -624,6 +624,10 @@ public: void Update() override; void GetContentDimensions(const UIContext &dc, float &w, float &h) const override; void SetShowPercent(bool s) { showPercent_ = s; } + void RestrictChoices(const int *fixedChoices, size_t numFixedChoices) { + fixedChoices_ = fixedChoices; + numFixedChoices_ = numFixedChoices; + } // OK to call this from the outside after having modified *value_ void Clamp(); @@ -632,6 +636,7 @@ public: private: bool ApplyKey(InputKeyCode keyCode); + void SnapToFixed(); int *value_; bool showPercent_; @@ -641,6 +646,8 @@ private: float paddingRight_; int step_; int repeat_ = 0; + const int *fixedChoices_ = nullptr; + size_t numFixedChoices_ = 0; InputKeyCode repeatCode_ = NKCODE_UNKNOWN; }; diff --git a/Core/Config.cpp b/Core/Config.cpp index ae0f4af587..4f974fa194 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -769,7 +769,7 @@ static const ConfigSetting soundSettings[] = { ConfigSetting("Enable", &g_Config.bEnableSound, true, CfgFlag::PER_GAME), ConfigSetting("AudioBackend", &g_Config.iAudioBackend, 0, CfgFlag::PER_GAME), ConfigSetting("ExtraAudioBuffering", &g_Config.bExtraAudioBuffering, false, CfgFlag::DEFAULT), - ConfigSetting("AudioSamples", &g_Config.iAudioSamples, 256, CfgFlag::DEFAULT), + ConfigSetting("AudioBufferSize", &g_Config.iSDLAudioBufferSize, 256, CfgFlag::DEFAULT), // Legacy volume settings, these get auto upgraded through default handlers on the new settings. NOTE: Must be before the new ones in the order here. // The default settings here are still relevant, they will get propagated into the new ones. diff --git a/Core/Config.h b/Core/Config.h index 8260540653..2c48c05c83 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -286,7 +286,7 @@ public: // Sound bool bEnableSound; int iAudioBackend; - int iAudioSamples; + int iSDLAudioBufferSize; // Legacy volume settings, 0-10. These get auto-upgraded and should not be used. int iLegacyGameVolume; diff --git a/Qt/QtMain.cpp b/Qt/QtMain.cpp index 102ed01af2..3b584986a9 100644 --- a/Qt/QtMain.cpp +++ b/Qt/QtMain.cpp @@ -87,7 +87,7 @@ static void InitSDLAudioDevice() { fmt.freq = 44100; fmt.format = AUDIO_S16; fmt.channels = 2; - fmt.samples = g_Config.iAudioSamples; + fmt.samples = std::max(g_Config.iSDLAudioBufferSize, 128); fmt.callback = &mixaudio; fmt.userdata = nullptr; diff --git a/SDL/SDLMain.cpp b/SDL/SDLMain.cpp index 349db10b9f..3e150f2670 100644 --- a/SDL/SDLMain.cpp +++ b/SDL/SDLMain.cpp @@ -146,7 +146,7 @@ static void InitSDLAudioDevice(const std::string &name = "") { fmt.freq = g_sampleRate; fmt.format = AUDIO_S16; fmt.channels = 2; - fmt.samples = g_Config.iAudioSamples; + fmt.samples = std::max(g_Config.iSDLAudioBufferSize, 128); fmt.callback = &sdl_mixaudio_callback; fmt.userdata = nullptr; @@ -163,7 +163,9 @@ static void InitSDLAudioDevice(const std::string &name = "") { } } if (audioDev <= 0) { - INFO_LOG(Log::Audio, "SDL: Trying a different audio device"); + if (audioDev < 0) { + INFO_LOG(Log::Audio, "SDL: Error: %s. Trying a different audio device", SDL_GetError()); + } audioDev = SDL_OpenAudioDevice(nullptr, 0, &fmt, &g_retFmt, SDL_AUDIO_ALLOW_FREQUENCY_CHANGE); } if (audioDev <= 0) { diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index 5c18117679..c574cb3111 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -615,6 +615,7 @@ void GameSettingsScreen::CreateAudioSettings(UI::ViewGroup *audioSettings) { auto a = GetI18NCategory(I18NCat::AUDIO); auto ac = GetI18NCategory(I18NCat::ACHIEVEMENTS); auto ms = GetI18NCategory(I18NCat::MAINSETTINGS); + auto di = GetI18NCategory(I18NCat::DIALOG); #if PPSSPP_PLATFORM(IOS) CheckBox *respectSilentMode = audioSettings->Add(new CheckBox(&g_Config.bAudioRespectSilentMode, a->T("Respect silent mode"))); @@ -693,6 +694,14 @@ void GameSettingsScreen::CreateAudioSettings(UI::ViewGroup *audioSettings) { PopupMultiChoiceDynamic *audioDevice = audioSettings->Add(new PopupMultiChoiceDynamic(&g_Config.sAudioDevice, a->T("Device"), audioDeviceList, I18NCat::NONE, screenManager())); audioDevice->OnChoice.Handle(this, &GameSettingsScreen::OnAudioDevice); sdlAudio = true; + + static const int bufferSizes[] = {128, 256, 512, 1024, 2048}; + PopupSliderChoice *bufferSize = audioSettings->Add(new PopupSliderChoice(&g_Config.iSDLAudioBufferSize, 0, 2048, 256, a->T("Buffer size"), screenManager())); + bufferSize->RestrictChoices(bufferSizes, ARRAY_SIZE(bufferSizes)); + bufferSize->OnChange.Add([=](EventParams& e) { + settingInfo_->Show(di->T("This change will not take effect until PPSSPP is restarted."), e.v); + return UI::EVENT_CONTINUE; + }); #endif if (sdlAudio || g_Config.iAudioBackend == AUDIO_BACKEND_WASAPI) { @@ -715,8 +724,6 @@ void GameSettingsScreen::CreateAudioSettings(UI::ViewGroup *audioSettings) { PopupMultiChoiceDynamic *MicChoice = audioSettings->Add(new PopupMultiChoiceDynamic(&g_Config.sMicDevice, a->T("Microphone Device"), micList, I18NCat::NONE, screenManager())); MicChoice->OnChoice.Handle(this, &GameSettingsScreen::OnMicDeviceChange); } - - PopupSliderChoice *audioSamples = audioSettings->Add(new PopupSliderChoice(&g_Config.iAudioSamples, AUDIOSAMPLES_MIN, AUDIOSAMPLES_MAX, 256, a->T("Audio Samples"), screenManager())); } void GameSettingsScreen::CreateControlsSettings(UI::ViewGroup *controlsSettings) { diff --git a/Windows/MainWindowMenu.cpp b/Windows/MainWindowMenu.cpp index 4c35a91e0b..5079620657 100644 --- a/Windows/MainWindowMenu.cpp +++ b/Windows/MainWindowMenu.cpp @@ -770,7 +770,6 @@ namespace MainWindow { case ID_DEBUG_SAVEFRAMEDUMP: { System_PostUIMessage(UIMessage::SAVE_FRAME_DUMP); - break; } diff --git a/assets/lang/ar_AE.ini b/assets/lang/ar_AE.ini index fb59f5b0bf..38ef0e212e 100644 --- a/assets/lang/ar_AE.ini +++ b/assets/lang/ar_AE.ini @@ -468,6 +468,7 @@ SSID = SSID Submit = ‎تقديم Supported = مدعوم There is no data = ‎ليس هناك بيانات. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = ‎تبديل الكل Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/az_AZ.ini b/assets/lang/az_AZ.ini index 8f211b075f..4a160fec07 100644 --- a/assets/lang/az_AZ.ini +++ b/assets/lang/az_AZ.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Submit Supported = Supported There is no data = Veri yoxdur +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Toggle all Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/bg_BG.ini b/assets/lang/bg_BG.ini index 572e2fdcc6..d2f6803cf7 100644 --- a/assets/lang/bg_BG.ini +++ b/assets/lang/bg_BG.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Submit Supported = Supported There is no data = Няма данни. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Toggle all Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/ca_ES.ini b/assets/lang/ca_ES.ini index 86a8a36a42..64edf7c382 100644 --- a/assets/lang/ca_ES.ini +++ b/assets/lang/ca_ES.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Enviar Supported = Suportat There is no data = No hi han dades +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Canviar tot Toggle List = Veure llista Top Center = Top center diff --git a/assets/lang/cz_CZ.ini b/assets/lang/cz_CZ.ini index 95ed51f8ba..f7178a451d 100644 --- a/assets/lang/cz_CZ.ini +++ b/assets/lang/cz_CZ.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Odeslat Supported = Supported There is no data = Žádná data k dispozici. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Přepnout vše Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/da_DK.ini b/assets/lang/da_DK.ini index 4a352d62cb..930e5f5538 100644 --- a/assets/lang/da_DK.ini +++ b/assets/lang/da_DK.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Indsend Supported = Supported There is no data = Der findes ingen data. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Skift alle Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/de_DE.ini b/assets/lang/de_DE.ini index f9f8c4bb7a..130d235a3c 100644 --- a/assets/lang/de_DE.ini +++ b/assets/lang/de_DE.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Absenden Supported = Unterstützt There is no data = Keine Daten vorhanden +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Alle umschalten Toggle List = Toggle list Top Center = Mitte oben diff --git a/assets/lang/dr_ID.ini b/assets/lang/dr_ID.ini index 7ec7ecd1fa..02acbc3c96 100644 --- a/assets/lang/dr_ID.ini +++ b/assets/lang/dr_ID.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Submit Supported = Supported There is no data = Ai edda data mane. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Toggle all Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/en_US.ini b/assets/lang/en_US.ini index f4149f891f..64efc90964 100644 --- a/assets/lang/en_US.ini +++ b/assets/lang/en_US.ini @@ -484,6 +484,7 @@ SSID = SSID Submit = Submit Supported = Supported There is no data = There is no data. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Toggle all Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/es_ES.ini b/assets/lang/es_ES.ini index 2cccdc6975..0df17dae1b 100644 --- a/assets/lang/es_ES.ini +++ b/assets/lang/es_ES.ini @@ -461,6 +461,7 @@ SSID = SSID Submit = Enviar Supported = Soportado There is no data = No hay datos. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Cambiar todo Toggle List = Ver lista Top Center = Superior centrado diff --git a/assets/lang/es_LA.ini b/assets/lang/es_LA.ini index 93a9faebbe..7ea985eeed 100644 --- a/assets/lang/es_LA.ini +++ b/assets/lang/es_LA.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Enviar Supported = Soportado There is no data = No se han encontrado datos del juego. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Cambiar todo Toggle List = Cambiar lista Top Center = Arriba diff --git a/assets/lang/fa_IR.ini b/assets/lang/fa_IR.ini index f244672daa..2fa5922eaf 100644 --- a/assets/lang/fa_IR.ini +++ b/assets/lang/fa_IR.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = تایید کردن Supported = حمایت میشود There is no data = ‎.داده‌ای وجود ندارد +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = تغییر وضعیت همه Toggle List = تغییر وضعیت لیست Top Center = Top center diff --git a/assets/lang/fi_FI.ini b/assets/lang/fi_FI.ini index 61a88bc9a2..73fe674c26 100644 --- a/assets/lang/fi_FI.ini +++ b/assets/lang/fi_FI.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Submit Supported = Tuettu There is no data = Dataa ei ole. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Toggle all Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/fr_FR.ini b/assets/lang/fr_FR.ini index e07e911862..a70ca49cba 100644 --- a/assets/lang/fr_FR.ini +++ b/assets/lang/fr_FR.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Envoyer Supported = Supporté There is no data = Aucune donnée trouvée. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Tout cocher Toggle List = Afficher liste Top Center = En haut au centre diff --git a/assets/lang/gl_ES.ini b/assets/lang/gl_ES.ini index f5fe16d97d..76b5d2af54 100644 --- a/assets/lang/gl_ES.ini +++ b/assets/lang/gl_ES.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Enviar Supported = Supported There is no data = A tarxeta de memoria está baleira. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Cambiar todo Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/gr_EL.ini b/assets/lang/gr_EL.ini index eb9ff14643..d9fb2cd96f 100644 --- a/assets/lang/gr_EL.ini +++ b/assets/lang/gr_EL.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = ΥΠΟΒΟΛΗ Supported = Supported There is no data = ΔΕΝ ΥΠΑΡΧΟΥΝ ΔΕΔΟΜΕΝΑ +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = ΕΝΑΛΛΑΓΗ ΟΛΩΝ Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/he_IL.ini b/assets/lang/he_IL.ini index 1c3f09bee1..30bcb419d6 100644 --- a/assets/lang/he_IL.ini +++ b/assets/lang/he_IL.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Submit Supported = Supported There is no data = .םינותנ ןיא +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Toggle all Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/he_IL_invert.ini b/assets/lang/he_IL_invert.ini index 6b744436cf..22b8648087 100644 --- a/assets/lang/he_IL_invert.ini +++ b/assets/lang/he_IL_invert.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Submit Supported = Supported There is no data = .םינותנ ןיא +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Toggle all Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/hr_HR.ini b/assets/lang/hr_HR.ini index ad120f540f..80f0a32b81 100644 --- a/assets/lang/hr_HR.ini +++ b/assets/lang/hr_HR.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Submit Supported = Podržano There is no data = Nema date. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Uključi sve Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/hu_HU.ini b/assets/lang/hu_HU.ini index 23c52c9a84..b9566ed1f9 100644 --- a/assets/lang/hu_HU.ini +++ b/assets/lang/hu_HU.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Elküld Supported = Támogatott There is no data = Nincs adat. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Összes át-\nkapcsolása Toggle List = Lista Top Center = Felül középen diff --git a/assets/lang/id_ID.ini b/assets/lang/id_ID.ini index 0f6cbf3bf8..f56eb22732 100644 --- a/assets/lang/id_ID.ini +++ b/assets/lang/id_ID.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Ajukan Supported = Didukung There is no data = Tidak ada data. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Alihkan semua Toggle List = Daftar pengalihan Top Center = Tengah atas diff --git a/assets/lang/it_IT.ini b/assets/lang/it_IT.ini index ddc35181a0..94eb36e092 100644 --- a/assets/lang/it_IT.ini +++ b/assets/lang/it_IT.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Invia Supported = Supportato There is no data = Non ci sono dati. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Attiva Tutto Toggle List = Mostra lista Top Center = In alto al centro diff --git a/assets/lang/ja_JP.ini b/assets/lang/ja_JP.ini index e2efad46b5..db6b11b5fb 100644 --- a/assets/lang/ja_JP.ini +++ b/assets/lang/ja_JP.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = 決定 Supported = サポートしています There is no data = データがありません。 +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = 全て反転する Toggle List = 切り替えリスト Top Center = 上中央 diff --git a/assets/lang/jv_ID.ini b/assets/lang/jv_ID.ini index c98f466a3d..180148d77d 100644 --- a/assets/lang/jv_ID.ini +++ b/assets/lang/jv_ID.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Kerem Supported = Supported There is no data = Ora ana data. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Peleh kabeh Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/ko_KR.ini b/assets/lang/ko_KR.ini index 3d7df06312..b08f49034b 100644 --- a/assets/lang/ko_KR.ini +++ b/assets/lang/ko_KR.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = 전송 Supported = 지원 There is no data = 데이터가 없습니다. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = 모두 토글 Toggle List = 토글 목록 Top Center = 상단 중앙 diff --git a/assets/lang/ku_SO.ini b/assets/lang/ku_SO.ini index c20272a869..b7fc49bea5 100644 --- a/assets/lang/ku_SO.ini +++ b/assets/lang/ku_SO.ini @@ -474,6 +474,7 @@ SSID = SSID Submit = Submit Supported = Supported There is no data = زانیاری بوونی نیە لەسەری +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Toggle all Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/lo_LA.ini b/assets/lang/lo_LA.ini index 61858b4053..6fed00255d 100644 --- a/assets/lang/lo_LA.ini +++ b/assets/lang/lo_LA.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = ຍອມຮັບ Supported = Supported There is no data = ບໍ່ມີຂໍ້ມູນ. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = ເລືອກທັງໝົດ Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/lt-LT.ini b/assets/lang/lt-LT.ini index 07846aca2c..2a61cf1cfc 100644 --- a/assets/lang/lt-LT.ini +++ b/assets/lang/lt-LT.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Patvirtinti Supported = Supported There is no data = Čia nėra jokių duomenų. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Perjungti visus Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/ms_MY.ini b/assets/lang/ms_MY.ini index a5566fa5a9..c960115549 100644 --- a/assets/lang/ms_MY.ini +++ b/assets/lang/ms_MY.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Submit Supported = Supported There is no data = Tiada data disini. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Periksa semua Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/nl_NL.ini b/assets/lang/nl_NL.ini index ad5bb4460f..a4fa14c89b 100644 --- a/assets/lang/nl_NL.ini +++ b/assets/lang/nl_NL.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Verzenden Supported = Ondersteund There is no data = Er zijn geen data. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Alles schakelen Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/no_NO.ini b/assets/lang/no_NO.ini index fef58c4bc6..e6a8d66b50 100644 --- a/assets/lang/no_NO.ini +++ b/assets/lang/no_NO.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Submit Supported = Supported There is no data = Det finnes ingen data. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Toggle all Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/pl_PL.ini b/assets/lang/pl_PL.ini index cd09962585..5fc2010d33 100644 --- a/assets/lang/pl_PL.ini +++ b/assets/lang/pl_PL.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Wyślij Supported = Wspierane There is no data = Brak danych. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Wybierz wszystko Toggle List = Wybierz listę Top Center = Górny środek diff --git a/assets/lang/pt_BR.ini b/assets/lang/pt_BR.ini index c009f6671f..a24df5cd5b 100644 --- a/assets/lang/pt_BR.ini +++ b/assets/lang/pt_BR.ini @@ -484,6 +484,7 @@ SSID = SSID Submit = Submeter Supported = Suportado There is no data = Não há dados. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Alternar todos Toggle List = Alternar lista Top Center = No centro do topo diff --git a/assets/lang/pt_PT.ini b/assets/lang/pt_PT.ini index 6d40bf3be4..9ad2d93edb 100644 --- a/assets/lang/pt_PT.ini +++ b/assets/lang/pt_PT.ini @@ -484,6 +484,7 @@ SSID = SSID Submit = Enviar Supported = Compatível There is no data = Não existem dados. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Alternar todos Toggle List = Alternar lista Top Center = Centro superior diff --git a/assets/lang/ro_RO.ini b/assets/lang/ro_RO.ini index 7224b0a180..4a8485aadd 100644 --- a/assets/lang/ro_RO.ini +++ b/assets/lang/ro_RO.ini @@ -461,6 +461,7 @@ SSID = SSID Submit = Trimite Supported = Supported There is no data = Salvare inexistentă +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Schimbă tot Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/ru_RU.ini b/assets/lang/ru_RU.ini index 4bbef121ba..8746e2b459 100644 --- a/assets/lang/ru_RU.ini +++ b/assets/lang/ru_RU.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Выполнение Supported = Поддерживается There is no data = Нет данных +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Переключить все Toggle List = Переключить список Top Center = Вверху в центре diff --git a/assets/lang/sv_SE.ini b/assets/lang/sv_SE.ini index 9326992e0f..65829efa7d 100644 --- a/assets/lang/sv_SE.ini +++ b/assets/lang/sv_SE.ini @@ -461,6 +461,7 @@ SSID = SSID Submit = Skicka Supported = Stöds There is no data = Det finns ingen data. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Vänd alla Toggle List = Vänd lista Top Center = Överkant centrerad diff --git a/assets/lang/tg_PH.ini b/assets/lang/tg_PH.ini index 54e8471b2e..ff0b89bd7a 100644 --- a/assets/lang/tg_PH.ini +++ b/assets/lang/tg_PH.ini @@ -461,6 +461,7 @@ SSID = SSID Submit = I-Submit Supported = Suportado There is no data = Walang Datos +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = I-toggle lahat Toggle List = I-Toggle list Top Center = Gitnang paitaas diff --git a/assets/lang/th_TH.ini b/assets/lang/th_TH.ini index 8fffc1de96..00ac3e9d27 100644 --- a/assets/lang/th_TH.ini +++ b/assets/lang/th_TH.ini @@ -470,6 +470,7 @@ SSID = SSID Submit = ตกลง Supported = รองรับ There is no data = ไม่มีข้อมูล +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = ทั้งหมด Toggle List = รายการ Top Center = มุมบนกลางจอ diff --git a/assets/lang/tr_TR.ini b/assets/lang/tr_TR.ini index 645b770769..d2f5df8110 100644 --- a/assets/lang/tr_TR.ini +++ b/assets/lang/tr_TR.ini @@ -462,6 +462,7 @@ SSID = SSID Submit = Gönder Supported = Destekleniyor There is no data = Veri yok. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Hepsini değiştir Toggle List = Listeyi değiştir Top Center = Orta üst diff --git a/assets/lang/uk_UA.ini b/assets/lang/uk_UA.ini index 3eb3789e88..4ee314f597 100644 --- a/assets/lang/uk_UA.ini +++ b/assets/lang/uk_UA.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Виконання Supported = Підтримується There is no data = Немає даних +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Переключити все Toggle List = Переключити список Top Center = Верхній центр diff --git a/assets/lang/vi_VN.ini b/assets/lang/vi_VN.ini index 4fa8019115..59700c94b4 100644 --- a/assets/lang/vi_VN.ini +++ b/assets/lang/vi_VN.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = Gửi đi Supported = Được hỗ trợ There is no data = Không có dữ liệu. +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = Tất cả Toggle List = Toggle list Top Center = Top center diff --git a/assets/lang/zh_CN.ini b/assets/lang/zh_CN.ini index 8fec1fd0af..c5a1581b69 100644 --- a/assets/lang/zh_CN.ini +++ b/assets/lang/zh_CN.ini @@ -460,6 +460,7 @@ SSID = 网络名称 Submit = 提交 Supported = 支持 There is no data = 存档不存在。 +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = 全选/不选 Toggle List = 展开列表 Top Center = 正上方 diff --git a/assets/lang/zh_TW.ini b/assets/lang/zh_TW.ini index 18bd126d34..6f78321956 100644 --- a/assets/lang/zh_TW.ini +++ b/assets/lang/zh_TW.ini @@ -460,6 +460,7 @@ SSID = SSID Submit = 提交 Supported = 支援 There is no data = 沒有資料 +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. Toggle All = 切換全部 Toggle List = 切換清單 Top Center = 正上