Go to file
Christopher Leggett 8c8c761726
Custom Sequences (#2066)
* Allows OTRExporter to parse pairs of .seq and .meta files

* Gets added sequences available to SfxEditor and playing in game.

* Some cleanup of the names appearing in the SfxEditor.

* Moves sequence swap lower in the audio command stack.

* Increases temp cache memory available on title/file-select screen.

Certain sequences wouldn't play on the file select and title screen
because they were too large to be cached.

* Introduces workaround for 255 sequence limit.

* Bug fixes and cleanup.

* Fixes bug where fanfares would sometimes disable the sequence player.

* Fixes bug causing certain areas to discard caches when loading enemy music.

* Fixes potential config-related crash by replacing invalid characters.

* Allows custom bgm to play in all BGM categories.

* Properly randomizes the custom tracks.

* Moves custom sequences to a patch OTR.

* If custom music was not loaded, fall back to default values.

* Prevents OOB crash on Synthwave array and adds octave drop feature.

Added octave drop to experimental features, which drops the octave of
a note that is too high for the audio engine to actually play. Without
this, some custom sequences have notes which cap at a specific value
and sound terrible. At least with this they will still harmonize with
the other notes. Experimental tab added to the SfxEditor to house
the checkbox for the octave drop feature.

* Adds more pool memory for a few tracks that couldn't fit.

* Some cleanup on the generated music archive process.

* Fixes missed memory boost from earlier.

* Adds ability to remove enemy proximity music.

* Applies correct cache policy to fanfares to prevent unloading sequences.

* Removes case-sensitiveness of the sequence type.

* Fixes not reverting to sequence after miniboss.

* Fixes transition to/from miniboss (again) and ocarina bug.

To be clear, fixes the more rampant portable ocarina bug present in my earlier builds, not the authentic one.

* Finally properly fixes transitions between sequences

For miniboss fights and SfxEditor previews.

* Removes unneeded boolean expression.

* Adds randomize button to individual SFX Editor entries.

* Fixes lost woods music overwriting goron city music.

* Plays swapped Hyrule Field music when transitioning to daytime.

* Fixes swapping Gerudo Valley music when transitioning from daytime.

* Updates custom sequence OTRPath to match SequenceOTRizer.

* Reverts changes to OTRExporter in favor of external tool

* Fixes formatting issues.

* Attempts to fix formatting issue in git diff.

* Should actually fix formatting issues.

* Should fix mac/linux exclusive build error.

* Fixes segfault on macos.

* sort custom seqs

* Fixes audioseq crash when under 255 seqs

* Removes magic numbers.

* Removes commented out code.

* fixes formatting in SfxEditor.h

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Cleans up the one hardcoded QueueSeqCmd call.

* Fixes unneeded erroneous memory boost applied earlier.

* Applies additional formatting/cleanliness suggestions from review

* Fixes small logic bug

Co-authored-by: RaelCappra <rael.cappra@gmail.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2022-12-08 23:07:45 -05:00
.github/workflows Re-implements Ninja and CCache for Windows Builds (#2051) 2022-11-29 22:33:43 -05:00
CMake Use shallow clone for vcpkg (#2006) 2022-11-23 13:28:51 +01:00
OTRExporter Import libultraship as a submodule (#1943) 2022-11-14 11:22:34 +01:00
OTRGui Update OTRGui to extract MQ roms with the correct name (#2114) 2022-12-07 16:40:12 -05:00
ZAPDTR [cmake] Ask macOS to use deps after system (#1997) 2022-11-22 00:23:46 +01:00
libultraship@e1fa7a2c0e update lus (#1994) 2022-11-21 21:51:25 -05:00
scripts fix missing rom error (#2036) 2022-11-28 19:40:22 -05:00
soh Custom Sequences (#2066) 2022-12-08 23:07:45 -05:00
.gitignore Dual OTR MQ and Vanilla Support (#1694) 2022-10-16 23:07:35 -04:00
.gitmodules Import libultraship as a submodule (#1943) 2022-11-14 11:22:34 +01:00
BUILDING.md Add git submodule update to BUILDING.md (#2027) 2022-11-28 19:04:24 -05:00
CMakeLists.txt Merge branch 'develop-flynn' into flynn-to-dev 2022-12-06 21:29:27 -05:00
Dockerfile Refactor CrowdControl Setup (#1890) 2022-11-06 11:00:34 +01:00
README.md Import libultraship as a submodule (#1943) 2022-11-14 11:22:34 +01:00
copy-existing-otrs.cmake Dual OTR MQ and Vanilla Support (#1694) 2022-10-16 23:07:35 -04:00

README.md

Welcome to the Ship of Harkinian!

A PC port of OoT allowing you to enjoy the game with modern controls, widescreen, high-resolution, gyroscopy and other great features! Setup is simple, let's get started!

The Ship does not include assets and as such requires a prior copy of the game to play.

Quick Start (Windows)

  1. Download The Ship of Harkinian from Discord.
  2. Requires a supported copy of the game (See supported games below).
  3. Use the OTRGui to generate an oot.otr archive file.
  4. Launch soh.exe

Supported Games

Ocarina of Time Debug PAL GC (not Master Quest)

Currently the recommended option

Build team: `zelda@srd022j`
Build date: `03-02-21 00:49:18` (year-month-day)
sha1: cee6bc3c2a634b41728f2af8da54d9bf8cc14099

Ocarina of Time PAL GameCube

May lead to crashes and instability

sha1: 0227d7c0074f2d0ac935631990da8ec5914597b4

Ocarina of Time Debug PAL GC MQ (Dungeons will be Master Quest)

Build team: `zelda@srd022j`
Build date: `03-02-21 00:16:31` (year-month-day)
sha1: 079b855b943d6ad8bd1eb026c0ed169ecbdac7da (Produced by decomp)
sha1: 50bebedad9e0f10746a52b07239e47fa6c284d03 (Alternate)

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

Additional Setup Information

The Ship of Harkinian uses a proprietary versioning system consisting of a sci-fi film character followed by a phonetic alphabet code word. The film character represents a major release version which increments with the addition of many new features and bug fixes. The code word represents a minor release version which increments with small updates mainly comprised of bug fixes. For example, DECKARD ALFA.

Windows Rom Extraction

  • Open OTRGui.exe, and select one of the supported roms listed above, to generate the oot.otr archive file.
  • If a second button already exits then oot.otr already exists. To prevent overwriting the old oot.otr use this button to choose a new game directory. The new directory must not already contain an oot.otr to prevent an error.
  • When the process completes, place oot.otr beside soh.exe if it is not already.

This packaging process can take up to 5 minutes.

Close the OTRGui when the Done! message appears. If you get another message, then you might have selected the wrong rom. Make sure to use a rom consistent with the above checksum.

Linux Rom Extraction

  • Place one of the supported roms in the same folder as the appimage.
  • When you run the soh appimage, it should begin generating the oot.otr archive file.
  • When the process completes, place oot.otr in the same folder as the appimage, if it is not already, then run the appimage.

The packaging process can take up to 5 minutes.

If you get any errors, then you might have selected the wrong rom. Make sure to use a rom consistent with the above checksum.

MacOS Rom Extraction

  • Run soh.app, and when prompted, select one of the supported roms listed above.
  • 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.

The packing process can take up to 5 minutes.

If you get an error saying Incompatible ROM hash, you have selected the wrong rom, make sure the checksum matches one of the ones listed above.

Nintendo Switch Rom Extraction

  • Download the latest PC release of the Ship of Harkinian, and follow the instructions above for generating the oot.otr archive on that platform.
  • Place the .nro and the oot.otr archive into a folder called soh in your Switch folder on your Switch

Nintendo Wii U Rom Extraction

  • Download the latest PC release of the Ship of Harkinian, and follow the instructions above for generating the oot.otr archive on that platform.
  • Copy the .rpx and the oot.otr archive to wiiu/apps/soh

If you still cannot get the tool to work, join our Discord Server and ask for help in the #support text channel. Keep-in-mind that we do not condone piracy in any way.

Running The Ship of Harkinian

Launch the game. If the window immediately closes, or if there are visual artifacts, you may have selected the wrong rom in the OTRGui tool.

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
F10 Fullscreen (OpenGL)
Alt+Enter Fullscreen (DirectX)
Ctrl+R Reset

Currently, DirectX 11 and OpenGL are supported. Change the renderer by opening the shipofharkinian.json configuration file in notepad and add sdl to the quotes in "GfxBackend": "" for OpenGL or leave blank for DirectX.

Take The Survey

Want to use cartridge readers in tandem with the OTRGui? Take this survey to increase chances of this becoming reality.

Discord

Official Discord: https://discord.com/invite/BtBmd55HVH

Building The Ship of Harkinian

Refer to the building instructions to compile SoH.

Getting CI to work on your fork

The CI works via Github Actions where we mostly make use of machines hosted by Github; except for the very first step of the CI process called "Extract assets". This steps extracts assets from the game file and generates an "assets" folder in soh/.

To get this step working on your fork, you'll need to add a machine to your own repository as a self-hosted runner via "Settings > Actions > Runners" in your repository settings. If you're on macOS or Linux take a look at macports-deps.txt or apt-deps.txt to see the dependencies expected to be on your machine. For Windows, deps get installed as part of the CI process. To setup your runner as a service read the docs here.

Troubleshooting The Exporter

  • Confirm that you have an /assets folder filled with XMLs in the same directory as OTRGui.exe
  • Confirm that zapd.exe exists in the /assets/extractor folder

Nightly Builds

Nightly builds of Ship of Harkinian are available here: Windows, macOS, Linux, Switch, Wii U

The Harbour Masters Are...

Kenix | Lead Developer/Public Relations - Resource Management Programmer, Audio System Programmer, and General Programmer
Jack Walker | Lead Developer - OTR Format Programmer, Resource Load Programmer, and General Programmer
Louist103 | Developer - Save System Programmer and General Programmer
Emil | Developer - Fast3D Programmer
m4xw | Developer - Shipwright, Throwing Baguettes, and General Programmer
MelonSpeedruns | Developer - General Programmer
Rozlette | Developer - General Programmer
JoshDuMan | Developer - General Programmer
KiritoDev/Lywx | Developer - General Programmer
Theo3 | Developer - General Programmer
Random06457 | Developer - Linux Build

Special Thanks

Decomp & ZAPD | Made this project even possible in the first place!
MNGoldenEagle | Patiently explained audio data formats, encouragement, and founding ZSO which was the first source of the game's code and resource format documentation.
Rrrrry123 | Speedbunner, encouragement, and community moderation
Fierce deity | Encouragement and community moderation
mzxrules | For his contributions to decomp
zel. | For his contributions to decomp
Aloxado | Developer - General Programmer
MegaMech | Developer - General Programmer
Revo | Tester - GCC support and General Testing
zfg | Tester - General Testing
Horseless Headman | Tester - General Testing
Steven Pritchett | Tester - General Testing
Trenton May | Tester - General Testing
Zeldaboy14 | Tester - General Testing, encouragement, and community moderation
Koby Howell | Tester - General Testing
Logg | Tester - General Testing
Taylor Daley | Graphic Design
Can't Sleep | Graphic Design

Video Credits

Kenix | Producer / Writer
briaguya | Writer
rainbow_fash | Executive Producer
ReveriePass | Editor
MicTheMicrophone | Gwonam / The King
Amphibibro | Link
AceHeart | Zelda