REDIVIVUS

Proposals / #976

Recover the Mac character-logon frame-pump callback contract

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

Ghidra vmac 111 · 3cfe190

The exact callback registered by Mac selected-character handling is FUN_002c4107; the equivalent original Windows registration selects MAINMENU_PollMCPCharLogonPump at432fe0. Full target/producer/dispatcher bodies and helper state accesses establish the pair. The existing int(int) frame-pump interface is corroborated by actual one-DWORD frame-index dispatch, incremented from zero on both builds. This implementation ignores that argument but explicitly returns full EAX1 at its sole normal exit. Recover int __cdecl(int nFrameIndex) and the identical selected Windows name. Mac RET0 and caller-owned outgoing slot differ from Windows RET4; no Windows stdcall import. No shared funcdef, caller, helper, global, field or layout edits; existing locals preserved. The formal is justified by its actual callback interface, not decompiled arity or an invented entry read.

Changes 2, applied together

  1. Set prototype mac 0x002c4107

    signatureundefined FUN_002c4107(void)→int FUN_002c4107(int nFrameIndex)
    conventionunknown→__cdecl
  2. Rename function mac 0x002c4107

    nameFUN_002c4107→MAINMENU_PollMCPCharLogonPump