REDIVIVUS

Proposals / #966

Mac SKILLS_CreateMissileRing (0x00083876): __fastcc void (D2SkillArgStrc * pPrimaryArg, D2SkillArgStrc * pAltArg)

applied · by KierTaylor · submitted 2026-11-02, applied 2026-11-02

Ghidra vmac 111 · 3c6740e

Mac 0x00083876 (client ring spawner): ECX is the skill-arg block always used (its +0x4 owner supplies the RNG seed; missiles are created from it); EDX is tested for NULL and, when present, is chosen for about 1 in 6 of the 64 ring missiles (rng % 6 == 0); each chosen block gets the ring cos/sin offsets written to +0x1c/+0x20 before the create call. No [EBP+n] reads, single RET 0x00083940. Windows twin SKILLS_CreateMissileRing 0x004c7000 is void (D2SkillArgStrc * pSkillArg1, D2SkillArgStrc * pSkillArg2), where pSkillArg1 is the optional one; on Mac the optional block is in EDX, so the names say which is which.

Changes 1, applied together

  1. Set prototype mac 0x00083876

    signatureundefined SKILLS_CreateMissileRing(void)→void SKILLS_CreateMissileRing(D2SkillArgStrc * pPrimaryArg, D2SkillArgStrc * pAltArg)
    conventionunknown→__fastcc