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.

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.