Add module control API, bigcursor with fractional scaling, shared mutex

Module control API:
- Three cdecl exports: WeirdUtils_IsModuleActive, WeirdUtils_DisableModule, WeirdUtils_DisableAll
- C header include/weirdutils_api.h for runtime DLL discovery
- All modules gain pub module_name, isActive(), shared mutex via src/mutex.zig
- build.zig refactored to module_list array of ModuleDesc

Bigcursor:
- D3D9 vtable hooks on SetCursorProperties/ShowCursor
- Scale2x/Scale3x pixel-art upscalers in pure Zig (replaces 12K-line hqx C)
- Bilinear resampler for fractional scales (1.0-4.0, default 1.2)
- Win32 cursor via CreateIconIndirect bypasses D3D9 32x32 limit
- FNV-1a hash cache for ~16 cursor bitmaps
- Lua API: SetCursorScale(n) / GetCursorScale()
- CVar cursorScale for Config.wtf persistence (tenths)

Other:
- Add dpslog module stub
- Docs and README updates
This commit is contained in:
MarcelineVQ
2026-03-06 13:27:35 -08:00
parent 0783f3b0dd
commit 2aaa089c76
44 changed files with 1904 additions and 1022 deletions
+4 -4
View File
@@ -5,7 +5,7 @@
## How the remote repo works
This project is developed entirely locally. The remote repo is **only** a
distribution point for releases — no source code is pushed.
distribution point for releases - no source code is pushed.
The remote `main` branch contains a single file: `README.md` (built from the
local `DLL_README.md`). This must be set up once when creating the repo:
@@ -50,7 +50,7 @@ zig build --help 2>&1 | grep 'Enable'
### Combined DLL
Build `weirdutils.dll` with only the modules for this release. Explicitly
disable everything not being included — defaults may enable modules you don't
disable everything not being included - defaults may enable modules you don't
want:
```sh
@@ -68,7 +68,7 @@ zig build -Doptimize=ReleaseSmall \
zig build all-variants -Doptimize=ReleaseSmall
```
This builds all variants — you only attach the ones for this release.
This builds all variants - you only attach the ones for this release.
### Output locations
@@ -86,7 +86,7 @@ ls -lh zig-out/bin/weirdutils.dll zig-out/variants/*.dll
## 2. Update the remote README
The remote README should match the features in this release. Start from
`DLL_README.md` and remove the sections for modules not being released —
`DLL_README.md` and remove the sections for modules not being released -
keep the header, install instructions, and included feature sections exactly
as they are.