Repository navigation
Xenosaga I Extractor v1.1.0
Second release of the Xenosaga Episode I extractor kit. Everything since v1.0.0 is on the extract/browse (viewing) side plus the repack/translation layer; the packaged builds are rebuilt with all of it.
Added
- Repack layer —
patchwrites any object back into the ISO in place; a byte-perfect clone of Monolith's ARX packer;pinkhairas the worked recolor example (with the disc-wide sweep for the 12 embedded copies of a character texture). - Translator text pipeline —
text-export/text-importround-trip all 914 in-game text objects (588 scene/menu.txt+ 326 U.M.N. mails) as UTF-8 with Shift-JIS byte budgets;docs/FRENCH-TRANSLATION-GUIDE.mdanddocs/ARABIC-TRANSLATION-SPEC.md. - Cutscene subtitles —
subs-template/subs-burnauthor and burn subtitles into the.pssmovies, audio untouched. - Sequenced BGM —
music-exportrenders the Procyon SMD/SWD music to MIDI + SoundFont2 + WAV/FLAC, reversed from the game's own unstripped IOP driver (SSD.IRX). - Battle voice/SE banks —
battle_audiobrowse kind, ~1,500 sample WAVs fromyamamoto/snd/sed. - Embedded texture sweep — every dump file is swept for XTX blobs inside effect/scene/UI containers: 1,363 more PNGs (title, help and menu screens, room backdrops, effect sheets) plus a per-carrier manifest.
- More content — PS2ICON3D
hdd.resunpacked; hidden string tables sniffed out of binary files (event-item descriptions, casino dialogue, EUC-JP dev configs).
Fixed
- Texture decode (GitHub issue #1) — palette tiles no longer show as a square of noise in the corner; character atlases no longer garble: raw true-colour regions (the hair sheets) are drawn from the canvas, companion-model palettes are merged (KOS-MOS's red eye), map atlases rescue their parked CLUTs, and every one of the 1,269 standalone textures decodes (was 1 undecodable).
- Casino sheets — overlay texture descriptors now supply the casino/menu palettes; the 30 numbered
tanakasheets and the data viewer render instead of magenta blocks and pink tints. UI sheets with transparent cut-outs keep their own corner-spot palette (the slot frame, pay table, neon reel labels, window sheet, card-rarity labels and the Elsa deck map had been handed washed-out palettes by the ranking). The raw-CT32 and block-rescue passes are restricted to model-bound textures after they were caught repainting the slot reels, poker felt and one slot tile with noise — verified against v1.0.0 renders decoded from the tagged code. - Scene archives — the ~500 embedded textures reported as "undecodable" were ARX-compressed in place; they are now decompressed and decoded (all turn out to be per-scene copies of standalone textures, so the manifest doubles as a scene → texture provenance map). Two garbage PNGs decoded from inside compressed streams are gone.
- BGM tempo — the driver's timebase is a fixed 96 PPQN; the first cut played the battle themes ~25% fast.
- XTX sprite files that are all 16×16 sub-images (
carddata/game/1p2p.xtx) decode.
Updated
docs/FORMATS.md— scene-archive layout (TOC + record header + ARX member), corrected repack notes, LEX/XTX palette pipeline, sequenced-BGM spec.docs/UPDATES.mdhas the per-change notes and what to re-run.- Packaging pins Python 3.12 and bundles numpy (for WAV/FLAC music rendering) and ffmpeg.
Before / after
Left or top: the earlier build. Right or bottom: v1.1.0. All renders are straight from browse --kinds textures on the retail USA disc.
KOS-MOS atlas (char/pc/kosmos.xtx) — v1.0.0 could not decode this file at all; top is the August interim build, bottom is v1.1.0 (hair band and eye).
Casino slot machine (tanaka/slot_1.xtx) — v1.0.0 vs v1.1.0. The small square of noise at the bottom of the v1.0.0 render is the parked palette tile from issue #1, blanked now.
Casino poker table (tanaka/poker_1.xtx) — v1.0.0 vs v1.1.0.
Casino data viewer (tanaka/dataviewer.xtx) — v1.0.0 vs v1.1.0.
Casino slot frame (tanaka/slot_2.xtx) — v1.0.0 vs v1.1.0. v1.0.0 already had this one right; an interim build tinted it purple, and the final decoder keeps its corner-spot palette (the parked tile is blanked).
Still imperfect: tanaka/base.png (slot symbol sheet) is tinted by a wrong overlay palette, and two small regions of the KOS-MOS atlas are plane-packed 4bpp visor-HUD sheets whose palettes are not on disc.
Samples
Short excerpts, as documentation of what the kit produces. Regenerate the full set from your own disc.
-
Music, rendered by
music-exportfrom the sequenced SMD/SWD data at the corrected tempo: BATTLE1, first 20 s · U.M.N. Mode, first 20 s -
Spoken dialogue: voice stream chain1/sound/vda/s191008, first 15 s (decoded by
browse --kinds audiofrom the interleaved SPU ADPCM streams) · cutscene layer1_021, 20 s of the dubbed track (carved from layer 1 and converted bybrowse --kinds movies) -
Battle dialogue: montage of eleven in-battle lines — KOS-MOS (special, boost, battle-end), Shion, Jr., MOMO, chaos and Ziggy, straight from the per-character
yamamoto/snd/sedbanks thatbrowse --kinds battle_audiounpacks (file nameskm_sp1,shion_end5,jr_sp6,mo_bst3,chaos_bst3,z8_end2, …). -
Dialogue text, as
text-exportandbrowse --kinds textdeliver it:U.M.N. mail scene
umn/event01.txt(speaker tags and control codes preserved):<speech>02 <char>SHION <msg> \15\2They sure did.\37 But guess what! I had the "RIOS 680RR" model even before they made their official announcement.\15\0\37 </msg>Encephalon tutorial (
scene/ST0210.evt, lifted from the Java constant pool byclasses):After a battle, you'll flash for a few seconds. During this time, you won't trigger a new battle, even if you come in contact with the enemy. Remember this, okay? You want to move on to real combat? All right then, I'll transport you to your original location after the battle is over. Are you ready?Event items (
karakama/evtitem.dat, sniffed string table):Master Key — A key to a prison cell. U-TIC Card — This card will disarm the electronic lock in corridor number 5. Flower Seed — Seed of the Ariadne flower.
Packages
Xenosaga-I-Extractor-win64.zip— Windows, embedded Python + ffmpeg, no install.Xenosaga-I-Extractor-macos.zip— macOS (Apple Silicon).app.
music-export WAV/FLAC rendering needs numpy (bundled in the packages; pip install -r requirements.txt from source).




