MCPcopy Index your code
hub / github.com/HarbourMasters/Shipwright

github.com/HarbourMasters/Shipwright @9.2.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release 9.2.3 ↗ · + Follow
17,945 symbols 65,265 edges 3,057 files 1,624 documented · 9%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Ship of Harkinian Ship of Harkinian

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. Download The Ship of Harkinian from Releases

3. Launch the Game!

Windows

  • Extract the zip
  • Launch soh.exe

Linux

  • Place your supported copy of the game in the same folder as the appimage.
  • Execute soh.appimage. You may have to chmod +x the appimage via terminal.

macOS

  • Run soh.app. When prompted, select your supported copy of the game.
  • You should see a notification saying Processing OTR, then, once the process is complete, you should get a notification saying OTR Successfully Generated, then the game should start.

Nintendo Switch

  • Run one of the PC releases to generate an oot.o2r and/or oot-mq.o2r file. After launching the game on PC, you will be able to find these files in the same directory as soh.exe or soh.appimage. On macOS, these files can be found in /Users/<username>/Library/Application Support/com.shipofharkinian.soh/
  • Copy the files to your sd card
sdcard
└── switch
    └── soh
        ├── oot-mq.o2r
        ├── oot.o2r
        ├── soh.nro
        └── soh.o2r
  • Launch via Atmosphere's Game+R launcher method.

4. Play!

Congratulations, you are now sailing with the Ship of Harkinian! Have fun!

Configuration

Default keyboard configuration

N64 A B Z Start Analog stick C buttons D-Pad
Keyboard X C Z Space WASD Arrow keys TFGH

Other shortcuts

Keys Action
ESC Toggle menu
F2 Toggle capture mouse input
F5 Save state
F6 Change state
F7 Load state
F9 Toggle Text-to-Speech (Windows and Mac only)
F11 Fullscreen
Tab Toggle Alternate assets
Ctrl+R Reset

Project Overview

Ship of Harkinian (SOH) is built atop a custom library dubbed libultraship (LUS). Back in the N64 days, there was an SDK distributed to developers named libultra; LUS is designed to mimic the functionality of libultra on modern hardware. In addition, we are dependant on the source code provided by the OOT decompilation project.

In order for the game to function, you will require a legally acquired ROM for Ocarina of Time. Click here to check the compatibility of your specific rom. Any copyrighted assets are extracted from the ROM and reformatted as a .o2r archive file which the code uses.

Graphics Backends

Currently, there are three rendering APIs supported: DirectX11 (Windows), OpenGL (all platforms), and Metal (MacOS). You can change which API to use in the Settings menu of the menubar, which requires a restart. If you're having an issue with crashing, you can change the API in the shipofharkinian.json file by finding the line gfxbackend:"" and changing the value to sdl for OpenGL. DirectX 11 is the default on Windows.

Custom Assets

Custom assets are packed in .otr archive files. To use custom assets, place them in the mods folder.

If you're interested in creating and/or packing your own custom asset .otr files, check out the following tools: * retro - OTR generator * fast64 - Blender plugin

Development

Building

If you want to manually compile SoH, please consult the building instructions.

Playtesting

If you want to playtest a continuous integration build, you can find them at the links below. Keep in mind that these are for playtesting only, and you will likely encounter bugs and possibly crashes.

Further Reading

More detailed documentation can be found in the 'docs' directory, including the aforementioned building instructions.

<img alt="Powered by libultraship" src="https://github.com/HarbourMasters/Shipwright/raw/9.2.3/docs/poweredbylus.lightmode.png">

Core symbols most depended-on inside this repo

CanUse
called by 2193
soh/soh/Enhancements/randomizer/logic.cpp
HasItem
called by 1329
soh/soh/Enhancements/randomizer/logic.cpp
Rand_ZeroOne
called by 1317
soh/src/code/code_800FD970.c
Audio_PlayActorSound2
called by 1303
soh/src/code/z_actor.c
gSPDisplayList
called by 1156
soh/soh/GbiWrap.cpp
Math_ApproachF
called by 1082
soh/src/code/z_lib.c
gSPSegment
called by 945
soh/soh/GbiWrap.cpp
Math_SinS
called by 938
soh/src/code/z_lib.c

Shape

Function 15,480
Method 1,385
Class 970
Enum 110

Languages

C76%
C++24%
Python1%
C#1%

Modules by API surface

soh/src/overlays/actors/ovl_player_actor/z_player.c572 symbols
soh/src/code/z_actor.c249 symbols
soh/src/overlays/actors/ovl_En_Xc/z_en_xc.c240 symbols
soh/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c207 symbols
soh/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c204 symbols
soh/src/code/z_collision_check.c181 symbols
soh/src/code/z_bgcheck.c181 symbols
soh/src/code/z_camera.c165 symbols
soh/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c143 symbols
soh/src/code/code_800EC960.c135 symbols
soh/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c131 symbols
soh/soh/Enhancements/randomizer/logic.cpp130 symbols

For agents

$ claude mcp add Shipwright \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact