The Legend of Zelda: Ocarina of Time · Shipwright Android
The Legend of Zelda: Ocarina of Time
OriginGameCube / Nintendo 64
TechnologyNative C/C++ port (engine reimplementation)
Available forAndroid
View official projectAbout the project
The Legend of Zelda: Ocarina of Time es un videojuego de acción-aventura de 1998 desarrollado por la filial Nintendo EAD y publicado por Nintendo para la consola Nintendo 64. Fue lanzado en Japón el 21 de noviembre de 1998, mientras que a Norteamérica llegó dos días después, el 23 de noviembre, y en Europa se estrenó el 11 de diciembre de ese mismo año. Para el caso de Sudamérica, fue presentado en Chile el 23 de noviembre de 1998 en un evento especial para periodistas.
12 versions of The Legend of Zelda: Ocarina of Time
You're viewing: Shipwright Android
Shipwright Androidgithub.com/please-be-nice/Shipwright-android
Ocarina of Time (GameCube) Decompilationgithub.com/zeldaret/oot-gc
Ocarina of Time (PC, ray traced)github.com/JonB-Dev/oot-recompiled
The Legend of Zelda: Ocarina of Timegithub.com/zeldaret/oot
oot vr · Android (gibranfelix)github.com/gibranfelix/oot-vr
Ship of Harkiniangithub.com/HarbourMasters/Shipwright
Ship of Harkinian (Android)github.com/linkzenic/Shipwright-Android
Ship of Harkinian (PS4)github.com/alechurri/shipofharkinian-ps4
Shipwright Android (Outdated)github.com/Waterdish/Shipwright-Android
The Legend of Zelda: Ocarina of Time (oot-dc)github.com/jnmartin84/oot-dc
The Legend of Zelda: Ocarina of Time (Wii Virtual Console)github.com/zeldaret/oot-vcOfficial project information

A port of Ship of Harkinian for Android.
Website
Official Website: https://www.shipofharkinian.com/
Discord
Official Discord: https://discord.com/invite/shipofharkinian
If you're having any trouble after reading through this README, feel free to ask for help in the Support text channels. Please keep in mind that we do not condone piracy.
Quick Start
The Ship does not include any copyrighted assets. You are required to provide a supported copy of the game.
1. Verify your ROM dump
You can verify you have dumped a supported copy of the game by using the compatibility checker at https://ship.equipment/. If you'd prefer to manually validate your ROM dump, you can cross-reference its sha1 hash with the hashes here.
2. Install the APK
Download and install the APK from the Releases page.
3. Set up the game
-
Open the app and allow all file permissions. It will ask to set up files, let it finish.
-
When prompted, select "Yes" to generate an OTR and "Yes" to look for a ROM. Navigate to your ROM and select it. Extraction will begin.
-
When asked whether to extract another ROM, select "Yes" if you have a Master Quest ROM or "No" to start the game.
-
On subsequent launches the game starts directly. To get the ROM selection dialog back, delete the
.otrfiles in theSOHfolder at the root of your device storage.
Use the Back/Select/- button on your controller to open the Enhancements menu. Use touch controls or a controller to navigate menus.
4. Play!
Congratulations, you are now sailing with the Ship of Harkinian! Have fun!
FAQ
Q: How do I add mods?
A: Place mod .otr and .o2r files in the SOH folder at the root of your device storage. Then enable them in the Enhancements menu under Mods.
Q: The game crashes immediately on launch.
A: Delete the SOH folder and let the app set up its files again. Be patient during black screens; extraction can take a minute.
Q: The game opened once but now shows a black screen.
A: Delete imgui.ini from your SOH folder. Also ensure MSAA is set to 1 in the graphics settings, as higher values cause a black screen on many devices.
Q: My controller's menu button isn't opening the Enhancements menu.
A: This is a known first-launch issue caused by Android's input device registration. Close and reopen the app; the controller will work correctly on the second launch.
Q: D-pad doesn't navigate the menu on first launch.
A: Same cause as above. Close and reopen the app after the initial ROM extraction completes.
Q: Touch overlay buttons aren't remappable in the controls editor.
A: Open the controls editor (Enhancements menu) and look for the "Touch Controls" section under the Link tab. Touch overlay buttons appear as "Touch Overlay" in the device list and can be remapped there.
Q: Rumble doesn't work with my Bluetooth controller.
A: External Bluetooth controller rumble is not currently supported. Rumble works via device vibration on handheld devices (e.g. Retroid Pocket). A fix for Bluetooth controller rumble is planned.
Known Bugs
- External Bluetooth controller rumble is not supported. Device vibration is used as a fallback.
- Touch overlay and physical controller button mappings share the same slot per port, so you cannot assign different actions to the same button on each.
Build
Build Tools
- Ubuntu Noble Numbat | 24.04.2 LTS
- CMake 3.31.5
- OpenJDK 17
- Android SDK 31
- Android NDK 26.0.10792818
- Android Gradle Plugin (AGP) 8.10.1
- Gradle 8.11.1
Build Instructions
Building requires Docker (or any OCI-compatible tool such as Podman) on a Linux environment. Windows users should use WSL2 and clone the repository to a native Linux path (e.g. ~/Shipwright) rather than a Windows-mounted path (e.g. /mnt/c/...), as NTFS mounts can cause build issues.
-
Clone the repository and submodules:
git clone https://github.com/please-be-nice/Shipwright-android.git cd Shipwright-android git submodule update --init --recursive -
Pull the build container:
cd docker make setupIf you prefer not to use the published image, you can build it locally from the included
Containerfileinstead:cd docker make create_container -
Build the APK:
make build_release
The resulting APK will be at Android/app/build/outputs/apk/release/.
make setup only needs to be run once. On subsequent builds, make build_release is all that's needed.