Skip to content

D2VP Vanilla+QoL-0.0.8-R156

Latest

Choose a tag to compare

@VTSTech VTSTech released this 10 Nov 22:51
· 7 commits to main since this release
image image image image

Release Notes — D2VP-QoL Vanilla+ 0.0.8, R148 → R156

R148 — Automap clock on one line + area level

  • The automap clock overlay is now a single line: SESS: hh:mm:ss (session stopwatch) + SYS: 12:01PM (PC local clock, 12-hour with AM/PM).
  • The level-name line gains the area's effective level in Blood Moor (3) style (levels.txt MonLvl/MonLvlEx per difficulty). Always-on; plain name in town.

R149 — Smoke-test fallout: #37 fast Ctrl+Click crash + #38 perspective jitter

  • #37: a second Ctrl+Click inside the ~2-frame pick/place window overwrote the parked 0x18 with the hand still full → lost place packet, client/server desync, intermittent crash. Pick/place pairs are now serialized (VPCTRLXFER_PairInFlight, 500 ms staleness cap).
  • #38: FPS Interpolation still jittered in perspective mode — every layer anchors on the tick-snapped warp origin. The perspective camera now glides itself: the two-sample alpha rides the warp origin in 16.16 precision, so floor/walls/sprites/shadows glide together.

R150 — #37 closed for real + the character joins the glide

  • #37: the real crash window was the full pick→place round trip. The 0x19 pick echo no longer hands the item client-side (it stays in its source cell until the 0x18 place echo relinks it), and the click guard now spans the whole 500 ms round trip. A click inside the window is a silent no-op.
  • #38: the local player's sprite, shadow and state overlays now share the origin's glide — the character sits screen-fixed while the world glides.

R151 — #38 residual pass

  • The perspective origin delta is computed once per present and shared by every rider (call sites straddling a 1 ms boundary used to disagree).
  • The last two raw-projection sites join the glide: hover selection shape (GFX_DrawUnitSelectionShape) and the Whirlwind rotated-angle sprite.

R152 — #37 root fix: inventory chain corruption

  • Page switches bulk-remove page-4 items and the client's REMOVED branch freed item units without unlinking them from the inventory chain — the panel draw's chain walk then dereferenced freed/reused units. Items are now unlinked first (INVENTORY_RemoveItemFromInventory), the GUID is captured before the free, and the retail non-REMOVED path stays byte-identical.

R153 — #37 choke-point hardening

  • The client frees item units at ~30 sites; R152 fixed one. One VP block in CUnit::RemoveObject now unlinks at the choke point before every free — covers all paths at once, behaviorally invisible. (Closes out the #37 crash family.)

R154 — Transparent HUD (opt-in: [features] transparent_hud=1 / Options row 14)

  • The bottom bar's console frame art (stone behind the globes and belt, chat background, orb sockets), the run button, menu button and hostile indicator are not drawn at all — the world shows through.
  • Everything functional stays vanilla and interactive: globes, belt, skill buttons, XP/stamina bars, panels, tooltips, automap, chat. Hidden buttons keep their hit areas. Zero renderer code — works identically on every renderer.

R155 — Camera Zoom, D3D (opt-in: [features] camera_zoom=1 / Options row 15)

  • Z steps world zoom 1.0 → 1.25 → 1.5 → 1.0, anchored on your character. Field-verified by the owner in D3D.
  • A world-phase bracket keeps scaling inside the world pass: bottom bar, panels, tooltips, automap and cursor stay pixel-1:1.
  • The raw cursor pixel is inverse-zoomed before retail projection (hover, selection, walk/cast), so clicks land exactly where the zoomed world shows them.
  • Zoom level resets to 1.0 on each game join.

R156 — Camera Zoom on Glide (field-verified by the owner)

  • The R155 D3D site set is mirrored into Glide.cpp: zoom helpers, perspective funnels, top-down sprite quads and the flat subtile builders. Cursor inverse and world-phase bracket are renderer-agnostic and shared.
  • DDraw/Gdi still clamp to 1.0 with a d2boot.log note.
  • Known v1 limit: the Glide lightmap halftone lattice stays at retail screen spots while zoomed (soft glow offset) — pending field QA.