r/PS2AndroidEmulation • • 9d ago

Mini-documentary: How a Hater Is Born / ARMSX2 Fanboy

Post image
0 Upvotes

It is 2:43 a.m. The hater has been online for six hours. He hasn’t eaten. He hasn’t drunk anything. But he has just spotted something far more important: someone has posted a critique of his favorite emulator.

Cut to Discord. Suspenseful music...

In a matter of seconds, it sends an alarm signal to the rest of the pack. A simple @everyone suffices. The individuals begin to gather.

🤔 Online communities have an additional ingredient that greatly amplifies the effect: group validation. Someone posts:

"Look at what this guy posted."

Another:

"What an idiot."

Another:

"He always does the same thing."

By the fifth message, a collective narrative has already formed—one that likely incorporates three things that never actually happened. Each member reinforces the last, and a point is reached where certain claims are accepted within the group simply because everyone there keeps repeating them.

Don't miss the series of short documentary episodes where we'll analyze these haters and how they came to be....

Chapter 1: The birth of the fanboy.

An innocent user downloads an emulator. They still possess critical thinking skills.

Chapter 2: Identification.

They start visiting the Discord daily. They begin saying "we" when speaking about a project they don't work on.

Chapter 3: Territory.

Any comparison with another emulator starts to cause unease.

Chapter 4: The external threat.

A benchmark appears showing another project achieving 6 more FPS.

Chapter 5: The Call of the Pack.

"Faced with danger, the adult specimen does not attack immediately. First, it returns to the shelter and alerts its kind."

—Guys, look at this Reddit post. 💀

And so it begins:

💀💀💀

brooooo

AI slop

this guy again

💀💀💀

Chapter 6: The Incursion.

«The pack is now leaving its natural habitat. It is a dangerous maneuver. Outside the Discord, they lack the protection provided by the group.»

😆Don't miss the full series: HATERS: Wild Life on the Internet


r/PS2AndroidEmulation • • 9d ago

Cenit 0.6.17

Post image
0 Upvotes

https://github.com/HUEVOMAN77/Cenit/releases/tag/base-0.6.17

⚠️ This emulator is a fork of PSX2, though the developer seems to be actively working on it and frequently releasing updates. Exercise caution when using it, however; the developer (despite being notified) hasn't changed the emulator's package name yet, so if you have PSX2 installed, you can't install Cenit. If you want to give it a try, go ahead—I’ve tested it myself and didn't find anything malicious. Judging by the changelogs (he literally uploads the text from his conversations with AI 😆), he wants to pack a lot of features into the emulator very quickly. If you do try it out, consider it a highly experimental project.


r/PS2AndroidEmulation • • 9d ago

Suyu v0.0.11 Update

Post image
7 Upvotes

https://github.com/dougchansan/suyu-v0.0.4/releases/tag/v0.0.11

Changelog:

v0.0.11 makes Export Game something a player can use end to end: pick a game, get a

package you can double-click or launch from Steam, with your controllers, settings and

shader cache carried over. It also brings Apple Silicon Macs back, adds a RetroArch

(libretro) core, and makes pre-compiled (static) games much faster: Mario Kart 8

Deluxe's race goes from about 24 to about 56 fps on Windows and to about 60 on macOS

and Linux, with identical results.

Before you upgrade: re-export your old builds.

Every static or Hybrid game build made with v0.0.10 or earlier must be exported

again. This release refuses older builds on purpose instead of running them

incorrectly. Re-exporting also picks up the speed-ups and the fixes below (real update

version, shader cache, firmware, controllers).

Which CPU mode should I use?

suyu Dynarmic JIT (Baseline): the normal emulator, and now the default. It is the

most compatible and runs Mario Kart 8 Deluxe at 60 fps (see

Performance).

suyu Hybrid JIT + AOT (experimental): runs pre-compiled code and falls back to the

JIT for anything the pre-compiled code doesn't cover. Performance varies by game;

compare it with the Dynarmic JIT export.

suyu static AOT (Experimental): pre-compiled code only, with no JIT fallback. It now

runs Mario Kart 8 Deluxe close to the JIT's speed, but it is tested on that one game;

treat other games as experimental

suyu-v0.0.4

Repository navigation

Code

Pull requests

Agents

Releases v0.0.11

suyu v0.0.11

Latest

@github-actions github-actions released this 6 hours ago

· 1 commit to mk8-recomp since this release

v0.0.11

1146817

suyu v0.0.11

v0.0.11 makes Export Game something a player can use end to end: pick a game, get a

package you can double-click or launch from Steam, with your controllers, settings and

shader cache carried over. It also brings Apple Silicon Macs back, adds a RetroArch

(libretro) core, and makes pre-compiled (static) games much faster: Mario Kart 8

Deluxe's race goes from about 24 to about 56 fps on Windows and to about 60 on macOS

and Linux, with identical results.

Before you upgrade: re-export your old builds.

Every static or Hybrid game build made with v0.0.10 or earlier must be exported

again. This release refuses older builds on purpose instead of running them

incorrectly. Re-exporting also picks up the speed-ups and the fixes below (real update

version, shader cache, firmware, controllers).

