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
+40
View File
@@ -836,3 +836,43 @@ Called from:
### Module currently DISABLED by default
Build flag changed to `orelse false` in build.zig. Enable with `-Dframecrash=true`.
---
## Uninvestigated: NULL this in PrepareModelForRender (0x710450)
Crash observed 2026-03-25:
```
0x0071045A: MOV EAX, [ESI + 0x10] -- ESI=ECX=0 (NULL this pointer)
ACCESS_VIOLATION reading 0x00000010
```
Call chain:
```
CM2Scene_ExecuteRenderPass (0x708900)
-> RenderBatches (0x70B371)
-> DrawCallback (0x70D960)
-> ValidateClientObjectAndProcessWithManagerLookup (0x6C7780)
-> PrepareModelForRender (0x710450) -- CRASH
```
Root cause: at 0x6C77A8, `MOV EAX, [EAX+0xD8]` reads a field that can be NULL. The
parent object is NULL-checked but the +0xD8 field is not. Then `MOV ECX, EAX` passes
NULL as this to PrepareModelForRender.
```asm
0x6C77A4: TEST EAX, EAX ; parent object null check
0x6C77A6: JZ skip ; OK
0x6C77A8: MOV EAX, [EAX+0xD8] ; read child -- CAN BE NULL
0x6C77AE: PUSH 0
0x6C77B0: PUSH 0
0x6C77B2: MOV ECX, EAX ; this = possibly NULL
0x6C77B4: CALL PrepareModelForRender ; CRASH if ECX=0
```
PrepareModelForRender: thiscall(ECX=this, stack: 2 params), RET 0x8.
Fix options:
1. Hook PrepareModelForRender with NULL-this guard (protects all callers)
2. Patch call site at 0x6C77AE to add TEST EAX,EAX + JZ (needs code cave, only 11 bytes available for 15 bytes of patched code)
3. Binary patch PrepareModelForRender prologue (needs to preserve RET 0x8 stack cleanup)