github ARMSX2/ARMSX2 2.9.3
ARMSX2 2.9.3

one hour ago

ARMSX2 2.9.3

image

So, our bug reporting feature was a wild success. Thank you to all the users who submitted reports. Many of them are great reports and will be useful for fixing issues, however many of them were not. The app now explains that you can’t run PS2 games on a PS1 BIOS. Also, you can’t run Turnip drivers on Mali GPUs, and a dozen of other common user errors. We also tell you if you left your refrigerator door open ;)

Anyways, here's what's new:

VR mode is here: play side by side in a phone headset, with the picture's size, distance and height set to fit your lenses. DNS host entries get names and on/off switches, touch sticks get an adjustable travel, and the driver list shows only the drivers built for your GPU, now with MdiEx as a drives source for Exynos devices. When a game can't start, ARMSX2 tells you why and what to do, and problem reports carry the log of the run before. Shadow of the Colossus, Stuntman and Spider-Man 3 draw their shadows faster, the ARM64 graphics, video and sound code is quicker, and the emulator needs less memory.

New

VR mode (side by side). For phone headsets: the game is drawn once in each half of the screen. VR picture size, VR picture distance and VR picture height fit the two pictures to your headset and lenses. Upscaling, TV shaders and frame generation still apply, and the on-screen controls step aside while VR mode is on, so play with a controller. Find it in Settings > Renderer and in the pause menu's Graphics tab. done by @jpolo1224

image image image

Named DNS host entries. In Settings > Network, each DNS host entry has a name, its hostname and IP address, an Enabled switch and Remove this host, so entries for several games can stay in the list and be switched on when needed. The screen reminds you that the entries are used only when Primary DNS or Secondary DNS is set to Internal. done by @jpolo1224

image

Stick travel. Settings > Controls > On-Screen Controls has a Stick travel slider, from 50 to 250%, that sets how far your thumb moves for full tilt on every touch stick. Lower reaches full tilt sooner, higher gives finer control, and the thumb art reaches the ring's edge at full tilt either way. done by @jpolo1224

image

Drivers for your GPU. The GPU Driver list shows only the drivers built for your device's GPU: the Turnip and Adreno Tools packs on Adreno, MaliSX2 on the Mali GPUs it supports, and the Exynos packs on Xclipse, where avavo's MdiEx releases now join the list. A release with one file per chip lists each one by name, like MdiEx 1480 v3.6, and on supported Mali GPUs the driver card recommends MaliSX2. Importing a driver zip works on every device. done by @bmdhacks and @jpolo1224

image image

(This picture shows off the new driver source, and was taken before the change to only show GPU drivers pertaining to your device, Adreno/Mali/Exynos drivers etc).

Clear answers when a game can't start. If the BIOS is missing, can't be read, isn't a PS2 BIOS, or is a PS1 BIOS like the ps1_rom.bin copied from a PS3, the message says so and points you to BIOS Location to import your PS2's BIOS. When the graphics driver can't start the renderer, a popup message gives the reason, such as ANGLE on an older driver that offers only OpenGL ES 2.0. done by @bmdhacks

Problem reports say more. Reports also send the log of the run before, cleaned the same way as the current one, so a game that froze and was closed still gets its log to the developers. When a game stops on an emulation error or crashes, the log holds a detailed account of what the emulated CPU and the recompilers were doing at that moment. done by @bmdhacks

image

Automatic Performance Tuning tries more. For a game held back by the GPU, it first lowers Display Resolution (HW scaler) to the size the game renders at, which keeps every rendered detail. Hardware Download Mode now steps through Async, No Readbacks and Disabled, and a step that didn't help no longer stops it from trying the next. Changing Display Resolution yourself in a game's settings turns tuning off for that game, like the other tuned settings. done by @bmdhacks

image

Every new setting in every language. VR mode, the DNS host entries, Stick travel and the new BIOS messages are in all 19 of the app's languages. done by @jpolo1224

Faster

Shadows in Shadow of the Colossus, Spider-Man 3 and Stuntman. In Vulkan, the passes these games use to count shadow volumes are counted in the stencil buffer instead of being blended into a high-precision copy of the screen. On the RG 55G1, Shadow of the Colossus spends about a third less GPU time per frame; on a Retroid Pocket Flip 2 at 2x, Stuntman runs about 14% faster and Spider-Man 3 about 5% faster. done by @bmdhacks

image image image image

Fewer clears in Jak 3 and similar games. When a draw reads the image it is drawing to, Vulkan skips clearing the copy it reads from whenever the draw can't sample outside that copy. In Jak 3 that is up to about 274 clears a frame. done by @bmdhacks

image

IOP thread on the slower cores. With the IOP thread on, it runs on the slower cores, leaving the fast ones to the EE, GS and VU1 threads. On chips with four fast cores, like the Dimensity 7300, that leaves a fast core for the app's own drawing, such as the on-screen controls. done by @bmdhacks

