docs: mark matrix composition provisional

This commit is contained in:
gamer147
2026-07-10 10:57:02 -04:00
parent 5427e9d776
commit 21b2328ee8
2 changed files with 9 additions and 3 deletions

View File

@@ -687,7 +687,9 @@ buffers (present). **Slot 0 is NOT special** — a normal slot; several objects
(`handle → {slot, srcRect, position, anchor, scale, anim, alpha, visible}`, from draw-texture + the gfx ops) +
a host per-frame compositor that draws visible objects **in ascending-handle order** from their live surface,
interpolating animations by elapsed time. No VM/host lockstep: animations play during the wait-for-input park.
Scale/translation timing and anchored composition are implemented; full affine rotation remains deferred.
Separate scale/translation state and timing are implemented. The current anchored 2D composition is provisional:
exact anchor semantics, multiplication order, and projection still need slow native-versus-port frame comparison.
Full affine rotation remains deferred.
### Blend & transparency — colorkey + `0x202`/`0x203` color/alpha (2026-07-08)

View File

@@ -691,7 +691,7 @@ handles, so SC0000 skipped its explicit `0x1f7(handle,10)` + `0x1fa(slot)` clean
asserts no visible resource `0x37` remains; engine suite **86/86**. **Live clicked-path validation
confirmed the fix on 2026-07-10:** the magic circle now disappears at the intended transition.
### A2b — native scale/translation matrix channels ✅ DONE (2026-07-10)
### A2b — native scale/translation channel split ✅ IMPLEMENTED; exact visual math provisional (2026-07-10)
Replaced the legacy shared `AnimTarget` / transform-Z-as-opacity approximation with the native channel
split proven in Ghidra. Op `0x21e` now owns normalized scale (100 = identity; current `obj+0x6c`,
@@ -710,4 +710,8 @@ delay/duration sampling, target commit, and non-opacity Z values. Engine **86/86
Booted SC0000 with `--shot-sequence` + `--gfx-log`: 180/180 PNGs, 152 log lines, and zero
unresolved/error/NaN/Infinity outcomes. The visible circle expands around its anchor through sampled scales
`1.00 → 1.22 → 1.44 → 1.66` while remaining `op=1.00`, then the retained object is logged
`GONE`. This directly validates that scale is rendered as geometry rather than opacity.
`GONE`. This validates removal of the transform-Z opacity shortcut and shows the scale channel affecting
geometry in the capture. It does **not** prove the port's exact matrix calculation, anchor interpretation,
multiplication order, or 2D projection: normal playback still races past these sections too quickly for a
reliable visual judgment. Treat that math as provisional until the pacing slice enables slow normal playback
and a native-versus-port frame comparison.