Commit Graph

384 Commits

Author SHA1 Message Date
Dusk-92 4eb37f4c23 Bypass broken IS_IN_WORLD gate in Outline debug 2026-08-28 18:16:14 +02:00
Dusk-92 3ee72d70d6 Add object manager readiness check for Outline debug 2026-08-28 18:16:10 +02:00
Dusk-92 b714c38ab7 Expose target acquisition stages in OutlineDebug 2026-08-28 18:06:19 +02:00
Dusk-92 bcf8cefb35 Split Outline target acquisition diagnostics 2026-08-28 18:06:15 +02:00
Dusk-92 1632d98797 Keep V8 debug ABI checks optimizer independent 2026-08-28 17:59:35 +02:00
Dusk-92 c890a6bc69 Relax debug build FrameScript disassembly matcher 2026-08-28 17:58:55 +02:00
Dusk-92 086dd17a31 Trigger V8 debug diagnostics build 2026-08-28 17:57:54 +02:00
Dusk-92 b128c01a7c Build V8 Outline debug diagnostics 2026-08-28 17:57:41 +02:00
Dusk-92 33ec80d742 Register OutlineDebug Lua command 2026-08-28 17:57:19 +02:00
Dusk-92 ad706ccb9a Add in-game OutlineDebug diagnostics 2026-08-28 17:57:09 +02:00
Dusk-92 d7f93b3c00 Add sticky D3D9 Outline diagnostics 2026-08-28 17:56:47 +02:00
Dusk-92 62026da380 Add sticky Outline tracker diagnostics 2026-08-28 17:56:26 +02:00
Dusk-92 45635455b9 Verify V8 UnitGUID ECX ABI 2026-08-28 17:48:24 +02:00
Dusk-92 37757a2347 Fix V8 UnitGUID x86 ABI stack leak 2026-08-28 17:48:06 +02:00
Dusk-92 855ea340cc Fix V8 registerFunction asm build 2026-08-28 17:39:31 +02:00
Dusk-92 6e0c0850e8 Verify V8 FrameScript registration ABI 2026-08-28 17:38:20 +02:00
Dusk-92 17af79dff4 Fix V8 FrameScript registration ABI 2026-08-28 17:37:45 +02:00
Dusk-92 a55f43a5d5 Verify V8 OutlineCommand ECX ABI in machine code 2026-08-28 17:27:43 +02:00
Dusk-92 126f617ca1 Fix V8 OutlineCommand ABI to receive Lua state in ECX 2026-08-28 17:27:24 +02:00
Dusk-92 43839b2b41 Build safe standalone core V8 artifact 2026-08-28 17:09:54 +02:00
Dusk-92 dbdb513e94 Use x86 fastcall for OutlineCommand callback 2026-08-28 17:09:38 +02:00
Dusk-92 4aae16646c Build safe standalone core V7 artifact 2026-08-28 17:05:10 +02:00
Dusk-92 5fe9a92672 Force Outline Lua calls through x86 register asm 2026-08-28 17:04:59 +02:00
Dusk-92 b587992a6c Build safe standalone core V5 artifact 2026-08-28 16:55:06 +02:00
Dusk-92 bbcc70fa0d Fix Outline Lua API calls on safe core V5 2026-08-28 16:54:46 +02:00
Dusk-92 ebccbee66a Build safe standalone core V4 artifact 2026-08-28 16:47:23 +02:00
Dusk-92 68c0ad2b75 Use minimal standalone core for Outline CustomAssets and TransmogFix 2026-08-28 16:46:54 +02:00
Dusk-92 7bf5a11011 Add minimal core mode for safe standalone variants 2026-08-28 16:46:17 +02:00
Dusk-92 947056f1c2 Test full release packaging on main 2026-08-28 15:13:48 +02:00
Dusk-92 c4d133887a Run release build CI on main and support source refs 2026-08-28 15:12:47 +02:00
Dusk-92 f4cbacb7f9 Fix DllMain return type for Zig 0.16 2026-08-28 15:12:18 +02:00
Dusk-92 82dc02e2e7 Add automated DLL release workflow 2026-08-28 14:57:49 +02:00
MarcelineVQ 41191ce9a5 Untrack internal planning files re-added in error 0.7.3 v0.7.2 2026-08-01 18:12:59 -07:00
MarcelineVQ 727a4cc229 Scrub remaining absolute machine paths from module docs 2026-08-01 18:04:54 -07:00
MarcelineVQ 69051fd486 Repo hygiene: drop internal planning files, clean docs for publication
Untrack TODO.md, RELEASING.md, RELEASE_NOTES.md, ideas/ and
docs/CLAUDE_PROPER_OBJECT_REGISTRATION_PLAN.md -- internal planning and
agent notes with no reason to be published. Files stay on disk locally.

