WinNative

ARMSX2 — vendored source

Packaging note (current): the emucore and its runtime data are no longer committed here. They are built in the WinNative-Emu fork and shipped in the Retro-Consoles bundle the app downloads at runtime. The build/patch details below describe how that fork produces the binary and remain accurate for the fork.

This module embeds the Android front-end of ARMSX2, a GPL-3.0 PlayStation 2 emulator (a fork of PCSX2) that brings PS2 emulation to ARM64.

Native emulator core

The core (libemucore_4k.so / libemucore_16k.so) is built from source by default during assembleDebug. build-emucore.sh fetches ARMSX2 at a pinned commit (a0bdcbe917bea686333c9683c28b2fca8ed1ed8d), applies the tracked patches under patches/, syncs shaderc’s third-party deps, and compiles both the 4K and 16K page-size variants with CMake + the NDK, stripped to release size. Fetched source (emucore-src/) and build outputs stay out of git; only the script and patches are tracked. The build reproduces the full JNI surface of kr/co/iefriends/pcsx2/NativeApp.java.

Pass -Parmsx2.buildNative=false to fall back to the prebuilt core under prebuilt/emucore/arm64-v8a (binaries built from the same pin as above), which is the opt-out safety net.

The supporting libraries under src/main/jniLibs/arm64-v8a (ANGLE, c++_shared, androidx.graphics.path) remain prebuilt — ANGLE in particular is a separate Google project, not part of this tree.

Notable upstream (2.6.3+)

Patches (patches/)

All upstream copyright and license headers are preserved. This module and the binaries it contains remain under GPL-3.0. WinNative as a whole is GPL-3.0, so this integration is license-compatible. Modifications made to adapt the code to WinNative’s build (toolchain, Application ownership, launch entry) are noted in the affected files.