diff --git a/handoff/NOTES_LEVEL.md b/handoff/NOTES_LEVEL.md index edd0e47..5f2a4a8 100644 --- a/handoff/NOTES_LEVEL.md +++ b/handoff/NOTES_LEVEL.md @@ -3492,3 +3492,22 @@ rendersnap2 v6 пытается читать цепочку [ctx+0x540678]→ban кандидат — скан heap'а на структуры с валидным [sub+0x90]/[sub+0xc] паттерном, либо трассировка инициализации (563a60 получает rcx=band obj — ловить её аргументы при param-rebuild через rendersnap2-стиль STOP в момент загрузки). + +## ============ ДОПОЛНЕНИЕ 24aa: 563a60 — GUI-ветка; компрессия аудио в семантиках ops шагов 1–19 ============ + +Скан всей rw-памяти при рендере (scan_pairs.py): пары (A<0 1 else '/home/m/soothe-bt/dual_b1q_0.5.rpp' +proc = subprocess.Popen(['/usr/bin/reaper','-nosplash','-ignoreerrors','-renderproject', rpp], + stdout=open('/dev/null','w'), stderr=subprocess.STDOUT) +t0=time.time(); host=None +while time.time()-t0<30 and not host: + host=find_host(); time.sleep(0.001) +print('host',host, flush=True) +if not host: + sys.exit(1) +fd=os.open(f'/proc/{host}/mem',os.O_RDONLY) +def rd(a,n): + try: return os.pread(fd,n,a) + except OSError: return None +ctx=0x2370040 +best=None +while time.time()-t0 < 12: + b=rd(ctx+0x180,8) + v=struct.unpack(' 1 else '/home/m/soothe-bt/dual_b1q_0.5.rpp' +proc = subprocess.Popen(['/usr/bin/reaper','-nosplash','-ignoreerrors','-renderproject', rpp], + stdout=open('/dev/null','w'), stderr=subprocess.STDOUT) +t0=time.time(); host=None +while time.time()-t0<30 and not host: + host = find_host(); time.sleep(0.002) +print('host', host, flush=True) +if not host: + sys.exit(1) +fd = os.open(f'/proc/{host}/mem', os.O_RDONLY) + +def rd(a,n): + try: return os.pread(fd,n,a) + except OSError: return None + +seen={} +alive=True +t_end=time.time()+12 +while time.time()-60)&(arr<-1) + for i in np.nonzero(m)[0]: + Bv=float(arr[i+1]) if i+11: continue + p=struct.unpack(' 1 else '/home/m/soothe-bt/dual_b1q_0.5.rpp' +proc = subprocess.Popen(['/usr/bin/reaper','-nosplash','-ignoreerrors','-renderproject', rpp], + stdout=open('/dev/null','w'), stderr=subprocess.STDOUT) +t0=time.time(); host=None +while time.time()-t0<30 and not host: + host = find_host(); time.sleep(0.002) +print('host', host, flush=True) +if not host: + sys.exit(1) +fd = os.open(f'/proc/{host}/mem', os.O_RDONLY) + +def rd(a,n): + try: return os.pread(fd,n,a) + except OSError: return None + +seen={} +t_end=time.time()+8 +while time.time()-60)&(arr[:,0]<-1)&(arr[:,1]>1)&(arr[:,1]<100) + for i in np.nonzero(m)[0]: + key=(round(float(arr[i,0]),3),round(float(arr[i,1]),3)) + if key not in seen: + seen[key]=a+i*8 + print('pair A=%.4f B=%.4f @%x' % (key[0],key[1],a+i*8), flush=True) + a+=CH + if not alive: break + except (FileNotFoundError, ProcessLookupError): + break +print('unique pairs:', len(seen))