ARMSX3 0.9.8
What's new:
Fixed a GPU crash on Adreno: Some games died to VK_ERROR_DEVICE_LOST a few minutes in, sometimes at a specific point every time. For Watch Dogs every time during a new game before it loaded into gameplay, the game no longer crashes and you can get into game. This may help other games as well. Tested on an Odin 3 (Snapdragon 8 Elite, Turnip Gen 8 V35).
New: download and install game updates from Sony's offical servers:
Install Package tab in the game left side menu of the game library --> Game updates. Displays your current game library with each game's status showing whether they do or do not have updates available, as well as being able to select multiple different update versions. Click the main install button to install them all in order, or select them manually if you'd like a specific update version. Most titles publish one cumulative package, but some (Minecraft for example publishes seven) patch in steps, where each package requires the one before it. Oh and choosing an older update version than the one you have installed removes the current update first. You can also reinstall updates or uninstall them if you'd like by tapping on the game and clicking "Remove Update". Full controller navigation, as well. You can also search for updates by title ID for games not in your library. (Games will recompile PPU/SPU after installing an update).
Savestates:
Fixes to save state detection. Savestates stranded by a crash or a low-memory kill that became corrupted are now cleaned up at startup. These were invisible to the emulator and far larger than a finished save.
Library and info:
Clear a single game's PPU/SPU/shader cache from its long-press menu, instead of clearing every game at once.
Multiple ROM folders, keep games on the SD card and internal storage together, in the Setup/Change folder tab.
Add-ons (DLC) are now displayed for a game's info tab. Installed update versions also now show correctly without having booted a game first.
Frontends:
--es title_id BLUS12345 launches a game by title ID. Games installed from a .pkg live inside the emulator's own storage, so a frontend could see the title existed and have no path to hand us. (#13)
Merged from upstream RPCS3:
46 commits.
Programmable blending done by @kd-11. An eighteen-commit series implementing the PS3's programmable blending properly in RSX and Vulkan, and fixing a pile of long-standing blending behaviour with it: ROP operation order, signed blending modes, 16-bit blend constants, the XRGB output quirk, RGB565 byte order corrected against hardware tests, variable blend target masks, and MSAA targets. The Vulkan side of it, input attachments bound when the pipeline needs them, proper sub-pass dependency barriers, all effects the same feedback effects we use on tilers. Games impacted by this include the Jak and Dexter collection, broken lighting in LBP Karting, broken refracting effects in Infamous 1 and 2, and likely more games!
PKG hardening done by @Acts1631, and @elad335. Path-traversal protection when extracting a package, a bound on the entry table, and aborting on parent-directory entries, Elad fixed the PKG_MAX_FILE_COUNT limit.
Also in: rsx: Fix alpha test compilation when using native float16 types and rsx: Extra memory safety when rsx::thread crashes (@kd-11); SPU LLVM 8-bit add/sub renarrowing and compare fast paths (@walter Kruger), VFS fixes (@digant73), faster startup with BPM (@BeezBumba), broadcast P2P sockets for RPCN (@Cri4Key), and assorted syscall and error-formatting work (@elad335).
Other:
Cleaned up some log spam. A Soulcalibur V debug watcher was sampling a hardcoded address in every game and logging an error a second about it.