Mac SKILLS_CreateMissileRing (0x00083876): __fastcc void (D2SkillArgStrc * pPrimaryArg, D2SkillArgStrc * pAltArg)
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
Set prototype
mac 0x00083876signatureundefined SKILLS_CreateMissileRing(void)→void SKILLS_CreateMissileRing(D2SkillArgStrc * pPrimaryArg, D2SkillArgStrc * pAltArg)conventionunknown→__fastcc