24mm13: cascade helpers decoded (prefix-sum + x0.5 + pairwise-average = hierarchical smoothing); op-A 16140 body TBD; recurrence ready for numpy closure

This commit is contained in:
2026-08-26 15:31:04 +03:00
parent 943e781720
commit 7202b8d6a4
+39
View File
@@ -4287,3 +4287,42 @@ mapped-фильтр, строгая валидация ctx по trk==exp(scr)).
Грабли: адреса-константы в патчах скрипта молча не применялись при чужом Грабли: адреса-константы в патчах скрипта молча не применялись при чужом
отступе — проверять installed-list; DC40=0x1800dc40 (не 0x18000dc40); отступе — проверять installed-list; DC40=0x1800dc40 (не 0x18000dc40);
DIV/DC40/EXPVAR/FN могут быть вне маппинга процесса (пропускать). DIV/DC40/EXPVAR/FN могут быть вне маппинга процесса (пропускать).
## ============ 24mm13: ХЕЛПЕРЫ КАСКАДА 529c60 ДЕКОДИРОВАНЫ (статика) ============
Резолв ILT-цепочек (movsxd rax,[1826159a0]=4; lea r10,tbl; jmp [r10+rax*8]):
```
5355d0.f → 18e0(ILT) → 0x1800032c0 → call 0x180016140(a,b,n2) [векторная,
5-й арг из стека — MXCSR-сохраняющая, тело не дочитано]
530080.f → 2090(ILT) → 0x180010e40: b[i] += a[i] IN-PLACE (vaddss;
a=rcx, b=rdx, store в rdx!)
20f0.f → 0x180011580: dst[i] = a[i] + b[i] (vaddss, dst=r8)
1850.d → 0x1800025e0: то же в double
1a00.f → 0x180004720: dst[i] = xmm1 · src[i]; skip при xmm1∈{0,1}
52d920 : dst[i] *= xmm1 (in-place, skip при 1/0 — как ffe0)
```
Грабли раунда: адреса теряли ноль при ручном наборе (0x180018e0 vs
0x1800018e0) И интермиттент пустые чтения soothe_mem.bin (лечится ретраем).
### Рекуррентия каскада на полосу (порядок вызовов из 529c60):
```
A: 16140(bands_curve@678, T_old, n2) ; до цикла, семантика ???
цикл по [ctx+0x1b0]:
a: bands[1+j] += bands[j] ; j=0..n2-2 (префикс!)
b: bands[j] *= 0.5 ; j=0..n2-2
c: vec6f8[j] = bands[1+j] + bands[j] ; (20f0, dst=r8=6f8)
d: bands[1+j] = 0.5 · vec6f8[j] ; (1a00, xmm1=0.5f/d)
→ результат пишется в track-буфер полосы (ctx+0x380 таблица)
```
Замечание: префикс-аккумуляция (a) + деление пополам (b) + попарное
усреднение (c,d) — это вычисление ПОЛУСУММ смежных бинов = построение
иерархического сглаживания (wavelet/Haar-класс!) поверх спектра.
Tin на захватах ≈ trk^5.5 в нотчах — согласуется с накоплением за много
кадров такого экспоненциального смешения.
### Следующий шаг (финал Этапа B)
1. Дочитать 0x180016140 (оп A до цикла — вероятно T_new = α·T_old + β·bands).
2. Собрать рекуррентию в numpy, прогнать по 400 живым кадрам
(winetrace_casc/chain_samples.pkl: scr→Tin покадрово), подобрать
единственные константы из асма (не фитом!), проверить выход == Tin.
3. γ=1.760561 затем выводится из замкнутой рекуррентии аналитически.