Type the subtile records and indexed-pixel input in the compression helpers
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
Retype variable
win 0x0060d9c0 Stack[0x4]typeint32_t→D2GroundSubTileStrc *Retype variable
win 0x0060d9c0 Stack[0x8]typeint32_t→uint8_t *Retype variable
win 0x0060db20 ECXtypeint32_t→D2GroundSubTileStrc *Retype variable
win 0x0060da80 EAXtypeint→D2GroundSubTileStrc *Retype variable
win 0x0060da80 EDItypeint→D2GroundSubTileStrc *