<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Shipwright, branch 9.2.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>Fix RT_GROUND_JUMP_HARD description (#6391)</title>
<updated>2026-03-22T19:56:22+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>serprex@users.noreply.github.com</email>
</author>
<published>2026-03-22T19:56:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=692ef416ee5608e13b1a22d9556318149fc1ac79'/>
<id>692ef416ee5608e13b1a22d9556318149fc1ac79</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Ackbar 9.2.0 (#6389)</title>
<updated>2026-03-22T18:10:12+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>serprex@users.noreply.github.com</email>
</author>
<published>2026-03-22T18:10:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=1949033f9317789f3ce420f466ffa34d32e925b8'/>
<id>1949033f9317789f3ce420f466ffa34d32e925b8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add option to mute notification sounds altogether. (#6390)</title>
<updated>2026-03-22T17:52:53+00:00</updated>
<author>
<name>Malkierian</name>
<email>malkierian@gmail.com</email>
</author>
<published>2026-03-22T17:52:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=c758f1ad8459aa8d2e6a3416f14a4f45c11d788d'/>
<id>c758f1ad8459aa8d2e6a3416f14a4f45c11d788d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement toggle for allowing background inputs (#6214)</title>
<updated>2026-03-22T16:44:24+00:00</updated>
<author>
<name>aMannus</name>
<email>mannusmenting@gmail.com</email>
</author>
<published>2026-03-22T16:44:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=1d9de8544a6fcfc063a0a2cebd455419b499be17'/>
<id>1d9de8544a6fcfc063a0a2cebd455419b499be17</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix mouse camera Y-axis inversion (#6387)</title>
<updated>2026-03-22T15:06:54+00:00</updated>
<author>
<name>Jordan Longstaff</name>
<email>JordanLongstaff@users.noreply.github.com</email>
</author>
<published>2026-03-22T15:06:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=25ee1ec3ab30c397bfae64c75ffe315ee9d9876d'/>
<id>25ee1ec3ab30c397bfae64c75ffe315ee9d9876d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>extraction: detect task crashing (#6386)</title>
<updated>2026-03-22T06:03:41+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>serprex@users.noreply.github.com</email>
</author>
<published>2026-03-22T06:03:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=96c4fef05c1dc4c093e83b2e5e2acf02092e5d9f'/>
<id>96c4fef05c1dc4c093e83b2e5e2acf02092e5d9f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove some unnecessary includes (#6385)</title>
<updated>2026-03-21T20:22:32+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>serprex@users.noreply.github.com</email>
</author>
<published>2026-03-21T20:22:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=b65c1c83172ec57040ba3240617ea1c7ead142bf'/>
<id>b65c1c83172ec57040ba3240617ea1c7ead142bf</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>[Enhancement] Reworked targetting (#6322)</title>
<updated>2026-03-21T18:41:08+00:00</updated>
<author>
<name>OtherBlue</name>
<email>93625085+OtherBlue@users.noreply.github.com</email>
</author>
<published>2026-03-21T18:41:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=2af5d2112543f88c4476d5cf082aeca9e601f5f2'/>
<id>2af5d2112543f88c4476d5cf082aeca9e601f5f2</id>
<content type='text'>
Adds an enhancement that changes targeting behavior, allowing

Switching targets with the chosen button combo
(In Switch mode) Untargeting by just pressing Z</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds an enhancement that changes targeting behavior, allowing

Switching targets with the chosen button combo
(In Switch mode) Untargeting by just pressing Z</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>
</feed>
