jpolo1224 d65a603547 Remove the Xillia 2 hang instrumentation
Seven detectors over as many reproductions, none of which caught it. The
final one settles why: with cia sampled once a second, the guest threads are
found at a DIFFERENT address every time -- 0x011f63ac, 0x00278268, 0x008ac3a4,
0x0141512c -- so the best repeat count never exceeded 1.

The thread is not parked anywhere. It executes a great deal of varied guest
code at over 100% of a core while making no progress, consistent with
sys_ppu_thread_yield at ~100 million. A busy-wait that does real work each
iteration cannot be found by watching for something to stop, which is what
every one of these tried, in a different place each time.

What was learned and is worth keeping is recorded in the commits: frames keep
flipping throughout (so no frame-based check can see it), lock traffic never
ramps up because the hang precedes any workload, rsx::thread spins in
NV406E_SEMAPHORE_ACQUIRE, and PPU[0x1000000] burns 4.36s of CPU per 4s of wall
clock. The next attempt should start from a guest-side breakpoint or an
instruction trace, not from another liveness heuristic.

The structural fixes found along the way stay: on_frame_end no longer counts
forced frames as guest progress, and check_frame_stall dumps guest threads
rather than only reporting. Both are correct independently of this hunt.
2026-08-24 15:57:34 -04:00
2026-08-16 09:57:33 +02:00
2026-08-24 15:37:35 -04:00
2026-06-14 16:05:41 +02:00
2024-12-28 19:58:59 +01:00
2024-11-16 15:10:20 +01:00
2025-11-02 14:22:11 +02:00
2026-08-18 16:30:45 -04:00
2026-06-21 16:37:09 +02:00

ARMSX3

Uses the latest RPCS3 upstream code (the recent ARM64 improvements included).

Building

arm64-v8a and armv8.2 is supported. You need the Android SDK with NDK r27 or newer, CMake 3.30 or newer, and a JDK 17. Android Studio ships all of these.

Clone with submodules, then fetch the two third party checkouts that are not submodules:

git clone --recursive https://github.com/ARMSX2/ARMSX3.git
cd ARMSX3
git clone https://github.com/SnowflakePowered/librashader 3rdparty/librashader
git clone https://github.com/bylaws/libadrenotools android/armsx3-ui/app/src/main/cpp/libadrenotools

Build the core. This is the long part and produces an unstripped library of around 1.3 GB:

export ANDROID_HOME=$HOME/Library/Android/sdk
cmake -B build-android -G Ninja \
  -DCMAKE_TOOLCHAIN_FILE=$ANDROID_HOME/ndk/<version>/build/cmake/android.toolchain.cmake \
  -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-31 \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build-android --target rpcsx-android -j8

Strip it and put it where the app expects it:

llvm-strip --strip-unneeded build-android/android/libarmsx3-core.so
cp build-android/android/libarmsx3-core.so \
   android/armsx3-ui/app/src/main/jniLibs/arm64-v8a/

Then build the app:

cd android/armsx3-ui
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
./gradlew :app:assembleRelease

The apk lands in app/build/outputs/apk/release/.

Note that the core library has to be rebuilt and copied again whenever anything under rpcs3/ or android/src/ changes. Gradle does not build it for you.

The Discord Social SDK is proprietary and is not redistributed here. Get it from Discord's developer portal and drop it in app/libs/ and app/src/main/cpp/discord_sdk/ if you want that feature. The build skips it otherwise.

Running it needs PS3 firmware, which is not included. License

GPL-2.0-only, the same as RPCS3. See LICENSE. Some files may be licensed differently, check the file headers.

Based on RPCS3, https://github.com/RPCS3/rpcs3

S
Description
No description provided
Readme GPL-2.0
154 MiB
Languages
C++ 77.3%
Kotlin 13.4%
C 7.2%
Self 0.7%
GLSL 0.5%
Other 0.9%