REDIVIVUS

Proposals / #1521

Type the arcane-stars seed at 0x007b5788 as D2SeedStrc

checked · by Nishimura-Katsuo · submitted 2026-11-08

gpArcaneStarsSeed (0x00712c4c, D2SeedStrc *) points to 0x007b5788, the only literal reference to it, and nothing references 0x007b578c directly. Ghidra types 0x007b5788 as undefined4, so the rebuild emits a 4-byte uint32_t there. VIEW_GenerateRandomViewParams and DRAW_Overlay_ArcaneStars step the 64-bit LCG through the pointer ([reg] low, [reg+4] high). Its three callees also write 8 bytes: UNIT_GetModuloFromSeed, SEED_InitDefault and InitSeed_Param_666. So every write overruns the object the linker places after it. All 17 xrefs to 0x7b5788 are the seed's low half and all 13 to 0x7b578c its high half; none is a sprite offset (the star positions are the arrays at 0x7b57e8/0x7b8d30). The sibling gpAncientsCloudSeed -> gAncientsCloudSeed (0x007b5680) is already D2SeedStrc. Asks for the maintainer: delete the label at 0x007b578c, which falls inside the struct, and rename 0x007b5788 to gArcaneStarsSeed. Neither name is an array, a sprite or an offset.

Changes 1, applied together

  1. Retype global win 0x007b5788

    typeundefined4 (4 bytes)→D2SeedStrc