ARMSX3 0.9.6
What's new:
Every Ratchet & Clank game now ships with the freeze fix patch. Tools of Destruction, Quest for Booty, A Crack in Time, All 4 One, Nexus and Into the Nexus, eleven executables and twenty-two region and version combinations, bundled and enabled by default in ARMSX3. These are Juhn's patches from the community database, with Jonathan44062, Alexis, Epicalman, Hasster and Joenn on the individual games, and every one of those titles hangs somewhere without them.
RPCN connects again, updated the server protocol to 32 (upstream latest). The RPCN section of Network settings has also been improved a bit, it has been reorganized into panels, with your sign-in state and any server error at the top instead of the bottom. The login fields collapse once an account is saved, and the section works on a controller now. There is also a Delete synced trophies button, which clears what your account has uploaded to RPCN (it doesn't affect the trophies you've earned on your device).
Motion controls now use your controller's own gyro if it supports it
The library now has custom game categories like ARMSX2. Long-press a game, click on Categories, you can then create a category or select an existing one to group your games in. It shows up in default and shelf view like the Recently Played tab does. The 3 dot menu in the top right hand corner can be used to filter categories for list view.
Skins now name whoever made them, both the ones that ship with the app and the ones in the controller skin downloader.
Added a frame capture button in the performance section of the in-game pause menu, under Frame capture. It records one frame's worth of graphics commands and writes them to config/captures, then pauses. Useful for capturing graphical bugs.
Controllers can be assigned to player slots. Settings --> Controls --> Player & Rumble lists every controller you have connected and lets you give each one a player, instead of the slots going to whoever presses a button first. An assignment is remembered per controller and survives reconnecting.
I also added a new feature called Direct USB control, for a DualSense or DualShock 4 on a cable with rumble. Off by default, in Settings --> Controls --> Player & Rumble, while it is on custom bindings do not apply.
Fixes:
Fix to external controller rumble.
Fixed a rare issue where backgrounding a game could kick you back to the library while the game carried on running behind it, audio and all.
On-screen controls no longer disappear while you are using them. The auto-hide timer treated a press as a moment rather than something you hold, so holding a stick or a button for longer than the timeout counted as sitting idle and the controls faded out under your thumb. It now refuses to count down while you're actively using the touch controls.
Fixed a frame generation bug that was freezing the emulator on Turnip drivers. Generating frames means presenting more of them than the game draws, so a single flip asks the display for two or more images, and Turnip crashes when the second one is handed over the way the first was. Stock Qualcomm drivers accept it, which is why this only hit some people, and why turning frame generation off would fix it.
Controllers that report no motor to the vibration manager get one more chance through the older interface before rumble falls back to the phone. Some DualShock and DualSense modes over Bluetooth are in that category and were being skipped outright.
The feedback barrier the renderer issues mid-pass is now spelled correctly for what the render pass declares. Two of the three ways it was wrong could produce undefined behaviour on a strict driver.
A frame limit chosen in All Core Settings sticks. The frame limiter, which is on by default, was writing "Auto" over that setting on every launch, so picking something else there lasted until you closed the app.
The pressure modifier goes to 100% instead of stopping at 95%.
The Settings tab in the game library's side menu can be reached with a controller again.
Upstream:
Four fixes from RPCS3, @kd-11's missing memory flush in the blit engine, the access ordering that goes with it, and a system RAM allocation fix, that first one is the cause of Twisted Metal booting into an infinite loading screen, which is now fixed. And @Yahfz's correction to how the fragment shader compiler orders saturate and absolute value, which real hardware applies the other way round, getting it backwards makes things that should be black come out bright, so if a game looked washed out or its shadows looked wrong this should help.
Enjoy!