<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Shipwright/soh/src/code/z_parameter.c, branch 9.3.0</title>
<subtitle>Ship of Harkinian: Ocarina of Time PC port</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/'/>
<entry>
<title>speedrun mode (#7073)</title>
<updated>2026-10-05T05:19:52+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>159546+serprex@users.noreply.github.com</email>
</author>
<published>2026-10-05T05:19:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=4afcb78331b8b847a92c42fafa5fbea00f4da748'/>
<id>4afcb78331b8b847a92c42fafa5fbea00f4da748</id>
<content type='text'>
prevent Esc menu while speedrun file loaded, instead toggles gameplay stats / time splits

render RUN tag on speedrun files

don't persist speedrun preset into player's settings</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
prevent Esc menu while speedrun file loaded, instead toggles gameplay stats / time splits

render RUN tag on speedrun files

don't persist speedrun preset into player's settings</pre>
</div>
</content>
</entry>
<entry>
<title>clean up headers (#7194)</title>
<updated>2026-09-14T19:49:29+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>159546+serprex@users.noreply.github.com</email>
</author>
<published>2026-09-14T19:49:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=060787a239108ddc8c860d9974a5b888258985a1'/>
<id>060787a239108ddc8c860d9974a5b888258985a1</id>
<content type='text'>
GameInteractor.h does not itself depend on libultraship/bridge/consolevariablebridge.h,
instead its dependencies requiring that header should include it themselves

This was particularly impactful for SohGui.hpp which included all the windows</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
GameInteractor.h does not itself depend on libultraship/bridge/consolevariablebridge.h,
instead its dependencies requiring that header should include it themselves

This was particularly impactful for SohGui.hpp which included all the windows</pre>
</div>
</content>
</entry>
<entry>
<title>[Enhancement] Time Splits v2 (#5839)</title>
<updated>2026-09-14T16:55:22+00:00</updated>
<author>
<name>Caladius</name>
<email>Caladius@users.noreply.github.com</email>
</author>
<published>2026-09-14T16:55:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=43ea3328744323b96a04886693f02501fbeab27b'/>
<id>43ea3328744323b96a04886693f02501fbeab27b</id>
<content type='text'>
This aims to port over the Time Splits feature from 2Ship as it is cleaner &amp; more robust.

New to this is the ability to finally compare splits from a second list.

Old Save data will now be converted to the new format automatically. Once it converts the data, the old save file will be renamed with a new ".backup" extension.

Co-authored-by: serprex &lt;159546+serprex@users.noreply.github.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This aims to port over the Time Splits feature from 2Ship as it is cleaner &amp; more robust.

New to this is the ability to finally compare splits from a second list.

Old Save data will now be converted to the new format automatically. Once it converts the data, the old save file will be renamed with a new ".backup" extension.

Co-authored-by: serprex &lt;159546+serprex@users.noreply.github.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Hookify masks / timeless equipment (#7088)</title>
<updated>2026-08-17T17:24:03+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>159546+serprex@users.noreply.github.com</email>
</author>
<published>2026-08-17T17:24:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=bd8a5825f94bf226680ce009ce5a50948aa48a78'/>
<id>bd8a5825f94bf226680ce009ce5a50948aa48a78</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Decomp, three audio functions (#7069)</title>
<updated>2026-08-14T20:01:49+00:00</updated>
<author>
<name>djevangelia</name>
<email>263709373+djevangelia@users.noreply.github.com</email>
</author>
<published>2026-08-14T20:01:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=e048afd10a7d87b185bfda06f55a63a46ce50b3b'/>
<id>e048afd10a7d87b185bfda06f55a63a46ce50b3b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix Gold Skulltula tokens overwriting the Bow inventory slot (#7021)</title>
<updated>2026-08-05T04:03:12+00:00</updated>
<author>
<name>David Racine</name>
<email>bass_dr@hotmail.com</email>
</author>
<published>2026-08-05T04:03:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=29c7e75688a03547ba8643ea444e2790a80cc14c'/>
<id>29c7e75688a03547ba8643ea444e2790a80cc14c</id>
<content type='text'>
gItemSlots and sExtraItemBases only cover the item IDs that live in the
inventory, but Item_Give and Item_CheckObtainability index them with any
item ID. Reading past gItemSlots lands on gUpgradeShifts, so
INV_CONTENT(ITEM_SKULL_TOKEN) resolved to the Bow slot and stored the
token there, permanently corrupting the save.

Route both through a bounds-checked Item_GetSlot that reports SLOT_NONE
for items that have no slot, and skip the inventory store in that case.

That read is also undefined behaviour, which link-time optimization is
free to exploit: with it present clang dropped the ITEM_SKULL_TOKEN
branch and the ITEM_MEDALLION_WATER horse fixup from Item_Give
entirely, so tokens were never counted either.

Co-authored-by: Claude Opus 5 &lt;noreply@anthropic.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
gItemSlots and sExtraItemBases only cover the item IDs that live in the
inventory, but Item_Give and Item_CheckObtainability index them with any
item ID. Reading past gItemSlots lands on gUpgradeShifts, so
INV_CONTENT(ITEM_SKULL_TOKEN) resolved to the Bow slot and stored the
token there, permanently corrupting the save.

Route both through a bounds-checked Item_GetSlot that reports SLOT_NONE
for items that have no slot, and skip the inventory store in that case.

That read is also undefined behaviour, which link-time optimization is
free to exploit: with it present clang dropped the ITEM_SKULL_TOKEN
branch and the ITEM_MEDALLION_WATER horse fixup from Item_Give
entirely, so tokens were never counted either.

Co-authored-by: Claude Opus 5 &lt;noreply@anthropic.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Fix problems with Zelda's Letter &amp; Weird Egg hatching (#6962)</title>
<updated>2026-07-22T12:24:31+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>159546+serprex@users.noreply.github.com</email>
</author>
<published>2026-07-22T12:24:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=d62c5879aaf4b64d68f6069cc2413c9d5f2eac92'/>
<id>d62c5879aaf4b64d68f6069cc2413c9d5f2eac92</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Shuffle Zelda's Letter (#6938)</title>
<updated>2026-07-19T22:37:45+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>159546+serprex@users.noreply.github.com</email>
</author>
<published>2026-07-19T22:37:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=1ea7206073183e7f7424e02eceb44d4d9bf35300'/>
<id>1ea7206073183e7f7424e02eceb44d4d9bf35300</id>
<content type='text'>
Removes RSK_SKIP_CHILD_ZELDA &amp; RSK_KAK_GATE,
these are managed by RSK_SHUFFLE_ZELDAS_LETTER &amp; RSK_STARTING_ZELDAS_LETTER &amp; RSK_SHUFFLE_WEIRD_EGG</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Removes RSK_SKIP_CHILD_ZELDA &amp; RSK_KAK_GATE,
these are managed by RSK_SHUFFLE_ZELDAS_LETTER &amp; RSK_STARTING_ZELDAS_LETTER &amp; RSK_SHUFFLE_WEIRD_EGG</pre>
</div>
</content>
</entry>
<entry>
<title>Add save state wiring for Barinade, Bongo Bongo, &amp; Morpha (#6914)</title>
<updated>2026-07-12T22:35:19+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>159546+serprex@users.noreply.github.com</email>
</author>
<published>2026-07-12T22:35:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=66bb7888b0650548f2bd00ef5faf360f0c37bf6e'/>
<id>66bb7888b0650548f2bd00ef5faf360f0c37bf6e</id>
<content type='text'>
Rename various variables across codebase to match decomp,
many had been renamed when exposed for previous save state mechanism</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Rename various variables across codebase to match decomp,
many had been renamed when exposed for previous save state mechanism</pre>
</div>
</content>
</entry>
<entry>
<title>GIM Restoration (#6865)</title>
<updated>2026-07-12T15:09:06+00:00</updated>
<author>
<name>Amber Burton</name>
<email>parchmentwolf@gmail.com</email>
</author>
<published>2026-07-12T15:09:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=2b423c36aa0708a9e042b1afe8f252a6cf91c556'/>
<id>2b423c36aa0708a9e042b1afe8f252a6cf91c556</id>
<content type='text'>
All edge cases for bottle combinations and replacement/filling mirrors the real game, as well we produce the compass text, and does not render the item exactly as the original game does. (I would have preferred rendering the item since its only cosmetic but I couldn't find a way to do it).

This also swaps the table redirect stuff for using the direct item id's which is a lot more clear and does not substitute anything for 'good enough' and covers all the edge case ids that have been documented.

This is purely a cosmetic change to present the visual of the item without affecting the cutscene making any tricks for GIM still work and just looks more polished.

This supplies effects of ALL game versions (including MZX build) as well as providing text table.

To note: we still can crash with GIM even when returning item None EVEN at least with returning Kokiri Tunic (I can't really figure out why) and there are a few items in the table that use extra data that I don't know how to implement here just yet but the info is in the docs under "Variable".

In the case of disabling the gim restoration, the game would still crash. This change adds a text id protection to prevent crashing, as well prevents invalid items from crashing directly, and also makes it so the game will no longer crash when having GIM disabled in the menu.

Co-authored-by: serprex &lt;159546+serprex@users.noreply.github.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
All edge cases for bottle combinations and replacement/filling mirrors the real game, as well we produce the compass text, and does not render the item exactly as the original game does. (I would have preferred rendering the item since its only cosmetic but I couldn't find a way to do it).

This also swaps the table redirect stuff for using the direct item id's which is a lot more clear and does not substitute anything for 'good enough' and covers all the edge case ids that have been documented.

This is purely a cosmetic change to present the visual of the item without affecting the cutscene making any tricks for GIM still work and just looks more polished.

This supplies effects of ALL game versions (including MZX build) as well as providing text table.

To note: we still can crash with GIM even when returning item None EVEN at least with returning Kokiri Tunic (I can't really figure out why) and there are a few items in the table that use extra data that I don't know how to implement here just yet but the info is in the docs under "Variable".

In the case of disabling the gim restoration, the game would still crash. This change adds a text id protection to prevent crashing, as well prevents invalid items from crashing directly, and also makes it so the game will no longer crash when having GIM disabled in the menu.

Co-authored-by: serprex &lt;159546+serprex@users.noreply.github.com&gt;</pre>
</div>
</content>
</entry>
</feed>
