From 36051cd1742873dd9e264fcdff2921c408a71a89 Mon Sep 17 00:00:00 2001 From: bagnz0r Date: Sat, 6 Jul 2013 01:32:11 +0200 Subject: [PATCH 01/12] Updated high/low watermarks to lower values. This should fix problems in DJ MAX series and Hatsune Miku: Project Diva. --- Core/HLE/__sceAudio.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/HLE/__sceAudio.cpp b/Core/HLE/__sceAudio.cpp index 84e766706..f712daa1a 100644 --- a/Core/HLE/__sceAudio.cpp +++ b/Core/HLE/__sceAudio.cpp @@ -44,8 +44,8 @@ const int audioHostIntervalUs = (int)(1000000ULL * hostAttemptBlockSize / hwSamp // High and low watermarks, basically. For perfect emulation, the correct values are 0 and 1, respectively. // TODO: Tweak -const int chanQueueMaxSizeFactor = 2; -const int chanQueueMinSizeFactor = 1; +const int chanQueueMaxSizeFactor = 1; +const int chanQueueMinSizeFactor = 0; // TODO: Need to replace this with something lockless. Mutexes in the audio pipeline // is bad mojo. From 90fd21a73782f7b27500f3e87947838129a9095e Mon Sep 17 00:00:00 2001 From: bagnz0r Date: Sat, 6 Jul 2013 03:17:38 +0200 Subject: [PATCH 02/12] Fixed divide by zero issue and tweaked the values just right for rhythm games --- Core/HLE/__sceAudio.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Core/HLE/__sceAudio.cpp b/Core/HLE/__sceAudio.cpp index f712daa1a..c37454f89 100644 --- a/Core/HLE/__sceAudio.cpp +++ b/Core/HLE/__sceAudio.cpp @@ -37,15 +37,15 @@ int eventHostAudioUpdate = -1; int mixFrequency = 44100; const int hwSampleRate = 44100; -const int hwBlockSize = 64; -const int hostAttemptBlockSize = 512; +const int hwBlockSize = 8; // Yes I know, but this is nearly perfect for rhythm games. +const int hostAttemptBlockSize = 256; // Same here... const int audioIntervalUs = (int)(1000000ULL * hwBlockSize / hwSampleRate); const int audioHostIntervalUs = (int)(1000000ULL * hostAttemptBlockSize / hwSampleRate); // High and low watermarks, basically. For perfect emulation, the correct values are 0 and 1, respectively. // TODO: Tweak -const int chanQueueMaxSizeFactor = 1; -const int chanQueueMinSizeFactor = 0; +const int chanQueueMaxSizeFactor = 0; +const int chanQueueMinSizeFactor = 1; // TODO: Need to replace this with something lockless. Mutexes in the audio pipeline // is bad mojo. From 50044667ea7c24436ec59bf50777f0f7ab7e156d Mon Sep 17 00:00:00 2001 From: bagnz0r Date: Sat, 6 Jul 2013 22:01:52 +0200 Subject: [PATCH 03/12] Fine-tuned the block size and queue values to stutter less and produce lower latency audio. --- Core/HLE/__sceAudio.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Core/HLE/__sceAudio.cpp b/Core/HLE/__sceAudio.cpp index c37454f89..fcc9c9df4 100644 --- a/Core/HLE/__sceAudio.cpp +++ b/Core/HLE/__sceAudio.cpp @@ -36,8 +36,8 @@ int eventAudioUpdate = -1; int eventHostAudioUpdate = -1; int mixFrequency = 44100; -const int hwSampleRate = 44100; -const int hwBlockSize = 8; // Yes I know, but this is nearly perfect for rhythm games. +const int hwSampleRate = 44100; +const int hwBlockSize = 32; // Yes I know, but this is nearly perfect for rhythm games. const int hostAttemptBlockSize = 256; // Same here... const int audioIntervalUs = (int)(1000000ULL * hwBlockSize / hwSampleRate); const int audioHostIntervalUs = (int)(1000000ULL * hostAttemptBlockSize / hwSampleRate); @@ -45,7 +45,7 @@ const int audioHostIntervalUs = (int)(1000000ULL * hostAttemptBlockSize / hwSamp // High and low watermarks, basically. For perfect emulation, the correct values are 0 and 1, respectively. // TODO: Tweak const int chanQueueMaxSizeFactor = 0; -const int chanQueueMinSizeFactor = 1; +const int chanQueueMinSizeFactor = 1; // TODO: Need to replace this with something lockless. Mutexes in the audio pipeline // is bad mojo. From 26654555b465c99f7746759ed9f62b91d38ddf1e Mon Sep 17 00:00:00 2001 From: bagnz0r Date: Sat, 6 Jul 2013 23:23:17 +0200 Subject: [PATCH 04/12] Updated block values so that we will have lower latency audio... Additionally I have fixed the issue with too loud sound effects and broken buttons in audio settings screen. Before this fix, you wouldn't be able to set the volume above 5 despite the fact that 8 is the default value. 5 --- Core/HLE/__sceAudio.cpp | 8 ++++---- Core/HW/SasAudio.cpp | 2 +- UI/MenuScreens.cpp | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Core/HLE/__sceAudio.cpp b/Core/HLE/__sceAudio.cpp index 8c2fd096b..f916eb715 100644 --- a/Core/HLE/__sceAudio.cpp +++ b/Core/HLE/__sceAudio.cpp @@ -36,16 +36,16 @@ int eventAudioUpdate = -1; int eventHostAudioUpdate = -1; int mixFrequency = 44100; -const int hwSampleRate = 44100; -const int hwBlockSize = 32; // Yes I know, but this is nearly perfect for rhythm games. -const int hostAttemptBlockSize = 256; // Same here... +const int hwSampleRate = 44100; +const int hwBlockSize = 32; +const int hostAttemptBlockSize = 256; const int audioIntervalUs = (int)(1000000ULL * hwBlockSize / hwSampleRate); const int audioHostIntervalUs = (int)(1000000ULL * hostAttemptBlockSize / hwSampleRate); // High and low watermarks, basically. For perfect emulation, the correct values are 0 and 1, respectively. // TODO: Tweak const int chanQueueMaxSizeFactor = 0; -const int chanQueueMinSizeFactor = 1; +const int chanQueueMinSizeFactor = 1; // TODO: Need to replace this with something lockless. Mutexes in the audio pipeline // is bad mojo. diff --git a/Core/HW/SasAudio.cpp b/Core/HW/SasAudio.cpp index d776d6334..8ac69ba08 100644 --- a/Core/HW/SasAudio.cpp +++ b/Core/HW/SasAudio.cpp @@ -413,7 +413,7 @@ void SasInstance::Mix(u32 outAddr, u32 inAddr, int leftVol, int rightVol) { // Resample to the correct pitch, writing exactly "grainSize" samples. u32 sampleFrac = voice.sampleFrac; - const int MAX_CONFIG_VOLUME = 17; // 12 + 5 + const int MAX_CONFIG_VOLUME = 18; int volumeShift = (MAX_CONFIG_VOLUME - g_Config.iSEVolume); if (volumeShift < 0) volumeShift = 0; for (int i = 0; i < grainSize; i++) { diff --git a/UI/MenuScreens.cpp b/UI/MenuScreens.cpp index 2a6e40d6a..4b7a6c60d 100644 --- a/UI/MenuScreens.cpp +++ b/UI/MenuScreens.cpp @@ -805,7 +805,7 @@ void AudioScreen::render() { if (g_Config.iBGMVolume > 1) g_Config.iBGMVolume -= 1; if (UIButton(GEN_ID, hlinear1, 50, 0, a->T("+1"), ALIGN_LEFT)) - if (g_Config.iBGMVolume < 5) + if (g_Config.iBGMVolume < 10) g_Config.iBGMVolume += 1; y+=20; char sevol[256]; @@ -818,7 +818,7 @@ void AudioScreen::render() { if (g_Config.iSEVolume > 1) g_Config.iSEVolume -= 1; if (UIButton(GEN_ID, hlinear2, 50, 0, a->T("+1"), ALIGN_LEFT)) - if (g_Config.iSEVolume < 5) + if (g_Config.iSEVolume < 10) g_Config.iSEVolume += 1; y+=10; From 82998255b71afd010c0f36d3074f30a8370ae77c Mon Sep 17 00:00:00 2001 From: bagnz0r Date: Sat, 6 Jul 2013 23:30:03 +0200 Subject: [PATCH 05/12] Polish translation. Probably still incomplete, but it's more than 75% I think. :) --- polish.txt | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 polish.txt diff --git a/polish.txt b/polish.txt new file mode 100644 index 000000000..a7fd3ce21 --- /dev/null +++ b/polish.txt @@ -0,0 +1,99 @@ + + +Polski +[Audio] ++1 = +1 +-1 = -1 +Audio Settings = Ustawienia dźwięku +Auto = Auto +BGM Volume : = Gł. muzyki : +Enable Atrac3+ = Włącz Atrac3+ +Enable Sound = Włącz dźwięk +SE Volume : = Gł. efektów : +[Developer] +Developer Tools = Zaawansowane +Dump next frame = Zrzuć nast. frame +Load language ini = Załaduj język +Report = Włącz raporty kompatybilności +Run CPU Tests = Testuj CPU +Save language ini = Zapisz język +[General] +Back = Wstecz +Next Page = Nast. strona +Prev Page = Pop. strona +[Graphics] +AA = Anti-Aliasing +Buffered Rendering = Buforowane rysowane +Display Raw Framebuffer = Rysuj czysty bufor klatek +Fullscreen = Pełny ekran +Graphics Settings = Ustawienia grafiki +Hardware Transform = Sprzętowe przetwarzanie geometrii +Mipmapping = Mipmapowanie +Skip Updating PSP Memory = Pomiń aktualizowanie pamięci PSP +Stream VBO = Strumieniuj VBO +VSync = VSync +Vertex Cache = Vertex cache +Anisotropic Filtering = Filtrowanie anizotropowe +Level : = Poziom : +Texture Filtering = Filtrowanie tekstur +Type : = Typ : +Nearest = Nearest +Linear = Liniowe +Linear(CG) = Liniowe(CG) +Texture Scaling = Skalowanie tekstur +Force 60 FPS or less = Wymuś limit 60 FPS lub mniej +Show speed / internal FPS = Pokaż prędkość / wewnętrzny FPS +Toggled Speed Limit = Włącz/wyłącz limit prędkości +Frame Skipping = Porzucanie klatek +[MainMenu] +Credits = Autorzy +Exit = Wyjdź +Load = Wczytaj... +Settings = Ustawienia +[MainSettings] +Audio = Dźwięk +AudioDesc = Dostosuj ustawienia dźwięku +Controls = Sterowanie +ControlsDesc = Kontrolki dotykowe, duże przyciski +Developer = Zaawansowane +DeveloperDesc = Testy CPU, zrzut nast. frame +Graphics = Grafika +GraphicsDesc = Dostosuj ustawienia grafiki +Settings = Ustawienia +System = System +SystemDesc = Ustawienia systemowe +[PSPCredits] +created = Program stworzony przez +license = Wolne Oprogramowanie na licencji GPL 2.0 +[Plugin] +Already installed = Mai's Atrac3+ decoder już jest zainstalowany. +Czy chciałbyś pobrać i zainstalować go od nowa? +Back = Wstecz +Download and install = Pobierz i zainstaluj. +Installed Correctly = Plugin Mai Atrac3+ został poprawnie zainstalowany. +Kliknij Wstecz. +More Information = Więcej informacji +Origins are dubious = * Plugin Mai's Atrac3+ decoder jest aktualnie +wymagany w większości gier do wsparcia dźwięku w tle (muzyki), oraz +głosu. Pochodzenie tego kodu stoi pod znakiem zapytania. +Kliknij Więcej informacji aby dowiedzieć się więcej. +SorryNoDownload = Przykro nam, nie można pobrać tego plugina automatycznie +na tej platformie. +To download and install = Aby pobrać i zainstalować plugin Mai's Atrac3+ + naciśnij Pobierz. +[System] ++1 = +1 +-1 = -1 +Button Pref : X to Confirm = Preferencje przycisków : X aby Potwierdzić +Clear = Wyczyść +Dynarec = Dynarec (JIT) +Enable Cheats = Włącz cheaty +Fast Memory = Szybka pamięć (niestabilne) +Language = Język +Max. No of Recents : = Maksymalna ilość ostatnich gier : +Show Debug Statistics = Pokaż statystyki debugowania. +System Language : = Język systemowy : +System Settings = Ustawienia systemowe +Unlock CPU Clock = Odblokuj zegar CPU +Use O = Użyj O +Use X = Użyj X From 669216fcab4b2afb199b7c055f593f51aa6e1684 Mon Sep 17 00:00:00 2001 From: bagnz0r Date: Sat, 6 Jul 2013 23:40:05 +0200 Subject: [PATCH 06/12] This should be better, previous values still caused a peak blowout. Also limited sound SE and BGM value to 8, because any higher and you have garbage. --- Core/HW/SasAudio.cpp | 2 +- UI/MenuScreens.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Core/HW/SasAudio.cpp b/Core/HW/SasAudio.cpp index 8ac69ba08..52015ce4c 100644 --- a/Core/HW/SasAudio.cpp +++ b/Core/HW/SasAudio.cpp @@ -413,7 +413,7 @@ void SasInstance::Mix(u32 outAddr, u32 inAddr, int leftVol, int rightVol) { // Resample to the correct pitch, writing exactly "grainSize" samples. u32 sampleFrac = voice.sampleFrac; - const int MAX_CONFIG_VOLUME = 18; + const int MAX_CONFIG_VOLUME = 20; int volumeShift = (MAX_CONFIG_VOLUME - g_Config.iSEVolume); if (volumeShift < 0) volumeShift = 0; for (int i = 0; i < grainSize; i++) { diff --git a/UI/MenuScreens.cpp b/UI/MenuScreens.cpp index 4b7a6c60d..14da0c3d7 100644 --- a/UI/MenuScreens.cpp +++ b/UI/MenuScreens.cpp @@ -805,7 +805,7 @@ void AudioScreen::render() { if (g_Config.iBGMVolume > 1) g_Config.iBGMVolume -= 1; if (UIButton(GEN_ID, hlinear1, 50, 0, a->T("+1"), ALIGN_LEFT)) - if (g_Config.iBGMVolume < 10) + if (g_Config.iBGMVolume < 8) g_Config.iBGMVolume += 1; y+=20; char sevol[256]; @@ -818,7 +818,7 @@ void AudioScreen::render() { if (g_Config.iSEVolume > 1) g_Config.iSEVolume -= 1; if (UIButton(GEN_ID, hlinear2, 50, 0, a->T("+1"), ALIGN_LEFT)) - if (g_Config.iSEVolume < 10) + if (g_Config.iSEVolume < 8) g_Config.iSEVolume += 1; y+=10; From d89cd4813f1bc9db60d4eaeef72254c9753851b4 Mon Sep 17 00:00:00 2001 From: bagnz0r Date: Sat, 6 Jul 2013 23:54:15 +0200 Subject: [PATCH 07/12] More fine-tuning... --- Core/HLE/__sceAudio.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/HLE/__sceAudio.cpp b/Core/HLE/__sceAudio.cpp index f916eb715..bdf4c3614 100644 --- a/Core/HLE/__sceAudio.cpp +++ b/Core/HLE/__sceAudio.cpp @@ -37,7 +37,7 @@ int eventHostAudioUpdate = -1; int mixFrequency = 44100; const int hwSampleRate = 44100; -const int hwBlockSize = 32; +const int hwBlockSize = 16; const int hostAttemptBlockSize = 256; const int audioIntervalUs = (int)(1000000ULL * hwBlockSize / hwSampleRate); const int audioHostIntervalUs = (int)(1000000ULL * hostAttemptBlockSize / hwSampleRate); From d4f6cfc816ff2cfd6df14c4a8126a3843fc50915 Mon Sep 17 00:00:00 2001 From: bagnz0r Date: Sun, 7 Jul 2013 00:06:30 +0200 Subject: [PATCH 08/12] Added ifdef for low latency audio. --- Core/HLE/__sceAudio.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Core/HLE/__sceAudio.cpp b/Core/HLE/__sceAudio.cpp index bdf4c3614..7a36d8a3d 100644 --- a/Core/HLE/__sceAudio.cpp +++ b/Core/HLE/__sceAudio.cpp @@ -29,6 +29,8 @@ #include "FixedSizeQueue.h" #include "Common/Thread.h" +#define LOW_LATENCY_AUDIO true + // Should be used to lock anything related to the outAudioQueue. recursive_mutex section; @@ -37,15 +39,27 @@ int eventHostAudioUpdate = -1; int mixFrequency = 44100; const int hwSampleRate = 44100; + +#ifdef LOW_LATENCY_AUDIO const int hwBlockSize = 16; const int hostAttemptBlockSize = 256; +#else +const int hwBlockSize = 64; +const int hostAttemptBlockSize = 512; +#endif; + const int audioIntervalUs = (int)(1000000ULL * hwBlockSize / hwSampleRate); const int audioHostIntervalUs = (int)(1000000ULL * hostAttemptBlockSize / hwSampleRate); // High and low watermarks, basically. For perfect emulation, the correct values are 0 and 1, respectively. // TODO: Tweak +#ifdef LOW_LATENCY_AUDIO const int chanQueueMaxSizeFactor = 0; const int chanQueueMinSizeFactor = 1; +#else +const int chanQueueMaxSizeFactor = 2; +const int chanQueueMinSizeFactor = 1; +#endif // TODO: Need to replace this with something lockless. Mutexes in the audio pipeline // is bad mojo. From 35d70af3ab96995ef26cd633389f48d505c13515 Mon Sep 17 00:00:00 2001 From: bagnz0r Date: Sun, 7 Jul 2013 00:15:26 +0200 Subject: [PATCH 09/12] Fixed bad SE volume limit in sceAttrac. --- Core/HLE/sceAtrac.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index b2de67421..b9300e5e0 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -623,7 +623,7 @@ u32 _AtracDecodeData(int atracID, u8* outbuf, u32 *SamplesNum, u32* finish, int atrac->sampleQueue.push(buf, decodebytes); } } - const int MAX_CONFIG_VOLUME = 5; + const int MAX_CONFIG_VOLUME = 8; s16* out = (s16*)outbuf; memset(out, 0, ATRAC3PLUS_MAX_SAMPLES * sizeof(s16) * atrac->atracOutputChannels); int gotsize = atrac->sampleQueue.pop_front(buf, ATRAC3PLUS_MAX_SAMPLES * sizeof(s16) * atrac->atracChannels); From ea2f62409200103e7cef2567cb9f85b095c3c9a6 Mon Sep 17 00:00:00 2001 From: bagnz0r Date: Sun, 7 Jul 2013 00:53:29 +0200 Subject: [PATCH 10/12] Increased default sound volume to 5. Just because 4 is too low, literally. --- Core/Config.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/Config.cpp b/Core/Config.cpp index aebb7523c..788cd80b8 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -129,8 +129,8 @@ void Config::Load(const char *iniFileName) IniFile::Section *sound = iniFile.GetOrCreateSection("Sound"); sound->Get("Enable", &bEnableSound, true); sound->Get("EnableAtrac3plus", &bEnableAtrac3plus, true); - sound->Get("BGMVolume", &iBGMVolume, 4); - sound->Get("SEVolume", &iSEVolume, 4); + sound->Get("BGMVolume", &iBGMVolume, 5); + sound->Get("SEVolume", &iSEVolume, 5); IniFile::Section *control = iniFile.GetOrCreateSection("Control"); control->Get("ShowStick", &bShowAnalogStick, false); From 8ec3f42d280be8d3691d6484364f180723e0c364 Mon Sep 17 00:00:00 2001 From: bagnz0r Date: Thu, 18 Jul 2013 00:59:23 +0200 Subject: [PATCH 11/12] Low latency audio disabled by default --- Core/HLE/__sceAudio.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/HLE/__sceAudio.cpp b/Core/HLE/__sceAudio.cpp index 7a36d8a3d..45bb878ce 100644 --- a/Core/HLE/__sceAudio.cpp +++ b/Core/HLE/__sceAudio.cpp @@ -29,7 +29,7 @@ #include "FixedSizeQueue.h" #include "Common/Thread.h" -#define LOW_LATENCY_AUDIO true +#define LOW_LATENCY_AUDIO false // Should be used to lock anything related to the outAudioQueue. recursive_mutex section; From 90d0f1649ab5bf1cefed30bd22e8d9478884e031 Mon Sep 17 00:00:00 2001 From: Philip Butkiewicz Date: Thu, 18 Jul 2013 11:52:42 +0200 Subject: [PATCH 12/12] Removed Polish. --- polish.txt | 99 ------------------------------------------------------ 1 file changed, 99 deletions(-) delete mode 100644 polish.txt diff --git a/polish.txt b/polish.txt deleted file mode 100644 index a7fd3ce21..000000000 --- a/polish.txt +++ /dev/null @@ -1,99 +0,0 @@ - - -Polski -[Audio] -+1 = +1 --1 = -1 -Audio Settings = Ustawienia dźwięku -Auto = Auto -BGM Volume : = Gł. muzyki : -Enable Atrac3+ = Włącz Atrac3+ -Enable Sound = Włącz dźwięk -SE Volume : = Gł. efektów : -[Developer] -Developer Tools = Zaawansowane -Dump next frame = Zrzuć nast. frame -Load language ini = Załaduj język -Report = Włącz raporty kompatybilności -Run CPU Tests = Testuj CPU -Save language ini = Zapisz język -[General] -Back = Wstecz -Next Page = Nast. strona -Prev Page = Pop. strona -[Graphics] -AA = Anti-Aliasing -Buffered Rendering = Buforowane rysowane -Display Raw Framebuffer = Rysuj czysty bufor klatek -Fullscreen = Pełny ekran -Graphics Settings = Ustawienia grafiki -Hardware Transform = Sprzętowe przetwarzanie geometrii -Mipmapping = Mipmapowanie -Skip Updating PSP Memory = Pomiń aktualizowanie pamięci PSP -Stream VBO = Strumieniuj VBO -VSync = VSync -Vertex Cache = Vertex cache -Anisotropic Filtering = Filtrowanie anizotropowe -Level : = Poziom : -Texture Filtering = Filtrowanie tekstur -Type : = Typ : -Nearest = Nearest -Linear = Liniowe -Linear(CG) = Liniowe(CG) -Texture Scaling = Skalowanie tekstur -Force 60 FPS or less = Wymuś limit 60 FPS lub mniej -Show speed / internal FPS = Pokaż prędkość / wewnętrzny FPS -Toggled Speed Limit = Włącz/wyłącz limit prędkości -Frame Skipping = Porzucanie klatek -[MainMenu] -Credits = Autorzy -Exit = Wyjdź -Load = Wczytaj... -Settings = Ustawienia -[MainSettings] -Audio = Dźwięk -AudioDesc = Dostosuj ustawienia dźwięku -Controls = Sterowanie -ControlsDesc = Kontrolki dotykowe, duże przyciski -Developer = Zaawansowane -DeveloperDesc = Testy CPU, zrzut nast. frame -Graphics = Grafika -GraphicsDesc = Dostosuj ustawienia grafiki -Settings = Ustawienia -System = System -SystemDesc = Ustawienia systemowe -[PSPCredits] -created = Program stworzony przez -license = Wolne Oprogramowanie na licencji GPL 2.0 -[Plugin] -Already installed = Mai's Atrac3+ decoder już jest zainstalowany. -Czy chciałbyś pobrać i zainstalować go od nowa? -Back = Wstecz -Download and install = Pobierz i zainstaluj. -Installed Correctly = Plugin Mai Atrac3+ został poprawnie zainstalowany. -Kliknij Wstecz. -More Information = Więcej informacji -Origins are dubious = * Plugin Mai's Atrac3+ decoder jest aktualnie -wymagany w większości gier do wsparcia dźwięku w tle (muzyki), oraz -głosu. Pochodzenie tego kodu stoi pod znakiem zapytania. -Kliknij Więcej informacji aby dowiedzieć się więcej. -SorryNoDownload = Przykro nam, nie można pobrać tego plugina automatycznie -na tej platformie. -To download and install = Aby pobrać i zainstalować plugin Mai's Atrac3+ - naciśnij Pobierz. -[System] -+1 = +1 --1 = -1 -Button Pref : X to Confirm = Preferencje przycisków : X aby Potwierdzić -Clear = Wyczyść -Dynarec = Dynarec (JIT) -Enable Cheats = Włącz cheaty -Fast Memory = Szybka pamięć (niestabilne) -Language = Język -Max. No of Recents : = Maksymalna ilość ostatnich gier : -Show Debug Statistics = Pokaż statystyki debugowania. -System Language : = Język systemowy : -System Settings = Ustawienia systemowe -Unlock CPU Clock = Odblokuj zegar CPU -Use O = Użyj O -Use X = Użyj X