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 801ce9c
Browse filesBrowse the repository at this point in the historyBrowse files
Models: .lex -> glTF binary (Blender-ready); four texture-decoder fixes it exposed
lex.py (new) parses the VU1 display lists — VIF UNPACK/MSCNT batches,
in-stream material blocks, three skin-weight encodings — and writes a
glTF 2.0 binary per model with the decoded atlas embedded, UVs scaled by
the model's declared TEX0 size and wrapped per material rect, vertex
colours, and an identity-bound skin of named weight groups. Companion
face files are merged into the body's .glb and still written alone.
Format per Lakuwu's xenotool, re-implemented; counts verified against
it (KOS-MOS 3,290 tris / 46 groups). `browse --kinds models`, a GUI
checkbox, docs/BLENDER.md for the import workflow.
Opening Cherenkov and Albedo in Blender exposed four decoder bugs, all
fixed and regression-checked over every model-bound atlas on the disc
(756 of 1,019 change; model-palette decodes 790 -> 940, corner-scan
fallbacks 155 -> 14; every opacity drop inspected):
* two-part atlases composed their second sub-image over the first
(placement rule refitted on all 166 multi-sub layouts; 42 character
atlases had been monotone noise since v1.0.0; the FORMATS "hama.lex"
caveat was this bug);
* material blocks spliced into the vertex streams were never read
(Cherenkov's sleeves) — lex_materials now comes from lex.parse_lex;
* true-colour hair sheets are taken from the model's pal-0xFF rects
instead of a per-block noise guess (Albedo's white hair);
* eyelash materials (UV type 0x7F, 4bpp sheets, undecoded) get their
real rect and are flagged in the export.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+7-2Lines changed: 7 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -272,6 +272,7 @@ reimplemented from the docs alone.
272
272
|[docs/SUBTITLES.md](docs/SUBTITLES.md)| authoring and burning FMV cutscene subtitles — what's verified vs. what still needs a PCSX2/hardware check |
273
273
|[docs/FORMATS.md](docs/FORMATS.md)| byte-level format reference (TOC, ARX, XTX, LEX, FL00, audio, movies) with verification evidence |
274
274
|[docs/MUSIC.md](docs/MUSIC.md)| how the sequenced score works — SMD/SWD, the unstripped IOP driver, MIDI/SoundFont/WAV export — with the fun facts the disc gave up |
275
+
|[docs/BLENDER.md](docs/BLENDER.md)| the models in Blender — import, what the objects/materials/vertex groups mean, what the `.jnt` gap means |
275
276
|[docs/JAVA.md](docs/JAVA.md)| the headline find: cutscenes as JDK 1.1 Java, and how to decompile them |
276
277
|[docs/FINDS.md](docs/FINDS.md)| easter eggs and dev leftovers — staff folders on the retail disc, debug tools in shipped cutscenes, Gamera |
277
278
|[docs/HISTORY.md](docs/HISTORY.md)| what this disc records about Monolith Soft in 2002 |
@@ -285,6 +286,10 @@ Decoded and converted by `browse`:
285
286
resolved via the paired `.lex` model materials, the consuming overlay's
286
287
texture descriptors (extract with `--code` to enable), or corner-scan;
287
288
candidates are ranked by how coherently they render.
289
+
***Models** (`.lex` → `.glb`) — the VU1 display lists decoded to
290
+
triangles with normals, vertex colours, skin weights and the atlas
291
+
embedded; one glTF binary per model, straight into Blender. (Format
292
+
per Lakuwu's xenotool; counts verified against it.)
0 commit comments