ARMSX3 1.0.6
What's new:
CHD disc images
- Play your PS3 games from .chd files. PS3 games compressed to .chd now load like an .iso, from the library, Launch Game and Change Disc. Images made with chdman createdvd and createcd both work, and an encrypted one reads with its .dkey the same way an .iso does. A .chd is often much smaller: Demon's Souls went from 8.76 GB to 6.25 GB. Bleach Soul Resurrection went from around 4GB to 1.8gb. Contributed by @jdubbing and improved upon by @jpolo1224.
- The library notices games you swap or delete. Replacing a game in a folder the library already knew, an .iso with its .chd say, used to leave the old tile until you pressed refresh. The library now rescans on its own when one of its folders changed, at startup and whenever you come back to the app, and hides a game whose file is gone right away.
- The pause menu knows the game when you start it with Launch Game. A disc picked from outside the library's folders showed "PlayStation 3" in the pause menu, and its settings opened as Global while saving per game. It now shows the game's own title, and per-game settings work as they do from the library.
Frame generation
- Frame generation is about three times lighter. It now works on the game's own image instead of the whole screen, and measures motion at 432 lines. A 720p game on the Odin 3 went from 3.0 ms to about 1 ms of GPU time per frame. The on-screen overlays are drawn fresh on generated frames instead of being blended.
- Frame generation no longer repeats frames when turned on in-game. It needs every generated frame to get its own screen refresh, which only happened if it was on before the game started.
- Frame generation survives a shader cache it can't write. On some SD cards the cache write fails, and that used to switch frame generation off even though the shaders had translated fine. They're now used uncached and translated again next launch.
- The overlay says why frame generation is off. "LSFG: no shaders", "failed" and "unavailable" now give the reason, such as "no usable shaders in this Lossless.dll" when the wrong DLL was picked.
Performance
- Fewer stutters in games that lean on the PS3's job system (SPURS). When an SPU thread waits a long time for the game's main threads, it now gives its CPU core back instead of spinning on it. In Web of Shadows, seconds with a stutter of 10 ms or more went from about half to about 1 in 10.
- Spider-Man: Web of Shadows runs smoother. It now uses Accurate SPU Reservations off by default, which removes most of the stalls while swinging through the city. It's listed in the in-game menu under Fixes, in the RPCS3 database settings for this game, where you can switch it back if you'd like for A/B testing.
- Less time lost to CPU cores fighting over shared data. The emulator's 16-byte atomic operations, which SPU reservations and thread synchronisation run on, were slow retry loops on every Android device. They now use the CPU's single-instruction compare-and-swap everywhere, and plain loads and stores on CPUs that support it (Snapdragon 8 Gen 1 and newer). The log's system line says which: LSE2-yes or LSE2-no. done by @Whatcookie
Controls
- **All of the improvements from ARMSX2 2.7.2 for touch controls/volume buttons, hotkeys in the quick menu, gyro (different than sixaxis) etc, are present in this release of ARMSX3.
Library and settings
- A full SD card no longer crashes the app. Leaving the app saves your settings, and with no space left that save took the whole app down. It now skips the save and logs why, keeps your settings file as it was, and your changes still apply until you close the app.
- Forget in All Core Settings puts the setting back to its default. If the same setting was also changed on a normal settings screen, Forget used to leave it where that screen had it, so a switch could stay off after Forget. Forget now resets both.
- All Core Settings marks every setting that isn't at its default. Each row that differs shows the same red "Not default" line the other settings screens use. A row changed only from a normal settings screen gets a Reset button.
- Settings reopen on the category you left. Changing a setting, trying it in the game and coming back used to land on the first category every time.
- A custom cover belongs to its own game. Two copies of a game that share a serial, a retail dump and a modded copy say, can now have different covers, and setting one no longer changes the other. A cover named by serial still shows for every copy without its own.
- Library music no longer stops right after it starts. Turning the music on in Settings, or picking a custom track, could make the app stop its own music the moment it began.
- The select sound is a short click. Confirming anything, launching a game included, played a long chime.
- PS3 Theme Info in the top right corner overflow menu. A short explanation of how to use a PS3 theme as your library background.
- Screensaver settings moved to the top right corner overflow menu. The screensaver switch and its delay now sit beside the background entries in the library's overflow menu, instead of in Settings > App.
- The Shader Mode description gets the default right. It said Async + Interp was the default; ARMSX3's default is Async.
From upstream RPCS3
- A faster path for SPU reservation writes when Accurate SPU Reservations is off, which Web of Shadows' fix builds on. done by @Yahfz
(P.S. The closed test PlayStore build has been completed! Thank you to everyone who joined in for the closed test. I'm waiting on production access from Google and it'll go live on the store soon as ARMSX3 is approved!)