REDIVIVUS

Proposals / #636

Type animation-metadata lookup names as strings and its Mac status as BOOL

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

Ghidra v1797 (mac 105) · 3bccb89

Win 0066aa80 and Mac 00139f7c receive a writable animation-name string, pass it to the bytewise uppercase lookup, then write frame count, speed and trigger index. Each sole caller passes a local name buffer and three separate dword output addresses. Retype the int* name to char* in both builds. The complete 110-byte Mac body sets full ECX=1 on success and ECX=0 on fallback, then copies ECX to full EAX after storing the trigger index. Conservative CFG propagation proves every returning path yields 0 or 1; its caller tests that full value. Restore the existing four-byte BOOL contract, retaining all outputs and the four-stack-argument cdecl ABI. Complete 124-byte Windows twin, both caller bodies, field layouts, original Windows bytes and independent Mac bytes verified. Preserve names and locals; do not change the custom-EBX lookup or shared bucket types. Static verification only.

Changes 2, applied together

  1. Retype variable win 0x0066aa80 Stack[0x4]

    typeint *→char *
  2. Set prototype mac 0x00139f7c

    signatureundefined4 ANIMDATA_GetFramesSpeedAndTrigger(int * pszName, uint * pnFrameCount, int * pnAnimSpeed, uint * pnTriggerFrame)→BOOL ANIMDATA_GetFramesSpeedAndTrigger(char * pszName, uint * pnFrameCount, int * pnAnimSpeed, uint * pnTriggerFrame)
    convention__cdecl