<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Shipwright/soh/src/code, branch develop-ackbar</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>Fix sword scaling (#6558)</title>
<updated>2026-05-29T02:50:02+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>159546+serprex@users.noreply.github.com</email>
</author>
<published>2026-05-29T02:50:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=d09cd4ffcda23d0413bca2f943a0d91961f93e8b'/>
<id>d09cd4ffcda23d0413bca2f943a0d91961f93e8b</id>
<content type='text'>
Don't apply transforms when scale 1.0, adjust translation to be gradual</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Don't apply transforms when scale 1.0, adjust translation to be gradual</pre>
</div>
</content>
</entry>
<entry>
<title>Fix OGC great fairy reward in vanilla with skip misc interactions when fish is not obtainable (#6556)</title>
<updated>2026-04-23T12:34:26+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>159546+serprex@users.noreply.github.com</email>
</author>
<published>2026-04-23T12:34:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=806398a65b04c994d6472eb482e0de400d48cc72'/>
<id>806398a65b04c994d6472eb482e0de400d48cc72</id>
<content type='text'>
Item_CheckObtainability should only be called with MOD_NONE GI

For RG_DOUBLE_DEFENSE that became ITEM_FISH. Nonsense ensued

To reproduce issue, create debug save &amp; go straight to OGC great fairy with only magic/ocarina/lullaby</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Item_CheckObtainability should only be called with MOD_NONE GI

For RG_DOUBLE_DEFENSE that became ITEM_FISH. Nonsense ensued

To reproduce issue, create debug save &amp; go straight to OGC great fairy with only magic/ocarina/lullaby</pre>
</div>
</content>
</entry>
<entry>
<title>Fix Duplicate Reticles in Anchor (#6520)</title>
<updated>2026-04-16T23:50:55+00:00</updated>
<author>
<name>A Green Spoon</name>
<email>121978037+A-Green-Spoon@users.noreply.github.com</email>
</author>
<published>2026-04-16T23:50:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=412b60a02f366d9e3ac4e3bf73da07991a33ba6d'/>
<id>412b60a02f366d9e3ac4e3bf73da07991a33ba6d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<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>
</feed>
