<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Shipwright/soh/src/code, branch 9.2.3</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>Move retrieval of dbEntry after Actor_Destroy (#6410)</title>
<updated>2026-03-26T14:18:01+00:00</updated>
<author>
<name>Christopher Leggett</name>
<email>chris@leggett.dev</email>
</author>
<published>2026-03-26T14:18:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=4aa6e2ec280de14cecd79cdb3de607d7bc9cf1f3'/>
<id>4aa6e2ec280de14cecd79cdb3de607d7bc9cf1f3</id>
<content type='text'>
Before I had the change back to the placeholder actor id the Dummy
Player actors were spawned with, but since we grabbed the actorDB
entry before Actor_Destroy was called it didn't matter. Move it
and the requisite log statement to after Actor_Destroy.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Before I had the change back to the placeholder actor id the Dummy
Player actors were spawned with, but since we grabbed the actorDB
entry before Actor_Destroy was called it didn't matter. Move it
and the requisite log statement to after Actor_Destroy.</pre>
</div>
</content>
</entry>
<entry>
<title>Enemy rando: don't mutate ActorEntry (#6400)</title>
<updated>2026-03-23T16:27:20+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>serprex@users.noreply.github.com</email>
</author>
<published>2026-03-23T16:27:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=c439d6213780df715feb6c7773d6f39bad2107a9'/>
<id>c439d6213780df715feb6c7773d6f39bad2107a9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Enemy rando cleanup 2 (#6365)</title>
<updated>2026-03-21T18:46:15+00:00</updated>
<author>
<name>Pepe20129</name>
<email>72659707+Pepe20129@users.noreply.github.com</email>
</author>
<published>2026-03-21T18:46:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=4e82ea192a0e0bb7bfb7a11ff2fa6ce499f72aab'/>
<id>4e82ea192a0e0bb7bfb7a11ff2fa6ce499f72aab</id>
<content type='text'>
Move stuff to main file, delete header &amp; refactor lists</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Move stuff to main file, delete header &amp; refactor lists</pre>
</div>
</content>
</entry>
<entry>
<title>Fix ADPCM sample buffer overread in audio synthesis (#6364)</title>
<updated>2026-03-21T18:34:18+00:00</updated>
<author>
<name>Paul Schwabauer</name>
<email>paul@schwabauer.co</email>
</author>
<published>2026-03-21T18:34:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=b6bf97e2f199ae9c947e3b192b690c1d6257517b'/>
<id>b6bf97e2f199ae9c947e3b192b690c1d6257517b</id>
<content type='text'>
The sampleDataStartPad and aligned variables existed solely to satisfy
the N64 RSP DMA requirement that source addresses be 16-byte aligned.
On PC, aLoadBuffer is a plain memcpy with no such constraint.

The alignment dance caused aLoadBuffer to read up to 15 bytes before
sampleData and up to 8+ bytes past the end of the sample buffer. On
platforms with strict allocator guard pages (e.g. OpenBSD), this
triggers a SIGSEGV.

A second issue remains after removing the alignment dance: nFramesToDecode
is derived from sample counts (loopEnd), but size is not always a multiple
of frameSize. loopEnd and size are derived independently during encoding
and can disagree on the final partial frame, leaving nFramesToDecode *
frameSize exceeding the remaining bytes in the buffer.

Remove sampleDataStartPad and aligned entirely. Clamp the load to
min(nFramesToDecode * frameSize, audioFontSample-&gt;size - sampleDataOffset).
The ADPCM decoder operates on DMEM, so a partial last frame in DMEM
produces at most a negligible artifact at sound termination.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The sampleDataStartPad and aligned variables existed solely to satisfy
the N64 RSP DMA requirement that source addresses be 16-byte aligned.
On PC, aLoadBuffer is a plain memcpy with no such constraint.

The alignment dance caused aLoadBuffer to read up to 15 bytes before
sampleData and up to 8+ bytes past the end of the sample buffer. On
platforms with strict allocator guard pages (e.g. OpenBSD), this
triggers a SIGSEGV.

A second issue remains after removing the alignment dance: nFramesToDecode
is derived from sample counts (loopEnd), but size is not always a multiple
of frameSize. loopEnd and size are derived independently during encoding
and can disagree on the final partial frame, leaving nFramesToDecode *
frameSize exceeding the remaining bytes in the buffer.

Remove sampleDataStartPad and aligned entirely. Clamp the load to
min(nFramesToDecode * frameSize, audioFontSample-&gt;size - sampleDataOffset).
The ADPCM decoder operates on DMEM, so a partial last frame in DMEM
produces at most a negligible artifact at sound termination.</pre>
</div>
</content>
</entry>
<entry>
<title>Custom Item Icons in Textboxes (#6343)</title>
<updated>2026-03-20T16:37:44+00:00</updated>
<author>
<name>Christopher Leggett</name>
<email>chris@leggett.dev</email>
</author>
<published>2026-03-20T16:37:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=5c8ff765543b80cbdf39cae9b5c0d062a7abb367'/>
<id>5c8ff765543b80cbdf39cae9b5c0d062a7abb367</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix Entrance Rando Grotto Voidout Crash when voiding back to an area with a background image (#6379)</title>
<updated>2026-03-20T03:40:35+00:00</updated>
<author>
<name>Christopher Leggett</name>
<email>chris@leggett.dev</email>
</author>
<published>2026-03-20T03:40:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=f2c34d8c112247d63ddb99702b2caf716ff77516'/>
<id>f2c34d8c112247d63ddb99702b2caf716ff77516</id>
<content type='text'>
Hookify bgimage load cam check and add it to entrance rando</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Hookify bgimage load cam check and add it to entrance rando</pre>
</div>
</content>
</entry>
<entry>
<title>Fix rendering double digit key count (#6371)</title>
<updated>2026-03-19T01:39:46+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>serprex@users.noreply.github.com</email>
</author>
<published>2026-03-19T01:39:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=6a9567b369b6d0a5ee14bf09e3d9df0349cef726'/>
<id>6a9567b369b6d0a5ee14bf09e3d9df0349cef726</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix RBA gauntlet colors to match console (#6359)</title>
<updated>2026-03-17T17:40:08+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>serprex@users.noreply.github.com</email>
</author>
<published>2026-03-17T17:40:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=e9ef09eee4b29d69c7422a0b0524064a2af9dd01'/>
<id>e9ef09eee4b29d69c7422a0b0524064a2af9dd01</id>
<content type='text'>
Also fix tracker to show golden gauntlets while wearing glitched gauntlets,
&amp; don't crash save editor</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Also fix tracker to show golden gauntlets while wearing glitched gauntlets,
&amp; don't crash save editor</pre>
</div>
</content>
</entry>
<entry>
<title>Enemy rando cleanup (#6327)</title>
<updated>2026-03-17T04:53:33+00:00</updated>
<author>
<name>Pepe20129</name>
<email>72659707+Pepe20129@users.noreply.github.com</email>
</author>
<published>2026-03-17T04:53:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=b35883e1f63ac980a7e52258dff4a8cbc418ece5'/>
<id>b35883e1f63ac980a7e52258dff4a8cbc418ece5</id>
<content type='text'>
Change Actor_SpawnEntry to use VB
Move adult zelda collapse stalfos to a explicit hook
Move dark link to a explicit hook
Some more canRandomize that were not needed
Move bg_haka &amp; bg_haka_tubo to explicit hooks
Move en_vali to an explicit hook
Move bg_mori_bigst to an explicit hook
Fix door opening before the enemies are killed
Remove `canRandomize` parameter
Move bg_haka_huta to explicit hooks</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change Actor_SpawnEntry to use VB
Move adult zelda collapse stalfos to a explicit hook
Move dark link to a explicit hook
Some more canRandomize that were not needed
Move bg_haka &amp; bg_haka_tubo to explicit hooks
Move en_vali to an explicit hook
Move bg_mori_bigst to an explicit hook
Fix door opening before the enemies are killed
Remove `canRandomize` parameter
Move bg_haka_huta to explicit hooks</pre>
</div>
</content>
</entry>
<entry>
<title>Hookify Hookshot Reticle Changes (#6279)</title>
<updated>2026-03-05T16:11:36+00:00</updated>
<author>
<name>A Green Spoon</name>
<email>121978037+A-Green-Spoon@users.noreply.github.com</email>
</author>
<published>2026-03-05T16:11:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=6340ad3d5c3f02a61750f1938596ff5fe22ebe0b'/>
<id>6340ad3d5c3f02a61750f1938596ff5fe22ebe0b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
