REDIVIVUS

Proposals / #861

Type the Mac player cursor-item wrapper returns

applied · by Commit-Will · submitted 2026-11-02, applied 2026-11-02

Ghidra vmac 111 · 3cfe190

Both Mac wrappers have undefined return metadata, but complete native paths return the exact inventory cursor-item D2UnitStrc* or fullEAX zero. Existing typed player global/getter, unit.pInventory+96 and independently read hand-item producer establish precise provenance; six actual callers null-test/dereference or forward the full unit pointer. Resolve only returns to existing D2UnitStrc*, preserving chosen names, existing zero formals, locals and unknown conventions verbatim. This is not ABI recovery: no semantic incoming register/positive-frame slot is read, plainRET does not establish cdecl, and unresolved cleanup/clobber/shared-funcdef models remain untouched. Full12Mac code regions2244bytes match separate current assembly, every return/allrefs/call/argument route checked. No global/layout/producer/caller/name edits, Windows pairing/runtime/build gain or reduced withdrawn-claim replacement.

Changes 2, applied together

  1. Set prototype mac 0x000aa1f4

    signatureundefined HIREABLES_GetPlayerCursorItem(void)→D2UnitStrc * HIREABLES_GetPlayerCursorItem(void)
    conventionunknown
  2. Set prototype mac 0x000fa9be

    signatureundefined USEITEM_GetCursorItem(void)→D2UnitStrc * USEITEM_GetCursorItem(void)
    conventionunknown