Conversation
A small function that would normally inline stays a call once it is nested more than three inline levels deep. Found while matching GC2D/SelectShine2. Flagged for human review: the rule may not generalize. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Fills in the empty SelectShine2.cpp and rewrites the header stub. Matching: ~TSelectShine, startClose, startIncrease, startDecrease, the manager ctor and dtor, __sinit, TVec2::sub and TVec3::set. Close: TSelectShine ctor (99.8%), move (96.7%), initData (96.2%), perform (92.5%). makeNewPosition is an empty stub; only its size is known. Header fields are named by offset; the old mRumbleOption[8] was wrong and is now mShines[8], with SelectMenu.cpp updated to match. getShinePosition, getShineAngle and bezier are fabricated inline layers, and startIncrease and startDecrease pad their stack frames with unused TVec3 locals. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Collaborator
|
AI PRs not polished by a programmer are not generally accepted. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fills in the previously empty SelectShine2.cpp and rewrites the header stub.
Nine functions match exactly; four are close but not byte-exact yet.
Function status (GMSP01):
TSelectShineManager ctor and dtor, __sinit, TVec2::sub, TVec3::set
TSelectShineManager::initData 96.2%, TSelectShineManager::perform 92.5%
known from the map.
Header changes:
wrong; it is now TSelectShine* mShines[8]. SelectMenu.cpp is updated at
its 5 use sites (mShines[...]->mIsSpinning).
Decisions worth a look. These are guesses to reach the target's codegen, and
none of the names are confirmed against the original source:
one inline layer so JMASSin/JMASCos and TVec3::set / TVec2::sub stay
out-of-line calls in perform, as in the target. See the new tip in
docs/AGENT_MATCHING_TIPS.md.
a quadratic Bezier.
reproduce the target's 0x18 extra stack bytes.
which the target does not do.
dereferences mShines[mCurrent] without a null check. Both follow the target.
Remaining mismatches: register order in move, extra TVec3 copies and larger
stack frames in initData and perform.
docs/AGENT_MATCHING_TIPS.md: adds a section on small functions staying calls
when nested more than three inline levels deep. This is flagged "Needs human
review" as AGENTS.md asks; it may not generalize, and the section can be
dropped without affecting the code.
Checks:
Note: open PR #189 also edits SelectMenu.cpp and still uses mRumbleOption, so
whichever lands second will need to reconcile the rename.
Generated with Claude Code