OdysseyDecomp icon indicating copy to clipboard operation
OdysseyDecomp copied to clipboard

Enemy: Implement `KaronWingStateHack`

Open german77 opened this issue 5 months ago β€’ 3 comments

I couldn't match the header. Seems like ghidra is hiding stuff from me and reading vectors from asm is hard. Besides that the rest is fully matching.

~~https://decomp.me/scratch/j6SPL~~ Fixed by Tomoeko. Thanks for the help


This change is Reviewable


Report for 1.0 (c9d013c - 3afec17)

πŸ“ˆ Matched code: 9.45% (+0.03%, +3920 bytes)

βœ… 27 new matches
Unit Function Bytes Before After
Enemy/KaronWingStateHack KaronWingStateHack::KaronWingStateHack(al::LiveActor*, al::ActorInitInfo const&, IUsePlayerHack**) +1348 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::exeWalk() +536 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::receiveMsg(al::SensorMsg const*, al::HitSensor*, al::HitSensor*) +340 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::exeWait() +240 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::appear() +204 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::exeLand() +172 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::control() +152 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::tryLanding() +144 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::kill() +136 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::exeWingFly() +132 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::attackSensor(al::HitSensor*, al::HitSensor*) +124 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::updateCollider() +100 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::tryFly() +72 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::updateBasePos() +60 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::~KaronWingStateHack() +36 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::resetFlyLimit(sead::Vector3<float> const&) +24 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::isEndCancel() const +16 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::isEndReset() const +16 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::isEndDamage() const +16 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::getPlayerCollider() const +8 0.00% 100.00%
Enemy/KaronWingStateHack non-virtual thunk to KaronWingStateHack::getPlayerCollider() const +8 0.00% 100.00%
Enemy/KaronWingStateHack (anonymous namespace)::HostTypeNrvWingFly::execute(al::NerveKeeper*) const +8 0.00% 100.00%
Enemy/KaronWingStateHack (anonymous namespace)::HostTypeNrvWalk::execute(al::NerveKeeper*) const +8 0.00% 100.00%
Enemy/KaronWingStateHack (anonymous namespace)::HostTypeNrvLand::execute(al::NerveKeeper*) const +8 0.00% 100.00%
Enemy/KaronWingStateHack (anonymous namespace)::HostTypeNrvCancel::execute(al::NerveKeeper*) const +4 0.00% 100.00%
Enemy/KaronWingStateHack (anonymous namespace)::HostTypeNrvReset::execute(al::NerveKeeper*) const +4 0.00% 100.00%
Enemy/KaronWingStateHack (anonymous namespace)::HostTypeNrvDamage::execute(al::NerveKeeper*) const +4 0.00% 100.00%

german77 avatar Jul 14 '25 16:07 german77

Report for 1.0 (5e5cd6f - 26a99a3)

πŸ“ˆ Matched code: 9.25% (+0.02%, +2580 bytes)

βœ… 28 new matches
Unit Function Bytes Before After
Enemy/KaronWingStateHack KaronWingStateHack::exeWalk() +536 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::receiveMsg(al::SensorMsg const*, al::HitSensor*, al::HitSensor*) +340 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::exeWait() +240 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::appear() +204 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::exeLand() +172 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::control() +152 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::tryLanding() +144 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::kill() +136 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::exeWingFly() +132 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::attackSensor(al::HitSensor*, al::HitSensor*) +124 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::updateCollider() +100 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::tryFly() +72 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::updateBasePos() +60 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::~KaronWingStateHack() +36 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::resetFlyLimit(sead::Vector3<float> const&) +24 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::isEndCancel() const +16 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::isEndReset() const +16 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::isEndDamage() const +16 0.00% 100.00%
Enemy/KaronWingStateHack KaronWingStateHack::getPlayerCollider() const +8 0.00% 100.00%
Enemy/KaronWingStateHack non-virtual thunk to KaronWingStateHack::getPlayerCollider() const +8 0.00% 100.00%
Enemy/KaronWingStateHack (anonymous namespace)::HostTypeNrvWingFly::execute(al::NerveKeeper*) const +8 0.00% 100.00%
Enemy/KaronWingStateHack (anonymous namespace)::HostTypeNrvWalk::execute(al::NerveKeeper*) const +8 0.00% 100.00%
Enemy/KaronWingStateHack (anonymous namespace)::HostTypeNrvLand::execute(al::NerveKeeper*) const +8 0.00% 100.00%
Enemy/KaronWingStateHack (anonymous namespace)::HostTypeNrvEndCancel::execute(al::NerveKeeper*) const +4 0.00% 100.00%
Enemy/KaronWingStateHack (anonymous namespace)::HostTypeNrvEndReset::execute(al::NerveKeeper*) const +4 0.00% 100.00%
Enemy/KaronWingStateHack (anonymous namespace)::HostTypeNrvEndDamage::execute(al::NerveKeeper*) const +4 0.00% 100.00%
Enemy/SenobiStateHack (anonymous namespace)::HostTypeNrvEndCancel::execute(al::NerveKeeper*) const +4 0.00% 100.00%
Enemy/SenobiStateHack (anonymous namespace)::HostTypeNrvEndReset::execute(al::NerveKeeper*) const +4 0.00% 100.00%
πŸ“ˆ 1 improvement in unmatched functions
Unit Function Bytes Before After
Enemy/KaronWingStateHack KaronWingStateHack::KaronWingStateHack(al::LiveActor*, al::ActorInitInfo const&, IUsePlayerHack**) +337 0.00% 25.00%

decomp-dev[bot] avatar Aug 20 '25 23:08 decomp-dev[bot]

Big improvements into the mismatch. I found a couple of similar implementations that share a lot in common but none is matching yet. Constructor https://decomp.me/scratch/xHzxT Variant V1 https://decomp.me/scratch/iLlt0 Variant V2 https://decomp.me/scratch/FeEy6

german77 avatar Oct 22 '25 04:10 german77

Fully implemented. Please review!

german77 avatar Oct 22 '25 16:10 german77