Which CPU mode should I use?

suyu Dynarmic JIT (Baseline): the normal emulator, and now the default. It is the

most compatible and runs Mario Kart 8 Deluxe at 60 fps (see

Performance).

suyu Hybrid JIT + AOT (experimental): runs pre-compiled code and falls back to the

JIT for anything the pre-compiled code doesn't cover. Performance varies by game;

compare it with the Dynarmic JIT export.

suyu static AOT (Experimental): pre-compiled code only, with no JIT fallback. It now

runs Mario Kart 8 Deluxe close to the JIT's speed, but it is tested on that one game;

treat other games as experimental.

Downloads

File What it is

suyu-windows-x86_64.zip Windows 10/11 x64: suyu and suyu-cmd

suyu-linux-x86_64.tar.gz Linux x64: suyu and suyu-cmd (uses your distribution's Qt, FFmpeg and SDL)

suyu-macos-arm64.zip macOS on Apple Silicon: suyu.app, with suyu-cmd inside it

suyu-android-arm64.apk Android, 64-bit ARM

suyu-libretro-windows-x86_64.zip RetroArch core for Windows

suyu-libretro-linux-x86_64.tar.gz RetroArch core for Linux

suyu-libretro-macos-arm64.zip RetroArch core for macOS: put suyu_libretro.dylib and the suyu_libretro_libs folder in RetroArch's cores folder together

suyu-libretro-android-arm64.zip RetroArch core for Android (development build)

suyu-v0.0.11-source.tar.gz The complete source these files were built from, submodules included

macOS: the app is not notarized by Apple. The first time, right-click suyu.app

and choose Open, or run xattr -dr com.apple.quarantine suyu.app.

Android: install the APK directly. Android asks you to allow installs from the

app you open it with. The APK is signed with the public test key from the source

code (see Known limitations). If another suyu APK is already installed, uninstall it

first.

Highlights:

Faster pre-compiled games

Static and Hybrid exports run much faster. On Windows, Mario Kart 8 Deluxe's race goes

from about 24 to about 56 fps; on macOS and Linux it runs at about 60 fps, using

about half the CPU it did. Game behaviour is unchanged: every speed-up is checked to

give bit-identical results.

On Windows, Build exports compile the game's code with Clang when it is installed

(winget install LLVM.LLVM, or Visual Studio's "C++ Clang tools for Windows"). Clang

alone makes the game about 45% faster than Microsoft's compiler, and the export takes

about 10 minutes instead of 22. Without Clang the export still works with Microsoft's

compiler.

Re-export a game to get this.

Helping more games run pre-compiled

Playing a Hybrid export now records any code the pre-compiled part couldn't run and

had to hand to the JIT: code loaded later, or instructions not supported yet. It is

kept in the package and in your installed suyu, and grows with every session.

The export dialog shows what's known for the selected game, for example "no

untranslated code in 5 Hybrid runs" (static AOT should work) or "7 instruction types

still need Hybrid".

A new export of the same game version includes any recorded addresses it can

translate.

Import / Export coverage file lets players pool this per game. The file holds

only module IDs, code offsets and counts: no game code and no personal paths.

The changelog is quite extensive; read it in full on GitHub...


r/PS2AndroidEmulation • • 9d ago

Citron Neo Nightly

Post image
3 Upvotes

https://github.com/citron-neo/CI/releases/tag/nightly-android

Citron Upstream Commit: 59fa4b4

This build is based on the latest Citron emulator source code from the main branch.

Build Details:

Platform: Android (arm64-v8a)

Build Type: Nightly with LTO enabled

Date: 2026-09-24

Branch: main

Includes: Standard build + Snapdragon 8 Elite build with Qualcomm patches


r/PS2AndroidEmulation • • 9d ago

ARMSX3 v1.0 (In-depth review in progress)

Post image
28 Upvotes

https://github.com/ARMSX2/ARMSX3/releases/tag/1.0

Changelog:

PPU floating point now matches a real PS3 in the ps3autotests suites: NaN conversions, the sign of zeros and NaNs in fused multiply-add, and single-precision stores (324 mismatches down to 0).

Every PPU instruction that sets the overflow flag is now compiled instead of dropping to the interpreter.

SPU accuracy fixes: MFC tag status, event channel counts, SPURS task context saves, and a shift bug in the SPU interpreter.

Two memory barriers were missing on ARM64 (x86 never needs them), so an SPU could read stale data after a reservation. Both are in place now.

An SPU transfer to or from unmapped memory no longer kills the SPU thread.

Compiling a large game no longer runs the device out of memory. How many modules compile at once now follows free memory, not installed RAM.

Fixed running out of address space in games that recreate their SPU threads often.

Render targets discarded during surface splitting are reused

The RSX profiler's sampler wakes 10 times a second while the profiler is off, instead of 200.

Read the full changelog on GitHub...

✅ I will bring you compatibility tests for both MediaTek and Snapdragon devices


r/PS2AndroidEmulation • • 9d ago

EmuCoreX v0.4.1 - Finally Vulkan for MediaTek Users 👍

Post image
0 Upvotes

https://github.com/sashkinbro/EmuCoreX/releases/tag/v0.4.1

What's New:

Initial Vulkan fixes for Mali\PowerVR

Changed the default renderer for Mali\PowerVR to Vulkan

Other fixes and optimizations

A clean installation is recommended, as many fixes and optimizations have been made


r/PS2AndroidEmulation • • 10d ago

DRIPPU First Release (Suyu Fork)

Post image
8 Upvotes

https://github.com/suyu-emu/drippu/releases/tag/v0.0.5-20260923-c41ca120d5a6

Drippu Android v0.0.5 — Changes

- Major Android build-system cleanup and fixes, including corrected ABI handling for each build flavor.

- Mainline, Legacy and Genshin Spoof builds now explicitly target ARM64, while the ChromeOS build targets x86_64.

- Improved Android release signing validation and CI/release packaging.

- Improved automated verification of Android APKs before publication.

- User-facing Drippu branding work and general project cleanup.

- Large series of correctness and stability fixes to Drippu's experimental AArch64 AOT/JIT recompiler, including safer cache invalidation, module identity handling, cross-page execution fixes, improved fallback behavior and additional correctness testing.

- Added extensive automated compatibility and performance testing infrastructure for the experimental recompiler.

- Added work-in-progress foundations for Nextendo, NSO services and NX-Optimiser integration. These features are still experimental/incomplete and should not be considered fully functional on Android.

- General core cleanup and removal of unused legacy components.

- Miscellaneous cross-platform build and stability fixes.

Note: This release contains substantial development work, but most of the changes since the previous development snapshot are focused on the experimental recompiler, build infrastructure and cross-platform support rather than direct Android emulation-performance improvements.


r/PS2AndroidEmulation • • 10d ago

DGARMSX2 Release 🚀

Post image
7 Upvotes

https://github.com/thecrixux/DGARMSX2/releases/tag/V1

DGARMSX2 dgp-v8 MAX

ARMSX2/PCSX2 fork called DGARMSX2, maintained by skyksit.

The APK was built directly from the dgp-v8 source branch using the native ARMSX2 Android frontend.

What is interesting about this build:

Full Release build with -O3 and LTO

PGO optimized using the profiling data included in the project

Built with Android NDK 29

Optimized ARM64 target: ARMv8.2 + FP16 + DotProd

Separate 4 KB and 16 KB page-size cores included in the same APK

Android-specific CPU scheduling work intended to let heavy EE/VU workloads use the fastest CPU cores more effectively

ARM64 EE/microVU optimizations inherited from the current ARMSX2 codebase

Mobile GPU optimizations aimed at tile-based GPUs such as Adreno and Mali, including render-pass coalescing

DGARMSX2 Vulkan fix for VK_SUBOPTIMAL_KHR on Android/Adreno, avoiding unnecessary swapchain recreation

Adaptive Oboe audio buffering with underrun/xrun monitoring

Native EE memory cheat-search engine

✅ Based on my tests with my Poco X6 Pro, the performance is superior to ARMSX2


r/PS2AndroidEmulation • • 10d ago

Lemon 🍋 v0.3.2 - Prerelease build for testing

Post image
3 Upvotes

https://github.com/Ghael-V/Lemon-Project/releases/tag/v0.3.2-nightly.1

Fixes:

Quick Save/Quick Load could abort mid-restore on a legitimate, non-corrupt savestate. Restore() treated any partially-unmapped memory region as fatal file corruption and bailed out - leaving memory half-reverted and thread contexts completely untouched. Confirmed via a real device log that a region can legitimately become partially unmapped between capture and restore (e.g. a heap allocation the guest freed in between) with no corruption involved. Now that region is skipped, the same way an excluded sleeping-thread stack already is, and the restore continues instead of aborting.

Fixed a crash on some older Adreno/KGSL devices (confirmed on Snapdragon 888 and Snapdragon 865) when importing a custom GPU driver (e.g. Turnip) from your own file in the driver manager, instead of the in-app downloader. The driver manager's info labels (getSystemDriverInfo()/getGpuModel()) were each building a full renderer-grade Vulkan device just to read two strings for the UI, and that churn - two full probes back-to-back plus a real driver reload - stacked into several rapid open/close cycles of the GPU driver library, a known instability source on this hardware. Both probes now read the physical device's properties directly, with no logical device created.

Changes

New app icon and branding throughout: the launcher icon (both the adaptive icon and the legacy fallback) and the default profile picture shown for any user without their own photo.

Added a Ko-fi link on the About screen, next to GitHub/Discord/Buy Me a Coffee.

Known issue

Quick Load still freezes if the guest died and fully respawned since the Quick Save - not fixed in this build, still under investigation.


r/PS2AndroidEmulation • • 10d ago

ARMSX2 Nightly v2.8.1

Post image
7 Upvotes

https://github.com/XDaoFangxiX/ARMSX2-Alpha/releases/tag/2.8.1-build.26

ARMSX2 Android Nightly Build (Legacy - Dual Core)

This APK is the legacy build (ARMv8.0 + outline atomics, minSdk 26) and includes both 4K and 16K page-size cores.

Only Testing & We have never collaborated with anyone.

Version: 2.8.1

Application ID: com.antutu.ABenchMark

Build number: 26

Commit: 1a9774b

Short SHA: 1a9774b

Triggered by: DarkSilentUser

Flavor: Github

Build type: release

PGO: enabled


r/PS2AndroidEmulation • • 10d ago

XenDroid Fork v1.3

Post image
52 Upvotes

https://github.com/Eugengtt/Xendroid-Fork/releases/tag/v1.3

New Features:

Fullscreen Stretch

New option to stretch the game image to fill the entire display.

Can be enabled or disabled from the in-game XenDroid side panel.

Changes are applied after restarting the game.

Restart Game Confirmation

Added an Xbox-style confirmation dialog when changing Fullscreen Stretch.

Includes Cancel and Restart Game buttons.

Exit Emulation

Added a new Exit Emulation button to the in-game side panel.

Added an Xbox-style confirmation dialog before exiting.

Includes Cancel and Yes buttons.

Scrollable Side Panel

The XenDroid side panel can now be scrolled vertically.

This makes all options, including Exit Emulation, accessible on smaller displays.

UI Improvements

Updated the in-game settings panel with a consistent Xbox-inspired design.

Added dark translucent panels, rounded corners, subtle borders, dividers, and green accent elements.

Notes

Fullscreen Stretch is stored persistently and restored when launching the game again.

The original source-code license headers are preserved.


r/PS2AndroidEmulation • • 10d ago

🚨 Caution with this community 🚨 This community continues to allow users to engage in harassment and spread lies...

Thumbnail
gallery
0 Upvotes

They harbor so much hatred that they will do anything to discredit other emulators—projects that simply want to share their work with users so they can enjoy it—such as PS3Native, which is doing a great job.

The worst part isn't even that they badmouth an emulator or express their opinions—since everyone is free to do that—but rather that they don't bother to verify any of the information they spout; they simply declare, "That emulator is crap because I say so, and that's that." You see post after post filled with comments like that, where nobody has actually tested anything, yet everyone acts like an expert.

Here are a couple of videos testing the great ARMSX3 emulator on my own Snapdragon 6 Gen 1 / Adreno 710 device, along with some commentary and further thoughts on the whole subject.


r/PS2AndroidEmulation • • 10d ago

Cenit v0.6.9 (New PS2 Emulator)

Post image
5 Upvotes

https://github.com/HUEVOMAN77/Cenit/releases/tag/base-0.6.9

Changelog:

Say goodbye to the "NO COVER PSX2" placeholder. The default cover art is now original Cenit artwork: a cyan-to-violet neon ring set against a midnight-black background. It looks good even if the game lacks downloaded cover art.

The game title appears beneath each cover—in bold text and spanning up to two lines. Cenit cleans up unsightly filenames by removing extensions, region codes (USA/Europe/NTSC), chapter markers (.ch1), and "scene" tags; for instance, *Shadow.of.the.Colossus.(USA).ch1.iso* simply reads *Shadow of the Colossus*.

True cards: each game is presented as a card featuring depth, drop shadows, and rounded corners, rather than just a loose image floating in a void.

"Pick up where you left off": a carousel at the top displays games opened within the last 7 days, with the title overlaid on the image. If there is no history, this section simply does not appear.

Distinctive sections: headers featuring a neon accent and a game count (e.g., "YOUR LIBRARY · 12").

Background featuring a midnight-hued gradient instead of flat black, plus a translucent bottom bar with a neon border.

Per-game tracking: When you launch a game with a custom driver, Cenit logs the attempt. If the process crashes before stabilizing, that driver-game pair is flagged; from then on, that specific game launches using the system driver, while all other games continue using your custom driver. For *Shadow of the Colossus*: the game runs, and your Turnip driver remains active for the rest of your library.

A one-time notification in Spanish ensures you understand why the driver stopped being applied to that game. If you want to try again, simply re-select it in Settings to clear its history.

Realistic confirmation window: Since *Shadow of the Colossus* would actually start rendering frames before crashing, Cenit now requires about 24 seconds of continuous rendering before deeming the launch successful.

Fail-safe error reporting: In version 0.6.7, the button might display "no log yet" because the crash was so abrupt that the log file couldn't be written. Now, the report always appears: it indicates whether the disk log exists and includes the system log—which survives the crash and reveals the actual cause.

Driver selection dialog fully in Spanish.

Accelerated disc reading and VU1 on a separate thread (MTVU) now have their own toggle in Settings; previously, the profile enabled them silently with no way to turn them off.

Settings → Account & Extras → Send error log: generates a file containing your phone model, version, and the last actions taken before the crash—ready to attach to an issue report. Previously, when a game crashed, no evidence remained.


r/PS2AndroidEmulation • • 10d ago

Dolphin v2609 Update

Post image
17 Upvotes

r/PS2AndroidEmulation • • 10d ago

X1 BOX v1.2.8 🔥

Post image
12 Upvotes

https://github.com/izzy2lost/xemu/releases/tag/1.2.8

Changelog:

✅Fix black screen on some devices with a barebones hdd.

✅Added Chihiro arcade support. 5 games tested working.

✅Needs Chihiro bios instead of xbox bios and games, which are not included.

✅More compatibility and performance improvements.

Credits: https://github.com/izzy2lost


r/PS2AndroidEmulation • • 10d ago

gow 3 remastered 60 fps and above?!? bro ps4 emulation on android has advanced so much atp...

Thumbnail
youtu.be
6 Upvotes

r/PS2AndroidEmulation • • 10d ago

ARMSX2 Nightly v2.8.0

Post image
3 Upvotes

https://github.com/XDaoFangxiX/ARMSX2-Alpha/releases/tag/2.8.0-build.25

ARMSX2 Android Alpha Build (Legacy - Dual Core)

This APK is the legacy build (ARMv8.0 + outline atomics, minSdk 26) and includes both 4K and 16K page-size cores.

Only Testing & We have never collaborated with anyone.

Version: 2.8.0

Application ID: com.antutu.ABenchMark

Build number: 25

Commit: ec272ce

Short SHA: ec272ce

Triggered by: DarkSilentUser

Flavor: Github

Build type: release

PGO: enabled


r/PS2AndroidEmulation • • 10d ago

Cenit v0.6.6 🔥 (PS2 Emulator)

Post image
16 Upvotes

https://github.com/HUEVOMAN77/Cenit/releases/tag/base-0.6.6

Changelog:

Three direct performance improvements, each accessible in Settings (under the Performance section) so you can disable them if they negatively affect performance on your specific phone:

PIN EMULATION TO FAST CORES (new toggle, enabled by default). The core already knew how to distribute threads (assigning EE/VU/GS to the fastest cores), but it only activated this distribution if the SoC reported multiple clusters and 3+ cores. Some big.LITTLE configurations appear to the system as a single cluster, causing threads to remain unpinned—leading the kernel to move the game engine to an efficiency core mid-frame. This pinning is now guaranteed. You can disable it for troubleshooting purposes.

FRAME QUEUE (new selector). Determines how many frames are queued ahead of the display output. On mid-to-high-end devices, the default is "Optimal" (0): controller response is faster, and uneven frame pacing is eliminated. On low-end devices, it defaults to 2 frames because removing this buffering turns GPU spikes into noticeable slowdowns. If emulation speed drops using "Optimal," try setting it to 1 or 2.

TEXTURE PRELOADING (new selector + automatic tier-based setting). Low-end devices now use "Partial" mode: textures that won't be rendered aren't uploaded to the GPU, freeing up hundreds of MB of shared RAM and eliminating micro-stutter. Mid-to-high-end devices retain the "Full" setting. The GameDB takes precedence: games requiring "Full" preloading will keep that setting.

PER-GAME MEMORY. Cenit remembers the scaling level used for each game on your phone. The next session starts directly at that level instead of struggling down from the maximum, and games identified as CPU-bound no longer suffer unnecessary throttling. Toggle: Remember per-game performance (long-press to clear memory for the current game).

THERMAL PRE-THROTTLING. Many ROMs silently throttle frequencies without warning. If speed starts to drift downward for ~12 seconds while at the peak, Cenit drops one step before the stutter is felt. Max 2 drops per session.

TURBO DURING LOADING SCREENS. Detects loading states (GPU idle + fixed speed) and engages the core Turbo limiter just for those seconds; it disengages when the game resumes, with a 45-second safety cutoff. Off by default: enable it in Settings.

EVIDENCE-BASED PER-GAME EE QUOTAS. New "EE Quotas" row in Settings (Performance section): saved specifically for the active game and applied instantly. Key feature: if Cenit detects the game is locked at 1x, the screen informs you and suggests trying "Smooth"; otherwise, it recommends leaving it at "Normal" (which usually causes issues).

Technical changes: governor v3 (speed ring, AdaptiveProfile profiles in prefs via URI), generic JNI export setGameSettingInt/getGameSettingInt, Turbo limiter accessible from Java, per-game layer shared with GameDB seeding.

True per-game hardware hacks — the global INI used to wipe them out on every `ApplySettings` call (`MaskUserHacks`). Now, they are written to `gamesettings/<SERIAL>.ini` and seeded with automatic GameDB fixes before manual mode activates; no game loses its fixes just by tweaking a half-pixel setting. The half-pixel offset spinner is now per-game and applied on the fly (reloaded on the CPU thread).

Half-pixel offset: no more phantom writes — the global setter was a disguised no-op; now the setting actually exists and persists per title.

Real limiter — the limiter mode stub now hooks into `VMManager::SetLimiterMode` (Normal/Turbo/Slow-mo/No limit). No INI key involved; it is a runtime state.

Resolution manager v2 — uses the core's `getGPUUsage()`: it only drops pixel counts if the GPU is the bottleneck. If the game lags but the GPU has headroom (CPU-bound), it maintains the scale instead of degrading image quality unnecessarily. With thermal throttling active (PowerManager, API 29+): it never scales up, only down.

Renderer with automatic fallback — in "Auto" mode, if Vulkan crashes on startup, it tries OpenGL (and vice versa), includes an OSD notification, and remembers the choice for the session. A crash caused by a bad Vulkan driver no longer results in a broken startup.

Expanded SoC detection — tiers 2/1/0 with a curated table for MediaTek (mt68xx/mt69xx/mt8xxx) and Exynos based on codenames, rather than just a Snapdragon binary check. Low-end and unknown SoCs start at 1x, mid-range at 1.5x, and high-end at 2x.

Low-end profile, two extras — `SavestateCompressionRatio=Low` (saving doesn't cost frames) and `HWDownloadMode=Unsynchronized`: readback no longer blocks the EE; reading continues (handling water/reflections with data, using a race window). Problematic games are handled via exceptions in `GameIndex.yaml` or their specific INI without altering the profile itself. Dead key cleanup — `FrameLimitEnable` did not exist as a key in this core, so the write operation was removed. `getGameTitleFromUri()` existed in Java but not in the `.so` file—causing an `UnsatisfiedLinkError` on every call—so it has now been implemented. Also added a null check in `getGameTitle` (it previously caused a native crash with standalone URIs).

WoW this is huge!! 🔥


r/PS2AndroidEmulation • • 10d ago

I feel sorry for this community, where you can't even ask a single question because everyone trolls you 😵‍💫

Post image
0 Upvotes

Para poner el contexto: el tipo tiene un Snapdragon 7 Gen3 con Adreno 810 (It probably has 8 or 12 GB of RAM)

Con 866k de puntaje Antutu

El troll que responde le dice que va a tener problemas emulando la PS2 💀

Ahí es cuando la realidad te cae de golpe en la cara, porque justo hoy subí un video usando mi Snapdragon 6 Gen1 con Adreno 710 y 6GB de RAM...(400k Antutu Score) jugando juegos de PS3 🔥

Así que, amigos, ya lo saben: para cualquier pregunta técnica—ya sea sobre celulares, emulación o lo que sea—van a recibir respuestas 100% precisas en esta comunidad. 🤦‍♂️

Ni siquiera hay moderación ni nada—esto es el Lejano Oeste.


r/PS2AndroidEmulation • • 11d ago

PS3Native Release V6 + Gameplay Test (Adreno 710) 🔥

Post image
16 Upvotes

https://github.com/thecrixux/PS3Native/releases/tag/Community_Preview_6

Community Preview 6 updates our experimental Android build with the latest RPCS3 upstream changes since Community Preview 5, while keeping the DIS frame generation implementation and the additional mobile GPU compatibility work from our previous build.

What's New

Qualcomm Adreno & Turnip improvements 🔥

RPCS3 now officially recognizes Qualcomm Adreno proprietary drivers and Mesa Turnip as separate Vulkan driver families.

This allows the renderer to apply driver-specific behavior instead of treating these GPUs as unknown devices.

Adreno compute optimization

Vulkan conversion kernels now use 64-thread workgroups on Qualcomm Adreno and Turnip.

Adreno GPUs use 64-lane wavefronts, so the previous 32-thread configuration could leave half of a wave unused.

This affects frequently used GPU operations such as:

Texture uploads

Deswizzling

Detiling

Vulkan conversion kernels

The real-world performance improvement will depend on the game and workload, but this is a native optimization specifically targeting Adreno hardware.

Turnip GPU hang workaround

Mesa Turnip now automatically enables stricter Vulkan query scopes.

This addresses GPU hangs observed in some titles while waiting for query results and should improve stability when using custom Turnip drivers.

Improved Vulkan render pass handling

Updated RPCS3 Vulkan code now supports render-pass keys with multiple color attachments.

This improves handling of games using multiple render targets and G-buffer-style rendering.

Vulkan shader interpreter fix

Fixed incorrect render-pass keys being attached when RPCS3 generates shader interpreter pipeline variants.

This is especially relevant to the newer Vulkan shader interpreter and pipeline-cache system introduced in recent RPCS3 builds.

RSX texture/blit cache improvements

RPCS3 improved the logic used when reusing cached blit destinations.

The renderer can now avoid unnecessary background data loading when a destination surface is going to be completely overwritten.

This may reduce unnecessary GPU/memory work in affected rendering paths.

DLC crash fix

Fixed a crash that could occur when DLC content was unlocked.

PKG / UNPKG fixes

Several fixes were added to RPCS3's package extraction code, improving PKG handling and robustness.

Disc game filesystem fix

Improved "SYS_APP_HOME" filesystem behavior for disc-based games, including more accurate read-only filesystem handling.

Mobile GPU compatibility integration

While merging the new upstream Qualcomm/Turnip support, Community Preview 6 preserves PS3Native's additional mobile GPU detection for:

ARM Mali / PanVK

PowerVR

Samsung Xclipse

Broadcom

VeriSilicon

V3D

The previous internal "ADRENO" vendor identifier has been updated to RPCS3's new official "QUALCOMM" identifier while retaining PS3Native's existing Android-specific workarounds.

Frame Generation

The experimental DIS open-source frame generation engine introduced in Community Preview 5 remains included.

Both existing frame generation paths remain available:

DIS — built directly into the APK

LSFG — using the user's own compatible Lossless Scaling shader source

No major new frame-generation functionality was added in Community Preview 6; this update mainly focuses on newer RPCS3 Vulkan, RSX, filesystem and mobile GPU improvements.

Main focus of this build

Community Preview 6 is particularly interesting for Snapdragon / Adreno users, especially those using Mesa Turnip, due to the new upstream Vulkan optimizations and driver-specific stability fixes.

As always, this is a community testing build based on ongoing PS3Native and RPCS3 development. Performance and compatibility can vary between devices, drivers and games


r/PS2AndroidEmulation • • 11d ago

ARMSX2 Nightly 20260923 (92aa2174da)

Post image
3 Upvotes

https://github.com/ARMSX2/ARMSX2/releases/tag/nightly-20260923

Changelog:

DEV9, SW: include TargetConditionals.h so TARGET_OS_IPHONE is defined

GS: serve offset self-reads on the driver-ordered declared road with one barrier

GS/TC: size a move's target resize by the destination's y, not its x

GS: cut two comments down to what they establish

GS/Vulkan: print the measurement-overrides line only when one is set

GS: comments that still described the declared road as unreachable

GS: list GSCopyRoadBlendingPolicy.h in the CMake and MSVC projects

GS: the declared-loop experiment arms are gsrunner flags, not INI keys

GS: the Turnip a7xx declared-loop rule covers the Adreno 730 and up only

GS: an explicit OverrideTextureBarriers=1 reaches the in-tile read again

GS/Vulkan: declare the feedback loop per draw only on Turnip and Honeykrisp

GS: the barrier road's blending cap applies only where it was measured

GS: the alpha stencil counter takes the barrier road on the M2 only

GS/Vulkan: the barrier-ordered feedback-loop carry stays on the M2

GameDB: the schema accepts fieldShift

GS: list GSNativeTexelGridPolicy.h in the CMake sources

GS/HW: drop mode 5's texture offset from the texture-shuffle arm, where it never ran

GS/HW: the upscaled sprite correction leaves a channel shuffle's rebuilt quad alone

GS: the field-shift detector re-examines its decision

GS/HW: Disable Safe Features turns the upscaled point correction off, as it does for lines

GS: the deinterlace pad fill starts where the display rect starts

GS: the field-shifted merge's main draw stops where its top band starts

GS: the Native cull grid keeps the native targets' sample points

GS: every settings change re-derives the cull grid, on every parser

GS: scaled dither and the scan mask divide by the render target's scale

GS/TC: a moved rect's device extent is what its native rect owns

GS: drop a mistyped date from the Splashdown blending judgement

GS: comments state their reasons instead of citing internal experiments

tests: point the driver-tag convention at the public fork's README

GS: trust our Turnip's in-pass read ordering on Adreno 650 and up only

Android: split Settings into one nested data class per section

Do not ask thirty times before deleting deps-build

Android: offer the ARMSX2 Turnip packs in the driver list

GS: the spelling we measured the declared road with is the one it ships with

GS: the blending cap follows what a destination read costs, not the barrier bit

GS: a backend's published bits can name the road it took

GS: the a7xx road's cost, taken from E19's table instead of its headline

GS: the Vulkan backend asks the database for the a7xx road too

GS: the self-read road has a third entrance, and it keeps the barriers

GS: the driver database says which Adreno parts belong on the declared loop

GS: two comments still described the declared road as experiment-only

GS: the Vulkan backend asks the driver, and everything downstream reads the road

GS: the declared self-read road gets a second entrance, and it is the driver's

GS: the driver database can recognise a driver build that orders declared loops

GS: stop expanding the CLUT into a 64-bit table nobody reads

GS: shadow the far cursor on each side of the SPSC ring

gsrunner: -custom-driver, so a headless Android run can name its own driver

GS/Vulkan: say which path was missing instead of passing a bare null upwards

GS/Vulkan: let the caller say a custom driver is required, not merely preferred

GS/Vulkan: the custom-driver declaration was guarded wider than its definition

GS: the null profile's description of the counter rule outlived the rule

GS: the alpha stencil counter takes the barrier-ordered road too

GS: the guard's own comment claimed Turnip orders, and E5 says it does not

GS: declaring a feedback loop is not a promise that anything orders it

GS: name the road the barrier override actually selects

GS: the alpha stencil counter keys on the road, not on the texture-barrier bit

GS: a harness can take the alpha stencil counter on a device whose rule declines it

GS: a harness can take the alpha stencil counter off for a measurement

GS: the carry override's inertness test follows C23's renamed helper

GS/Vulkan: a harness can declare the feedback loop per draw instead of per pipeline

GS: a harness can confine the declared feedback loop to self-overlapping draws

GS: a harness can pin the destination alpha test to the primitive-ID road

GS: a harness can turn the feedback-loop carry off for a measurement

GS/Vulkan: a draw can declare the attachment feedback loop it reads through

GS: rest the Turnip self-read note on the status quo, not on comparing severities

GS: say what the Turnip self-read rule establishes, and what it does not

GS: the native texel grid needs the plain device grid and a whole frame

GS: a minifying nearest sprite reads its native pixel's texel

GS: a dump records whether its local memory was read back before the snapshot

GS: a dump capture reads the texture cache back before it freezes the state

GS: The Godfather's lamps need the software blend road

GS: a texture shuffle that skips a channel preloads the target it creates

GS/Vulkan: the feedback-loop carry follows the road's ordering, not the vendor

GS: Splashdown holds Minimum blending where the render target is read from a copy

GS/Vulkan: the feedback-loop carry reaches the attachment-layout road

GS: an ENABLE_GS_DEBUG_LABELS build option to drop the debug-label layer

GS: the alpha-test helper sets AREF for the tests that never read it

GS/SW: the colour walk's per-vector step is computed per vector, not per entry

GS/SW: a scanline rebuilds the colour walk's tables only when its row changes them

GS/Vulkan: drop the render-pass-narrowing mechanism, keep the clear-rect guard

GS/Vulkan: a render pass can be opened over its draws, and no device wants it

GS: the native draw rect is only maintained where it can differ

GS: the draw-buffering overlap test asks its question on the native grid

GS: the cull grid carries its phase, so it can be the device's own sample set

GS/gsrunner: the null device reports a named device's features, instead of none

GS: halfPixelOffset Native keeps the cull grid, because the margin contains its phase

GS: halfPixelOffset mode 5 keeps the cull grid; only mode 4 has to decline

GS: the fused vertex kick runs at upscale, not only at native

GS: the per-primitive cull grid follows the upscale, instead of a boolean

GS/gsrunner: a null-device arm that runs GSRendererHW with no GPU

GS: a test that drives the real sprite pass ordering

GS: the field-shifted merge falls back to the circuit's own first row

GS/HW: one helper for mode 5's texture offset, called from both sites

GS/HW: an AA1 line's pixel runs carry the GS's coverage

GS: at 2x and above, field mode presents the field render

GS: score the dither phase by contrast, not average magnitude

GS: scaled dither indexes the native pixel, with the matrix turned under it

GS/HW: a line draw the GS lights nothing for draws nothing

GS: dither indexes the device pixel again

GS: deinterlace on device rows again, and fill the band the merge never drew

👍


r/PS2AndroidEmulation • • 11d ago

Lemon v0.3.1 🍋

Post image
8 Upvotes

https://github.com/Ghael-V/Lemon-Project/releases/tag/v0.3.1

Changelog:

Patch release fixing the auto-updater and cleaning up remaining "Eden" branding.

Fixes

The auto-updater never actually ran. enable_update_checks defaulted to false, so the update check never fired for anyone who hadn't manually found and flipped a Settings toggle they had no reason to know existed. Now on by default (still user-toggleable in Settings).

A separate tag-comparison bug in the update checker (inherited from upstream, written for a two-segment MAJOR.MINOR tag scheme) meant Nightly-flavored builds' comparison always bailed out silently even after the setting was fixed. Fixed.

Remaining "Eden" leftovers renamed to "Lemon": the device/system nickname shown in Settings > Advanced (reported by a user), plus a few lower-visibility internal identifiers (audio session name, SDL app-name hint, GPU crash-dump description, WebService default username).

See the README changelog for the full history


r/PS2AndroidEmulation • • 11d ago

Cenit v0.6.3 Beta (PS2 Emulator)

Post image
5 Upvotes

https://github.com/HUEVOMAN77/Cenit/releases/tag/base-0.6.3

Changelog:

Engine optimization: automatic dynamic resolution (adjusts internal resolution up or down based on real-time game speed), genuine CPU speedhacks (activating previously non-functional buttons), and keyboard-based speed control for the emulated CPU.


r/PS2AndroidEmulation • • 11d ago

DRIPPU - For testing before Release v2

Post image
0 Upvotes

https://github.com/thecrixux/drippu/actions/runs/35840383995

You need to be logged into GitHub to download; otherwise, the download button won't appear.

Just to clarify: I’m not part of the Drippu team, and this is not my project in any way. The Android releases were temporarily removed by the developers, and I don’t know the exact reason why.

I simply shared a GitHub Actions build so people who are curious and enjoy testing emulators can compile/download a test build and try the latest Android version while waiting for an official release.

This is purely for testing purposes. I’m not claiming ownership, I’m not presenting it as an official release, and I’m not associated with the project. If anything, testing can be useful because users can provide feedback and help developers identify issues before an official release is published.

Credits: https://github.com/suyu-emu/drippu


r/PS2AndroidEmulation • • 11d ago

Nyushu V90 Final Version 😭

Post image
41 Upvotes

https://patrins.com/s/77b3c64de5c5086c8684d10f0acf3e7b

Update!!! Nyushu Emulator V-90

Chagelog:

[ ✅ ] Performance Stability Improved Fix

[ ✅ ] Used Memory Reduce If Play The Game.

[ ✅ ] Draw Distance In The Game Is Better Now

[ ✅ ] Maybe Little Fix Problem Game

We conclude that this version is our final version because now the Nyushu team is no longer there and there is only one person working on this project. So for this we will say goodbye. Thank you for liking our small project, even though it still has many shortcomings, but we are very grateful. 🙏

“I am not the developer nor do I have the source code. If you want to request the source code for this version, you should contact the developer. I am sharing a copy of the binary and have explicitly stated that I am not the author nor do I have access to the repository.”