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/
This commit is contained in:
MarcelineVQ
2026-07-27 21:47:55 -07:00
parent f500147fc7
commit b12fc820ef
42 changed files with 5563 additions and 727 deletions
+27 -4
View File
@@ -25,8 +25,31 @@ Goals:
- Prevent clicking GOs in states 2 and 3 (clickthrough module, GO filter pass)
- Render states 2/3 in greyscale or desaturated to visually distinguish from usable ones
Click blocking fits in clickthrough's existing cascade filter (checkObjTypeDetour).
Greyscale rendering needs research into the client's GO model draw path -- may need
to intercept material/texture setup or set a per-object color tint before the draw call.
Click blocking: DONE (portal_filter.zig in clickthrough module).
Module: clickthrough (own file, e.g. portal_filter.zig)
Greyscale rendering research:
- `SetModelAlpha` (0x710da0): writes float to sceneObject+0x1C4 (__thiscall). Alpha only.
- `SetAlphaValue` (0x76ac50): writes float to entity+0xBC, calls through vtable+0x8C.
- `SetModelAlpha_2` (0x76d120): reads byte at entity+0xC8, propagates to entity+0x318.
- Fade system (0x672ef0): writes alpha to entity[0x22] (entity+0x88) via SetMemoryPointer.
- D3D9 render states: outline module (d3d9_hook.zig) has full pattern for per-object
D3D state manipulation via stencil buffer.
- Greyscale options:
1. D3DRS_TEXTUREFACTOR + D3DTOP_MODULATE per draw call (set grey color before object draws)
2. Pixel shader override (D3D9 SetPixelShader to a desaturation shader)
3. Find an existing color tint field on the model instance (not found yet)
- `adjustColorSaturation` (0x74d794): client has a desaturation function built in.
Takes (outputRGBA*, inputRGBA*, saturationFactor). 0.0 = greyscale, 1.0 = full color.
Uses standard luminance weights at 0x818878/187c/1880. No xrefs found (may be unused).
- `GetModelDiffuseColor` / `SetModelDiffuseColor`: reads/writes sceneObject+0x184 (3 floats RGB).
`GetModelAmbientColor` / `SetModelAmbientColor`: sceneObject+0x190 (3 floats RGB).
`SetModelAlpha`: sceneObject+0x1C4 (1 float). These are data accessors, not code functions.
- M2 model rendering does NOT go through simple GxDevice SetTexture wrappers -- uses a
different submission path. Only RenderTextureQuads (UI) calls GxDevice::SetTexture.
- Viable approaches:
1. Write grey diffuse color (e.g. 0.3, 0.3, 0.3) to sceneObject+0x184 per frame
for targeted GOs. Need to find the GO -> scene object pointer chain.
2. Hook D3D9 DrawIndexedPrimitive (like outline module) and set D3DRS_TEXTUREFACTOR
to grey for targeted objects. Requires identifying which DIP calls belong to which GO.
3. Set alpha to 0.5 via sceneObject+0x1C4 for a simpler "faded" visual instead of greyscale.
- Next: find the GO -> entity -> scene object pointer chain so we can access +0x184.