P4: lock PRNG prologue + correct constants (DAT_*=1); scale via prng_fvar30
CRITICAL fix: soothe_mem.bin is VA-linear (offset=RVA). DAT_18262b5c8/b704/b700 are INT 1 (cvtdq2ps -> 1.0), NOT the 0.4552/0.6089/0.6070 read earlier via a bad section offset. Transcribed FUN_180529fe0 PRNG prologue into prng_fvar30(): fVar30=(int)(LUT[s+1]*LUT[s]+0.001). At live state 112 this is deterministically 1.0 over 300 frames, so scale level *= (1/2048)*440.95 is not randomized in practice. Scale coefficient now computed structurally; t1kq unchanged -0.43 dB.
This commit is contained in:
@@ -23,6 +23,10 @@ struct DetectorBand {
|
||||
// 7. IIR3 leaky: twice with A3/B3
|
||||
// 8. dry/wet: mask = mask*(fVar30*0x540888) + (1-fVar30)
|
||||
// final = min over bands.
|
||||
// PRNG (FUN_180529fe0 prologue :515-583): LCG state 0x2404e0 advances by round
|
||||
// offsets; fVar30 (scale coeff) = (int)(LUT[s+1]*LUT[s]+0.001), DAT_18262b5c8/
|
||||
// b704/b700 == 1 (VA-linear dump; earlier 0.4552/0.6089/0.6070 was a bad offset).
|
||||
// At live state 112 this yields fVar30 == 1.0 deterministically over many frames.
|
||||
class FramedDetector {
|
||||
public:
|
||||
FramedDetector(size_t nfft, float sample_rate);
|
||||
@@ -36,6 +40,7 @@ private:
|
||||
size_t nfft_;
|
||||
float sample_rate_;
|
||||
double wsum_;
|
||||
int prng_state_ = 112; // 0x2404e0 (live snapshot value; advances per frame)
|
||||
|
||||
std::vector<DetectorBand> bands_;
|
||||
std::vector<std::vector<float>> res_; // per band, per bin |2B/A|
|
||||
|
||||
Reference in New Issue
Block a user