REDIVIVUS

Proposals / #741

Recover the Mac timer recycler as the paired void procedure

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

Ghidra vmac 109 · 39698f0

The complete318-byte recycler consumes ECX game and EDX one48-byte timer, with no stack inputs. Flags+2 control deferral; game+b8 supplies the queue, and native unlink/free-list stores perform the operation. All13 code calls prepare exactly those registers and do not consume a returned value; complete caller and producer bodies are byte-verified. Restore pGame/pTimer under Mac __fastcc and declare void, matching Windows00540cd0 and the explicit request in rejected625. The earlier undefined1 return was an incomplete procedure contract, not a meaningful byte result. Original Windows body and current void metadata are independently checked. Preserve selected name, Mac register/stack mapping and all shared link fields; Windows uses different custom argument registers and is read-only corroboration. No caller, callback, allocation, source or runtime/matching change.

Changes 1, applied together

  1. Set prototype mac 0x001aad59

    signatureundefined EVENT_RemoveAndRecycleTimer(void)→void EVENT_RemoveAndRecycleTimer(D2GameStrc * pGame, D2TimerStrc * pTimer)
    conventionunknown→__fastcc