Skip to content

Conversation

@MB60893
Copy link
Contributor

@MB60893 MB60893 commented Jan 5, 2026

This is what I've managed to decompile for the StringObj class. I still have some work to do on matching other functions, but this at least sets up the basic class structure and a few key functions.

Creating this PR in response to another function @SwareJonge is currently working on decompiling so as to avoid merge conflicts.

This particular piece of code was lifted from an existing implementation of the Legend of Zelda: Skyward Sword decompilation project.

This function is just getNthLink() without the need to cast the object's type manually, as it's implied through the data type provided in the declaration via templates.
… the matrix class.

The `getYDirInline()` inline function is used the in `StringObj::calc()` function, and after a quick GitHub search I've seen a similar implementation for these inlines also exist in the [Super Mario Galaxy (Petari) Decomp](https://github.com/SMGCommunity/Petari/blob/33b64d162c02fc6e027c874a3a23216d6fb40376/libs/JSystem/include/JSystem/JGeometry/TMatrix.hpp#L211).
@decomp-dev
Copy link

decomp-dev bot commented Jan 5, 2026

Report for MarioClub_us (f87ed4d - 4c508c6)

📈 Matched code: 42.56% (+0.12%, +3872 bytes)
📈 Matched data: 22.55% (+0.01%, +96 bytes)

✅ 25 new matches
Unit Item Bytes Before After
main/Sato/StringObj StringNodeManager::doHeightCol() +616 0.00% 100.00%
main/Sato/StringObj StringNodeManager::calcBetweenNodePos(StringNode*, StringNode*, float, float) +484 0.00% 100.00%
main/Sato/StringObj StringNodeManager::StringNodeManager(unsigned char, float, bool, bool, unsigned char) +396 0.00% 100.00%
main/Sato/StringObj StringNodeManager::addNodeVel(unsigned long, JGeometry::TVec3<float>) +176 0.00% 100.00%
main/Sato/StringObj StringNodeManager::addNodePos(unsigned long, JGeometry::TVec3<float>) +176 0.00% 100.00%
main/Sato/StringObj StringNodeManager::doAirFricG(float, float) +172 0.00% 100.00%
main/Sato/StringObj StringNodeManager::getNodeVel(unsigned long, JGeometry::TVec3<float>*) +160 0.00% 100.00%
main/Sato/StringObj StringNodeManager::getNodePos(unsigned long, JGeometry::TVec3<float>*) +160 0.00% 100.00%
main/Sato/StringObj StringNodeManager::setNodeVel(unsigned long, JGeometry::TVec3<float>) +160 0.00% 100.00%
main/Sato/StringObj StringNodeManager::setNodePos(unsigned long, JGeometry::TVec3<float>) +160 0.00% 100.00%
main/Sato/StringObj StringNodeManager::setAllNodePos(const JGeometry::TVec3<float>&) +136 0.00% 100.00%
main/Sato/StringObj ExStringNodeManager::~ExStringNodeManager() +132 0.00% 100.00%
main/Sato/StringObj StringNode::StringNode() +128 0.00% 100.00%
main/Sato/StringObj StringObj::loadmodel(J3DModelData*) +128 0.00% 100.00%
main/Sato/StringObj StringNodeManager::~StringNodeManager() +116 0.00% 100.00%
main/Sato/StringObj StringNodeManager::calc() +108 0.00% 100.00%
main/Sato/StringObj StringObj::update() +104 0.00% 100.00%
main/Sato/StringObj StringNode::~StringNode() +88 0.00% 100.00%
main/Sato/StringObj StringObj::reset() +88 0.00% 100.00%
main/Sato/StringObj StringNodeManager::moveNodeAll() +76 0.00% 100.00%
main/Sato/StringObj StringObj::~StringObj() +72 0.00% 100.00%
main/Sato/StringObj .data +48 0.00% 100.00%
main/Sato/StringObj .rodata +48 0.00% 100.00%
main/Sato/StringObj ExStringNodeManager::setNodeLengthAll(float) +32 0.00% 100.00%
main/Sato/StringObj StringObj::createModel(JKRSolidHeap*, unsigned long) +4 0.00% 100.00%
📈 8 improvements in unmatched functions
Unit Item Bytes Before After
main/Sato/StringObj StringObj::drawSimpleModel(unsigned long, float(*)[4], J3DUClipper*, float(*)[4]) +335 0.00% 97.67%
main/Sato/StringObj StringObj::setCurrentViewNo(unsigned long) +270 0.00% 99.49%
main/Sato/StringObj .sdata2 +52 0.00% 82.57%
main/Sato/StringObj StringObj::StringObj(unsigned char, bool) +14 0.00% 2.44%
main/Sato/StringObj StringNodeManager::calcBetweenNodePosAll(float) +4 0.00% 2.44%
main/Sato/StringObj StringNodeManager::resetNodeAll(JGeometry::TVec3<float>*) +3 0.00% 1.72%
main/Sato/StringObj ExStringNodeManager::calcBetweenNodePosAll(float) +3 0.00% 0.43%
main/Sato/StringObj StringObj::calc() +3 0.00% 0.38%

@SwareJonge SwareJonge merged commit 2cc93b7 into doldecomp:main Jan 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants