Repository navigation
Xenosaga I Extractor v1.2.0
Superseded by v1.2.1: movie subtitles on a black bar, encoder at the full slot, and bundles that include the overlay-string, battle-font and muxer work.
Third release of the Xenosaga Episode I extractor kit: everything from October 2026. Two halves: models that open in Blender rigged and textured, and a translation layer with no length limits and fonts for scripts the game never had. Packaged builds for macOS (arm64) and Windows (x64) are attached below, rebuilt with all of it; or run from source (python3 cli.py …, stdlib only). The TrueType glyph path of lang scan needs pip install fonttools uharfbuzz, which the source checkout supports; the bundles cover everything else, including hand-drawn PNG cells. Per-change notes: docs/UPDATES.md.
macOS: first launch
The app is ad-hoc signed, not notarized. After unzipping, right-click Xenosaga-I-Extractor.app → Open the first time (or run xattr -dr com.apple.quarantine Xenosaga-I-Extractor.app). After that it double-clicks normally.
Translation
- Dialogue of any length —
evt-export/evt-import(evttext.py) write every string in every scene and cutscene script as a text line and rebuild the Java classes and their FL00 container around the translation. Identity rebuild of all 567 containers is byte-exact. Mails (.uml) may grow too; their image pointers follow. - Relocation —
--growmoves an object that no longer fits its sector allocation to the end of the image and repoints its TOC entry (the engine reads by raw sector). Read back through the TOC on a scratch disc; not yet booted past the image end. - The third chain — the second DVD layer has its own ISO9660 volume with
XENOSAGA.20–.24: 266 objects (89 cutscene scripts, 58 movies, 44 voice streams, 42.fpk, 33.arc) that were only being carved as raw movie sectors. Every command sees chain 2 now. - Fonts, exactly —
font.pyturnsfont0.tex/font1.texinto four sheets of 20×24 cells and back byte-for-byte (USA and JP), with the executable's cell addressing, the 256-cell proportional block and its metrics table (right − left + 3px per glyph). The text is EUC-JP, not Shift-JIS;textpackdecodes it as such. - New scripts —
lang scanshapes a translated tree with HarfBuzz, allocates a proportional slot or kanji cell to every glyph it uses and draws them from a TrueType font (or hand-drawn PNG cells) into both faces;lang encodeshapes, measures, wraps and orders right-to-left lines with Latin runs kept forward and brackets mirrored.--extendlets two scripts share one font pair. Mixed-script words keep their Latin halves; control codes and the disc's own symbols pass through. - Verified on PCSX2 — an Arabic dialogue line in the Encephalon cold open and an Amharic U.M.N. mail body, both drawn by the game from the rebuilt fonts. Guide, worked example and captures:
docs/SCRIPTS.md.
Several of these formats were first worked out by poketony for the Korean localisation XS1KOR; the implementations here are the kit's own, against the USA disc.
Models
.lex→ glTF binary —browse --kinds modelswrites every character, enemy, weapon, mech, prop and map as a.glbwith its texture inside: 1,315 files on the retail disc, faces merged into their bodies. How-to:docs/BLENDER.md.- Skeletons decoded —
.jntis a tree of 64-byte nodes; the three stored angles are rotations about Z, Y, X in that order (settled against the running game's per-bone matrix table over PINE). Armatures land on the mesh from the files alone, hands and hair included; 760 models carry one. - Eyelashes solved — the lash material is a small true-colour alpha strip the lash polygons stretch into strokes; it had been read through a palette.
- Four texture-decoder fixes found by looking at models in Blender: two-part atlases overwriting themselves (42 character textures were beige noise), materials hidden in the vertex stream, hair-sheet true-colour regions, and UV scale on narrower atlases. 756 of 1,019 model textures change.
- Casino closed out — the menu overlay's texture descriptors supply the palettes for the card faces, slot machine and gallery (GitHub issue #1).
Pictures
In-game, from the LANGTEST disc described in docs/SCRIPTS.md:
More from the same disc, after the follow-up on main (overlay strings, the battle screen's own font, movies without libass; see docs/UPDATES.md 2026-10-15):
Blender, straight from the kit's output:
🤖 Generated with Claude Code







