English | Português
A native port of The Legend of Zelda: Tears of the Kingdom (Nintendo Switch, version 1.4.3) for Android, in beta. This is not emulation: the game's own ARM64 code runs directly on your phone's CPU, the Switch's system is replaced by the runtime, and its graphics (NVN) are translated to Vulkan.
It is built on the engine of LAS Recomp by peiikai (a recompilation of Link's Awakening), its Android port LASRecompAndroid and BOTWRecompAndroid, which this repository was forked from.
Formerly TOTKRecompAndroid: renamed once the game's code ran natively and the recompiled build left the app
(2026-10-30). The old repository address redirects here; the app keeps its Android id (com.totkrecompandroid), so
it updates over an installed copy with its saves.
Warning
Beta. On the phone (with the Turnip driver) a new game or a save plays through the prologue, the cave and the Great Sky Island; most of the map has not been played yet. With Video > Frame rate 60, a cool POCO F7 Ultra holds 60 fps in the prologue and 54-57 in the island's woods; over long sessions its heat brings that down to ~45. The plan and the state of each phase are in docs/TOTK-PORT.md (in Portuguese). Releases: Releases.
Android only (arm64, Vulkan). Windows, Linux or macOS may be used as development hosts with the Android SDK/NDK.
- The app (start screen, settings, touch controls, controllers, mods, Vulkan driver choice) comes from BOTWRecompAndroid and builds.
- 1.4.3 runs on Nintendo SDK 20.5.22, the line of BOTW 1.8.2's 20.5.6 (NVN 55): what the engine learned from BOTW 1.8.2 applies. The game's patches and much of what is known about it come from MacNativeGames, which runs this very build natively on Macs and iPhones.
- The game's code runs natively on the phone's CPU, so setting the game up only copies its files. The static
recompilation (228,238 functions from
mainand 40,516 from the SDK, in a 224 MBtotkgame.so) is kept for development (LARECOMP_NATIVE=0): walking in the cave it swung the frame time (sd 7.4 ms against 0.6 natively) and took hours to build on the phone, so the app no longer ships its builder. - On the phone (POCO F7 Ultra, the Turnip driver): the title screen, a new game and saves; the prologue, the cave (its walls and the cutscene backgrounds lit, as on the Switch) and the Great Sky Island, with the HUD, subtitles and voices. Water, the sea of clouds, and the grass and lighting (no more black squares) match the Switch. The world steps by real time, so frames above 16.7 ms never slow the game down. Character voices, music and ambience reach the mix. With Qualcomm's own driver it plays too, more slowly.
- Frame rate: Video > Frame rate has 30, Auto (prefers 60, cutscenes held at 30) and 60. The game's own dynamic resolution is off; the scene is 1600x896, scaled to the output (FSR 1, GSR, SMAA / FXAA).
- Video > Aspect ratio > Unlocked: the world and the menus fill a wide screen (the HUD stays in the middle 16:9).
- Not done yet: most of the map, sustained 60 fps on a hot phone, the HUD at the screen's edges in wide mode.
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 are included. You need your own legally obtained dump of Tears of the Kingdom with the 1.4.3
update applied (exefs and the romfs). Instructions on how to obtain it will not be provided.
With the Android SDK / NDK and your dump in Dump/0100F2C0115B6000/ (exefs/ and romfs/, or the RomFS image
romfs.bin; the folder is ignored by git), with Python and the lz4, capstone and unicorn packages
(tools/nsp_extract.py unpacks NSPs and their title keys for hactoolnet):
cd tools && python totk_dump.py # check the dump (modules, version, romfs)
cd android/totkrecompandroid && ./gradlew assembleDebug # the app
ROMFS_HOST=1 android/push_game.sh Dump/0100F2C0115B6000 # the game files onto the phone
# optional, development only - the recompiled game code (run it with LARECOMP_NATIVE=0):
# android/build_gamelib.sh Dump/0100F2C0115B6000/exefs # ~20 min on a PC, then push_game.sh again
android/run_boot.sh 120 # start the game, log to android/out/boot.logTOTKDroid 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). Its original README is kept in docs/las/.
- MacNativeGames (MIT), which runs Tears of the Kingdom 1.4.3 natively on Macs and iPhones: its verified 1.4.3 patch sites (the fixed resolution, the real-time frame step, the cloth and hair clock, the render size) and its findings (NVN's early-Z flag and block height rounding, depth reads and the D16 shadow compare, the visibility counter).
- valentderah/totk-pc-recomp (MIT), a Windows/Vulkan static
recompilation of Tears of the Kingdom 1.4.3: its attachment-less render pass sizing and scissor handling (interior
ambient light on cave rocks), 16-bit packed NVN format component ordering (
RGBA4/RGB5/RGB5A1/RGB565andBGR565/BGR5/BGR5A1/A1BGR5/BGRX8/BGRA8for terrain normal and blend maps),MapPhysicalMemorypreservation of already-mapped pages, and its documented 1.4.3 findings. - LASRecompAndroid, its Android port, and BOTWRecompAndroid (its README in docs/botw/): the app, the phone-side game code build, touch controls, mods, driver compatibility, the Portuguese menus, the Sheikah look and everything the engine learned from BOTW 1.8.2's SDK.
- PKMSVRecompAndroid (a sibling port of Pokémon Scarlet, not published): the version handling for a game with one version, the program id from the NPDM and the 16-byte exclusive pairs in the recompiler.
- Revivedx for SavageWindRecomp (MIT): the SDK 20 kernel fixes, setjmp, NVN 55.
- Nycolazs for LASRecomp-Android-Plus (MIT): Vulkan driver compatibility.
- The zeldaret/botw decompilation and open-ead/sead, for what is known about the engine TOTK grew from.
- 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 Tears of the Kingdom are trademarks of Nintendo. This project is not affiliated with or endorsed by Nintendo.