Skip to content

Releases: mininxd/NetherSX2-patch

NetherSX2 v2.3 - ARM Mali GPU Optimized

Choose a tag to compare

@mininxd mininxd released this 20 Sep 06:31

This release brings major GPU rendering and memory allocation optimizations, tailored especially for Vulkan and ARM Mali GPUs globally, alongside clean vector touch controls and fully functional sub-native resolution scaling options.


🚀 Setup Wizard: Fast(Mali)/Unsafe Defaults

  • Preset Button Updated: The Setup Wizard preset button label is changed from Fast/Unsafe Defaults to Fast(Mali)/Unsafe Defaults, clearly indicating the Mali configuration while leaving the original description text and settings reset actions intact.
  • Pre-Selected by Default: On fresh installs, the Setup Wizard defaults to Fast(Mali)/Unsafe Defaults via patched classes.dex.
  • Default Renderer to Vulkan: Completing the Setup Wizard writes Vulkan (14) as the default backend instead of falling back to OpenGL (12).
  • Unsafe Preset Cycle Skip Fix: Patched NativeLibrary.setDefaultSettings in libemucore.so so the Fast/Unsafe preset keeps EECycleSkip = 0 (Normal) instead of 2. This eliminates animation jitter, desync, and black screens across all games while retaining the 25% CPU boost from mild underclocking (EECycleRate = -1).

⚡ GPU & Vulkan Rendering Optimizations

1. Light Lag & Bloom Elimination (Minimum Blending Accuracy)

  • Problem: When looking at light sources (sun glare, lens flares, streetlamps, bloom, coronas), games stack 30+ layered transparent blend passes in TBDR tile memory, causing frame rates to collapse from 60 to 15 FPS on Mali GPUs.
  • Fix: Configured default Minimum Blending Accuracy (accurate_blending_unit = "0"). Transparency math is computed in a single fast pass with zero tile thrashing.

2. In-Memory Texture Render Cache (Full Hash Cache)

  • Feature: Enabled Full Texture Preloading (texture_preloading = "2"). Decoded host textures (VkImage) remain resident in device RAM across frames, avoiding redundant re-rendering and texture-swap stutter.

3. Hardware Download Mode (HWDownloadMode = "1" - Disable Readbacks)

  • Eliminates synchronous vkCmdCopyImageToBuffer GPU pipeline freezes during light occlusion checks.

4. Game-Specific Glitch & Stability Fixes

Black (All Regional Versions):
  • SPS (Spiky Polygons Syndrome) Fix: Enforced vuClampMode: 3 (Extra) across all regional releases of Black (SLUS-21376, SLES-53886, SLES-54030, SLPM-66354, SLAJ-25078, SLKA-25372), completely eliminating vertex explosion and polygon tearing.
  • Light Strips & Sky Texture Fix: Preserved autoFlush: 1, roundSprite: 1, and mipmap: 2 to fix vertical light strips and lighting misalignment.
  • Lighting Preservation: Added minimumBlendingLevel: 2 so building and wall lighting render properly under global Minimum Blending.
Downhill Domination (SCUS-97177, SLES-52202):
  • Sun & Lens Flare Removal: Embedded the community post-processing patch (patch=1,EE,0029DBA5,byte,0) in GameIndex.yaml for both default and CRC 5AE01D98, completely disabling blinding sun glare and lens flares. Also disabled autoFlush (autoFlush: 0) for smooth 60 FPS gameplay.
Tales of the Abyss (SCAJ-20163, SLUS-21386):
  • Disabled forced autoFlush: 1 stalls to eliminate TBDR tile flush overhead.

5. Unclamped Resolution Scalers (0.05x, 0.1x, 0.25x, 0.5x) in C++ Engine

  • Patched the assembly in libemucore.so (fmov s0, s1) to eliminate the hardcoded 0.5f clamp, activating true sub-0.5x rendering:
    • 0.05x Native (~24p): 1/20 native resolution
    • 0.1x Native (~48p): 1/10 native resolution
    • 0.25x Native (~120p): 1/4 native resolution
    • 0.5x Native (~240p): 1/2 native resolution

6. Vulkan-First Backend & Threaded Presentation

  • Bypasses Mali's high-overhead OpenGL ES compiler and utilizes direct Vulkan command buffers.
  • Decouples vkQueuePresentKHR swapchain presentation calls into a dedicated presentation thread, eliminating frame-pacing micro-stutter.
  • Bypasses Mali dual-source blending bottlenecks via DisableDualSourceBlend.
  • Conserves tile memory bandwidth via SkipDuplicateFrames.

🧠 Core & CPU Allocation Enhancements (Mali / MediaTek / Exynos)

  • Multi-Threaded VU1 (EmuCore/Speedhacks/vuThread="true"):
    • Offloads Vector Unit 1 calculations to a separate CPU thread, unlocking 20%–50% throughput improvements on 8-core mobile processors.
  • Performance Cores Affinity (EmuCore/AffinityControlMode="7"):
    • Automatically pins emulation worker threads (EE, GS, VU1) to the high-performance Big cores (Cortex-A7x / Cortex-X) instead of letting the Android scheduler throttle threads onto power-saving Cortex-A55 Little cores.
  • Fast CDVD (EmuCore/Speedhacks/fastCDVD="true"):
    • Bypasses virtual disc seek delay.

🎨 Asset & Stability Fixes

  • Purged Custom Controller PNGs: Completely stripped all custom PNG controller button overlays.
  • Restored 34 Clean Vector XML Buttons: Injected the original AetherSX2 vector XML drawables (ic_controller_*.xml).
  • Crash Prevention: Rebuilt using resource-ID preserving methods with no scrambled resources.arsc table, guaranteeing clean launch without force-closing.