REDIVIVUS

Proposals / #613

Type both ANIM_GetSequenceFrameInfo inputs as D2MonSeqTxt arrays

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

Ghidra v1797 (mac 105) · 3bccb89

Win 00663410 and Mac 0014b1ba index six-byte sequence records and read unsigned mode/frame/dir/event bytes at +2/+3/+4/+5. Both complete bodies use signed frame>>8 and advance event reads by six bytes. All three callers per build pass the actual sequence array: GetEventFrameInfo and MONSTER_PreloadSequenceAnimations pass MERC_GetSequenceTxt's typed result; UpdateSequenceMode loads the unit field populated by InitializeSequence from that same getter. The getter loads D2MonSeqMonsterTbls.pMonSeqTxt; the original MonSeq loader compiles six-byte records and stores their addresses in that table. Existing D2MonSeqTxt matches the complete layout in both databases. Retype only the four-byte first-stack input, preserving names, both frame inputs, four output pointers, void return and seven-argument stdcall/cdecl ABI. Complete targets/callers/producers and original Windows bytes verified. Static only; no unit-field, caller or pending-function edits.

Changes 2, applied together

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

    typebyte *→D2MonSeqTxt *
  2. Retype variable mac 0x0014b1ba Stack[0x4]

    typebyte *→D2MonSeqTxt *