Open-source ARM64 emulator for Android with a Vulkan renderer, per-game profiles, live cheats, dual-screen controls and reproducible performance diagnostics.
Features | Build | Live cheats | App identity and data | Performance | Testing | Roadmap | Based on Eden | Community | License
OpenSw targets generic Android ARM64 hardware. AYN Thor support is an optional, reversible profile, not a requirement and not a device-wide overclock. OpenSw does not include games, encryption keys or firmware; users must provide content they are legally entitled to use.
- A self-contained Android emulator with dedicated Release and Profile builds.
Standard,60 Optiand experimentalMaxperformance profiles, selecting four, six or eight Vulkan pipeline workers.- Shared asynchronous presentation, optimised vertex buffers, asynchronous GPU/shaders and ADPF scheduling with a capability-based topology fallback; no device clock changes.
- A global default with optional per-Title-ID overrides that never rewrite game configuration files.
- A release-like, locally signed and profileable APK for repeatable AYN Thor measurements.
- An optional read-only legacy import assistant for keys, firmware, profiles, saves, settings, mods and cheats.
- An in-game cheat overlay with controller and touch navigation.
- A shared Performance Lab with rolling p95 frametime, memory, power, thermal warnings and versioned native diagnostics that are explicitly excluded from A/B promotion decisions.
- Reproducible
opensw-performance-v2tooling that derives frame evidence from raw SurfaceFlinger timestamps and uses validated Perfetto/native data for attribution, rather than sampled UI averages. - An automatic cockpit on the Thor secondary display with an in-game drawer fallback.
- Sanitised diagnostic bundles without keys, saves, firmware, game paths or game content.
- Build-ID-aware cheat import from text files, Atmosphere/Eden trees and ZIP archives.
- Optional cheat catalogues backed by
switch-cheats-dbandNX-60FPS-RES-GFX-Cheats. - Perfetto capture tooling and a documented AYN Thor performance baseline.
- A dedicated OpenSw build, update and publication configuration.
The maintained Android targets build as openSwRelease and openSwProfile. The normal installable
application is com.remipelloux.opensw; Profile is an isolated measurement variant and is not the
public runtime package.
The normal application exposes three performance profiles. All three enable asynchronous
presentation, optimised vertex buffers, asynchronous GPU/shaders and hybrid ADPF scheduling;
Standard, 60 Opti and Max select four, six and eight Vulkan pipeline workers respectively.
These are real configuration changes, but no profile is described as faster without repeatable A/B
evidence at identical rendering quality.
Repeated-session shutdown now rejects callbacks from older native generations and has focused fixes for cheat callbacks, audio streams, emulated backing memory, page tables, process trackers, guest service-thread references and Vulkan presentation teardown. Six Foretales launch/pause/resume/capture/stop/restart cycles completed on the Thor without crash, ANR, mixed Title ID or continuous RSS growth after settling. The 30-cycle acceptance run, physical rotation coverage and the 45-60 minute Arceus session remain required before release certification.
The Profile build preserves 17 compatible JNI counters and appends per-draw Vulkan diagnostics, including presentation queue depth and time spent waiting for a free frame, the scheduler, swapchain acquisition and presentation. Release builds hide those counters while retaining the compact Direct view on the Thor secondary display.
OpenSw includes Eden upstream through c0ffc900cd. Its multithreading/ADPF refactor is integrated
with OpenSw's existing Vulkan diagnostics. Every profile uses ADPF hints with a topology fallback;
Standard, 60 Opti and Max differ by Vulkan pipeline worker count. ADPF receives render
work duration without speed-limiter sleep or long pause gaps; no FPS or thermal gain is claimed until
repeatable device A/B measurements pass the documented gates.
Vulkan direct draws now emulate Maxwell LineLoop with a line strip and an explicit closing index,
instead of incorrectly treating the vertices as triangles. The implementation and audited fallback
behavior are documented in Vulkan rendering compatibility.
OpenSw does not currently publish GitHub Release binaries. Build the normal generic ARM64 APK with the documented Android SDK, NDK and JDK versions:
cd src/android
./gradlew :app:assembleOpenSwReleaseThe APK is written to
src/android/app/build/outputs/apk/openSw/release/app-openSw-release.apk. Installing it with
adb install -r updates com.remipelloux.opensw in place when the signing certificate matches.
Never uninstall or clear the package when the intent is to preserve saves and configuration.
Open the in-game menu and select Cheats to enable or disable compatible codes without restarting the emulator. The panel shows the current Title ID and Build ID, supports search and active-only filtering, and keeps the game running behind it.
OpenSw loads cheats only when their 16-character Build ID exactly matches the game's main NSO. The Mastercode is enabled and locked automatically; ordinary cheats default to off. State is stored by Title ID, Build ID and opcode fingerprint, so changed remote codes do not inherit an old enabled state. Disabling a cheat stops future executions but cannot undo memory writes that already occurred; some codes can therefore still require a game restart.
Catalogue installation is explicit and never silently replaces a locally modified file. Imports are validated, size-limited, protected against ZIP path traversal and installed atomically with backups.
OpenSw uses com.remipelloux.opensw; debug builds use com.remipelloux.opensw.debug. Neither
variant shares private app data with another application.
The OpenSw profiles affect only OpenSw. No profile changes Android, CPU/GPU frequencies, unsafe
memory settings or data owned by another application. The three profiles share the same renderer
and scheduling features and differ only by Vulkan pipeline worker count. Legacy Balanced
selections migrate to Standard.
The optional legacy migration flow uses Android's document picker and a user-granted read-only source. It stages and verifies copied files before installing them into OpenSw; game files, caches, logs and temporary data are not copied.
Build the installable Release and the locally signed profiling APK from src/android:
./gradlew :app:assembleOpenSwRelease :app:assembleOpenSwProfileThe APKs are produced under src/android/app/build/outputs/apk/openSw/release and
src/android/app/build/outputs/apk/openSw/profile.
Build and archive the generic, ARMv9, ThinLTO and ARMv9 + ThinLTO measurement APKs with:
tools/performance/build-opensw-matrix.shSee the OpenSw handbook and OPENSW.md for product, package and device-testing rules. Performance acceptance and the fixed AYN Thor scenarios are in docs/performance/ayn-thor-baseline.md.
Session lifetime findings, valid measurements and rejected measurements are recorded in docs/opensw/SessionStability.md.
The current Thor evidence, APK hashes and remaining user validation are recorded in the AYN Thor audit and performance roadmap.
The current device baseline covers an AYN Thor with Snapdragon 8 Gen 2 and Adreno 740. Performance changes are promoted only after repeatable A/B measurements; risky compiler flags and Android clock changes are intentionally excluded.
The ordered engineering roadmap and its acceptance gates are maintained in docs/opensw/Roadmap.md, with campaign status in docs/performance/roadmap.md. Stability and deterministic device automation come before new performance flags or additional UI features. The immediate gates are a fresh five-run 1x baseline for the 4/6/8-worker profiles, valid named thermal/KGSL capture, the 30-cycle lifecycle test with physical rotation and a 45-60 minute Arceus session.
OpenSw is based on Eden and retains the Eden/yuzu source history, copyrights and GPL notices. It is not affiliated with or supported by the upstream Eden Emulator Project.
Unverified desktop guides are retained as clearly labelled upstream documentation under docs. OpenSw-specific documentation lives under docs/opensw.
Nintendo Switch is a trademark of Nintendo. OpenSw is an independent open-source project and is not affiliated with, endorsed by or supported by Nintendo or the Eden Emulator Project.
- Read the documentation index and OpenSw handbook.
- Report reproducible defects with the GitHub issue template.
- Discuss usage and proposals in GitHub Discussions.
- Review CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md and CHANGELOG.md.
OpenSw remains licensed under GPLv3 (or any later version). Refer to LICENSE.txt.