REDIVIVUS

Proposals / #791

Type the subtile records and indexed-pixel input in the compression helpers

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

Ghidra v1809 · 383dd74

Win 0060d9c0 takes a D2GroundSubTileStrc* at Stack4 and indexed pixel bytes at Stack8; 0060db20 ECX is the same record; 0060da80 EAX/EDI are source/destination records. They are currently integers. Complete callers supply elements of existing D2TileLibraryEntryStrc.pSubTiles arrays at 20-byte stride, and forward the same destinations into both extraction branches. Record accesses match format word+8 and pPixelData+16. Pixel input comes from the byte-output RGB converter or the record's typed pixel pointer; extraction copies a 15-row diamond at 32-byte source stride into a 256-byte buffer. Retype these five slots to D2GroundSubTileStrc* or uint8_t* as appropriate. All selected names fit. Preserve void returns, stdcall/fastcall, custom EAX/EDI/ECX/stack slots, callback/colour-key arguments and shared layouts. Full original PE bytes verified. No runtime or Mac claim.

Changes 5, applied together

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

    typeint32_t→D2GroundSubTileStrc *
  2. Retype variable win 0x0060d9c0 Stack[0x8]

    typeint32_t→uint8_t *
  3. Retype variable win 0x0060db20 ECX

    typeint32_t→D2GroundSubTileStrc *
  4. Retype variable win 0x0060da80 EAX

    typeint→D2GroundSubTileStrc *
  5. Retype variable win 0x0060da80 EDI

    typeint→D2GroundSubTileStrc *