Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28,923 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

OpenSw Android emulator logo

OpenSw Android Nintendo Switch Emulator

Open-source ARM64 emulator for Android with a Vulkan renderer, per-game profiles, live cheats, dual-screen controls and reproducible performance diagnostics.

License: GPL-3.0-or-later Platform: Android ARM64 Renderer: Vulkan

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.

Features

  • A self-contained Android emulator with dedicated Release and Profile builds.
  • Standard, 60 Opti and experimental Max performance 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-v2 tooling 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-db and NX-60FPS-RES-GFX-Cheats.
  • Perfetto capture tooling and a documented AYN Thor performance baseline.
  • A dedicated OpenSw build, update and publication configuration.

Current status

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.

Build from source

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:assembleOpenSwRelease

The 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.

Live cheats

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.

App identity and data

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.

Performance development

Build the installable Release and the locally signed profiling APK from src/android:

./gradlew :app:assembleOpenSwRelease :app:assembleOpenSwProfile

The 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.sh

Testing

See 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.

Roadmap

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.

Based on Eden

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.

Community and project policy

License

OpenSw remains licensed under GPLv3 (or any later version). Refer to LICENSE.txt.

About

Open-source Android ARM64 Nintendo Switch emulator with Vulkan rendering, per-game profiles, live cheats and AYN Thor performance tooling.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages