Skip to content

About

Static recompilation of The Legend of Zelda: Breath of the Wild (Switch 1.0.0 / 1.6.0 / 1.8.2) for Android - no game files included

Resources

Contributing

Stars

403 stars

Watchers

17 watching

Forks

Repository files navigation

BOTWRecompAndroid

English | Português

A port of The Legend of Zelda: Breath of the Wild (Nintendo Switch, versions 1.0.0, 1.6.0, 1.8.2 and 1.9.0) for Android. This is not Switch emulation: the game code can be recompiled into C for the phone or, in the experimental Native Mode, run directly on its ARM64 CPU. The game's graphics API (NVN) is translated to Vulkan.

It is built on the engine of LAS Recomp by peiikai (a recompilation of Link's Awakening) and its Android port, LASRecompAndroid.

Warning

Beta. Tested primarily on one phone (POCO F7 Ultra, Adreno 830, Mesa Turnip driver). Performance and compatibility vary by device; expect bugs, especially on GPUs that have not been tested on physical hardware. See the 0.2.3-beta release notes and the development notes (in Portuguese).

Supported platform

Android is the only application target. Desktop ports and packaging were discontinued on 2026-10-22. Windows, Linux or macOS may still be used as development hosts with the Android SDK/NDK.

Status

  • Playable from the title screen into the world, with saves, on the tested POCO F7 Ultra. All four listed game versions are supported in Recompiled Mode. Native Mode has been tested with 1.0.0 and 1.9.0; 1.6.0 and 1.8.2 still need testing in that mode.
  • Game code: choose Recompiled Mode (build the code once on the phone) or experimental Native Mode (skip that build). You can switch a Recompiled setup to Native Mode later.
  • Game files: copy the extracted files into app storage or, since 0.2.3-beta, use them in place without an additional copy of about 16 GB. In-place use requires Android all-files access and the source folder must remain available.
  • DLC, saves and mods: install your own extracted Expansion Pass data; import and export saves as ZIP or import an emulator save folder; use mods, including mods that add files and DLC mod folders. In-place mod use needs more testing.
  • Video and controls: optional 60 fps on supported game versions and experimental 60 fps in-engine cutscenes, unlocked aspect ratio, internal/output resolution, FSR 1 or Snapdragon GSR 1 upscaling, FXAA/SMAA, touch controls, physical controllers and gyro. The app offers a Vulkan driver selector and compatibility settings.
  • 0.2.3 fixes: dark dots and lines on grassy ground, smoke spikes on hits, partial GAME OVER text, white water with Sync lag enabled before loading, several unlocked aspect-ratio UI issues, and some crashes. The Mali shared memory fix has not yet been confirmed on a physical Mali device.
  • Known issues: short grass appears only up close; water reflections can move with the camera; the pause menu background can be black on Qualcomm's stock driver; Link may flicker on the first hit in Native Mode. After a Sheikah Tower activation, terrain may stretch into vertical "curtains"; reload a save made after activation.

Important

Like LAS Recomp, this project is made almost entirely with AI (Claude, by Anthropic, through Claude Code), directed, tested and reviewed by a human.

Note

No game files or DLC are included. You need your own legally obtained, extracted game files (exefs and romfs). The app does not open NSP/XCI files or use prod.keys. Instructions on obtaining game files are not provided.

Installing (beta)

  1. Download the APK from Releases and install it (Android 11+, ARM64 and Vulkan). You need your own extracted game folder containing exefs and romfs.
  2. In Game Files, choose Game code: Native (experimental) skips the on-phone code build; Recompiled builds it once. Under Game files, choose Copy them or Use them in place, then select the extracted folder. In-place use asks for Android all-files access; keep that folder where it is. Copying needs roughly 16 GB more storage for the game data, while Recompiled Mode also needs space for generated code.
  3. If you own the Expansion Pass, install its extracted DLC romfs through Settings > DLC > Install DLC. To bring over saves, use Settings > Saves to import a ZIP or emulator save folder.
  4. On Adreno phones, a Mesa Turnip driver can perform better than the system driver. Select it under Settings > Files > Vulkan driver. If the app reports that the Vulkan driver is too old at startup, long-press the app icon and choose Choose driver before launching the game.

Updating from 0.2.x to 0.2.3-beta does not require rebuilding game code. Shaders compile again once, so the first minutes may stutter. To report a problem, open an issue with your phone, GPU, driver, game version and a log from Settings > Files > Save a log file.

Testing on Android (developers)

With the Android SDK / NDK, a phone on adb and your dump in Dump/:

cd android/botwrecompandroid && ./gradlew assembleDebug    # the app
android/build_gamelib.sh Dump/01007EF00011E000/exefs  # the game code (about an hour)
android/push_game.sh Dump/01007EF00011E000           # game files and game code onto the phone
android/run_boot.sh 120                               # start the game, log to android/out/boot.log

Support the project

BOTWRecompAndroid is a free, independent project. If you enjoy it and would like to support its development, you can sponsor me on GitHub. Your support helps me dedicate time to fixing bugs, improving performance and compatibility, and working on future releases. Sponsorship is entirely optional: it does not unlock features or guarantee specific fixes. Bug reports, device tests, and contributions are also greatly appreciated.

Sponsor on GitHub

Credits

  • peiikai for LAS Recomp, the recompiler and runtime this project starts from (MIT, see LICENSE). The original README is kept in docs/las/.
  • LASRecompAndroid, its Android port: the app, the phone-side game code build, touch controls, mods, driver compatibility and the Portuguese menus.
  • Revivedx for SavageWindRecomp (MIT), the reference for 1.8.2: frame pacing, internal resolution, the SDK 20 kernel fixes, setjmp.
  • Nycolazs for LASRecomp-Android-Plus (MIT): Vulkan driver compatibility.
  • ly05010419 for MacNativeGames (MIT), whose fixes and notes for BOTW and TOTK pointed the way for several here: the sync lag (its PR #680), GPU results the CPU reads back (PR #239), the terrain's height map texture (PR #511), texture layout, and the gyroscope's drift; and for showing that the game's own ARM64 code can run directly (Native game code).
  • OJZen for totk-mobile, and jhaizhou-ops for d2r-mobile, the core it builds on: what the native mode rewrites in the game's code (svc, the thread registers, the counter) and how - the idea behind ours (no code taken).
  • The zeldaret/botw decompilation and open-ead/sead, for what is known about the game's code.
  • Dusklight's launcher, the start screen's style.
  • Upscaling and anti-aliasing: AMD FidelityFX FSR 1 (MIT), Qualcomm Snapdragon GSR (BSD-3-Clause), SMAA (MIT).
  • Libraries: SDL (zlib), Dear ImGui (MIT), libadrenotools (BSD-2-Clause), volk (MIT), Vulkan Memory Allocator (MIT), shaderc (Apache 2.0), FFmpeg (LGPL), LZ4 (BSD-2-Clause), Capstone (BSD-3-Clause), Unicorn (GPLv2, built from its source by android/deps/build_unicorn.sh), Python (PSF) and Zig (MIT) for the phone-side build.
  • Mesa's Turnip driver (MIT), which players load themselves.
  • Fonts: Baloo 2 (OFL), DejaVu Sans (Bitstream Vera license). The Android robot is reproduced or modified from work created and shared by Google (CC BY 3.0).
  • Made with Claude Code (Anthropic).

The Legend of Zelda and Breath of the Wild are trademarks of Nintendo. This project is not affiliated with or endorsed by Nintendo.

About

Static recompilation of The Legend of Zelda: Breath of the Wild (Switch 1.0.0 / 1.6.0 / 1.8.2) for Android - no game files included

Resources

Contributing

Stars

403 stars

Watchers

17 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages