Skip to content

d_t_mass_obj 99%#294

Open
lepelog wants to merge 5 commits intozeldaret:mainfrom
lepelog:d_t_mass_obj
Open

d_t_mass_obj 99%#294
lepelog wants to merge 5 commits intozeldaret:mainfrom
lepelog:d_t_mass_obj

Conversation

@lepelog
Copy link
Collaborator

@lepelog lepelog commented Jan 14, 2026

No description provided.

@decomp-dev
Copy link

decomp-dev bot commented Jan 14, 2026

Report for SOUE01 (62fc066 - 3c3585e)

📈 Matched code: 23.85% (+0.06%, +7844 bytes)
Total data: 3034888 bytes (-4 bytes)
📈 Matched data: 14.03% (+0.00%, +28 bytes)

✅ 43 new matches
Unit Item Bytes Before After
main/d/tg/d_t_mass_object GrassModelData::draw(float, float, nw4r::math::MTX34*) +1048 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObj_c::initializeBox(GrassModel*, mVec3_c*, mVec3_c*, int, mMtx_c*, int, unsigned long, unsigned char, int, long, unsigned char, float) +608 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObj_c::initializeCircle(GrassModel*, mVec3_c*, mVec3_c*, long, mMtx_c*, long, unsigned long, unsigned char, int, long, unsigned char, float) +592 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObjInstance::checkForHit(GrassModel*, GrassModelData*, unsigned short) +524 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObjInstance::getDrawMatrix(mMtx_c*) +492 0.00% 100.00%
main/d/tg/d_t_mass_object GrassModelData::update(GrassModel*) +468 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObjTransform::update() +336 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObj_c::getCurrentStageGrassSubtype() +292 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObj_c::actorExecute() +236 0.00% 100.00%
main/d/tg/d_t_mass_object GrassModel::update() +216 0.00% 100.00%
main/d/tg/d_t_mass_object GrassModelData::unloadRoom(GrassModel*, int) +208 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObjInstance::handleTimeshiftZone() +200 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObjInstance::isHidden(float, float) +188 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObj_c::doDelete() +180 0.00% 100.00%
main/d/tg/d_t_mass_object GrassModel::remove() +180 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObjTransform::dTgMassObjTransform() +160 0.00% 100.00%
main/d/tg/d_t_mass_object GrassModel::addToRoom(unsigned long, long, dTgMassObjInstance*) +148 0.00% 100.00%
main/d/tg/d_t_mass_object GrassModelData::tryCreateLinkedLists(long, EGG::Heap*) +132 0.00% 100.00%
main/d/tg/d_t_mass_object GrassModel::draw() +128 0.00% 100.00%
main/d/tg/d_t_mass_object GrassModel::~GrassModel() +124 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObj_c::draw() +116 0.00% 100.00%
main/d/tg/d_t_mass_object GrassModel::unloadRoom(unsigned short) +116 0.00% 100.00%
main/d/tg/d_t_mass_object GrassModelData::initRes(nw4r::g3d::ResMat, nw4r::g3d::ResShp) +100 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObj_c::unloadRoom(unsigned short) +96 0.00% 100.00%
main/d/tg/d_t_mass_object GrassModelData::~GrassModelData() +96 0.00% 100.00%
main/d/tg/d_t_mass_object GrassModelData::addToRoom(long, dTgMassObjInstance*) +96 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObj_c::~dTgMassObj_c() +92 0.00% 100.00%
main/d/tg/d_t_mass_object GrassModel::addToFreeInstances(dTgMassObjInstance*) +88 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObj_c_classInit() +76 0.00% 100.00%
main/d/tg/d_t_mass_object dTgMassObjInstance::releaseDynamicTransform(GrassModel*) +72 0.00% 100.00%

...and 13 more new matches

