RPCS3 Dev-0.0.18-12895

Kontynuując serie niusów poświęconych rozwojowym wydaniom emulatora RPCS3 przyjrzymy się bliżej nowościom, jakie znalazły się w tytułowym emulatorze względem poprzednio opisanej wersji.

PS3 emulator running Dragon Ball

Lista zmian wprowadzonych w wersji z dnia 13 października 2021 r. oznaczonej jako 0.0.18-12895-ab6c74b3 obejmuje między innymi:

  • wdrożono nowy system łatek, który w porównaniu do dotychczasowego metody podmiany instrukcji zapewnia między innymi 64k dedykowanej pamięci, dynamiczną alokację kodu, wywołania funkcji LLE/HLE, skoki do wskazanego adresu, priorytet przetwarzania wprowadzanego kodu, definiowanie flag określających operacje wykonywane na instrukcjach (zapis/odczyt/wykonanie), zabezpieczenie przed wykonaniem błędnie zdefiniowanych instrukcji;
  • zoptymalizowano kod odpowiedzialny za obsługę SPU LLVM w zakresie przetwarzania danych związanych m.in. z funkcjami/instrukcjami: VPERM2B, VDBPSADBW, ctlz, ctpop, avg, SHUFB, fpcast, FI, fre, frsqe, fmax, fmin, vmovd, itd.;
  • zaktualizowano serwer gry sieciowej RPCN do wersji 0.4, która umożliwia definiowanie znajomych i wysyłanie im zaproszeń do gier;
  • rozbudowano możliwośći deasemblera między innymi o wyszukiwanie instrukcji w pamięci, obsługę 64.bitowych stałych i możliwość ich porównywania, listowanie błędów jednostki głównej;
  • dodano wsparcie oraz dedykowane opcje do konfiguracji kontrolerów przeznaczonych dla gry DJ Hero;
  • poprawiono literówki w nazwie instrukcji cmpli, jaka występowała w funkcjach deasamblera PPU;
  • dodano wsparcie kontrolera ZEROPLUS Brook Mars i poprawiono obsługę kontrolerów ze stajni Sony tj. padów DualShock3, DualShock4 oraz DualSense,
  • usprawniono konwersję shaderów w zakresie Z24X8->RGBA8;
  • zoptymalizowano funkcje odpowiedzialne za przetwarzanie obrazu oraz obsługę interfejsu Vulkan, w tym dokonano refaktoryzacji nagłówków, ograniczono ilość strumieni wierzchołków, ograniczono wywołanie funkcji get_system_time(), tam gdzie to było możliwe zastąpiono zasobożerne wywołanie std::this_thread::thread_id() prostym thread_ctrl , itd;
  • rozwiązano problemy powodujące krytyczne zamykanie programu przy wyświetlaniu obrazu z wykorzystaniu bibliotek Vulkan, występujące m.in. przy włączeniu MSAA na kartach innych niż nvidiowskie czy przetwarzaniu tekstur z mipmapingiem, problemy z uruchamianiem tytułów na układach graficznych firmy Intel;
  • rozbudowano implementację funkcji sceNpDrmVerifyUpgradeLicense, zapewniając obsługę plików RAP dla paczek PKG zbliżoną konsolowemu oryginałowi, dodano obsługę szyfrowanych plików paczek w formacie EDAT oraz poprawiono funkcje obsługujące sceNpDrmIsAvailable;
  • poprawiono błędy występujące przy obsłudze oprogramowania konsoli z serii 1.85 oraz 1.93;
  • zaimplementowano wsparcie kryptografii vtrm oraz SDAT/EDAT;
  • dodano opcję, umożliwiającą uruchomienie gry z wykorzystaniem domyślnych ustawień emulatora (tzn. z konfiguracji dostępnej przy pierwszym uruchomieniu programu);
  • wprowadzono nowy stan „zamrożonej” emulacji, uniemożliwiający wznowienie jej procesu po wystąpieniu krytycznego błędu aplikacji;
  • zoptymalizowano użycie pamięci w zakresie elementów graficznych wykorzystywanych w interfejsie programu;
  • zaimplementowano precyzyjny algorytm obliczeń ZCULL, eliminując błędy graficzne występujące w licznych tytułach;
  • naprawiono błędy występujące przy procedurach zapisu i ładowania spersonalizowanych profilów sterowania;
  • zwiększono czytelność informacji zapisywanych w logach, znacząco ograniczając dane LBP2 przetwarzane w przywołanym procesie;
  • wdrożono obsługę konwersji maski gamma z RGBA do ARGB;
  • zaimplementowano w interfejsie funkcje ostrzegającą przed przypisaniem jednego przycisku do kilku akcji w oknie sterowania;
  • !rozbudowano obsługę rejestrów układu RSX o funkcje zapewniające prawidłowe działanie korekcji perspektywy w wyświetlanym obrazie;
  • poprawiono działanie interfejsu XInput, wprowadzając możliwość automatycznej zmiany urządzenia odtwarzającego dźwięk;
  • usprawniono proces instalacji plików gier z obrazów płyt;
  • zwiększono precyzję przetwarzania danych zmiennoprzecinkowych przez jednostkę SPU;
  • zaimplementowano dynamiczne indeksowanie atrybutów układu RSX;
  • naprawiono błędy emulatora występujące przy korzystaniu z klawiatury;
  • dodano wsparcie dla układów graficznych AMD z rodziny Navi 2x;
  • zaimplementowano dynamiczne indeksowanie rejestru TEX[n];
  • zaimplementowano obsługę protokółu Wayland umożliwiając użytkownikom Linuksa porzucenie niechcianego X11;
  • zaktualizowano zewnętrzne biblioteki w tym: wolfssl do wersji v4.8.1, yaml-cpp do wersji 0.7;
  • zwiększono kompatybilność emulatora, usprawniając obsługę tytułów takich jak… Brutal Legend, Call of Juarez: Gunslinger, Dead Island Riptide, Dragon’s Dogma: Dark Arisen, Infamous 2, God Mode, God of War 3; GoldenEye 007: Reloaded, Gran Turismo 5, LEGO Harry Potter: Years 1-4, Kamen Rider Summonride, Mass Effect, Motostorm: Apocalypse, One Piece: Pirate Warriors, Ratchet & Clank: Nexus, Ratchet & Clank Future: Tools of Destruction, Red Dead Redemption, Resident Evil Code Veronica X, Resistance 3, Samurai Warriors 3 Z, Samurai Warriors 4, Tomb Raider, Tales of Graces f, The Cave, The Darkness, The Last of Us, Trine 2, Tron: Evolution, Warhawk

Tyle w teorii, zapraszam do działu Pliki, gdzie znajdują się nowe rozwojowe wersje emulatora przeznaczone dla systemu Linux oraz Windows.