Replace remaining absolute machine paths in docs with relative ones
(one referenced a separate private project), and swap decorative emoji
for ASCII markers.

README: lead with the no-longer-actively-developed notice.
2026-08-01 18:03:46 -07:00
MarcelineVQ 4865b583d1 Ignore zig-pkg/ package cache
Swept in by the merge; it is the local zig package cache populated by the
zhook URL dependency, not source.
2026-07-27 22:08:41 -07:00
MarcelineVQ 582a433d81 Merge v0.7.0 distribution commit
Keeps the source README (a superset - documents every module, not just the
released subset) and include/weirdutils_api.h over the release-trimmed
root copy.

# Conflicts:
#	README.md
#	include/weirdutils_api.h
2026-07-27 22:08:17 -07:00
MarcelineVQ 8773bb2821 Pin zhook as a URL dependency instead of a relative path
build.zig.zon pointed at ../zhook, so a clone of this repo alone could not
build. Pin the Codeberg tarball for f1b252e (current zhook master) with its
hash; zig fetches it automatically. Verified by building with no sibling
zhook checkout present.
2026-07-27 22:05:03 -07:00
MarcelineVQ 1d41a029a8 Scrub local machine paths from docs
Replace absolute /home/august/... references with neutral placeholders and
drop TODO.md links to plan files that only exist locally.
2026-07-27 21:49:44 -07:00
MarcelineVQ 9646155e1c Drop duplicate weirdutils_api.h from root
include/weirdutils_api.h is the complete version; the root copy was the
release-trimmed one from the distribution branch.
2026-07-27 21:48:58 -07:00
MarcelineVQ 28e6deaef5 Merge distribution history into source history
Brings in .gitea/ issue templates and preserves the release tag ancestry
(v0.1.0-v0.7.0 were tagged on the distribution branch, not on source).

# Conflicts:
#	README.md
2026-07-27 21:48:30 -07:00
MarcelineVQ b12fc820ef Publish source: Unlicense, public README, repo hygiene
The remote was previously a distribution-only point for pre-built DLLs.
This opens the source.

- LICENSE: Unlicense, with a GPL-3.0 carve-out for src/dpslog/WeirdDPSMate
  (a DPSMate fork that keeps its own license)
- README.md replaces the stale internal one with the user-facing docs from
  DLL_README.md, swapping the 'Why No Source Code?' section for build and
  layout notes. DLL_README.md is dropped; one README now serves both.
- RELEASING.md: drop the trim-the-README-per-release dance and the
  remote/WeirdUtils/ distribution clone, both obsolete now
- gitignore agent/editor scratch, build caches, the vendored WSBT addon,
  and the WeirdThreat/uwu-logs checkouts (separate upstream repos)
- Commit outstanding module work: superweirdo, clickthrough portal visuals,
  transform44 decompiles, worldmarkers demo presets, tools/
2026-07-27 21:47:55 -07:00
MarcelineVQ f500147fc7 weirdperformance: f64-intermediate bone transform to eliminate spell/doodad z-fighting
Adds bone_sse64.zig as an f64-intermediate port of transformMatrix4x4, used as
the active hook. M2 bone matrices are built and multiplied as [16]f64 and only
narrow to f32 on final store into the bone output buffer -- matching the x87
original's rounding profile (wide intermediates, single f32 store) and keeping
M2 vertex positions aligned with the terrain/projected-texture pipeline.

Also fixes, in both bone_sse (f32) and bone_sse64:

- Pre-billboard tx/ty/tz accumulation order (row 0 = pz+px+py; rows 1/2 = pz+py+px)
- Post-billboard pos_y/pos_z accumulation order (py+pz+px)
- Post-billboard scale-recompute accumulation order (row0 + row2 + row1)
- Billboard types 2/4 normalize using f64 intermediates (load-bearing for camera
  basis vectors -- pure f32 drifted from x87 by a ULP per axis and caused
  particle emitters to jitter on camera motion)

Additional bone_sse64-specific changes:

- Local attachmentRecursion64 that recurses into transformImpl_SSE64 instead of
  bone_sse.transformImpl_SSE, so attached child models stay on the f64 path
- child_padding (this+0x84) computed with f64 intermediates

bone_sse remains the reference f32 implementation; its struct fields, inline
helpers, and section-loop fns are now `pub` so bone_sse64 can share them
(types/interpolation helpers/post-loop loops). Artifact size is unchanged.

