Go to file
sonoftunk b56e8926f0
Randomizer Auto Location tracker (#1942)
* Initial Auto-Location Tracking

* Updates styling for checked items in Check Tracker

* Fixes crashing issues with Check Tracker rendering

* Auto scroll Check Tracker windows to current area

* Checks Tracker only shows checked locations once in game

* Fixes issue where Check Tracker would auto-scroll to wrong location when entering a grotto

* Fixes gerudo fortress checks showing in tracker when settings have them removed

* InfTable Check Location Fixes: Lost Dog Richard, Rolling Gorons, HBA 1000, Thawed Zora

* Fixes most Event Chk Inf Checks on Check Tracker, and Frogs

* Check Tracker - Song from Malon now works

* Check Tracker
- Fixes Claim Check check not tracking
- Fixes spoiler for Claim Check check when getting Biggoron's Sword
- Fixes LACS being spoiled and not tracking

* Check Tracker - Fixes #2 for Skull Mask and Mask of Truth checks

* Check Tracker
- Adds support for merchants
- Fixes #7 for Bomchu Salesman
- Fixes #12 for Medigoron

* Check Tracker - Fixes #8 for Song from Saria

* Check Tracker - Fixes #9 for Adult Shooting Gallery

* Check Tracker - Fixes #10 for Composer Grave

* Check Tracker - Fixes #14 for Song from Ocarina of Time

* Check Tracker - Fixes #16 for Shooting the Sun

* Check Tracker - Fixes #19 for Darunia's Joy

* Save Editor - Adds missing label for Treasure Chest Game

* Check Tracker - Fixes Great Faries checks

* Check Tracker - Fixes Sheik at Temple

* Check Tracker - Fixes Great Fairy auto-scroll to wrong location

* Check Tracker - Updates blue warp checks
- Fixes Bongo Bongo and Twinrova checks

* Check Tracker - Fixes Dampe's Gravedigging Tour

* Check Tracker - Fixes Prescription to King Zora

* Check Tracker - Fixes Bazaar showing under wrong area on tracker between adult/child

* Check Tracker - Fixes scroll for Hyrule Market and Bazaar

* Check Tracker - Fixes giving Adult Trade Items shown on tracker: Broken Sword, Saw, Cojiro, Eyeball Froge, and Eyedrops

* Cleans up item_location

* Check Tracker - Item List
- Fixes item list not updating when changing seeds/options
- Separates item exclusion list from item check list
- Clean up comments

* Check Tracker - Adds Skip functionality to buttons

* Check Tracker - Refactors adult trade items to RandomizerInf

* Check Tracker - Fixes an issue where any time an item is removed the tracker would cause an application crash

* Check Tracker - Item names are now dependent on file language

* Check Tracker - Fixes Gerudo Card check not showing in Fast setting

* Reorders headers to (hopefully) avoid CI build conflicts on linux/consoles

* Explicitly defines vector header in randomizer.h to fix compile errors

* Complete Refactor of Check Tracker ImGui

* Adds missing check tracker files to CMakeLists

* Reverts the Item_location whitespace cleanup from ad10807c

* Check Tracker - Loading Fixes
- Fixes a bug where loading a save file a second time would add all the checks again
- Fixes a bug where the check tracker would not render at all until in a save file

* Check Tracker - Fixes a bug where checks would sometimes fail to load

* Check Tracker - Fixes duplicated checks when using Only on Pause or Only on Combo

* Check Tracker - Works around issue where single characters don't show in EnhancementCombobox, and fixes a label for combo buttons held option

* Check Tracker - Applies all Check Tracker changes to Item Location

* Check Tracker - Updated Check List
- Adds Link's pocket, either in KF or HM depending on starting age
- Supports Scrubs and Merchants
- Uses enums instead of magic numbers
- Updates DC Scrub Short Names for MQ

* Check Tracker - Adds a performance mode option

* Check Tracker - List Fixes (requires new rando generation)
- Fixes Frogs Rupees always visible
- Fixes Kokiri Sword Chest not showing
- Fixes Weird Egg not showing

* Check Tracker - MQ List basic support

* Check Tracker - MQ/Vanilla anti-spoilers

* Check Tracker - Collecting a compass now spoils the area

* Check Tracker - Basic Vanilla Support and fixes
- Vanilla items show in check tracker, even if many won't auto check
- Fixes an issue with Gerudo Fortress Keys
- Refactors IsVisibleInCheckTracker to randomizer_check_tracjer

* Check Tracker - Fixes merge conflict from 08a487f35e

* Check Tracker - Fixes tracker loading as Floating when default value is set to Windowed

* Randomizer Location Exclusion List
- Adds Scrubs, Merchants, Shops. Adult Trade items, MQ Dungeons, and Bean Salesman
- Fixes Kokiri Sword Chest, Weird Egg, and Frog Song Rupees from misbehaving
- Updates Gerudo Fortress logic to be dependent on Open/Fast/Normal Fortress
- Removes Invalid Check
- Adds RO Enum for MQ settings
- Updates magic values to RO enum

* Location Exclusion List - Scrubs that are always randomized now always show on the list

* For now, removes some extra code only needed for a Check Tracker.

* Randomizer Location Exclusion List - Fixes Eyeball Frog from showing up when Adult Trade Items was off

* Location Tracker - Updates Eyedrops to use RandomizerInf instead of Chest

* Check Tracker - Fixes a bug where Link's Pocket item wasn't acting as checked for area item count

* Check Tracker - Fixes a bug where Locations would incorrectly say Vanilla due to the first check in the area being a non-MQ check

* Check Tracker - Fixes a crash when Check Tracker is docked but not visible

* Check Tracker - Fixes areas being spoiled when loading different save files

* Check Tracker - Only reset variables if they are initialized

* Check Tracker - Cleans up old comments, unused variables, methods, and macros, adds language TODOs,

* Check Tracker - Readds rainbow UI elements after Cosmetics Editor refactor

* Check Tracker - Removal of flag lookup that was refactored, no longer needed header, and some trivial whitespace fixes.

* Check Tracker - Refactors Index to Bitmask code to a macro

* Check Tracker - Changes ordering from alphabetical to RandomizerCheck ordering

* Check Tracker - Wraps everything in a namespace to avoid global variable usage

* Check Tracker - Explicitly defines for-loop scope

* Check Tracker - refactors dungeon lookup from static array to function

* Fixes a bug when using EnhancementColor with alpha

* Check Tracker - Refactors all colour to use direct conversions

* Check Tracker - refactors settings loading and check visibility for readability

* Check Tracker - Fixes a bug where the wrong label showed on the Check Tracker BG Color

* UIWidgets - Adds Alpha bar to EnhancementColor when using alpha parameter
2022-12-10 22:39:23 -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
libultraship@e1fa7a2c0e update lus (#1994) 2022-11-21 21:51:25 -05:00
OTRExporter Cosmetic Editor v3 (#1898) 2022-12-08 23:24:39 -05:00
OTRGui Update OTRGui to extract MQ roms with the correct name (#2114) 2022-12-07 16:40:12 -05:00
scripts fix missing rom error (#2036) 2022-11-28 19:40:22 -05:00
soh Randomizer Auto Location tracker (#1942) 2022-12-10 22:39:23 -05:00
ZAPDTR [Fix] ZAPD: Fix 1-core cpu machines in OTR generation tool (#2130) 2022-12-10 09:08:37 +01: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
copy-existing-otrs.cmake Dual OTR MQ and Vanilla Support (#1694) 2022-10-16 23:07:35 -04:00
Dockerfile Refactor CrowdControl Setup (#1890) 2022-11-06 11:00:34 +01:00
README.md Add docs for custom sequences (#2124) 2022-12-10 21:35:26 +01:00

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.

Custom Music

We support importing custom Seq64 files to replace the in game music and fanfares (Not sound effects yet currently).

First you will need to prepare a folder with the desired sequences, in which every sequence will have two files with the same name and different extensions, a .seq Seq64 file and a .meta plaintext file. These files can be categorically nested in folders if desired, they will still be consumed as if they were all at the top level.

The meta file will have two lines, the first line is the name that will be displayed in the SFX editor, and the second line will be the instrument set number, in base 16. For example, if there is a sequence file Foo.seq then you need a meta file Foo.meta that could contain:

Awesome Name
C

Once you have prepared your sequences folder:

  1. Download and open Retro.
  2. Choose the "Create OTR" option
  3. Choose the "Custom Sequences" option
  4. Using the file select, choose the sequences folder you prepared in the previous instructions.
  5. Click the "Stage Files" button (Reminder: SoH can handle 1024 custom sequence in total, this number include the count of the original music with it so be sure to take this into account)
  6. Click the "Finalize OTR" text in the green footer.
  7. Finally click "Generate OTR" and for the source destination it needs to go in the mods folder of your SoH installation.
    • This mods folder should be a sibling of your oot.otr file.

Assuming you have done everything correctly, boot up SoH and open up the SFX Editor (In the Enhancements dropdown). You should now be able to swap out any of the in game sequences/fanfares for the sequences added in your newly generated OTR file. If you have any trouble with this process please reach out in the support section of the Discord

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