Files
sacred_k/docs/map-reveal.md
T
khallaandClaude Opus 5.5 b452558122 Map: zoomed-view symbols centred, 10x reveal and enemy range; progress screen on the menu background
- Megamap / TAB map zoomed view: heroes' markers and the other symbols
  (integer 200h centre immediates) follow the view's centre.
- Map reveal: the hero's reveal stamp scaled 10x (mods/mapreveal.cpp,
  docs/map-reveal.md); creatures on the zoomed map shown within 10x the
  sight range.
- Load / save progress screen drawn on the rock background across the full
  width, the picture blended over it (mods/loadingscreen.cpp); the classic
  1024x768 frame is gone.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 02:07:59 +02:00

2.2 KiB

Map reveal (fog of war)

Request (2026-10-25)

"Can we increase the base vision range (for map fog of war reveal) by x10 or so?"

Measured

  • Each sector (64x64 tiles) keeps a 32x32 bit mask at +0x180 (128 bytes, one bit per 2x2 tiles): Sector_SetExplored 0x622bf0, copied out by 0x622c60, loaded from the save by 0x622c80 (0x606ae0). The zoomed map view turns it into its fog texture (FOGOFWAR01.TGA, 0x639030).
  • World_SetExplored 0x638f00 (thiscall on *0xad14e0, (tile x, tile y, explored), ret 0xc) finds the tile's sector; tiles >= 0x2000 and sectors that aren't loaded are ignored.
  • RevealAroundHero 0x599730 (creature thiscall (tile x, tile y, sight), ret 0xc), called from about ten places in the creature code: only for the local hero, only when its tile changed (last tile 0xad2384 / 0xad2388), it calls World_SetExplored for every tile of a stamp centred on the hero. Sight 0: the 29x29 circle at 0x88f5cc (radius 14 tiles). The callers choose 1 or 2 from the weather object (0x417e50: +0x9e0c set -> 2, 0x41ba90 true -> 1); those use the 15x15 stamps at 0x88f328 + (sight - 1) * 225 (radius 7, 5; a third one, radius 3, is unused).

Mod (mods/mapreveal.cpp)

After the original revealed at a new tile, the same stamp scaled up 10x is revealed too, one cell (2x2 tiles) at a time through World_SetExplored: by day a circle of about 140 tiles radius, at night / in fog 70 / 50. About 15000 cells per tile step by day. Sectors beyond the loaded ones are not marked.

Creatures on the map (2026-10-25)

"Enemies on the TAB map don't show unless in very short range." The zoomed map view (0x6cc950, large map and TAB map) draws a creature off explored ground, or a hostile one, only within a sight range of the hero: |dx| and |dy| (world units, about 53.7 per tile) against a float at [esp+14h], 650 by default (0x6ce677), 300 where 0x63d280 holds for the hero's area (0x6ce6b5), 350 when the weather object's 0x41ba40 is false (0x6ce6cf), plus a skill (0x355, 0x570d90) and equipment bonuses. Out of range only the debug flag 0x182cdb8 & 2 shows them. The mod scales the three base values by 10 as well (about 120 tiles by day). The view only lists creatures of the sectors around the hero (25 entries at [esp+1ech]).