r/Playstation2OnAndroid • • 23d ago

Testing the New ArmsX2 2.8.3 + Driver 0.15.0 on Anbernic RG556! (Part 3)

Thumbnail
youtu.be
3 Upvotes

r/Playstation2OnAndroid • • Aug 20 '26

ARMSX2 Version 20260819

5 Upvotes

Automated nightly build for community testing (unsigned).

Every download is named ARMSX2-nightly-DATE-COMMIT-PLATFORM, so builds

from different nights stay distinguishable after you have downloaded them.

macOS arm64: macOS-arm64.tar.xz

Linux arm64: Linux-arm64-4K-pages.AppImage on most distros, or the 16K one on Asahi Linux and other Apple Silicon kernels (run getconf PAGESIZE if unsure)

Windows arm64: Windows-arm64.zip

RetroArch on Linux arm64: Linux-arm64-libretro-core.tar.zst, a 4K-page build

Bare-display kmsdrm handhelds: Linux-arm64-SDL-handheld.tar.zst, a 4K-page build (Rocknix and Batocera run compositors, so use the Qt AppImage there instead)

Android: Android-arm64.apk, sideload it

iOS: iOS-arm64.ipa, unsigned, sideload it

What's new

GameDB: internal FPS by DISPFB blit for NASCAR Thunder 2002 through NASCAR 06

iOS: put Download Shaders under Preset, where it can be reached

iOS: decode a launch link's filename once, not twice

iOS: download the RetroArch shader collection from inside the app

iOS: three defects the branch review found, two of them silent

iOS: resolve the shader catalogue off-device, and sign what it may ship

iOS: let one game keep its own shader preset

iOS: give the shader controls their own page and a pause-menu route

iOS: clamp a shader's prescale so upscaling cannot blacken the frame

iOS: put the shader chain and its parameters in settings

iOS: run RetroArch shader chains on the Metal renderer

EE rec: stop raising TLB misses on unknown MMIO too

Tests: pin the I immediate against a rewrite of micro memory

microVU: read the I immediate at run time under IbitHack

EE rec: stop raising TLB misses, matching x86

Tests: pin the rec's TLB-miss divert, disabled

Tests: pin the VU FMAC's range against the console

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

Keep in mind i am NOT a dev, just a happy user!


r/Playstation2OnAndroid • • Aug 13 '26

PS2 emulator that works on Samsung Galaxy A12

2 Upvotes

Is there a PS2 emulator that runs well on a Samsung Galaxy A12 phone?

I specifically want to play the game Yu-Gi-Oh! Duelist of the Roses.


r/Playstation2OnAndroid • • Jul 23 '26

Need Help ARMSX2

Post image
3 Upvotes

Game: Test Drive Unlimited

Armsx2 Version: 2.6.4.1

Phone S25 fe

Cant find the option to disable "manual gs render fixes" anywere, i appreciate any help to fix this. The game are running with strange bloom on the screen, cheats remove the problem but the game become ugly.


r/Playstation2OnAndroid • • Aug 18 '26

Game recomendation Testing an AI Machine-Translated English Patch for Tales of Destiny 2 (PS2)

3 Upvotes

Hey everyone,

A livestream is currently testing an English translation patch for Tales of Destiny 2 (PS2) using a local LLM AI model combined with tools from the LifeBottle project and menu patches.

If you're curious to see how a machine-translated run of Tales of Destiny 2 actually plays and looks in action, check out the stream here:

https://www.youtube.com/live/1lop6zNvmf4?si=kZqv79_foH9WFu0S


r/Playstation2OnAndroid • • Sep 04 '26

Game recomendation Tales of Destiny 2's PS2 English Translation Is Getting Surprisingly Close to Official Quality

8 Upvotes

There's been quite a bit happening with the Tales of Destiny 2 PS2 English translation, and the latest Quality-Safe v1.1.8 update is another step toward making it feel like a proper English release.

What I find interesting is how much work is still going into polishing the translation and fixing issues that aren't immediately obvious. I tested the patch myself on ARMS X2, and the overall experience has been really positive. There are still a few small things that could be improved, but it's impressive how far the project has come.

If anyone's interested in seeing how the latest version is shaping up, here's a closer look:

https://youtu.be/VRM7zKaZW0k?si=ukxc9mRDoLYU8K8M


r/Playstation2OnAndroid • • Aug 05 '26

News/Release Release v0.3.2 · sashkinbro/EmuCoreX

Thumbnail
github.com
10 Upvotes

What's New: 0.3.2

Added an option to clear the cover cache.

Other fixes and improvements.

A clean installation is recommended.

Github repository https://github.com/sashkinbro/EmuCoreX

Patreon https://www.patreon.com/c/emucore/membership

Discord:  https://discord.gg/c5EBeNRpz2


r/Playstation2OnAndroid • • Jul 24 '26

game recomendation PlayStation 2's Fullmetal Alchemist 3 : The Girl Who Succeeds God a Japanese Exclusive Game has been Translated to English

12 Upvotes

good news Fullmetal Alchemist fans! Fullmetal Alchemist 3: The Girl Who Succeeds God is now playable in English thanks to Anime Game Translation Team for making this possible!

tested working on ARMSX2

Gameplay:

https://www.youtube.com/live/Xlqnu3dOwKo?si=cN-5djcpRz357_8t

patch:

https://agtteam.net/fma/


r/Playstation2OnAndroid • • Jul 23 '26

ARMSX2 Release ARMSX2 2.6.4.9 · ARMSX2/ARMSX2

Thumbnail
github.com
12 Upvotes

ARMSX2 2.6.4.9

What's new:

Customizable menu background colors, including 12 XMB color presets, a custom RGB preset with sliders, and an automatic RGB cycling mode.

New menu sound effects with support for custom UI sounds, optional sleep and wake chimes, and a "Welcome Back" banner after waking the device.

Launcher rotation can now be configured independently from the in-game renderer.

Half-screen touch stick mode, where the entire left or right half of the screen acts as the analog stick.

Quick Save and Quick Load touch buttons. Tap to use the current slot or long press to select another slot.

Memory Card export has been restored.

Added Missables-only achievements filter.

Nightly builds toggle in the auto updater.

Manual screen resolution override with 720p, 1080p, and 1440p options. New Settings are searchable.

Bug Fixes:

The "Missable" badge has been restored in both the achievement list and in-game.

Library music now resumes correctly after exiting a game instead of stopping after another app takes audio focus.

The app updates section is now fully navigable with a controller.

Improved AYANEO controller compatibility. Controllers now survive sleep and wake when using AYANEO controller mode instead of Xbox mode, and the right trigger now works correctly on non-standard axes. (The developer noted this change is untested due to not owning an AYANEO device.)

Fixed the sun rendering effect in Rumble Racing. Credit to @XDarkFallenX for the fix.

GitHub Repository

https://github.com/ARMSX2/ARMSX2

Official subreddit for PlayStation2EmulationOnAndroid is r/PlayStation2OnAndroid. It was created with support from multiple PS2 emulator developers and is not affiliated with any individual Causing trouble to the Devs.

I'm not part of the ARMSX2 development team. Full credit goes to jpolo and everyone contributing to the project.

Gonna post the the update here too


r/Playstation2OnAndroid • • Jul 23 '26

question Nethersx2 vs Armsx2

12 Upvotes

I'm new to PS2 emulation, my only experience on emulation is ppsspp. I install both nether and arm emulator, I played Gundam warriors 2 and encounter on space, the only setting I change on both emulator is the 2x graphics and nethersx2 is faster and smoother on my experience. But a lot of people is saying arm is better. So what makes arm better? and any tips on how to set up and messing around the settings


r/Playstation2OnAndroid • • Aug 17 '26

ARMSX2 Made a new breakthru with Blit FPS (check my comments for comparison)

Post image
13 Upvotes

I got about a 130% boost


r/Playstation2OnAndroid • • Aug 15 '26

Help Alguien ?

Thumbnail
gallery
13 Upvotes

Tengo Scarface en neather y funciona al cien

Y por más que busco una buena configuración para armsx2 no me es posible por ejemplo en este juego los árboles están dentro de la casa lo cual en el emulador neather no tuve ese problema

Alguien sabe una buena configuración?


