<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ph, branch main</title>
<subtitle>Decompilation of The Legend of Zelda: Phantom Hourglass (NDS)</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/ph/'/>
<entry>
<title>Decompile Game_16 (#167)</title>
<updated>2026-05-23T15:10:58+00:00</updated>
<author>
<name>Aurel</name>
<email>285191559+0Aurel@users.noreply.github.com</email>
</author>
<published>2026-05-23T15:10:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/ph/commit/?id=51640eb100522a3986779599f057d72c8cb9e42e'/>
<id>51640eb100522a3986779599f057d72c8cb9e42e</id>
<content type='text'>
* Game_16 OK

* Remove unnecessary FadeControl constructor definition

* Define HW_RESET_PARAMETER_BUF macro to replace hardcoded address

* Refactor Game constructor to use proper C++ initialization

Address Yanis' review comments:
- Make Game::func_0202cf44 static with Game* parameter to allow
  passing as callback pointer
- Replace raw mUnk_00c array with Game_0c class containing constructor
- Add Game_0c constructor with inline initialization calling func_ov016_0211fab8
- Add FadeControl_Derived1 class for mFadeControl member
- Use C++ initializer list in Game constructor for mModeId, mPrevModeId,
  mMode, mUnk_00c, and mFadeControl

* Fix Game constructor and FadeControl initialization

- Use PAD macro in Game_0c instead of unk8 pad[]
- Pass 'this' instead of 'pad' to func_ov016_0211fab8
- Add FadeControl constructor that calls _ZN11FadeControlC2Ev
- FadeControl_Derived1 now uses empty constructor (base class ctor called automatically)
- Update mUnk_00c.pad to mUnk_00c.pad_0x00 (PAD macro creates named member)
- Add types.h include to nds/system.h

* Remove explicit call to mangled constructor symbol

- Removed _ZN11FadeControlC2Ev call from FadeControl constructor
- FadeControl now has an empty constructor (called automatically by derived classes)
- FadeControl_Derived1 uses empty constructor which calls base class ctor

* Update symbols.txt for func_0202cf44 signature change

Changed mangled name from _ZN4Game13func_0202cf44Ev to
_ZN4Game13func_0202cf44EPS_ to reflect the function becoming
static with a Game* parameter.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Game_16 OK

* Remove unnecessary FadeControl constructor definition

* Define HW_RESET_PARAMETER_BUF macro to replace hardcoded address

* Refactor Game constructor to use proper C++ initialization

Address Yanis' review comments:
- Make Game::func_0202cf44 static with Game* parameter to allow
  passing as callback pointer
- Replace raw mUnk_00c array with Game_0c class containing constructor
- Add Game_0c constructor with inline initialization calling func_ov016_0211fab8
- Add FadeControl_Derived1 class for mFadeControl member
- Use C++ initializer list in Game constructor for mModeId, mPrevModeId,
  mMode, mUnk_00c, and mFadeControl

* Fix Game constructor and FadeControl initialization

- Use PAD macro in Game_0c instead of unk8 pad[]
- Pass 'this' instead of 'pad' to func_ov016_0211fab8
- Add FadeControl constructor that calls _ZN11FadeControlC2Ev
- FadeControl_Derived1 now uses empty constructor (base class ctor called automatically)
- Update mUnk_00c.pad to mUnk_00c.pad_0x00 (PAD macro creates named member)
- Add types.h include to nds/system.h

* Remove explicit call to mangled constructor symbol

- Removed _ZN11FadeControlC2Ev call from FadeControl constructor
- FadeControl now has an empty constructor (called automatically by derived classes)
- FadeControl_Derived1 uses empty constructor which calls base class ctor

* Update symbols.txt for func_0202cf44 signature change

Changed mangled name from _ZN4Game13func_0202cf44Ev to
_ZN4Game13func_0202cf44EPS_ to reflect the function becoming
static with a Game* parameter.</pre>
</div>
</content>
</entry>
<entry>
<title>ActorItemSeller OK (#164)</title>
<updated>2026-05-12T18:50:44+00:00</updated>
<author>
<name>Aetias</name>
<email>144526980+AetiasHax@users.noreply.github.com</email>
</author>
<published>2026-05-12T18:50:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/ph/commit/?id=0bb7400136dd84c00abdaf96c5dbdb63c02f836f'/>
<id>0bb7400136dd84c00abdaf96c5dbdb63c02f836f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ActorItemSellerBase OK (#163)</title>
<updated>2026-05-11T21:32:28+00:00</updated>
<author>
<name>Aetias</name>
<email>144526980+AetiasHax@users.noreply.github.com</email>
</author>
<published>2026-05-11T21:32:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/ph/commit/?id=1570b7d2d63aed0a77fc2077618b766eebaba56e'/>
<id>1570b7d2d63aed0a77fc2077618b766eebaba56e</id>
<content type='text'>
* ActorItemSellerBase OK

* Fix broken matches</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* ActorItemSellerBase OK

* Fix broken matches</pre>
</div>
</content>
</entry>
<entry>
<title>ActorCharacter OK (#162)</title>
<updated>2026-05-11T18:34:17+00:00</updated>
<author>
<name>Aetias</name>
<email>144526980+AetiasHax@users.noreply.github.com</email>
</author>
<published>2026-05-11T18:34:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/ph/commit/?id=e704ec994219540b71da323a61ffa930f80ce492'/>
<id>e704ec994219540b71da323a61ffa930f80ce492</id>
<content type='text'>
* ActorCharacter 93%

* ActorCharacter 98%

* ActorCharacter OK

* Fix broken matches</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* ActorCharacter 93%

* ActorCharacter 98%

* ActorCharacter OK

* Fix broken matches</pre>
</div>
</content>
</entry>
<entry>
<title>ActorCharacterBase OK (#161)</title>
<updated>2026-05-09T14:31:17+00:00</updated>
<author>
<name>Aetias</name>
<email>144526980+AetiasHax@users.noreply.github.com</email>
</author>
<published>2026-05-09T14:31:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/ph/commit/?id=d02c870d1dbe8c9b5e8b3acbb3b5bfff53ad8d03'/>
<id>d02c870d1dbe8c9b5e8b3acbb3b5bfff53ad8d03</id>
<content type='text'>
* ActorCharacterBase OK

* Fix broken matches</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* ActorCharacterBase OK

* Fix broken matches</pre>
</div>
</content>
</entry>
<entry>
<title>Delink character actor base classes and shop keeper actors (#152)</title>
<updated>2026-05-09T10:36:22+00:00</updated>
<author>
<name>Aetias</name>
<email>144526980+AetiasHax@users.noreply.github.com</email>
</author>
<published>2026-05-09T10:36:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/ph/commit/?id=e9ffe114a97fd3bf563a8c346f2ef2dc5e88f9fd'/>
<id>e9ffe114a97fd3bf563a8c346f2ef2dc5e88f9fd</id>
<content type='text'>
* Delink .text for ActorItemSeller, ActorBeedle, ActorTetra

* Delink .text for ActorCharacterBase, ActorCharacter, ActorGenericCharacter

* Define classes ActorCharacterBase, ActorCharacter, ActorGenericCharacter

* Don't define `override` macro during intellisense/clangd

* Define symbols for ActorCharacter, ActorCharacterBase, ActorGenericCharacter

* Define classes and symbols for ActorItemSeller, ActorBeedle, ActorTetra

* Fix duplicate symbol</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Delink .text for ActorItemSeller, ActorBeedle, ActorTetra

* Delink .text for ActorCharacterBase, ActorCharacter, ActorGenericCharacter

* Define classes ActorCharacterBase, ActorCharacter, ActorGenericCharacter

* Don't define `override` macro during intellisense/clangd

* Define symbols for ActorCharacter, ActorCharacterBase, ActorGenericCharacter

* Define classes and symbols for ActorItemSeller, ActorBeedle, ActorTetra

* Fix duplicate symbol</pre>
</div>
</content>
</entry>
<entry>
<title>ActorShopItem 98% (#151)</title>
<updated>2026-05-04T20:07:42+00:00</updated>
<author>
<name>Aetias</name>
<email>144526980+AetiasHax@users.noreply.github.com</email>
</author>
<published>2026-05-04T20:07:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/ph/commit/?id=b44496319d3027a625fcf876cf22e467720355df'/>
<id>b44496319d3027a625fcf876cf22e467720355df</id>
<content type='text'>
* ActorShopItem 93%

* Fix build

* Add missing symbols to usa

* Document BMG message ID functions

* Create bmg.py for inspecting BMG files

* ActorShopItem 98%

* Match func_ov031_0217dfec

* Port reloc changes to usa

* Make `ModelRender::GetLcdcAddress` non-const</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* ActorShopItem 93%

* Fix build

* Add missing symbols to usa

* Document BMG message ID functions

* Create bmg.py for inspecting BMG files

* ActorShopItem 98%

* Match func_ov031_0217dfec

* Port reloc changes to usa

* Make `ModelRender::GetLcdcAddress` non-const</pre>
</div>
</content>
</entry>
<entry>
<title>Set up clangd (#148)</title>
<updated>2026-04-18T08:50:01+00:00</updated>
<author>
<name>Aetias</name>
<email>144526980+AetiasHax@users.noreply.github.com</email>
</author>
<published>2026-04-18T08:50:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/ph/commit/?id=fe6681a298f089c5bbbee077ad9c06dc801df476'/>
<id>fe6681a298f089c5bbbee077ad9c06dc801df476</id>
<content type='text'>
* Set up clangd

* configure.py: Specify Generator type arguments</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Set up clangd

* configure.py: Specify Generator type arguments</pre>
</div>
</content>
</entry>
<entry>
<title>Delink ActorShopItem.cpp (#147)</title>
<updated>2026-04-16T21:10:14+00:00</updated>
<author>
<name>Aetias</name>
<email>144526980+AetiasHax@users.noreply.github.com</email>
</author>
<published>2026-04-16T21:10:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/ph/commit/?id=38e9378f8f4bc465a09305e5021ead2eb89afb2b'/>
<id>38e9378f8f4bc465a09305e5021ead2eb89afb2b</id>
<content type='text'>
* Make types compatible with dsd-ghidra typesync

* Update actors.md

* Update docs

* Delink ActorShopItem.cpp</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Make types compatible with dsd-ghidra typesync

* Update actors.md

* Update docs

* Delink ActorShopItem.cpp</pre>
</div>
</content>
</entry>
<entry>
<title>Update dsd to v0.11.0 (#146)</title>
<updated>2026-04-16T18:56:09+00:00</updated>
<author>
<name>Aetias</name>
<email>144526980+AetiasHax@users.noreply.github.com</email>
</author>
<published>2026-04-16T18:56:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/ph/commit/?id=81f4540e6c2e4b80709f6837298b27929e6a4061'/>
<id>81f4540e6c2e4b80709f6837298b27929e6a4061</id>
<content type='text'>
* Update dsd to v0.11.0

* Remove auto-generated `data(byte[256])` symbols
As per the dsd v0.10.2 migration guide

* Rename .dtcm to .bss
As per the dsd v0.11.0 migration guide

* `dsd fix ctor-zero`
As per the dsd v0.11.0 migration guide

* Fix usa build</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Update dsd to v0.11.0

* Remove auto-generated `data(byte[256])` symbols
As per the dsd v0.10.2 migration guide

* Rename .dtcm to .bss
As per the dsd v0.11.0 migration guide

* `dsd fix ctor-zero`
As per the dsd v0.11.0 migration guide

* Fix usa build</pre>
</div>
</content>
</entry>
</feed>
