Eternal SPU Plugin 1.41

Wstęp

Jeśli mielibyśmy prowadzić ranking wtyczek do obsługi dźwięku to czołowe miejsce w kategorii prostoty obsługi zająłby z pewnością „ePSXe SPU Core”, w kategorii możliwości konfiguracyjnych i elastyczności w dostosowaniu ustawień do posiadanego sprzętu z pewnością zwyciężyłby „P.E.Op.S. DSound Driver” jednakże jeśli pod uwagę weźmiemy kompatybilność wobec obsługiwanych tytułów oraz jakość generowanego dźwięku to niekwestionowanym liderem jest „Eternal SPU Plugin”, którego opis mam zaszczyt Wam dziś przedstawić.

Instalacja

Podobnie jak w przypadku większości pluginów instalacja ogranicza się do rozpakowania pliku *.dll z archiwum do podfolderu PLUGINS emulatora.

Konfiguracja Eternal SPU
Rys. Podstawowa konfiguracja pluginu Eternal SPU Plugin.

Konfiguracja

Plugin Eternal SPU oferuje następujące opcje konfiguracyjne:

Audio Device – Plugin umożliwia wybór metody generowania dźwięku zależnej od systemu operacyjnego oraz zainstalowanych na nim sterowników. Do wyboru mamy:

  • Direct Sound – ta opcja wykorzystuje do generowania dźwięku biblioteki DirectX (3 lub nowsze). Ponieważ sterowniki DX są łatwo dostępne, a jakość dźwięku generowanego w ten sposób jest naprawdę doskonała wydaje być się logicznym stwierdzenie, że jest to najlepszy wybór zarówno dla osób stawiających pierwsze kroki, jak i dla starych wyjadaczy
  • SDL – ta opcja wykorzystuje bibliotekę Simple DirectMedia Layer, która jest doskonałą alternatywą gdy z jakiś przyczyn nie można skorzystać z DX. Aby z niej skorzystać należy skopiować plik SDL.dll do folderu systemowego [X:\WINDOWS\SYSTEM(32)\] lub głównego katalogu emulatora. Istnieje również możliwość korzystania z niej pod systemami Linux, co wymaga zaś zainstalowania biblioteki libSDL.so
  • Wave Mapper – Kolejny alternatywny sposób generowania dźwięku w systemie Windows. Skorzystać z niego mogą wszystkie osoby posiadające kartę muzyczną kompatybilną z syntezą Wave Table (jeśli Twoja karta liczy sobie nie więcej niż 6 lat na pewno sobie poradzi 🙂
  • OSS – Open Sound System(TM) to powszechna metoda generowania dźwięku w systemach Linux. Jeśli nie ma potrzeby korzystania z SDL opcja OSS będzie dla Ciebie najlepsza.

Sound Buffer Size – Opcja odpowiada za mierzone w blokach opóźnienie dźwięku, przy czym każdy blok to opóźnienie równe 5 milisekund. Oczywiste jest, że każdy będzie dążył do minimalizacji buforu, jednakże praktyka pokazuje, że wartość SB powinna być dostosowana do posiadanej karty muzycznej. Domyślnie wartość SBS wynosi 8 dla metody Thread / Timer oraz 64 dla SPUAsync, niemniej jednak ustawienie tak niskiego parametru w wielu przypadkach kończy się uzyskaniem „charczącego” lub co gorsza „skaczącego” dźwięku, dlatego zaleca się wpisanie wartości domyślnej, a następnie stopniowe jej zwiększanie do wartości przy której otrzymamy najlepszą jakość dźwięku. Dla przykładu mój SBLive! przy korzystaniu z metody Thread generuje najczystszy dźwięk dopiero przy wartości 21.

Audio Out Method – Eternal wykorzystuje aż trzy możliwości generowania sygnału wyjściowego, dzięki czemu możemy dostosować parametr do posiadanego sprzętu i wybrać spomiędzy:

  • Thread – Ta metoda do generowania dźwięku będzie wykorzystywać dodatkowy kanał zamiast przenosić dźwięk wraz z sygnałem wideo. Cierpi na tym jakość poprzez chwilowe braki synchronizacji obydwóch sygnałów, ale ponieważ w większości przypadków jest to niezauważalne, a prędkość emulacji dramatycznie wzrasta samozwańczo nazywam ten tryb „najlepszym wyborem” 😛
  • Timer – Ten tryb zaś przenosi dźwięk tym samym wątkiem co sygnał z pluginu wideo. Można więc rzec, że jest on bardziej kompatybilny niż powyższy gdyż zapewnia dobrą synchronizację pomiędzy sygnałami. Oczywiście nie ma róży bez kolców – bo na wzroście kompatybilności cierpi oczywiście prędkość emulacji. Jeśli więc nie posiadasz mocnego sprzętu zastanów się dobrze nad wyborem tej opcji.
  • SPUAsync – jest obecnie najbardziej kompatybilną metodą generowania sygnału wyjściowego. Niestety, jak się można domyśleć jest również najbardziej zasobo-żerna, świadczyć o tym może choćby fakt, że jej zastosowanie wymaga ustawienia opcji „Sound buffer” na wartość nie mniejszą niż 64. Jeśli posiadasz naprawdę mocną machinę nie widzę przeszkód by używać ów opcji, jeśli jednak Twój PeCet nie należy do najnowszych zastanów się czy nie lepiej przeznaczyć jego moc obliczeniową na coś innego?

W momencie gdy wybierzemy metodę SPUAsyc uzyskujemy dostęp do trzech kolejnych opcji odpowiedzialnych za generowanie sygnału wyjściowego. Oto i one:

  • Simple – Wybranie tej opcji spowoduje, że plugin nie będzie wykonywał żadnych dodatkowych operacji na sygnale wyjściowym. Dźwięk będzie generowany synchronicznie z obrazem więc jeśli spadnie / wzrośnie liczba klatek, sygnał audio będzie niestabilny (po prostu będzie skakał). Jeśli natomiast będziemy mieć do czynienia ze stabilną liczbą fpsów dźwięk będzie taki jak należy.
  • Wait – Wybranie tej opcji włącza pewne operacje, które dostosuje prędkość generowanego dźwięku do aktualnej liczby klatek, dzięki czemu zarówno w sytuacji gdy liczba fps`ów będzie stabilna, bądź też będzie zbyt niska / wysoka sygnał audio będzie zawsze do niej dopasowany. Przy korzystaniu z ów opcji możliwe jest ograniczenie prędkości emulacji bezpośrednio przez plugin dźwiękowy – w tym celu należy wybrać opisywaną opcję, a w konfiguracji pluginu graficznego wyłączyć funkcję „FPS Limit”.
  • Smooth – Opcja spowoduje asynchroniczne, generowanie dźwięku z dostosowaniem jego jakości do aktualnej liczby fps`ów, dzięki czemu sygnał audio powinien być czysty nawet w przypadku dużego spadku prędkości emulacji. Niestety takie rozwiązanie może powodować problemy z tytułami wymagającymi włączenia łatek „SPU IRQ”, dlatego też w ich przypadku należy skorzystać z jednej z powyższych opcji.

Wait for XA buffer is free – Włączenie tej opcji spowoduje, że emulator będzie czekał z załadowaniem nowych danych do czasu aż bufor przeznaczony dla dźwięku XA zostanie całkowicie opróżniony. Polepszy to jakość dźwięku generowanego podczas wstawek filmowych, jednakże może spowodować niestabilność obrazu, czy zmniejszenie prędkości emulacji.

Fine tune – opcja służy do ręcznego ustawiania modulacji dźwięku. Im większą wartość ustawimy tym wyższe tony otrzymamy. Analogicznie sytuacja odnosi się do wartości ujemnych.

Cache VAG decode – Włącza buforowanie każdego bloku VAG co teoretycznie przyśpiesza emulację. Praktycznie zaś może spowodować różnorakie problemy (zwolnienia, skaczący dźwięk, itp.)

Reverb – służy do generowania pogłosu czyli efektu podobnego do echa. Do wyboru mamy cztery metody – TiMidity, Freeverb, Iori`s, Neill`s, które w zasadzie nie różnią niczym się pod względem zasobo-żerności, więc najlepiej by każdy wybrał metodę, która najbardziej mu odpowiada (moim zdaniem najlepsza jest opcja Neill`s). Pamiętać jedynie należy, że aktywowanie pogłosu na słabszych maszynach może znacząco zwolnić emulację, dlatego też w ich przypadku warto wyłączyć efekt wybierając z listy „Off”.

Rec Option – Przycisk ten otwiera małe menu. Z menu ów można wybrać strumienie audio, które będą przechwytywane podczas operacji nagrywania. Jeśli nie jesteś pewien który strumień chcesz przechwytywać po prostu zaznacz wszystkie :]

Show Realtime Config Window – Zaznaczenie tej opcji spowoduje, wyświetlenie dodatkowego okna podczas emulacji, za pomocą którego można zmieniać ustawienia Eternala bezpośrednio z poziomu gry. Jest to niezwykle przydatne podczas pierwszych eksperymentów z plugsem, gdy musimy metodą prób i błędów dobrać wielkość buforu dźwięku, jeśli chcemy przetestować wszystkie algorytmy pogłosu lub chcemy skorzystać z opcji nagrywania dźwięku. Pamiętać jedynie należy, że korzystanie z opcji „Realtime Config” wymaga wyświetlania grafiki w oknie, a nie w trybie pełnoekranowym.

Niektóre tytuły do poprawnego generowania sygnału dźwiękowego wymagają włączenia specjalnych łatek. Jeśli więc masz zamiar odpalić grę wymienioną poniżej upewnij się że zaznaczyłeś dla niej odpowiednią opcję:

  • Update before accessing register: Final Fantasy 8, Final Fantasy 9, ChronoCross, Dragon Quest 7, Genso Suikoden 2.
  • SPU IRQ-Wait CPU action: Valkyrie Profile, Star Ocean2, MetalGear Solid .
  • SPU IRQ-Force interruption flag7: Valkyrie Profile, Tales of Destiny.

Na tym zakończę opis wtyczki Eternal SPU Plugin – mam nadzieję, że dzięki artykułowi przybliżyłem Wam temat obsługi dźwięku pod ePSXe i kilka pojęć z nim związanych.