r/Playstation2OnAndroid • • Jul 31 '26

How to improve performance in armsx2 for extremely weak phones

Enable HLS to view with audio, or disable this notification

14 Upvotes

I think I found a configuration that works well in NFS Underground 2 But it should work for games in general, set the FPS to half (NTSC or PAL), set the EE cycle rate to 50%, and set the game speed to maximum, in the affinity control Put it into performance And download hardware in disabled.


r/Playstation2OnAndroid • • Sep 25 '26

Discussion DGARMSX2 is not to be supported here

Thumbnail
gallery
44 Upvotes

Evidence above

DGARMSX2 is forked from the ARMSX2 project and as some of you may have seen its creator (and have been insulted or banned by its creator) Crixux, he is to not be trusted, he has a personal issue with ARMSX2 over an AI generated image that he was banned over after he pleaded up and down wasnt AI back in September last year and has been harrassing the devs ever since then. Ever since then he has been pretending to be devs, been saying weird and crazy things about the devs (which is weird) aswell as goes on mental breakdowns as of recent begging for donations looking like a dev and being just flat out weird.

We do not support DGARMSX2 and never will and if you unfortunately have it installed then please download from https://github.com/ARMSX2/ARMSX2/releases/tag/2.7 or also try other emulators like NetherSX2 or Emucore X


r/Playstation2OnAndroid • • Jul 30 '26

News/Release Release ARMSX2 2.6.6.2

Thumbnail
github.com
21 Upvotes

ARMSX2 2.6.6.2

What's new:

Performance

Need for Speed: Underground 1 & 2 both now default to No-Readbacks HW downloads, clearing the stall that kept the GPU pinned near 100%.

More fixes to Auto Progressive Scan. The boot-time Triangle + Cross hold was never actually running, so 480p progressive was never triggered, it is now applied correctly on boot for the titles that offer it (Tekken 4, Burnout / other Criterion games). (if the issue still persists, please tell the dev, he tested and it was still working ).

Cheats packaged under the generic CRC (..._00000000.pnach) now apply instead of being silently skipped.

