SoH: Unbound

SoH: Unbound is a fork of Ship of Harkinian. It removes the limits Ocarina of Time inherited from the Nintendo 64. The game plays exactly the same. What changes is how much a mod is allowed to contain.
With Unbound you can build a much larger world, fill it with far more rooms, actors and objects, give it detailed collision, and add new scenes, warps, songs and dialog instead of replacing the ones the game already has.
Get it
Download SoH: Unbound 9.3.0-unbound0.11. Builds and notes are on the release page. It is built on Ship of Harkinian 9.3.0 and uses your own game archive, exactly like normal SoH.
Ask questions and show what you are making in the SoH: Unbound thread on the Harbour Masters Discord server.
Using it with Prelude
- Install SoH: Unbound and run it once with your ROM, like normal SoH. It makes
your
oot.o2r, then converts it intooot-unbound.o2rin the same folder. This takes about a second, and happens again by itself if your ROM files or the game build change. - Upload
oot-unbound.o2rto Prelude, instead of your normaloot.o2r.
You can also skip step 1. Import your ROM into Prelude and choose SoH: Unbound, and
Prelude makes oot-unbound.o2r in your browser with the game's converter.
Prelude then turns the higher limits on by itself. A normal oot.o2r keeps all the
old limits, because most players use normal SoH.
A mod that uses these higher limits needs SoH: Unbound to run. Normal SoH will not load it.
Playing it in the browser
Prelude runs SoH: Unbound in a tab, so you can try a change without leaving the editor. The play button opens the game in a new tab with your edits in it, and reloading that tab picks up whatever you have changed since.
An Unbound build update leaves your oot-unbound.o2r out of date, and the game
refuses to start on it. Make the file again, or import your ROM, and the button
comes back. Your project and the mods you export are unaffected.
Sharing what you make
Prelude names an Unbound export yourmod.unbound.o2r, or
yourmod.prelude-unbound.o2r if you keep it as a Prelude project, so you can tell it
from an ordinary mod without opening it. Drop it in Unbound's mods/ folder like any
other mod.
Please don't post Unbound mods on SoH's GameBanana page. Unbound is an experimental build, and mods made for it are for testing how far the limits can go. Anyone who downloads one expecting normal SoH just gets a mod that won't load. Prelude asks you to confirm this each time you export one.
What it lets you add
The game's tables are fixed lists. Unbound reads them from your mod as well, so these are additions, not replacements.
| What | Normal game | SoH: Unbound |
|---|---|---|
| Scenes | 110, fixed | Add your own, without replacing a vanilla one |
| Entrances (warp targets) | 1,556, fixed | Add your own, and name them so other mods can aim at them |
| Objects | Only the game's list | Ship your own models as new objects |
| Dialog text | Fixed list of ids | Add new ids, so new signs and lines don't delete old ones |
| Scene music | One of the game's tracks | Bind a song of your own to a scene, so it plays there |
| Moving textures | Only where the game already animates one | Scroll, fade and cycle textures on any surface, in any scene |
| Epona | Five scenes, fixed | Let her into a scene you added, and pick where she waits |
The limits it raises
| What | Normal game | SoH: Unbound | What you can do |
|---|---|---|---|
| World size | ±32,760 units | ±1,048,576 units | Build a world about 32 times wider in every direction |
| One room's shape | Every part within 65,535 units across | The whole world | One room can cover everything, so a big outdoor area needs no splitting |
| Position detail | Whole numbers only | Decimals allowed for actors, lights and paths | Place things exactly, not on a grid. Collision stays on whole units, so surfaces that should meet always do |
| Draw distance | 12,800 units | No limit | See far across a large scene |
| Fog start | About 2,500 units | Any distance | Fog that fits a large scene, not a small one |
| Rooms per scene | 255 (127 usable) | 32,767 | Big multi-room dungeons |
| Actors per room | 255 | 65,535 | Crowded rooms |
| Actors alive at once | 255 (and it broke past that) | 8,192 | Large battles and busy towns |
| Objects per room | 128 | 1,024 | Many different enemy and prop types in one room |
| Doors per scene | 64 | 32,767 | As many doors as your dungeon needs |
| Mesh pieces per room | 255 (64 if see-through) | No limit (1,024 see-through) | Detailed rooms, and many glass, water or ghost surfaces |
| Collision points | 8,191 | No practical limit | Walkable ground for a whole large scene |
| Collision triangles | 32,767 | No limit | Detailed floors, walls and slopes |
| Moving platforms (per scene) | 50, with 512 triangles | No limit | Many moving or rotating platforms |
| Exits per scene | 31 | No limit | Many doors and holes leading elsewhere |
| Camera settings per scene | 255 | No limit | Fixed-camera views anywhere you like |
| Light settings per setup | 31 | 255 | Many lighting moods in one scene |
| Water in far rooms | Rooms 0–63 only | Any room | Water anywhere in a large dungeon |
| Message length | About 1,280 bytes | 8,192 bytes | Much longer speeches |
| Texture memory | 1,024 textures | 8,192 textures | Fewer reloads with HD texture packs |
What is still limited
These caps are still there. If one blocks you, say so. It is on the list to fix.
| What | Limit |
|---|---|
| Points in one path | 255 |
| Vertices in one piece of mesh | 65,535, or 47,662 for a piece that reaches past 32,767 units from the center of the world, which needs the bigger vertex format |
| Fixed-camera positions | ±32,767 units |
| Cutscene camera points | ±32,767 units |
| Text in one box, after decoding | 1,024 bytes |
| Light settings per setup | 255 |
| Surface types / water boxes per scene | 65,535 each |
| Scene and entrance numbers | 32,767 |
| Background images per room | 255 |
| Moving-texture motions | 6 at a time per drawing pass, shared by every surface that moves the same way |
| A vanilla scene's entrances | Fixed. Only a scene you add can declare new ways in |
| A vanilla scene's Epona setting | Fixed. Only a scene you add can let her in or keep her out |
| Minimap and pause map | Not drawn for new scenes yet |
| Minimap "visited" marks | Rooms 0–31 only |