build.zig adds bench_bone_sse64 object; src/bench/main.zig runs the new variant
through the same warmup/timing harness and prints SSE vs SSE64 vs BASELINE
cycles plus a parity check.
2026-04-16 22:58:09 -07:00
MarcelineVQ 37c96eb577 worldmarkers: revert locale encoding -- not a real issue on Windows
C runtime starts in "C" locale (dot decimals) on all platforms.
WoW doesn't call setlocale. The integer encoding was unnecessary
and would break sync with older builds.
2026-04-13 13:49:53 -07:00
MarcelineVQ 6a3812a0ab worldmarkers: locale-safe coordinate encoding, clear markers on group leave
Addon messages now encode coordinates as integers (*1000) to avoid
locale-dependent decimal separators breaking cross-client sync.

DLL detects group leave via LEADER_GUID dropping to zero and clears
all markers locally -- no addon permission checks needed.
2026-04-13 13:37:09 -07:00
MarcelineVQ 6f2789fd1c Update README and API header for v0.7.0
Adds World Markers section (new module shipping in 0.7.0). Updates the
Performance section with Lua runtime optimizations (allocator, GC,
string interning, pattern prefilter). Fixes Log Sessions documentation
to reflect per-day rollover. Adds worldmarkers, clickthrough, and
weirdperformance to the DLL auto-discovery list in weirdutils_api.h.
v0.7.1 v0.7.0
2026-04-11 14:15:42 -07:00
MarcelineVQ 83dda7b5ae silicon_sse: fix over-cull of straddling objects in frustumCullBBox
si_frustumCullBBox (0x686000, center+radius variant) was culling any
bounding volume whose center had view-space z < 0, but an object whose
center is behind the camera can still have its front extent inside the
frustum (think of standing next to a big WMO -- the building's center
can be a few units behind you while its front wall is still in frame).

Use the bounding sphere rather than the center point: only cull when
the closest point of the sphere is itself behind the camera, i.e.
center.z + |radius| < 0. Straddling cases now fall through to the
near-plane passthrough and get rendered.

si_frustumCullBBox8 (0x686180, 8-corner variant) already does the
right thing here -- it only returns "all behind" when every transformed
corner has z < 0, which is a true convex-hull test for an AABB.
2026-04-11 13:41:34 -07:00
MarcelineVQ 27b9254ab8 weirdperformance: consolidate luastr and luavm as sub-modules
Drop the top-level luastr and luavm module flags and wire both through
weirdperformance, matching the existing luaalloc/luagc sub-module pattern.
Also removes luavm's A/B rdtsc instrumentation now that the newlstr hash
pre-check is production-only.

 - build.zig: remove luastr/luavm from module_list
 - DLL_README.md: add Lua Runtime bullet under Performance, swap
   em/en-dashes for ASCII
 - src/luavm/: delete (files moved into src/weirdperformance/ which was
   already the tracked location in HEAD)
2026-04-11 13:21:51 -07:00
MarcelineVQ 039cec1806 luagc: 5.1 incremental GC with timing, stress tests, pre-alloc hooks (BROKEN)
Current state CRASHES on load due to pre-alloc hooks with wrong calling
conventions. pushcclosure hook is still enabled with partially disabled
others. Needs all pre-alloc hooks disabled or CCs fixed before use.

Implemented:
- Full 5.1 tri-color incremental GC
- 5.1-style singlestep budget loop (replaces chunk-based approach)
- Per-step rdtsc timing (ZGCStats returns max_step_us, atomic_us)
- Configurable gcstepsize/gcstepmul/gcpause via ZGCTune()
- Pre-alloc GC hooks for 7 API functions (5.1 luaC_checkGC pattern)
- Stress test addon: /gclife, /gcsweep, /gccompare

Broken:
- Pre-alloc hooks have CC mismatches causing immediate crash on load
- pushfstring is cdecl variadic, not fastcall (removed)
- pushstring has ambiguous CC (removed, covered by pushlstring)
- pushcclosure hook still active -- may be causing the crash
- Half-initialized objects cause garbage gcptr under heavy stress

weirdperformance: re-enabled luagc.install() + luastr + luavm
2026-04-11 13:03:37 -07:00
MarcelineVQ 8d3460cf1e luagc: per-step timing, forced GC honoring, weirdperformance compat
- Per-step rdtsc timing: ZGCStats returns max_step_us and atomic_us
- AllocBench /zgcstats frame shows step/atomic timing with color coding
- /gccompare command for timing forced GC cycles
- Honor lua_setgcthreshold forced collections (collectgarbage() with low
  threshold now triggers GC instead of being silently ignored)
- Disable luaalloc in weirdperformance when luagc is active (no conflict)
- Closures go to grayagain (covers all upvalue mutation paths)
2026-04-11 10:29:39 -07:00