REDIVIVUS

Proposals / #1395

Recover the Mac skill and skilldesc TXT callbacks' six-argument void contracts

checked · by eejitgames · submitted 2026-11-07

Mac0013bca4 and0013bd7a store undefined results and three int inputs, but their first two values are expression/record addresses. Recover void cdecl(char*,char*,int offset,int size,int row,int column), preserving the shared callback API's three unused trailing slots. The table dispatcher natively supplies six DWORDs and discards results on both present/missing-field paths; a type25 descriptor installs0013bca4. Both complete214-byte handlers perform record writes and leave only the stack-guard value in EAX. Windows00611bd0/00611c70 already expose the six-slot void API and corresponding skill/skilldesc behavior. The unreferenced Mac skilldesc sibling's trailing slots are an explicit API inference from that pair/family. Rename only default0013bd7a to DATATBLS_CompileSkillDescCode; align the chosen skill-handler name through review. No dispatcher, callback typedef, allocation or runtime fix is claimed.

Changes 3, applied together

  1. Set prototype mac 0x0013bca4

    signatureundefined DATATBLS_CompileSkillsCalc(int szCalc, int pRecord, int nOffset)→void DATATBLS_CompileSkillsCalc(char * szCalc, char * pRecord, int nOffset, int nSize, int nTxtRow, int nTxtColumn)
    convention__cdecl
  2. Set prototype mac 0x0013bd7a

    signatureundefined FUN_0013bd7a(int szCalc, int pRecord, int nOffset)→void FUN_0013bd7a(char * szCalc, char * pRecord, int nOffset, int nSize, int nTxtRow, int nTxtColumn)
    convention__cdecl
  3. Rename function mac 0x0013bd7a

    nameFUN_0013bd7a→DATATBLS_CompileSkillDescCode