Files
BT411/scratchpad/uv.py
T
arcattackandClaude Fable 5 8ed6184d65 Combat: AUTHENTIC weapon groups -- streamed per-mech button bindings + the real fire chain (task #5)
The recovered system: fire channels = LBE4ControlsManager buttonGroups
(0x40/0x45/0x46/0x47); default groups = the per-mech type-6 controls-map
resource in BTL4.RES, installed by the T0 CreateStreamedMappings the port
already called -- it needed only the TriggerState attribute (id 0x13 PINNED
to the binary value; fireImpulse@0x31C is the binary's TriggerState) and an
input feed.  Keyboard/harness now push press/release edges into the button
groups; the gBT*Trigger bypasses, per-type keyboard split and 1,0 pulse
hack are retired -- weapons sharing a button fire TOGETHER (madcat Trigger
= 4 weapons).  Myomers @4b9550/@4b95b8 misattribution corrected (they are
MechWeapon ConfigureMappables/ChooseButton).  Verified 2-node: kill through
the authentic chain (12 hits vs ~36 pre-groups).  Config-mode session
(regrouping UI) = the remaining stage, KB-scoped.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 13:06:29 -05:00

23 lines
923 B
Python

import struct
b=open("content/VIDEO/GEO/BLX_COP.BGF",'rb').read()
def verts(off,ln):
n=ln//20; out=[]
for i in range(n):
p=off+i*20
x,y,z,u,v=struct.unpack_from('<5f',b,p)
out.append((x,y,z,u,v))
return out
# main utorso pmesh
main=verts(0x00ba,3920)
nz=[(i,v) for i,v in enumerate(main) if abs(v[3])>1e-6 or abs(v[4])>1e-6]
print("utorso main: %d verts, %d nonzero-UV"%(len(main),len(nz)))
xs=[v[0] for v in main]; ys=[v[1] for v in main]; zs=[v[2] for v in main]
print(" bbox x[%.2f,%.2f] y[%.2f,%.2f] z[%.2f,%.2f]"%(min(xs),max(xs),min(ys),max(ys),min(zs),max(zs)))
print(" nonzero-UV verts (idx: x y z | u v):")
for i,v in nz:
print(" %3d: %7.2f %7.2f %7.2f | %6.3f %6.3f"%(i,v[0],v[1],v[2],v[3],v[4]))
# uv range for nonzero
if nz:
us=[v[3] for _,v in nz]; vs=[v[4] for _,v in nz]
print(" nonzero UV range u[%.3f,%.3f] v[%.3f,%.3f]"%(min(us),max(us),min(vs),max(vs)))