REDIVIVUS

Proposals / #1112

Type three integer parameters as the overlay node, drlg map and LAN game entry their bodies fill

checked · by dtchitt · submitted 2026-11-03

GFX_RemoveStateOverlayAndReprioritize's pOverlay (EAX) is an overlay list node: both callers pass a node of pGfxInfo->pOverlayList (GFX_RemoveOverlayFromUnit only after testing nOverlayType == 8), and the body reads its state at +0x38 and clears nValue0 at +0x8, then walks the same list comparing the same +0x38 and the type at +0x0, following pNext at +0xA4. That is D2GfxUnknown_0xa8, already used for overlays by GFXUTIL_GetOverlayFrameDelay. CreatePresetObject_Unused's pDrlgMap (ESI) is used only as D2DrlgMapStrc: it pushes the new preset unit onto pPresetUnit at +0x38 (read, link through the unit's +0xC, write back). OOGUTIL_HandleGameListEntry's pEntry is the address of the caller's D2LanGameEntryStrc local sGameEntry; the body writes nPort at +0x33, dwIpAddress at +0x37, and copies the name to +0x1 (szGameName) and the description to +0x11 (szGameDesc), which the caller then reads by those field names.

Changes 3, applied together

  1. Retype variable win 0x0046df40 EAX

    typeint32_t→D2GfxUnknown_0xa8 *
  2. Retype variable win 0x00666170 ESI

    typeint32_t→D2DrlgMapStrc *
  3. Retype variable win 0x004438e0 Stack[0x4]

    typeint32_t→D2LanGameEntryStrc *