REDIVIVUS

Proposals / #740

Recover complete void Mac timer dispatcher contracts and the paired flag name

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

Ghidra vmac 109 · 39698f0

All five dispatchers consume ECX game, EDX queue, and Stack4 timer/Stack8 DWORD Boolean. All10 incoming calls explicitly prepare those inputs, with game+b8 queue and actual48-byte timer heads independently proved by allocation/list code. Restore those four arguments and Mac __fastcc, now with void return and the existing Windows flag name bImmediate, as requested in rejected624. All five Windows counterparts already declare void and that flag name; original PE bytes are independently checked. Dispatcher callers never use a returned value, and the Mac routines finish side-effecting timer callbacks/recycling without an intentional result contract. Preserve each selected function name and every existing layout/ABI; do not copy Windows custom storage. Full fresh target/caller bytes and prior complete allocation/producer audit agree. No shared callback/link-field, caller, Windows or runtime change.

Changes 5, applied together

  1. Set prototype mac 0x001ab24f

    signatureundefined EVENT_DispatchMissileTimers(void)→void EVENT_DispatchMissileTimers(D2GameStrc * pGame, D2TimerQueueStrc * pTimerQueue, D2TimerStrc * pTimer, BOOL bImmediate)
    conventionunknown→__fastcc
  2. Set prototype mac 0x001ab370

    signatureundefined EVENT_DispatchPlayerTimers(void)→void EVENT_DispatchPlayerTimers(D2GameStrc * pGame, D2TimerQueueStrc * pTimerQueue, D2TimerStrc * pTimer, BOOL bImmediate)
    conventionunknown→__fastcc
  3. Set prototype mac 0x001ab4ca

    signatureundefined EVENT_DispatchMonsterTimers(void)→void EVENT_DispatchMonsterTimers(D2GameStrc * pGame, D2TimerQueueStrc * pTimerQueue, D2TimerStrc * pTimer, BOOL bImmediate)
    conventionunknown→__fastcc
  4. Set prototype mac 0x001ab624

    signatureundefined EVENT_DispatchObjectTimers(void)→void EVENT_DispatchObjectTimers(D2GameStrc * pGame, D2TimerQueueStrc * pTimerQueue, D2TimerStrc * pTimer, BOOL bImmediate)
    conventionunknown→__fastcc
  5. Set prototype mac 0x001ab745

    signatureundefined EVENT_DispatchItemTimers(void)→void EVENT_DispatchItemTimers(D2GameStrc * pGame, D2TimerQueueStrc * pTimerQueue, D2TimerStrc * pTimer, BOOL bImmediate)
    conventionunknown→__fastcc