English | Français | Português
Note
Purpose of this fork
This fork of mamcjr/BOTWRecompAndroid focuses on making Android builds easy to download and the application's menus accessible in more languages. Its current additions are:
- Automatic APK releases: every successful push to
mainbuilds a signed Android APK and publishes it as a prerelease on this fork's Releases page. - French menus: French translations for the launcher, settings, controls, Android dialogs and shortcuts, alongside the existing English and Portuguese menus. The app menus follow the game's Language setting; Auto follows the Android app language.
- Support for future translations: separate translation catalogs, Android string resources and CI checks make it easier to add more languages. See the translation guide.
- Android handheld testing: an updated Turnip driver restored steady 30 fps on the Odin 2 Portal in the tested BOTW 1.0.0 scene. See the measured settings and driver version.
- BOTW update 1.9.0 support (experimental): tested through the title screen, save loading and the open world
on the Odin 2 Portal. Its
v190installation keeps saves and settings separate from the older versions. Graphics and performance still need work; selecting 60 fps does not guarantee sustained 60 fps. - Handheld controls and startup: button remapping applies to the game and app menus; a translated loading screen covers game startup. Upstream widescreen support is integrated for 1.8.2 and experimental 1.9.0.
The recompilation engine and existing game support come from the upstream projects credited below. The menu translations described here concern the application interface; the game's text language has its own setting.
See Android CI releases for build and signing details.
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).
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.
- 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.
Import matching exefs and romfs folders from your own game dump with update 1.9.0 already applied.
The APK imports the extracted files; it does not apply an update to an XCI or NSP directly.
The version is detected automatically and stored in v190 under the selected game data storage, including an SD card.
Switch installed versions from Settings → Files. Each version has its own saves and settings;
when first created, a version folder can be seeded from 1.0.0's saves and settings without replacing existing ones.
Built-in controllers — AYN Thor, Odin 2 and Retroid: standard buttons, both sticks and triggers are expected to work through SDL3's Android gamepad support, provided the device is compatible with the APK. The Odin 2 Portal has been tested, including remapped confirm/back buttons in app menus; AYN Thor and Retroid remain untested. Open Settings → Controls to check detection and remap buttons for both the game and app menus. The default layout is Nintendo-style: A on the right, B at the bottom.
- Download the APK from Releases and install it (Android 11+,
ARM64 and Vulkan). You need your own extracted game folder containing
exefsandromfs. - 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.
- If you own the Expansion Pass, install its extracted DLC
romfsthrough Settings > DLC > Install DLC. To bring over saves, use Settings > Saves to import a ZIP or emulator save folder. - 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.
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.logBOTWRecompAndroid 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.
- 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.