<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Shipwright/soh/src/code/z_camera.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>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>Decomp, some camera names (#7043)</title>
<updated>2026-08-08T21:12:31+00:00</updated>
<author>
<name>djevangelia</name>
<email>263709373+djevangelia@users.noreply.github.com</email>
</author>
<published>2026-08-08T21:12:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=f2f4413bff84b10e46b3d6843a6f945527af92e5'/>
<id>f2f4413bff84b10e46b3d6843a6f945527af92e5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Decomp, naming (OnePointCS, itemAction, blure, wall/floor types) (#7007)</title>
<updated>2026-07-31T16:56:30+00:00</updated>
<author>
<name>djevangelia</name>
<email>263709373+djevangelia@users.noreply.github.com</email>
</author>
<published>2026-07-31T16:56:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=5a57a0cbc3b644660852e95358737a9520f749f5'/>
<id>5a57a0cbc3b644660852e95358737a9520f749f5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't point free cam at sky coming out of crawlspace (#6920)</title>
<updated>2026-07-13T04:56:00+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>159546+serprex@users.noreply.github.com</email>
</author>
<published>2026-07-13T04:56:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=ff7eb482d4c8b2cab93b2123e231bcb64f285160'/>
<id>ff7eb482d4c8b2cab93b2123e231bcb64f285160</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>wire decomp static savestates with macros (#6904)</title>
<updated>2026-07-12T15:09:47+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>159546+serprex@users.noreply.github.com</email>
</author>
<published>2026-07-12T15:09:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=c94ae8ccf379267946568ca2c448ba4fad25987a'/>
<id>c94ae8ccf379267946568ca2c448ba4fad25987a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Decomp pull, some `z_player` and global changes (#6908)</title>
<updated>2026-07-12T14:59:10+00:00</updated>
<author>
<name>djevangelia</name>
<email>263709373+djevangelia@users.noreply.github.com</email>
</author>
<published>2026-07-12T14:59:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=1003c462a886e6046071865d2091c6e742a2f4b7'/>
<id>1003c462a886e6046071865d2091c6e742a2f4b7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Bugfix, child Hookshot first person in Hylia lab (#6847)</title>
<updated>2026-07-08T19:58:24+00:00</updated>
<author>
<name>djevangelia</name>
<email>263709373+djevangelia@users.noreply.github.com</email>
</author>
<published>2026-07-08T19:58:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=73df35c6ab50d5fbec57ae2fb154eb89c7bc7ff1'/>
<id>73df35c6ab50d5fbec57ae2fb154eb89c7bc7ff1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>pull decomp changes: actor functions, z_en_horse.c (#6877)</title>
<updated>2026-07-07T01:51:44+00:00</updated>
<author>
<name>Philip Dubé</name>
<email>159546+serprex@users.noreply.github.com</email>
</author>
<published>2026-07-07T01:51:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=5cf03a4cdadefe31d81cd324299ff5e0dc436748'/>
<id>5cf03a4cdadefe31d81cd324299ff5e0dc436748</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix: free look continues from forced view when leaving a fixed camera (#4953) (#6808)</title>
<updated>2026-06-24T16:24:19+00:00</updated>
<author>
<name>David Racine</name>
<email>bass_dr@hotmail.com</email>
</author>
<published>2026-06-24T16:24:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=8cf4ff5f141c78910f64d49213125fd661a559d2'/>
<id>8cf4ff5f141c78910f64d49213125fd661a559d2</id>
<content type='text'>
When a scene-forced/fixed camera (e.g. the Spirit Temple boulder-room
alcoves, CAM_SET_PREREND_FIXED / Camera_Fixed3) drives the view, the Free
Look angles in play-&gt;camX/camY are left untouched while manualCamera stays
set. On exit, Camera_Free resumed from those stale pre-alcove angles, so
the camera snapped/reversed instead of following the player out.

This does NOT change the forced-camera behavior: the alcove still clamps
exactly as the game intends. It only fixes the hand-off back to Free Look:
when Camera_Free resumes after another camera function drove the previous
frame (detected via a frame-number gap), the free-look yaw/pitch are
re-seeded from the camera's current orientation so the view continues from
where it was left.

Co-authored-by: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a scene-forced/fixed camera (e.g. the Spirit Temple boulder-room
alcoves, CAM_SET_PREREND_FIXED / Camera_Fixed3) drives the view, the Free
Look angles in play-&gt;camX/camY are left untouched while manualCamera stays
set. On exit, Camera_Free resumed from those stale pre-alcove angles, so
the camera snapped/reversed instead of following the player out.

This does NOT change the forced-camera behavior: the alcove still clamps
exactly as the game intends. It only fixes the hand-off back to Free Look:
when Camera_Free resumes after another camera function drove the previous
frame (detected via a frame-number gap), the free-look yaw/pitch are
re-seeded from the camera's current orientation so the view continues from
where it was left.

Co-authored-by: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>fix: free look releases the door peek camera (#6756)</title>
<updated>2026-06-19T13:58:12+00:00</updated>
<author>
<name>David Racine</name>
<email>bass_dr@hotmail.com</email>
</author>
<published>2026-06-19T13:58:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/Shipwright/commit/?id=497d34570b16e195665dcdf626cf187f0a705708'/>
<id>497d34570b16e195665dcdf626cf187f0a705708</id>
<content type='text'>
* fix(camera): let free look release the door peek camera

After walking through a door, the door camera (CAM_SET_DOORC) held the view and
only handed control back once the player moved or pressed a button, so the right
stick did nothing until then. With free look the camera appeared frozen after
every door.

Treat right-stick movement as a release condition too, using the same stick
threshold as free-look activation.

* refactor(camera): move door-cam free-look release to a VB_SHOULD hook

Reimplements the door peek camera free-look release as a vanilla-behavior
hook instead of inline logic in z_camera.c, keeping the decomp file close
to upstream.

- Add VB_RELEASE_DOORC_CAMERA wrapping the existing Camera_Special9 release
  condition; the vanilla button/xzSpeed expression is left untouched.
- Move the right-stick / free-look threshold logic into a new enhancement,
  FreeLookDoorCamRelease.cpp, registered with COND_VB_SHOULD and gated on
  FreeLook.Enabled so the hook only exists while Free Look is on.

Behavior is unchanged from the previous fix; this only relocates the logic.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* fix(camera): let free look release the door peek camera

After walking through a door, the door camera (CAM_SET_DOORC) held the view and
only handed control back once the player moved or pressed a button, so the right
stick did nothing until then. With free look the camera appeared frozen after
every door.

Treat right-stick movement as a release condition too, using the same stick
threshold as free-look activation.

* refactor(camera): move door-cam free-look release to a VB_SHOULD hook

Reimplements the door peek camera free-look release as a vanilla-behavior
hook instead of inline logic in z_camera.c, keeping the decomp file close
to upstream.

- Add VB_RELEASE_DOORC_CAMERA wrapping the existing Camera_Special9 release
  condition; the vanilla button/xzSpeed expression is left untouched.
- Move the right-stick / free-look threshold logic into a new enhancement,
  FreeLookDoorCamRelease.cpp, registered with COND_VB_SHOULD and gated on
  FreeLook.Enabled so the hook only exists while Free Look is on.

Behavior is unchanged from the previous fix; this only relocates the logic.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;</pre>
</div>
</content>
</entry>
</feed>
