feat: add Samus extender montage #22
No reviewers
Labels
No labels
area/contracts
area/documentation
area/observability
area/testing
good-first-slice
priority
p0
priority
p1
priority
p2
priority
p3
risk/legal
risk/security
status
blocked
type
epic
type
feature
type
spike
type
task
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LiveMindIO/libmelee!22
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/samus-extender-montage"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Grapple-tip telemetry
Standard Slippi item updates expose
Item.posfrom item offsets0x4Cand0x50. That position can identify theSAMUS_GRAPPLE_BEAMarticle, but it is not the simulated outer chain-tip position. Melee stores and advances the grapple as separate linkedItemLinkobjects; homing, gravity, walls, and chain bending update those link positions without copying the tip back intoItem.pos. As a result,GameState.projectilesis insufficient for reliable contact-timed latch input.Exact tip telemetry can be added through a custom Gecko payload or direct Dolphin memory reads using this NTSC 1.02 pointer path:
For a grounded extender, latch state
1means its A input remains available; it advances to2after the input is consumed. Until this telemetry is available, callers own latch timing and should invokegrab()heuristically or manually.Sources:
Recording/SendItemInfo.s, which emits item position fromItem + 0x4C/0x50itsamusgrapple.c, which stores the outer chain link insamusgrapple.x0itlinkhookshot.c, which updates individualItemLinktransformsTests
python test.py(333 tests)uvx ruff check melee/bot/techskill/extender.py melee/bot/techskill/__init__.py melee/bot/__init__.pyuvx ruff check test.py --ignore SIM117,B905git diff --checkView command line instructions
Manual merge helper
Use this merge commit message when completing the merge manually.
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.