<feed xmlns='http://www.w3.org/2005/Atom'>
<title>botw/src/Game/Actor, branch master</title>
<subtitle>Decompilation of The Legend of Zelda: Breath of the Wild (Switch v1.5.0)</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/botw/'/>
<entry>
<title>uking: name AutoPlacement::reset and AutoPlacementMgr creator functions</title>
<updated>2026-10-18T23:52:18+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@leolam.fr</email>
</author>
<published>2026-10-15T21:56:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/botw/commit/?id=a955a9482b8c107f69e0bcff31a74ff20087f5b8'/>
<id>a955a9482b8c107f69e0bcff31a74ff20087f5b8</id>
<content type='text'>
The names come from the IDB. AddAutoPlacementCreator registers its actor
with addCreator on enter and unregisters it with removeCreator on leave.

(AI assisted using Claude Opus 5.5)</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The names come from the IDB. AddAutoPlacementCreator registers its actor
with addCreator on enter and unregisters it with removeCreator on leave.

(AI assisted using Claude Opus 5.5)</pre>
</div>
</content>
</entry>
<entry>
<title>uking: fix class and function names</title>
<updated>2026-10-18T23:52:17+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@leolam.fr</email>
</author>
<published>2026-09-28T01:47:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/botw/commit/?id=0d0dc1141681156b83310b426eecbc81bbd2c49c'/>
<id>0d0dc1141681156b83310b426eecbc81bbd2c49c</id>
<content type='text'>
Wrong or placeholder class and function names (GameSceneSubsys12, Root4,
IceBlockMgr...) take the IDB names; for instance GameScene's *Reenter
handlers are actually *ReceiveMessage.

Also declares isStageSelectState in namespace uking in E3Mgr.cpp, since
it sits among the GameScene free functions.

