B1/B2: ACC table double-deref 5407c8 + chain_9_19_sim op-by-op (BLOCKMAP 620-644)

This commit is contained in:
2026-08-30 18:07:15 +03:00
parent 359aaeb7cb
commit 7b479f5357
2 changed files with 58 additions and 0 deletions
+19
View File
@@ -176,6 +176,25 @@ def main():
store['lut_G'] = struct.unpack('<f', fb4[12:16])[0]
store['lut_mode'] = fb4[16]
for off in SLOTS[1:]:
if off == 0x5407c8:
# ACC is table of pointers per-band [5407c8 + i*8] -> buf 2049 f32 each
for bi in range(4):
q = rd(ctx + off + 8*bi, 8)
if not q: continue
ptr = struct.unpack('<Q', q)[0]
if ptr < 0x10000: continue
ab = rd(ptr, 2049 * 4)
if ab:
store[hex(off) + f"_{bi}"] = np.frombuffer(ab, dtype='<f4').astype(np.float32)
# also store raw table pointer for debug
q = rd(ctx + off, 8)
if q:
ptr = struct.unpack('<Q', q)[0]
if ptr >= 0x10000:
ab = rd(ptr, NARR * 4)
if ab:
store[hex(off)] = np.frombuffer(ab, dtype='<f4').astype(np.float32)
continue
q = rd(ctx + off, 8)
if not q:
continue