Gran Turismo 4. The game database turns the IOP thread on for Gran Turismo 4, which takes the sound mixing off the EE thread. done by @sunshineinabox

image

Graphics code on ARM64. Palette and colour table conversions, GIF packet checks, texture hashing, GS readbacks and the vertex kick all do less work, and a palette lookup or draw pipeline that repeats is reused instead of looked up again. done by @sunshineinabox

Bigger GIF buffers. On devices with 2 GB of RAM or more, the GIF's path 2 and 3 buffers hold 32 MB, so large image uploads keep the EE running instead of waiting on the GS. done by @sunshineinabox

Videos, texture packs and sound. FMVs decode with a NEON inverse DCT, texture packs decode BC7 and JPEG images with NEON, and audio time stretching uses NEON dot products. done by @sunshineinabox

Vulkan with VSync off. Vulkan keeps three swapchain images when VSync is off, so getting the next image doesn't wait on the compositor. done by @sunshineinabox

Touch sticks. Moving a touch stick only moves its thumb on screen, without rebuilding the controls for every finger movement. On-screen controls can also now be toggled from the quick menu. done by @bmdhacks

image

Less memory. ARMSX2 clears the emulated memory at boot without taking hundreds of megabytes of RAM for it, the recompilers' block tables use memory only for the parts a game touches, and microVU's jump tables take memory as they fill: about 58 MB less in a God of War II scene. done by @sunshineinabox and @bmdhacks

image

Optimized build trained on this release. The profile behind the optimized build is retrained on this release's code across the same 16 games. done by @bmdhacks

image

Fixed

Auto Progressive Scan in Burnout 3. Burnout 3: Takedown and other Criterion games ask for the progressive scan combo late in their intro, after the publisher logos, so Auto Progressive Scan now holds it until 30 seconds into the game. done by @jpolo1224

image

Lines on Mali Bifrost GPUs. With Vulkan on Bifrost GPUs like the Mali-G52 and Mali-G76, MaliSX2 included, the line shader reads only vertices inside the draw, so games that draw lines keep running. Found while reviewing a pull request by @Matheus290 (#954). done by @bmdhacks

Mali shader compiles. Vulkan's conversion, present and FXAA shaders get texture sizes from the app instead of asking the GPU, so they compile on the Mali drivers that couldn't compile that query, and anisotropic filtering does the same on Mali drivers older than r30. done by @sunshineinabox

MaliSX2 and PanVK. A workaround meant for Arm's own Mali driver now applies only there, so MaliSX2 and PanVK keep every stencil clear, and PanVK keeps push descriptors. done by @sunshineinabox

ANGLE after the device's OpenGL ES driver. Starting a game on ANGLE after one on the device's own OpenGL ES driver, without restarting the app, works reliably. done by @bmdhacks

Resume after an emulation error. Pressing Resume after a game stops on an emulation error shows the error again and keeps the game paused, instead of closing the app. done by @bmdhacks

VSync after switching renderers. After switching from Vulkan to OpenGL and back in a game, Vulkan keeps the VSync mode you chose. Based on a pull request by @Matheus290 (#955). done by @bmdhacks

RetroAchievements. Android uses the same RetroAchievements runtime as Linux and iOS, rcheevos 12.5, with its fixes for achievement sets that use {recall} and for malformed data (#941). done by @Matheus290

image

More accurate

Emulator core on ARM64. The VU1 thread's ring buffer never overwrites work that hasn't been read yet, IPU colour conversion with alpha thresholds covers the whole block, the optional NEON reverb clamps at every step like the default path, and R8G8B8 DDS replacement textures read only their own data. Floating-point trap settings and the recompilers' jump buffers are set correctly, and generated code stays clear of Cortex-A53 erratum 843419. done by @sunshineinabox

Software renderer texture coordinates. Textures drawn with extreme S, T and Q values land where a real PS2 puts them, following measurements of 8,245 cases on an SCPH-30001 console: the sign of Q carries over to S and T, and coordinates stop at the console's limits. done by @bmdhacks

image

Linux

Big Picture. Choice dialogs open on the option already chosen (#959), and the keyboard and gamepad cursor stays visible after the on-screen keyboard closes (#958). Based on pull requests by @Matheus290. done by @bmdhacks

Game list at startup in the SDL build. The SDL build scans your game folders when it starts, and picking a game during the scan no longer waits for it to finish (#947). Based on a pull request by @Matheus290. done by @bmdhacks

This Game texture packs. The texture pack browser, in the Qt build and in Big Picture, gets a This Game list while a game runs, with only that game's packs. done by @bmdhacks

Missing CPU features named. On an ARM64 CPU without a feature the build needs, ARMSX2 says which one when it starts. done by @sunshineinabox

Mali under Wayland. Vulkan recreates a window surface that reports no formats, as Arm's driver can under Wayland. done by @sunshineinabox

All the speed, memory and accuracy work above is in the Linux builds as well.

image image

Don't miss a new ARMSX2 release

NewReleases is sending notifications on new releases.