You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c03baef
Browse filesBrowse the repository at this point in the historyBrowse files
Scene archives: the "undecodable XTX variant" was ARX compression
The ~500 embedded-texture rows browse reported as undecodable (all in
scene/cf*.a) were packed members: the archives keep their members
ARX-compressed in place, and the coder passes literal words through, so
a packed XTX's header survives inside the stream while its pixels do not
exist until decompression.
- browse.py: iter_arx_containers() finds and decompresses every in-file
ARX container (1,864 in the 112 retail scene archives: 603 XTX, 778
lex, 483 FPK); the sweep decodes the XTX members with the lex models
packed beside them as palette source and skips raw hits that fall
inside a container's span
- embedded_textures.csv gains a `packed` column; retail run: 1,363
PNGs, 1,696 duplicates, 0 undecodable (was 528). All 603 packed
textures are byte-identical copies of standalone char/enemy/obj/map
.xtx, so the manifest now doubles as a per-scene provenance map
- two garbage PNGs the old sweep decoded from inside compressed streams
are gone (cf3021.a_208e4c, cf3070.a_61690c)
- FORMATS.md: .a archive layout (TOC + 0x100 record header + ARX
member); the repack note's "re-framed canvas with 4-byte inserts" is
the ARX bit stream, which is why the entry-level palette sweep works
- UPDATES.md / BROWSING.md / README: counts and narrative
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
0 commit comments