Enemy: Implement `KaronWingStateHack`
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
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% |
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% |
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
Fully implemented. Please review!