No description
Find a file
inspectredc 0dc5ff4984
NTSC GC Support (#5254)
* copy n64 pal 10

doing this so i can check diffs i make

* transfer german->jp icon item

* overlays, message data, icon item jpn, audio, code

todo: title_static, gameplay keep

* add kanji and fix title cards

* title static

* spell folder correctly

* boss title cards, do action, icon item, item name, map name

* headers for jpn stuff

* gameplay_keep

* Scenes, audio, jp text extraction, rom support, overlay fixes, sheik & darunia

todo: test & disable darunia fix cvar for ntsc

* msgptr init fix

* icon item offsets

* comment out title cards until zapd can fix itself (we extract these in a different file anyway)

* compile and font implemented to get past title screen

* file select

* message, kaleido and everything else but rando

* uintptr_t

* rando and custom messages working!

* ntsc-j 1.0 support

* n64 logo?

* copy ntsc 10 to 11

* ntsc 11 extraction

* change title version names

* copy ntsc 11 to 12

* ntsc 12 extraction

* clean up some todos

* re checkout submodules post merge

* fix US filename

* support cross-version filenames

* add new versions to non-mq list

* use correct message table init

* Fix ntsc nes message table overriding pal nes message table

* actual fix, allows extraction

* fix file name using wrong font of file being hovered over

* Fix barinade crash

* re-add pal

* better jabu fix and revert LUS

* fix gerudo title cards

* better better owl select

* more owl fixes

* build

* fix some name decode issues

* Switch Language Mid Text

* Fix PAL displaying for JP filenames

* Fix AskToEquip Crash

* Disable Credits Timing Fix on NTSC

* Fix JP Text positioning

* basic language switching (BIG todo: file select, title screen)

* Title Screen Hopefully working

* add ntsc to linux appimage stuff, TODO: add .v64/.n64 support

* Update OTRExporter

* Fix pause to decide offset

* Fix bomb item name crash

* fix fire arrows and PoH

* builds

* update asset changes and fix menu language changing

* fix name decode

* Fix crashes and add rando/boss rush select stuff

* Revive debug feature by setting language cvar too

* Fix ocarina text speed softlock, and update jp text speed changes

* Merge remote-tracking branch 'upstream/develop' into NTSC

* Fix options menu and let pal use japanese fully

* Resolve some suggestions

* match up gTextSpeed changes to english (still broken!)

* Fix text speed crash

* Set default filename language on save init funcs

* copy n64 ntsc 1.2 to gc nmq ntsc and add rom info

* extractor working for ntsc gc u

* Extraction Works

* bump otrexporter

* Display same correct info for n64 ntsc-j and ntsc-u

* ovl asset fixes

* final font diff

* change the correct ovl file choose xml

* copy asset files for jp

* JP Working

* Copy jp and us xmls to mq

* MQ Working

* quicktext more closely aligned with decomp

* add versions to mq switch

* linux appimage v64/n64 checksums

* bump zapd

* Credits Fix Tooltip Adjusted

* update supported hashes json

* update shasums to include JP n64

* add shasum hashes

* Bump submodules back to upstream
2025-03-31 00:16:24 +02:00
.devcontainer [Dev] Add Support for Github Codespaces (#2551) 2023-02-28 01:11:56 -05:00
.github/workflows Rework CI build caching for stability (#5170) 2025-03-21 12:23:01 +01:00
.vscode Dev Feature - Create VS Code Build tasks and update build documentation (#4895) 2025-01-19 13:49:23 -05:00
CMake Rework CI build caching for stability (#5170) 2025-03-21 12:23:01 +01:00
docs NTSC GC Support (#5254) 2025-03-31 00:16:24 +02:00
libultraship@ffc062cbf4 Bump latest LUS main (#5252) 2025-03-30 23:28:53 +02:00
OTRExporter@41052efcdf NTSC GC Support (#5254) 2025-03-31 00:16:24 +02:00
scripts NTSC GC Support (#5254) 2025-03-31 00:16:24 +02:00
soh NTSC GC Support (#5254) 2025-03-31 00:16:24 +02:00
ZAPDTR@2aeababbfb NTSC GC Support (#5254) 2025-03-31 00:16:24 +02:00
.gitattributes Simplify Asset Headers (#2474) 2023-03-02 15:37:47 +01:00
.gitignore Dev Feature - Create VS Code Build tasks and update build documentation (#4895) 2025-01-19 13:49:23 -05:00
.gitmodules Move ZAPDTR and OTRExporter to sub modules (#3298) 2023-10-17 00:32:42 -04:00
CMakeLists.txt bump lus (#5187) 2025-03-24 09:34:07 +01:00
copy-existing-otrs.cmake Opt-in for an easy-way CMake target to create soh.otr file (#3057) 2023-08-15 19:26:23 -05:00
Dockerfile Refactor CrowdControl Setup (#1890) 2022-11-06 11:00:34 +01:00
README.md fix readme link formatting (#4576) 2024-11-25 11:21:45 -07:00

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.otr and/or oot-mq.otr 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.otr
        ├── oot.otr
        ├── soh.nro
        └── soh.otr
  • 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
F1 Toggle menubar
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 .otr 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:

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.

Powered by libultraship