REDIVIVUS

Proposals / #789

Type Mac roster position input and coordinate outputs

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

Ghidra vmac 110 · 9528519

Mac ROSTER_GetPosition still has int pRoster and undefined4* outputs. Its complete40-byte body reads existing roster DWORD nX+40/nY+44, or writes0 to both outputs fornull roster. Type pRoster D2RosterStrc* and pX/pY int32_t*, preserving all three selected names, exact Stack4/8/0xc slots, cdecl and existing undefined return. Sole caller00099dbc supplies typed GetNextRosterPlayer provenance and two distinct four-byte frame addresses. It passes those same addresses to existing CoordsMapToScreen(int32_t*,int32_t*) then uses signed CDQ/IDIV. Full target/caller/producer/converter native memory(6018bytes) independently matches separate assembly; all4 PIC table entries and reaching definitions checked. EAX incidentally retains pY, unused before the next call: no void/pointer-return inference or prototype bypass. Current existing layouts/types agree; no names/shared-layout/arity/helper changes. Static original Mac database proof, no runtime/build claim.

Changes 3, applied together

  1. Retype variable mac 0x00075c97 Stack[0x4]

    typeint→D2RosterStrc *
  2. Retype variable mac 0x00075c97 Stack[0x8]

    typeundefined4 *→int32_t *
  3. Retype variable mac 0x00075c97 Stack[0xc]

    typeundefined4 *→int32_t *