P1.2: confirm f_52d990 memcpy via decomp (FUN_18052d990(lVar22, window+N/2, N/2)); infer N=4096 from freq-axis spacing + window sape; step-5 low-pass near-flat ramp
This commit is contained in:
+10
-1
@@ -184,7 +184,9 @@ Disasm: handoff/nls_dasm/f_52d990.dis (52 B), f_52d920.dis, f_52db50.dis; caller
|
|||||||
inverse FFT
|
inverse FFT
|
||||||
```
|
```
|
||||||
So step 5 replaces the FIR's lower half with the SECOND half of the captured window
|
So step 5 replaces the FIR's lower half with the SECOND half of the captured window
|
||||||
(window[N/2:] is the 0.75→1.0 rising segment) and fills the upper half with a constant xmm9.
|
(window saturates to 1.0 at idx 2049; so window[N/2:] is all 1.0 WHATEVER N/2>=2049 — the tail
|
||||||
|
copy degenerates to a flat 1.0 unless N/2 < 2049, i.e. FFT size would have to be < 4098 for the
|
||||||
|
window shape to matter here). Upper half filled with a constant xmm9.
|
||||||
|
|
||||||
### Corrected step 3 (f_52b570:52b685-52b6b3):
|
### Corrected step 3 (f_52b570:52b685-52b6b3):
|
||||||
```
|
```
|
||||||
@@ -195,6 +197,13 @@ So step 5 replaces the FIR's lower half with the SECOND half of the captured win
|
|||||||
inverse FFT
|
inverse FFT
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Size inference & effective semantics
|
||||||
|
- window = 8193 f32; it saturates to 1.0 at idx 2049 (w[2048]=0.8, plateau 1.0 beyond).
|
||||||
|
- freq-axis = 2048 f32, spacing 48000/4096 = 11.718 (matches 4096 FFT half). => N≈4096, N/2≈2048.
|
||||||
|
- Then step 5 copies window[2048:4096] = {0.8 -> 1.0 (mostly flat)} into FIR[0:2048],
|
||||||
|
upper FIR[2048:4096]=xmm9(=0?), FIR[4096]=0. Effective = gentle low-pass ramp, near-flat.
|
||||||
|
This matches NOTES line 416: captured window adds almost nothing over empirical (it's essentially 1.0).
|
||||||
|
|
||||||
### Remaining unknowns (now narrowed):
|
### Remaining unknowns (now narrowed):
|
||||||
- xmm9 / xmm13 scalar values = still the FUN_180529fe0 prologue constants (need prologue read or live capture).
|
- xmm9 / xmm13 scalar values = still the FUN_180529fe0 prologue constants (need prologue read or live capture).
|
||||||
- window[N/2:] copy + xmm9 fill IS the whole "window" mechanism; the earlier "FIR *= WINDOW"
|
- window[N/2:] copy + xmm9 fill IS the whole "window" mechanism; the earlier "FIR *= WINDOW"
|
||||||
|
|||||||
Reference in New Issue
Block a user