Add item and action tooltip mappings#1891
Open
lokinmodar wants to merge 7 commits into
Open
Conversation
lokinmodar
marked this pull request as ready for review
July 22, 2026 15:09
lokinmodar
marked this pull request as draft
July 22, 2026 15:14
Author
|
The API-compat check correctly flags the The reason for changing it was that What representation would you prefer for this patch window?
Happy to update the PR in the direction that best fits the project's compatibility policy. |
lokinmodar
marked this pull request as ready for review
July 22, 2026 15:22
Contributor
Breaking ChangesMember exists in left but not in rightFFXIVClientStructs.FFXIV.Client.UI.Agent: 1AgentItemDetail: 1
|
Collaborator
|
at least have the decency to disclose the whole PR was created by vibes |
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.
Summary
Adds the item and action tooltip mappings used by the corresponding UI agents and addons.
AgentItemDetail.HandleItemHoverandAgentItemDetail.OnItemHovered.AgentActionDetail.HandleActionHoverand records the fields it initializes.ida/ffxiv_structs.ymlfrom the updated layouts.This is intentionally a draft while the RE evidence gets a second set of eyes.
AgentItemDetailHandleItemHoverhas a unique direct match at RVA0x1036950. Its final explicit argument is read from the stack and stored withmov dword [rbx + 0x128], eax(VA0x1410369A1).Flag1is therefore mapped as auint, and the argument is namedflag1rather than left as an unknown value.OnItemHoveredis added from its own direct match at RVA0x1038DC0.AgentActionDetailThe existing
E8signature has one call-site match and resolves to theHandleActionHovertarget at RVA0xEE1F80. The method initializes the existing action identifiers and the confirmed fields at0x4C,0x50,0x54,0x68, and0x6C; names remainUnk*where static analysis only establishes storage and width.Addons
AddonItemDetail.GenerateTooltipcalls the following helpers with the same(NumberArrayData*, StringArrayData*)pair:SetEquipRestrictionInfoat RVA0x12DAFB0SetSpiritbondInfoat RVA0x12DB330SetBonusesat RVA0x12DB850SetMateriaat RVA0x12DBB80The
AddonActionDetailnode fields are kept private and conservatively typed asAtkTextNode*orAtkResNode*only where their uses establish the node type.Evidence
The signatures above each matched exactly once in the local
ffxiv_dx11.exeused for this pass:4236E770E673150E85F8D10BEAB2FC4834C82F86AAB8A555A9175439FC906A6DFor the
E8action-detail signature, the call-site and relative target are treated separately; the wrapper remains a member-function mapping for the resolved target.Methodology
This work followed the Dalamud reverse-engineering guidelines and combined static signature analysis, disassembly, existing ClientStructs/IDA metadata, layout and API validation, and limited read-only runtime corroboration. Runtime observations were complementary; ABI-facing claims were based on corroborating static evidence and validation.
Validation
dotnet restore .\\FFXIVClientStructs.slnxdotnet build .\\FFXIVClientStructs.slnx --no-restoredotnet format .\\FFXIVClientStructs.slnx --verify-no-changesdotnet run --project .\\CExporter\\CExporter.csproj -c Release -- --no-writedotnet run --project .\\CExporter\\CExporter.csproj -c Releaseida/errors.txtwas empty after the write-mode export.Language assistance
Codex (an LLM) was used to help translate, organize, and edit the English wording in the documentation and this PR description. It was not used to establish offsets, sizes, signatures, layouts, or other ABI details.
The reverse-engineering work, validation, and all technical claims were independently verified by the author, who remains responsible for the technical accuracy of this PR.