PCSX2 dev.1.7.0-1800

Dla równowagi, po szybkim niusie znów będzie treściwy i z lekka przydługawy wpis. Nie powinno to dziwić, bo o tytułowym PCSX2 zamaszyście pisałem w lipcu br. Co za tym idzie sporo wody upłynęło w rzece, a wielkość składających się na to litrów, nie ustępuje liczbie zmian jakie znalazły się w przywołanym projekcie. No to, jedziemy.

PCSX2 running Ratchet & Clank

Oznaczona ciągiem v1.7.0-dev-1800-g2406ae6e07 wersja z 24 września br., w stosunku do opisanych poprzednio wydań zawiera zmiany obejmujące między innymi:

  • zoptymalizowano emulację jednostki głównej wykorzystując do tego 64.bitowe operacje instrukcji x64, grupując powtarzalny kod w funkcje oraz zapisując najczęściej wykorzystywane rejestry EE zabezpieczając przed ich usuwaniem w trakcie czyszczenia wywołań COP2;
  • wdrożono emulację instrukcji SDR/SDL, LDR/LDL jednostki EE w trybie rekompilacji JIT, osiągając przyrost prędkości do 30%;
  • zoptymalizowano przetwarzanie dużych partii danych w pamięci wykorzystując do tego rejestry xmm;


a teraz krótka przerwa na reklamę…
dzisiejszy wpis sponsorują:
cyferki 1, 3, 7, literka P oraz

TAJEMNICZY REKLAMODAWCA

  • dodano współczynnik skalowania obrazu do wielkości x7 odpowiadającej rozdzielczości ~2520p;
  • zoptymalizowano emulację jednostek VU pod kątem rekompilacji JIT, zoptymalizowano ich synchronizację, ujednolicono funkcje odpowiedzialne za obsługę pamięci podręcznej opisywanych jednostek i usprawniono ich emulację w trybie interpretatora;
  • zoptymalizowano projekt pod kątem kompilacji kodu pod okienkami z wykorzystaniem narzędzia CMake.
  • usprawniono inicjowanie plików wykonywalnych ELF;
  • usunięto Waveout rezygnując z przestarzałego interfejsu generowania dźwięku;
  • poprawiono emulację rejestrów pod kątem przetwarzania błędnych danych IRQ, eliminując krytyczne błędy powodujące zamykanie programu;
  • usunięto błędy występujące w systemie macOS w trakcie wyłączania programu;
  • usprawniono działanie programu na urządzenia korzystających z kilku ekranów;
  • poprawiono funkcje resetowania układu SPU2 płyt, usprawniono obsługę płyt zawierających ścieżki CDDA, zaimplementowano poprawną obsługę instrukcji GP0, GP1 i kanałów BCR BA oraz zaimplementowano obsługę instrukcji SCMD 0x27, usprawniając emulację tytułów z pierwszego PlayStation;
  • usprawniono emulację myszy USB oraz dodano obsługę kontrolerów gier takich jak: NeoGeo, Razer Raiju Tournament, Xbox One Wireless Controller, USB Saturn, BETOP AX1, Microsoft SideWinder Game Pad, Gamesir-;
  • zaimplementowano środowisko do testowania metody swizzling na kodzie funkcji GSdx;
  • naprawiono błędy występujące przy wyświetlaniu obrazu w rozdzielczości HD 1080i;
  • zwiększono precyzję i jakość generowanego dźwięku przez wyeliminowanie wadliwie działającego filtru ograniczenia widma sygnału oraz usunięcie opcji umożliwiającej wyłączenie efektu pogłosu;
  • poprawiono obsługę jednostki COP2 w debuggerze tj. jej specjalnych instrukcji vmulai oraz vmaddai oraz dodano opcję wyświetlania wartości rejestrów VU0F w formie liczb zmiennoprzecinkowych ;
  • dodano obsługę procedury __rdtsc w aktualnie używanych kompilatorach tj. clang 12.x oraz gcc 11.x;
  • wprowadzono dodatkowe warunki wywołań poprawek FIFO ograniczając ich zbędne inicjowanie funkcji emulujących VIF oraz ograniczono przetwarzanie danych przez częściowo wykonane programy jednostek microVU;
  • poprawiono obsługę sprzętowego mieszania kolorów, algorytmu FXAA dla interfejsu DX11 oraz zewnętrznych shaderów;
  • rozbudowano system plików hosta, implementując obsługę poleceń takich jak: remove, mkdir, rmdir, dopen, dclose, dread, getStat;
  • usprawniono wyświetlanie wstawek filmowych (tzw. FMV) przepisując część funkcji korzystających z biblioteki wx bezpośrednio na GS;
    dodano poprawki umożliwiające poprawną obsługę ścieżek do plików hosta pod systemami *NIX;
  • zoptymalizowano kod odpowiedzialny za emulację jednostki SPU, usuwając z niego nieużywane dołączenia, procedury, definicje i zmienne;
  • dodano funkcję sprawdzającą ustawienia systemu pod kątem wybranego profilu zasilania, tak by wyeliminować przypadki uruchamiania programu w trybie oszczędności energii powodującego dużo niższe osiągi emulatora;
  • zaimplementowano wielowątkowy odczyt danych z napędu oraz obrazów płyt w formacie CSO i CHD;
  • zmodyfikowano interfejs graficzny zwiększając intuicyjność okna z podstawowymi ustawieniami emulatora;
  • zaktualizowano biblioteki libchdr, gtest i ghc oraz plików nagłówkowych lcorearb, wglext, glext, khrplatform;
  • usunięto stare makra, zdefiniowano targety i usunięto zbędne zmienne, zrezygnowano z wykorzystania funkcji fcloseall i zmodyfikowano kod projektu w kilku innych miejscach, tak by umożliwić w przyszłości jego kompilacje z użyciem CMake pod systemami Windows;
  • zwiększono kompatybilność programu, usprawniając obsługę tytułów takich jak: Alpine Ski Racing 2007, Arctic Thunder, Dororo (Blood Will Tell), Dropship – United Peace Force, Evolution Snowboarding, From Software First Previews, Grand Theft Auto 3, Growlanser Generations, ICO, Keyboardmania, Kuon, Major League Baseball 2K5, Major League Baseball 2K10, Marvel Super Hero Squad, Midnight Club 3 – DUB Edition Remix, Pac-Man Fever, Megaman X7, Musashi – Samurai Legend, Musashiden II – Blademaster, Musashi Samurai Legend, NHL 2K5, NHL 2K6, NHL 2K7, NHL 2K8, NHL 2K9, Penny Racers, Pippa Funnell – Ranch Rescue, Panzer Elite Action – Fields of Glory, Powerpuff Girls, Punisher, Relish Rampage, Ratchet & Clank, Ratchet & Clank: Going Commando, Ratchet & Clank: Up Your Arsenal, Ratchet & Clank 4th – GiriGiri Gingano Giga-battle, Ratchet Gladiator, Sega Soccer Slam, SOCOM: U.S. Navy SEALs, Spartan: Total Warrior, Sprint Cars – Road to Knoxville, Super Monkey Ball Adventure, True Crime: New York, Virtua Fighter 4, Way of the Samurai;

Zapraszam do pobierania, w przeznaczonej temu sekcji znajdziecie jeszcze cieplutkie wydanie 32.bitowego emulatora dla systemów Windows.