![]() * Move Fishsanity hooks out of mods.cpp * Assign fish check flags. * Clean up location_list for fish * Prevent fishing from giving double items. * Remove no-longer-used mPendingFish * Override draw function for fishing This allows the draw functions in the source overlay to match the decomp. * Override draw function for EnFish * Overwrite grotto fish params based on respawn data This allows the randomizer to identify them automatically without any special logic. The catch (pun not intended) is that grotto fish don't respawn, and they were previously identified for such by a params value of 1, so the logic to take care of that needed to be duplicated. Thankfully it wasn't very much. * Add a VB for catching actors in bottles. * Clean up remaining code after conversion to VB This breaks fast FastDrops for bottle pickups, though readding it shouldn't be too hard with the VB hook. * Remove fishsanityParams from Fishing It was previously used to track exactly which fish would be released after a catch, but since both candidate fish would've been caught, they both wouldn't give checks anyways. * Update soh/soh/Enhancements/randomizer/hook_handlers.cpp Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com> * Re-add FastDrops for bottle pickups. While this does diverge from the vanilla decomp, I'm uncertain of the order that hooks are run, so I put it back into z_player.c just to be safe. A future commit can do a more proper implementation using VB hooks. * Move initialisation of fishsanity hooks into hook_handlers * Change location constructor to take RandomizerInf instead of uint8_t This shouldn't have an effect as-is, but other changes can add additional randomizer flags that can end up pushing fishsanity check flags out of the range of a uint8_t, causing the cast to overflow and not be stored correctly. With this change, it could still overflow when writing to the flag field of Location, but said field is unused and the parameter is really only for setting the flag for the SpoilerCollectionCheck. * Render uncaught overworld fish as randomized item * Fix windows build by zeroing unused field * Fix scene parameter type This resolves a build error on Mac and Windows, but Linux instead buries it in the sea of warnings, meaning I can't see it until it fails CI. --------- Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com> |
||
---|---|---|
.devcontainer | ||
.github/workflows | ||
CMake | ||
docs | ||
libultraship@0302eab051 | ||
OTRExporter@2cfdb39609 | ||
scripts | ||
soh | ||
ZAPDTR@04d42249d2 | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
CMakeLists.txt | ||
copy-existing-otrs.cmake | ||
Dockerfile | ||
README.md |
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 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 tochmod +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 sayingOTR Successfully Generated
, then the game should start.
Nintendo Switch
- Run one of the PC releases to generate an
oot.otr
and/oroot-mq.otr
file. After launching the game on PC, you will be able to find these files in the same directory assoh.exe
orsoh.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 |
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
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.
![Powered by libultraship](/mirror/Shipwright/media/commit/89ca2149b981e81c8dbd3e5c058b90c29696acad/docs/poweredbylus.lightmode.png)