22u: raw-asm re-decode of FUN_180529fe0 — multiband pre-combine inside method, per-band scale->kernel->2x bidir-double-IIR (52d650 fully decoded, per-bin double coefs), band-state arrays 0x540768[i]/0x5407a8[i]; 0x5407c8 acc has NO runtime reader (21b addr wrong); offline bidir-IIR smoothing hypothesis REFUTED (monotonic degradation)
This commit is contained in:
@@ -2058,3 +2058,58 @@ abs-сумма по корпусу при (7.6,1.694): 115.4 дБ·кейсов,
|
||||
(52e260 render-loop, multiband combine), трассировка acc/f6f8 в живом плагине.
|
||||
2. comb: после dual — пере-тест 4-полосного взаимодействия.
|
||||
3. Реплей-инфра готова; для любых новых гипотез сначала офлайн (2 c), потом рендер.
|
||||
|
||||
## ============ UPDATE 2026-08-23c (22u): РЕАЛЬНАЯ СТРУКТУРА 529fe0 ПО RAW ASM — ПЕРЕСМОТР ЦЕПИ ============
|
||||
|
||||
Охота за консюмером acc/f6f8 по всем дизасмам/декомпам. ГЛАВНОЕ: наша транскрипция
|
||||
цепи расходится с тем, что метод реально делает.
|
||||
|
||||
### Новые декоды (ground truth из handoff/nls_dasm/f529fe0.dis, 505 строк)
|
||||
1. **FUN_18052d650 — БИДИР-ИРРАЦИОННЫЙ ФИЛЬТР В DOUBLE** (полный декод):
|
||||
сигнатура (state=rcx, out=rdx/f6f8, in=r8/band, n); acc=[rcx+0x100010]=0 RESET;
|
||||
forward: acc = upCoef[i]·acc + downCoef[i]·band[i], запись в f6f8[i]
|
||||
(upCoef double @state+0x80010+i·8, downCoef @state+0x10+i·8 — ПЕР-БИНОВЫЕ массивы);
|
||||
backward: продолжение с ТЕМ ЖЕ state по nbin−2..1. Это наш «IIR3», но вход band,
|
||||
выход f6f8, и коэффициенты пер-биновые double, не табличные float.
|
||||
2. **ВТОРОЙ инлайн бидир-проход в теле 529fe0** (52a65d..52a85b): вход f6f8, выход
|
||||
ОБРАТНО в band[i]. Итого пара [reset,fwd,bwd]×2 — как в заметках, но точные
|
||||
адреса/направления теперь залочены.
|
||||
3. **Межполосное ПРЕ-КОМБИНИРОВАНИЕ ВНУТРИ 529fe0** (52a39a..52a4f6, ДО основного
|
||||
цикла): f6f8 ← copy bands[0]; цикл по bands[1..n−1] (массив @0x540688 = соседний
|
||||
элемент того же массива векторов!): поэлементные thunks (float 0x20f0/double
|
||||
0x1850 пары = шаблонный transform); нормировка делением на int [rsp+0x148];
|
||||
затем второй проход: band[i] *= (xmm11−xmm7), xmm7=pow([ctx+0x2c],xmm13)
|
||||
(mix-вес!), и f6f8 ⊕= ... Семантика thunks ещё не залочена.
|
||||
4. Основной пер-полосный цикл: scale (=PRNG·[0x540870]·[0x54088c], флаг 0x5408b8
|
||||
добавляет exp-random) → in-place кернел (thunks 0x140980/0x1409b0, вероятно
|
||||
bigkernel exp2) → 52d650 (bidi#1) → инлайн bidi#2.
|
||||
5. Пер-полосный массив состояния **0x540768[i]** читается в основном цикле
|
||||
([rsp+0x40]) — роль не ясна (кандидат: трек/acc).
|
||||
6. **FUN_180529c60** (vtbl, параметр = индекс полосы): band←5355d0(param_2);
|
||||
осцилл-цикл по [ctx+0x1b0] c фильтрацией через f6f8; скалярная нормировка
|
||||
band *= exp((0.5·K1−K2)·ln10/20) · **FUN_1804d56b0(band)** (агрегат от всей
|
||||
кривой полосы!); релиз-коэф pow(...) от sr/0x1a0·0x1ac; трек-обновление через
|
||||
массив **0x5407a8[i]** (52dae0 axpy + 52dbc0 add). Кандидат на «медленную
|
||||
адаптацию» (22n) и/или постобработку маски.
|
||||
7. **0x5407c8 НЕ читается НИГДЕ в рантайме** (только ctor/dtor в f_535a70.dis) —
|
||||
адрес «combine acc» из NOTES 21b был неверен; реальные пер-полосные состояния:
|
||||
0x540768[i] (в 529fe0) и 0x5407a8[i] (в 529c60).
|
||||
|
||||
### Офлайн-проверка гипотезы «спектральное сглаживание маски» (lawfit iir_c)
|
||||
Бидир-однополюсник по бинам (нормированный, ×2 прохода) при законе 7.6/1.694:
|
||||
c=0.2 → TOTAL 3.23; c=0.6 → 9.83 (монотонная деградация всех групп). ОТВЕРГНУТО:
|
||||
сглаживание размывает нотч в центре, но физически не дотягивается до тона-конкурента
|
||||
за ~130 бинов. Двойной cut в dual объясняется НЕ межбиновым сглаживанием маски.
|
||||
|
||||
### Следствие для dual
|
||||
Реальный плагин режет 500 и 2000 почти поровну при q=0.5. Раз контраст lvl
|
||||
(res-деление) есть у нас и его нет в результате — значит либо (а) детекторный
|
||||
уровень считается во ВРЕМЕННОЙ области через тот же twin-фильтр (536300 строит
|
||||
res-кривые на сетке 0.25 Гц — а детекция может идти банком time-domain фильтров),
|
||||
либо (б) нормировка агрегатом FUN_1804d56b0 выравнивает кривую, либо (в) закон
|
||||
не логарифмический по lvl. Приоритет — полный перенос 529fe0 из raw asm (505 строк,
|
||||
подъёмно) вместо текущей реконструкции из кусков.
|
||||
|
||||
### Инструментарий
|
||||
lawfit22r.py: +iir_c параметр (бидир-IIR по бинам в реплее), +res в npz;
|
||||
sim_errors кэширует по (Q,rp,iir_c).
|
||||
|
||||
Reference in New Issue
Block a user