Case study
Ship of Harkinian: a native Ocarina of Time port built on the decompilation
Builds Ocarina of Time as a native PC application from the OoT decompilation’s source, with libultraship standing in for the N64 libultra SDK and DirectX 11, OpenGL or Metal rendering. No game assets are shipped: they are converted from the user’s supported ROM into an .o2r archive, and the port adds save states, alternate and custom assets and other enhancements.
Requirements and limitations
- README presents Ship of Harkinian as built on libultraship and dependent on source from the OoT decompilation project; the soh/src tree carries that decomp-derived game code. The output is a modified native port (CMake project version 9.3.0) with added features, not a matching ROM build or a byte-for-byte reconstruction.
- Play requires a legally acquired, supported Ocarina of Time ROM; docs/supportedHashes.json lists 19 SHA-1 entries covering PAL, NTSC (US/JP), GameCube, Master Quest and debug variants. Copyrighted assets are not included and are converted from that ROM into oot.o2r or oot-mq.o2r; prebuilt releases still need the ROM.
- README documents Windows, Linux (AppImage) and macOS releases with DirectX 11, OpenGL or Metal; CMake also has Nintendo Switch and CafeOS (Wii U) branches. Source builds need CMake 3.26+, Python 3, Git and the libultraship and Torch submodules, plus Visual Studio 2022 (v143) on Windows or the listed distribution packages and minimum GCC/Clang versions on Linux.
- The reviewed CI workflow builds Windows, macOS and Linux packages and generates soh.o2r; it runs no gameplay or fidelity comparison against the original game. Behavior and enhancements are project-documented, and this collection built or ran nothing.
- The pinned tree has no root license file and GitHub detects none; the randomizer’s 3drando component carries its own license, the submodules are separate repositories and Nintendo content keeps its own rights. README says the project does not condone piracy; the reviewed sources establish no REA or coding-agent involvement.
About this entry
- Type
- Case study
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Targets
- Game
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · HarbourMasters/Shipwright · Revision dd702b0
- docs/BUILDING.md GitHub · HarbourMasters/Shipwright · Revision dd702b0
- docs/supportedHashes.json GitHub · HarbourMasters/Shipwright · Revision dd702b0
- CMakeLists.txt GitHub · HarbourMasters/Shipwright · Revision dd702b0
- .gitmodules GitHub · HarbourMasters/Shipwright · Revision dd702b0
- soh/.gitrepo GitHub · HarbourMasters/Shipwright · Revision dd702b0
- docs/CREDITS.md GitHub · HarbourMasters/Shipwright · Revision dd702b0
- .github/workflows/generate-builds.yml GitHub · HarbourMasters/Shipwright · Revision dd702b0
- soh/soh/Enhancements/randomizer/3drando/LICENSE.md GitHub · HarbourMasters/Shipwright · Revision dd702b0