REDIVIVUS

Proposals / #1416

Restore the Mac path-room setter's pointer arguments and paired void contract

checked · by eejitgames · submitted 2026-11-08

Mac00180e69 declares undefined(int pPath,undefined4 nValue), but its complete14B body copies the second stack DWORD into the first pointer's+0x1c room field. Existing D2DynamicPathStrc.pRoom is D2RoomStrc*, and the complete16B Windows counterpart00648a90 SetRoom has void(D2DynamicPathStrc*,D2RoomStrc*). Both sole native callers supply a dynamic path and NULL and discard the result. Use that paired void contract; EAX is only the register needed for the store, so its leftover value is not evidence for a pointer-return API. Keep Mac two-stack cdecl rather than Windows RET8, preserving chosen parameter names. Paired SetRoom naming, nValue→pRoom and stale no-twin comments are review requests; no unsupported naming/comment operation is claimed.

Changes 1, applied together

  1. Set prototype mac 0x00180e69

    signatureundefined FUN_00180e69(int pPath, undefined4 nValue)→void FUN_00180e69(D2DynamicPathStrc * pPath, D2RoomStrc * nValue)
    convention__cdecl