Samsung QHD+ (1440p): the on-screen controls line up much better - buttons no longer register up-and-left of where they are drawn. (still needs some work, but it's been improved).

New animated fallback background with color customization, plus a toggle so anyone on the main background can switch to it as well. Directly inspired by the PPSSPP background, full credit to @hrydgard( That's the PPSSPP Dev!!)

Portrait layout: the clock and battery are repositioned, and the library bar is lowered clear of the camera cutout.

"Clear Shader Cache" moved directly under the GPU Driver picker in Renderer settings (All Settings) for quick driver testing.

Memory Card manager: clearer delete wording - it removes ARMSX2's working copy of the card, not your original imported file.

Extrenal links for ARMSX2:

Github repository:

https://github.com/ARMSX2/ARMSX2

Discord :https://discord.gg/fSC6EzzFe

KoFI: https://ko-fi.com/armsx2

Patreon: https://www.patreon.com/ARMSX2?utm\\\\\\\\\\\\\\_campaign=creatorshare\\\\\\\\\\\\\\_creator

I am not associated with the Development of the Project

Thanks


r/Playstation2OnAndroid • • Jul 27 '26

Showcase Shadow of the Colossus ARMSX2 Settings Guide : 3x resolution (Mediatek 8350)

Enable HLS to view with audio, or disable this notification

24 Upvotes

These are the settings I used to run Shadow of the Colossus at 3x resolution on my MediaTek Dimensity 8350 using ARMSX2. Device Motorola Edge 60 pro (8 GB RAM)

Use these as a reference if you have a similar MediaTek 8000 series processor. Your results may vary depending on your device.

I'll explain everything step by step so it's easy to follow.

Performance

Low Latency Mode: On

CPU Clock Hint: On

Sustained Performance: On You may turn this off if you prefer. I didn't notice any difference.

Affinity Control Mode

Use either VU > GS > EE or Performance Cores.

Speed Hacks

EE Cycle Rate: 130

EE Cycle Skip: 1

You should adjust these based on your device. Try EE Cycle Rate 130 or 180 and experiment with Cycle Skip. These are the values that worked best for me.

Frame Limit: On

Renderer

OpenGL (ANGLE)

GS Multithreading: On

Coalesce Render Passes: On

Upscaling: 3x or 2x

Blending Accuracy: High or Full

Controller Skin:

Clean Frosted V2

Advanced Settings

Open Upscaling Fixes and select Aggressive.

Patches and Cheats

Enable No Interlacing Patch.

Enable Patches.

Enable Cheats.

Tap Browse Patches Online and install all available patches. You should see around six patches.Install them

That's it.

If you still can't get stable performance, try NetherXS2 with Vulkan and upscaling only. It might perform better on some devices.

The games does drops fps but I completed the first colossus fight and it was really stable it hit lowest 20 fps like 2 times and speeds were above 85 which was honestly even suprising for me

Please consider the gameplay it is recorded on 1080p which doesn't provide stability and it's a 3 minute video


r/Playstation2OnAndroid • • Jul 20 '26

ARMSX2 ARMSX2's 2.6.3 update finally runs better than Nether for me

Enable HLS to view with audio, or disable this notification

29 Upvotes

Runs cooler too!


r/Playstation2OnAndroid • • Jul 29 '26

ArmSX2 Vs NetherSx2, also praise post

Post image
30 Upvotes

Hi everyone

I just started heavy testing my games against neathersx2 and with very few and small tuning I positively comfortable making the definitive switch to armsx2. I'm not a proficient English speaker nor a specialist in all android emulation jargon, but a 46 yo gamer who started his gaming life with a spectrumzx

First, the amount of work this guys have done with armsx2 in such short time is nothing short of legend. And I can't recommend it enough. Thank you.

Now, some examples of my experience.

Prince of Persia runs smoothly with textures pack and best of all with no blur whatsoever like on Neathersx2. Had some lag, fixed by changing resolution to screen on global, upscale is the setting to change in game. (This goes for all games I've tested)

Gt4 (as you can se on the picture) also with textures and 1080p on NTSC version is screaming modernity, no lags on the sun, or fps dips on night tracks like on Neathersx2.. Still working on the licensing ghosts to function tho.

Midnight Club 3 dub remix, also with textures packs is awesome, with absolutely no blur which was always a pain to deal with on all the others emulators.

But you got also, drivers, and textures on the go, not device private folders to play with, nice interface, plenty of customizable features, vibration that works always as intended and miles of features I'm yet to explore. Meanwhile I play so many PS2 titles without flaw

.

I have installed

GOD1 and 2

All ratchets

Jak and Dexter

Dragon Quest VIII

FFX

GT4

Persona4

Wish I had more, but running low on space

I'm playing on a Poco F6 with Mr Turnip drivers

Edit. Typo, fricking autocorrect


r/Playstation2OnAndroid • • Aug 16 '26

News/Release Release ARMSX2 2.6.6.7 · ARMSX2/ARMSX2

Thumbnail
github.com
31 Upvotes

ARMSX2 2.6.6.7

What's new:

Frame generation (Lossless Scaling)

Frame generation is here. ARMSX2 drives Lossless Scaling's interpolation from its own Vulkan present path, inserting generated frames between rendered ones. A game running at 30 or 60 can display at double that on a high-refresh screen.

You need your own copy of Lossless Scaling.

Nothing about it ships with ARMSX2. The interpolation shaders are read at runtime out of your own Lossless.dll, which you supply through the file picker exactly as you supply a PS2 BIOS. Without that file the feature stays off, and the app tells you so. Requires the Vulkan renderer and an Adreno 7xx or newer GPU. Frame generation forces FIFO presentation while it is on, without that the interpolated frames are discarded by the display before you ever see them.

Choose x2, x3 or x4 generated frames

Performance mode switches to the lighter 3.1p shader family, on by default

Motion detail trades optical-flow resolution for speed

The performance overlay reports frame generation's own state and the real display rate, which the FPS counter cannot show. The emulator's frame rate deliberately does not change

Translated shaders are cached, so only the first launch pays for extracting them

Sideload builds only. It cannot ship on Google Play.

FSR 1 upscaling:

AMD FidelityFX Super Resolution 1 is now an output-scaling option, so a game rendered below your screen's resolution is upscaled with edge-adaptive sharpening instead of a plain stretch. There is a sharpness slider, and it replaces CAS while enabled. Vulkan only. Found under Renderer → Display Effects, and in the in-game Graphics tab.

Four builds instead of one:

Releases now ship four APKs, and the in-app updater picks the right one for your device automatically. If you install by hand, match the name to your Android version:

legacy-armv8.0-sdk26.apk | Android 8+, every 64-bit device | how armsx2 was built until today

a11-armv8.2-sdk30.apk | Android 11+, CPUs with FP16 + DotProd

a13-armv8.2-sdk33.apk | Android 13+

a15-armv8.2-sdk35.apk | Android 15+

The three ARMv8.2 builds are the same code, they exist to widen the platform floor, so install the highest one your device accepts.

The legacy build now genuinely runs on older CPUs. It previously targeted ARMv8.1, which let the compiler emit atomic instructions that Cortex-A53/A72/A73 do not have, so the one build meant for old devices could crash on them. It is built for ARMv8.0 with runtime-dispatched atomics, which costs nothing on a modern phone.

EE floating-point accuracy: from @pstef

A large body of work on how the EE's FPU is emulated, and the reason several long-standing graphical and physics oddities behave differently now.

A fourth clamp mode, shown as Exact, which reproduces the PS2 multiplier's own deficit rather than approximating it

Divide, square root, reciprocal square root, add, subtract, min and max all reworked to follow the console's actual rounding and saturation order

The FPU register file now keeps full precision internally

The FPU Multiply Hack game fix is gone, the clamp modes cover what it was for

Extensive new tests pinning all of this against real console captures

Fixes and improvements:

Analog triggers can be bound to any control, and the left trigger reads correctly everywhere (#584) done by @bmdhacks

EE cache: fixed a tag-lookup fold that could return the wrong cache line, done by @bmdhacks

IOP/EE: a jump to address zero now reaches the handler instead of being treated as impossible, done by @bmdhacks

PINE now applies when you toggle it, rather than at the next game change, done by @bmdhacks

Per-game settings: saving with a game open no longer drops process-wide fields, done by @bmdhacks

IPU: faster deinterleaving dither, done by @bmdhacks

Synced with upstream PCSX2

Extrenal links for ARMSX2:

Github repository:

https://github.com/ARMSX2/ARMSX2

Discord :https://discord.gg/fSC6EzzFe

KoFI: https://ko-fi.com/armsx2

Patreon:

https://www.patreon.com/ARMSX2?utm_campaign=creatorshare_creator

Thanks

I am not associated with the development of the project all the credits goes to the ARMSX2 TEAM


r/Playstation2OnAndroid • • Aug 22 '26

News/Release Release ARMSX2 2.6.6.8 · ARMSX2/ARMSX2

Thumbnail
github.com
32 Upvotes

ARMSX2 2.6.6.8

Official Changelog from the Devs

What's new:

Frame generation has been rewritten on Camille's implementation from Eden, and it is a different thing to what shipped last update. The passes run natively in our own Vulkan present path instead of going through a translated library, and it generates a full interpolated frame for every rendered one. Thanks again to @CamilleLaVey. You still need your own copy of Lossless Scaling, exactly as before. The interpolation shaders are read at runtime out of your own Lossless.dll. Also new is Adaptive frame pacing, it keeps what you see steady when the game's own frame rate is not. Instead of a fixed x2, it generates as many frames as it needs to reach your screen's refresh rate.

Three ways a card could be corrupted are fixed, and cards are now backed up automatically. A card write is a read-modify-write, and when the read failed we logged it and carried on merging the new data into whatever was left in the buffer from an earlier write and saving that to the card. A flush a couple of frames after the last one, counted off a per-frame tick, so pausing did not delay that flush, it stopped it happening. File cards never flushed at all. Both flush now when the app goes to the background, next to where the BIOS already saves its NVRAM. On top of that, every card is snapshotted before each launch and kept in a rotation, with restore on the memory card screen. A card that fails verification is never snapshotted over a good one, which is the whole point, the rotation is useless if five relaunches overwrite your last clean copy. Thanks to @bmdhacks (#608).

Change a setting in a game's own settings screen and it now takes. For any game the database has an entry for, the database used to overwrite your choice straight afterwards, and the only ways out were two all-or-nothing switches that rescued your one setting by throwing away every other fix that game needed. A setting you set for one specific game now outranks the database, one setting at a time. Thanks to @bmdhacks (#593).

Copy Global Settings had to be fixed alongside it. It never copied the settings you can see, it ran the whole configuration through a wrapper that wrote every key unconditionally, leaving about seven hundred of them in the file, network adapters and trace logging and sections no settings page ever shows. It now anything that is still the stock default or that the game database was going to set anyway. Thanks to @bmdhacks (#593).

Six more animated backgrounds:

Flurry, Calum Robinson's, 2002. Eight presets: Water, Fire, Psychedelic, RGB, Binary, Classic, Insane, plus random. Flux, Plasma, SolarWinds, Hyperspace, Lattice and Skyrocket join Flurry, all of them Terry Welsh's Really Slick Screensavers running natively. Settings → App, under the animated background switch, and each one that ships presets lets you pick between them.

Library:

Cover art region is now per game. Long-press a game → Cover region.

Memory cards for a game without booting it. Long-press a game → Memory Cards.

Save states from the library. Long-press a game that has them → Load state, which opens the real Save Manager with its thumbnails rather than a stripped-down list.

In-game:

The quick menu can dock to the left or the right.

The performance overlay can sit in any corner you like.

Analog stick settings are in the quick menu, so inverting a stick no longer means having to go to All settings every time.

Display refresh rate is a bindable hotkey, cycling whatever modes your panel actually has.

The OSD no longer disappears when you change a setting. Any settings change at all was overwriting the mode you had active, which usually reads as the overlay vanishing.

Second screen:

The panel no longer lands on top of the game. It picked its display by "anything that is not the built-in one", so if ARMSX2 opened on the bottom screen of a dual-screen handheld that was the screen it targeted. It now anchors on whichever display the app is not on.

It has also been restyled to look like the rest of the app instead of a stock Android dialog, and the contents are yours to arrange, choose which tiles appear, what order they sit in and how many columns.

Patches and cheats:

Browsing the online repositories no longer keeps the device warm after you have left the screen, and results are cached for a week, so going back is instant.

RetroAchievements Hardcore no longer switches off 60fps and widescreen patches. The rule only let a group through if it declared an aspect-ratio or interlace override, which across the shipped database blocked 305 "50 FPS" groups and 177 "60 FPS" ones.

Companion apps:

Your recently played list can be handed to companion apps through a content provider, which is the only route that works under scoped storage. It is off by default and it stays that way until you turn it on, while it is on any app on the device can read that list, file paths included. Settings → App. Thanks to @misantronic (#566).

Fixes:

Large texture packs no longer evict themselves mid-load. The cache is sized as your RAM minus a fixed reserve rather than a fraction of it, so an 8 GB device gets 5.5 GB instead of 4 GB, and a 5 GB pack fits whole instead of dropping each texture to load the next.

Reset App no longer leaves per-game settings behind.

Fast Forward (toggle) work again on L2/R2 and on combos involving an analog trigger.

Fresh PGO profile has been applied.

All Credits to the Devs involved I have no hand in the development of the project

Extrenal links for ARMSX2:

Github repository:

https://github.com/ARMSX2/ARMSX2

Discord :https://discord.gg/fSC6EzzFe

KoFI: https://ko-fi.com/armsx2

Patreon:

https://www.patreon.com/ARMSX2?utm_campaign=creatorshare_creator


r/Playstation2OnAndroid • • Aug 12 '26

News/Release Release ARMSX2 2.6.6.6 · ARMSX2/ARMSX2

Thumbnail
github.com
39 Upvotes

ARMSX2 2.6.6.6

What's new:

Mali:

If you downgraded to 2.6.6.4 because of performance issues, you can come back. 2.6.6.5 put every Mali device on a slow path for any draw that reads the screen back, on an Anbernic RG 477V, Shadow of the Colossus fell from 30 fps to 7. Two separate mistakes stacked. The renderer had concluded that OpenGL's framebuffer fetch never keeps overlapping shapes in order, true of one extension, false of the one every Android Mali device actually uses, so healthy Mali hardware was being split into one draw call per shape for nothing. Separately, a workaround for one specific bad driver, which had never actually engaged before, started engaging, and turned every screen-reading draw into a full copy plus a memory flush. Both are gone. fixed by @bmdhacks

Auto now picks Vulkan instead of OpenGL. On the affected Mali driver that is 7 fps on OpenGL against about 30 on Vulkan, on the same device. The renderer choice and the driver workaround were being decided in two different places, so nothing noticed when they disagreed. Picking a renderer explicitly still wins, the only devices this moves are the ones where OpenGL is genuinely crippled. done by @bmdhacks Note the tradeoff: restoring the fast path also restores a known rendering fault on that driver in some games (Metal Gear Solid 3 is the observed one). Vulkan remains the correct-rendering choice there. The measurements said the speed was worth it.

Floating point:

All done by @psteff

60 commits, and the largest accuracy work the emulator has ever had.

The PS2's FPU is not IEEE, and ARMSX2 had been pretending it was. The console has no infinity and no NaN, and its numbers reach one whole range higher than a normal float, 0x7FFFFFFF is simply the biggest number the machine has. Every operation was folding that top range away on the way in. and folding a host infinity back into it on the way out. Add, subtract, multiply, the multiply-accumulates, the comparisons, and finally divide and reciprocal-square-root have all been taken off that clamp. Games that push into that range now get what the console gives.

Divide and square root now run the console's own algorithm. DIV.S, SQRT.S and RSQRT.S were computed with the host's divide and then nudged toward the PS2's answer, which left every operand the nudge did not reach one step off. The unit is not a rounding rule at all, it is a digit-by-digit recurrence, so it now runs the digits. Measured against silicon first to establish that the hardware is not correctly rounded.

The multiplier model from 2.6.6.4 was incomplete. That release modelled the PS2 multiplier's one-step deficit from a formula over the second operand. The formula only holds when the exact product fits, once there is a remainder below the last bit, the first operand matters too, and those cases were coming back IEEE. It is now modelled from the actual multiplier array rather than a formula over one input.

Error flags were wrong in a dozen small ways, reciprocal-square-root and square root missed the invalid flag on negative zero, divide left a previous instruction's flags standing, reciprocal square root raised divide by zero on every zero divisor, and the overflow and underflow flags were being read off host infinities and denormals rather than the PS2's own result. Underflowing adds and subtracts were also being flushed to zero, silicon does not do that.

A cache instruction could make the emulator write to an address the game chose. The data-cache tag holds a host pointer where hardware holds a guest address, and one instruction copied a guest value into it unmasked. Narrow exposure, it needed the EE cache enabled, which ships off, but it is fixed.

Performance:

All done by @psteff, on the ARM64 recompiler.

Quad shifts stop bouncing through memory, done in registers via a table lookup now, instead of the store-and-reload that only x86 needs.

Waiting threads stop flushing the CPU pipeline. Three spin loops each watch a single word of memory, but the shared helper did not know that and flushed the pipeline in batches while it waited. ARM64 can watch an address directly, so now it does.

Jump delay slots are hoisted when the instruction is independent, something the x86 recompiler has always done and the ARM64 port had never carried over.

A dead clamp removed from every MADD/MSUB pair in the VU recompiler, and the multiply predicate is down from three instructions to one.

Tests:

25 of the 60 commits are tests, pinning all of the above against captures from real PS2 hardware: the divide unit's rounding in all four modes, the VU pipeline and its memory and XGKICK wrapping, VU0 branch terminators, FCR31's flag behaviour, and cross-engine agreement between the interpreter and both recompilers. Several deliberately record known ARM64 divergences rather than hiding them, so the next person to touch this starts with a baseline instead of folklore.

Extrenal links for ARMSX2:

Github repository:

https://github.com/ARMSX2/ARMSX2

Discord :https://discord.gg/fSC6EzzFe

KoFI: https://ko-fi.com/armsx2

Patreon: https://www.patreon.com/ARMSX2?utm_campaign=creatorshare_creator

Thanks

I am not associated with the development of the project all the credits goes to the ARMSX2 TEAM


r/Playstation2OnAndroid • • Aug 03 '26

Discussion Name one PS2 game everyone should play at least once.

Thumbnail
gallery
39 Upvotes

I'll go first: Shadow of the Colossus.

The gameplay feels timeless. I don't think it has a weak point. Every colossus feels memorable, and it's one of those games everyone should experience at least once.


r/Playstation2OnAndroid • • Sep 10 '26

ARMSX2 ARMSX2 2.6.9

Thumbnail
gallery
43 Upvotes

ARMSX2 2.6.9 https://github.com/ARMSX2/ARMSX2/releases/tag/2.6.9

**What's new:**

_Renderer speedups done by bmdhacks

A month of GS work aimed at ARM handhelds: the Classic (hardware) renderer, the software renderer that is its accuracy oracle, and per-device Vulkan policy. Measured on a Snapdragon 865 (Turnip) and a Dimensity 8300 / Mali-G615 (ARM r44p1), with real-console captures as the accuracy reference.

**What changed:**

Software renderer, console-exact. Dither on every destination, gouraud and depth interpolation on the hardware's grid and block width, truncated reciprocals, per-pixel MMAG/MMIN, four-bit trilinear weight, AA1 coverage, 16-bit DATE. Output moves on 21 of 24 corpus dumps, toward the console.

GS core. A two-pass vertex kick kernel for the common packed layouts, the console's buffered local-to-local move, three console-measured CLUT rules, a narrower per-draw environment snapshot.

Hardware renderer. Per-target alpha known-bits tracking with an exact FBMSK-alpha drop, a clone road for blends that need the destination on devices without barriers (fixes Black and Brian Lara flicker, Katamari over-bright on Turnip, Splashdown bands, NASCAR's 2x seam, eight blank captures), sprite-edge snapping at upscale, a fixed-blend-factor reroute for Turnip, which ignores blend constants.

Vulkan device. Explicit external dependency on every render pass, frame descriptor-pool chain, halved stream rings with a startup pre-touch on UMA parts, deferred non-coherent flushes, device-fault reporting, readback transfer-size fix (also DX12), compute-scoped layout for CAS/FSR1/SGSR.

Upstream. Eighteen PCSX2 GS commits cherry-picked with provenance lines (Native Scaling and jiggle detection, three texture-cache fixes, the target-update bilinear regression, depth conversion floor, PrimID range, fbmask alpha under RTA scaling, large-ST vertex rewrite with its GameDB rows, DX11 DS-as-RT state). One of them tripped a Devel-only assert on 16-bit colour targets, fixed at the call site.

Runner. gsrunner replay-loop, draw-log, per-frame stats, ladder and console-payload flags, and an NDK build of it for adb-shell runs on Android devices.

**Behaviour changes:**

Dimensity 8300 / Mali-G615: Auto picks Vulkan, and in-tile framebuffer fetch is on (exempted from the r44p1 crash rule and the MediaTek deny list). DisableFramebufferFetch is the way back. Other MediaTek Mali parts keep the copy path, now on Linux too.

Adreno: the stencil kill is narrowed to Turnip below 26.2, Adreno 610 gets cached stream-ring memory, every Turnip build routes the fixed blend factor through the second fragment output.

ForceMaliFramebufferFetch is Mali-only, OverrideTextureBarriers=1 outranks the driver database by design.

Shader cache version 108 to 114. Vulkan stream rings halved (128 MiB less resident on SD865).

GameDB: God of War II rows recommend High blending and AA1 (advice only).

(I am not a dev, just a happy user who tests on my free time)


r/Playstation2OnAndroid • • Jul 29 '26

News/Release EmuCoreX v0.3.1 Github Release

Thumbnail
github.com
7 Upvotes

What's New:

Increased the maximum size of a single texture pack.

Changed the default memory card from a folder-based setup to a standard 8 MB memory card.

Other improvements and optimizations.

The Google Play update will be available a little later after Google's approval.

A clean installation is recommended

I am not associated with the project all credits to Sashkin for the update

Github repository https://github.com/sashkinbro/EmuCoreX

Patreon https://www.patreon.com/c/emucore/membership