(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Wrong or placeholder class and function names (GameSceneSubsys12, Root4,
IceBlockMgr...) take the IDB names; for instance GameScene's *Reenter
handlers are actually *ReceiveMessage.

Also declares isStageSelectState in namespace uking in E3Mgr.cpp, since
it sits among the GameScene free functions.

(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)</pre>
</div>
</content>
</entry>
<entry>
<title>uking/act: replace placeholder and wrong names, fix classes</title>
<updated>2026-10-18T23:52:14+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@leolam.fr</email>
</author>
<published>2026-09-28T01:47:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/botw/commit/?id=860cea704592bc25c18847d57f36b2e8c094a8db'/>
<id>860cea704592bc25c18847d57f36b2e8c094a8db</id>
<content type='text'>
Most rows replace placeholders (m&lt;N&gt;, x_N, nullsub_N, *Stuff). In the
IDB, the Actor job virtuals are named preCalc/postCalc after TotK's calc
stage names, and the Player virtuals after the GParamList fields they
read. Some real names turned out to be wrong too, e.g. Enemy::kill is
actually deleteAndCreateDropAndEmit.

Rows move into uking::act, PlayerLinkBase/PlayerLink fold into
PlayerBase/Player and PlayerOrEnemy into CombatActor. Also renames
resetStuff and getMaxStaminaFromPlayerActor in the headers to
resetDamageInfo and getMaxStamina to match.

Also takes the IDB's names for some unnamed functions, mostly helper
class members (IK controllers, Guardian parts, message receivers), and
for other placeholders (x_N, nullsub_N, *Stuff). Some CarriedData rows
move to the IDB's CarriedDataConstraint class.

(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Most rows replace placeholders (m&lt;N&gt;, x_N, nullsub_N, *Stuff). In the
IDB, the Actor job virtuals are named preCalc/postCalc after TotK's calc
stage names, and the Player virtuals after the GParamList fields they
read. Some real names turned out to be wrong too, e.g. Enemy::kill is
actually deleteAndCreateDropAndEmit.

Rows move into uking::act, PlayerLinkBase/PlayerLink fold into
PlayerBase/Player and PlayerOrEnemy into CombatActor. Also renames
resetStuff and getMaxStaminaFromPlayerActor in the headers to
resetDamageInfo and getMaxStamina to match.

Also takes the IDB's names for some unnamed functions, mostly helper
class members (IK controllers, Guardian parts, message receivers), and
for other placeholders (x_N, nullsub_N, *Stuff). Some CarriedData rows
move to the IDB's CarriedDataConstraint class.

(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)</pre>
</div>
</content>
</entry>
<entry>
<title>data: fix class names in uking::act</title>
<updated>2026-10-18T23:52:13+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@leolam.fr</email>
</author>
<published>2026-09-28T01:47:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/botw/commit/?id=fa8b5962fe7f9f8d66e6c95f4bfcbd071e4555ce'/>
<id>fa8b5962fe7f9f8d66e6c95f4bfcbd071e4555ce</id>
<content type='text'>
Class names follow the IDB, e.g. PlayerOrEnemy is CombatActor and Root6
is CameraActorHolder. Some rows also take the IDB's function name, e.g.
Weapon::isWeaponType4 is isShield.

Also names ChemicalType's text table and updates a PlayerInfo comment
for the CombatActor rename.

(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Class names follow the IDB, e.g. PlayerOrEnemy is CombatActor and Root6
is CameraActorHolder. Some rows also take the IDB's function name, e.g.
Weapon::isWeaponType4 is isShield.

Also names ChemicalType's text table and updates a PlayerInfo comment
for the CombatActor rename.

(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)</pre>
</div>
</content>
</entry>
<entry>
<title>uking/scene: move the map getters to uking::StageInfo</title>
<updated>2026-10-15T21:56:22+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@leolam.fr</email>
</author>
<published>2026-10-15T21:56:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/botw/commit/?id=65ea3f7cddc8f87213bea3d3d8c9497d89aee5c5'/>
<id>65ea3f7cddc8f87213bea3d3d8c9497d89aee5c5</id>
<content type='text'>
They're linked before gameStageInfo.cpp's sinit with no other sinit
in between, so they belong to gameStageInfo, not gameScene, and become
StageInfo statics declared in gameStageInfo.h. Their GameScene owner
was a guess.

(AI assisted using Claude Opus 5.5)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
They're linked before gameStageInfo.cpp's sinit with no other sinit
in between, so they belong to gameStageInfo, not gameScene, and become
StageInfo statics declared in gameStageInfo.h. Their GameScene owner
was a guess.

(AI assisted using Claude Opus 5.5)
</pre>
</div>
</content>
</entry>
<entry>
<title>ksys, uking: move four definitions to match link order</title>
<updated>2026-10-14T23:59:46+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@leolam.fr</email>
</author>
<published>2026-10-13T08:39:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/botw/commit/?id=8eca2642b01591ccbfbee98e66181d8ad5982cd3'/>
<id>8eca2642b01591ccbfbee98e66181d8ad5982cd3</id>
<content type='text'>
calc_ goes before leave_ in ForceSetCameraPos and InWaterSelForkASPlay,
and RailRoute's dtor goes after getCheckPointName (an unnamed row
there is likely its D0).

BaseProcJobHandler's ctor is linked right before BaseProc's ctor, so it
moves into actBaseProc.cpp, and the class moves into actBaseProc.h so
that its declaration stays with its definition.

(AI assisted using Claude Opus 5.5)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
calc_ goes before leave_ in ForceSetCameraPos and InWaterSelForkASPlay,
and RailRoute's dtor goes after getCheckPointName (an unnamed row
there is likely its D0).

BaseProcJobHandler's ctor is linked right before BaseProc's ctor, so it
moves into actBaseProc.cpp, and the class moves into actBaseProc.h so
that its declaration stays with its definition.

(AI assisted using Claude Opus 5.5)
</pre>
</div>
</content>
</entry>
<entry>
<title>Name placeholder virtuals from their overrides</title>
<updated>2026-10-14T23:59:46+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@leolam.fr</email>
</author>
<published>2026-09-28T01:39:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/botw/commit/?id=05236e5a38097b198950669b353b14f31adf4322'/>
<id>05236e5a38097b198950669b353b14f31adf4322</id>
<content type='text'>
Each base class virtual is named after what its overrides do and how
callers use it, e.g. AttCheck::calcMtx (0x710108a614) is the virtual
that AttClient calls before testing its checks.

(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Each base class virtual is named after what its overrides do and how
callers use it, e.g. AttCheck::calcMtx (0x710108a614) is the virtual
that AttClient calls before testing its checks.

(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
</pre>
</div>
</content>
</entry>
<entry>
<title>Action, AI, Query: sort the source lists by file name</title>
<updated>2026-10-13T01:33:27+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@leolam.fr</email>
</author>
<published>2026-10-13T00:25:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/botw/commit/?id=d8535deac94084b0b3b651788b00aebeadc5ccc7'/>
<id>d8535deac94084b0b3b651788b00aebeadc5ccc7</id>
<content type='text'>
These objects are linked in case-insensitive file name order, but the
lists kept renamed files at their old positions, so the decomp linked
them out of order.

(AI assisted using Claude Opus 5.5)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These objects are linked in case-insensitive file name order, but the
lists kept renamed files at their old positions, so the decomp linked
them out of order.

(AI assisted using Claude Opus 5.5)
</pre>
</div>
</content>
</entry>
<entry>
<title>ksys: move AS setting, RootAi and three others to match link order</title>
<updated>2026-10-13T01:33:27+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@leolam.fr</email>
</author>
<published>2026-09-28T01:39:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/botw/commit/?id=ea13bac74ad136aeb3dde81f07ccd62622be94ad'/>
<id>ea13bac74ad136aeb3dde81f07ccd62622be94ad</id>
<content type='text'>
Each file moves to where its code is linked, and namespaces follow the
new paths. ASSettingMgr is an unofficial name.

| Old | New |
|---|---|
| act::ASSetting (ActorSystem/actASSetting) | res::ASSettingMgr (Resource/Actor/resResourceASSettingMgr) |
| Resource/resResourceASSetting, Resource/Actor/resResourceASResourceExtension | Resource/Actor/resResourceASSetting |
| ksys::DebugFinder (System/DebugFinder) | ksys::act::DebugFinder (ActorSystem/actDebugFinder) |
| ActorSystem/LOD/actLodState | ActorSystem/actLodState |
| ActorSystem/actAiRoot | ActorSystem/aiRootAi |
| Map/mapStagePreActorCache | System/StagePreActorCache (ksys) |

(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Each file moves to where its code is linked, and namespaces follow the
new paths. ASSettingMgr is an unofficial name.

| Old | New |
|---|---|
| act::ASSetting (ActorSystem/actASSetting) | res::ASSettingMgr (Resource/Actor/resResourceASSettingMgr) |
| Resource/resResourceASSetting, Resource/Actor/resResourceASResourceExtension | Resource/Actor/resResourceASSetting |
| ksys::DebugFinder (System/DebugFinder) | ksys::act::DebugFinder (ActorSystem/actDebugFinder) |
| ActorSystem/LOD/actLodState | ActorSystem/actLodState |
| ActorSystem/actAiRoot | ActorSystem/aiRootAi |
| Map/mapStagePreActorCache | System/StagePreActorCache (ksys) |

(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
</pre>
</div>
</content>
</entry>
<entry>
<title>Move code to the TUs that match link order and rename files</title>
<updated>2026-10-12T23:53:08+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@leolam.fr</email>
</author>
<published>2026-09-28T01:39:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/botw/commit/?id=fa2b8b7d4738e5ee098fc105adc60e10356dd410'/>
<id>fa2b8b7d4738e5ee098fc105adc60e10356dd410</id>
<content type='text'>
Rename classes and files so that they sort where their code is linked,
and move code that is linked inside another TU into that TU's file.

| Old | New | TU start |
|---|---|---|
| ActorAreaInOutSendMessage | AreaInOutSendMessage | 0x710009fa64 |
| AreaTagAction | AreaActionBase | 0x7100e21e64 |
| sndResource.{h,cpp} | sndSound.{h,cpp} | |

| Code | From | To |
|---|---|---|
| SoundMgr | sndMgr.h | sndSound.h |
| PlayReport | PlayReportMgr.cpp | PlayReport.cpp |
| PlayReport::addPlayTimes, addPosition | PlayReportMgr.cpp | ProductReporter.cpp |

(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Rename classes and files so that they sort where their code is linked,
and move code that is linked inside another TU into that TU's file.

| Old | New | TU start |
|---|---|---|
| ActorAreaInOutSendMessage | AreaInOutSendMessage | 0x710009fa64 |
| AreaTagAction | AreaActionBase | 0x7100e21e64 |
| sndResource.{h,cpp} | sndSound.{h,cpp} | |

| Code | From | To |
|---|---|---|
| SoundMgr | sndMgr.h | sndSound.h |
| PlayReport | PlayReportMgr.cpp | PlayReport.cpp |
| PlayReport::addPlayTimes, addPosition | PlayReportMgr.cpp | ProductReporter.cpp |

(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
</pre>
</div>
</content>
</entry>
</feed>