📈 11 improvements in unmatched items
Unit Item Bytes Before After
main/d/tg/d_t_mass_object dTgMassObjInstance::checkForHit(unsigned long, dCcMassS_HitInf&, dAcObjBase_c*, GrassModel*, GrassModelData*, unsigned long) +4115 0.00% 99.99%
main/d/tg/d_t_mass_object dTgMassObj_c::actorPostCreate() +2123 0.00% 99.23%
main/d/tg/d_t_mass_object dTgMassObjInstance::FUN_80278c70(unsigned long, dCcMassS_HitInf&, dAcBase_c*, GrassModel*) +1437 0.00% 99.81%
main/d/tg/d_t_mass_object GrassModel::setModelInfo(float, float, int, long, unsigned short, unsigned short, int, unsigned char, long, unsigned long, mHeapAllocator_c*) +962 0.00% 99.42%
main/d/tg/d_t_mass_object dTgMassObjInstance::handleLinkSpinAttack(GrassModel*) +913 0.00% 99.69%
main/d/tg/d_t_mass_object GrassModel::spawnSingleGrass(int, unsigned short, mVec3_c*, unsigned short, long, int, int, long, unsigned char) +642 0.00% 99.20%
main/d/tg/d_t_mass_object .data +349 0.00% 87.34%
main/d/tg/d_t_mass_object .rodata +216 0.00% 77.43%
main/d/tg/d_t_mass_object GrassModel::aquireTransform() +213 0.00% 95.36%
main/d/tg/d_t_mass_object GrassModel::releaseTransform(dTgMassObjTransform*) +177 0.00% 98.56%
main/d/tg/d_t_mass_object GrassModelData::removeFromRoom(long, dTgMassObjInstance*) +98 0.00% 98.80%

}
}

// matches besides data
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's also a regalloc problem...

Adding the data splits should make data match?

Copy link
Collaborator

@elijah-thomas774 elijah-thomas774 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like clang-format wasnt ran either

}
}
dEmitterBase_c * ret;
switch (mMassObjSubtype) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PARTICLE_RESOURCE_ID_MAPPING_120_ (ResID: 0x128) -> Light Blue-Green with yellow (normal grass)
PARTICLE_RESOURCE_ID_MAPPING_121_ (ResID: 0x129) -> Dead Shrub
PARTICLE_RESOURCE_ID_MAPPING_122_ (ResID: 0x12A) -> Dead Grass (Yellow - Lanayru)
PARTICLE_RESOURCE_ID_MAPPING_123_ (ResID: 0x12B) -> Vibrant Blue-green
PARTICLE_RESOURCE_ID_MAPPING_124_ (ResID: 0x12B) -> White with hints of purple
PARTICLE_RESOURCE_ID_MAPPING_687_ (ResID: 0x726) -> Vibrant Blue-green
PARTICLE_RESOURCE_ID_MAPPING_800_ (ResID: 0x830) -> White with hints of purple
PARTICLE_RESOURCE_ID_MAPPING_838_ (ResID: 0x880) -> idk (Flower based on shp emitter)
PARTICLE_RESOURCE_ID_MAPPING_839_ (ResID: 0x881) -> idk (Flower based on shp emitter)
PARTICLE_RESOURCE_ID_MAPPING_840_ (ResID: 0x882) -> idk (Flower based on shp emitter)
PARTICLE_RESOURCE_ID_MAPPING_841_ (ResID: 0x883) -> idk (Flower based on shp emitter)

u16 getSpecificAttackDirection() const {
s32 getSpecificAttackDirection() const {
return mSpecificAttackDirection;
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like this change broke dAcBlastboss::checkForCounter... we don't know if inlines were used at all or if they were used inconsistently so we can also accept a duplicated inline for now.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just added casts for now

Comment on lines 877 to 878
if (link->getSpecificAttackDirection() == 1 || link->getSpecificAttackDirection() == 0x10 ||
link->getSpecificAttackDirection() == 0x100) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had added an enum for this (also below)

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.

3 participants