Asset viewer
Browse Legend of Legaia assets directly in this browser. Provide your own disc image (.bin Mode2/2352) and the WASM build parses it client-side. The top viewer renders every 3D mesh (Legaia TMD) in PROT.DAT; below it, two texture grids show every 2D TIM - the raw catalog and a deep tier that recovers textures from inside LZS-compressed sections. Nothing leaves your machine.
Open a disc image
Bring your own disc
This viewer doesn't ship any Sony bytes. Provide a .bin Mode2/2352 image of Legend of Legaia (NA SCUS-94254). A single .tim file also works for one-off image previews.
Files are read with the browser's FileReader API. Nothing is uploaded; everything happens locally in WebAssembly. Your disc is cached locally in the browser (IndexedDB) and shared across the viewer, audio, monster, and world-overview pages, so it auto-loads on reload - hit Forget on the chip to clear it.
PROT.DAT TIM catalog
Every standard PSX TIM in PROT.DAT, flat-scanned with strict validation and keyed by a stable id. This set matches an independent reference decoder's TIM index exactly - same offsets, dimensions, and palette counts - and includes TIMs in the unindexed system-UI gap (e.g. the menu-glyph atlas) that the 3D browser above can't reach. Click a thumbnail to load it full-size and switch CLUT variants.
Load a disc (or raw PROT.DAT) above to browse the TIM catalog.
Compressed textures (LZS-embedded)
Most character and scene textures aren't stored as raw bytes - they live inside LZS-compressed PROT.DAT sections, invisible to the flat scan above (which, like the reference decoder, reads only raw bytes). This grid is the deep tier: every entry is LZS-decompressed and the standard PSX TIMs inside each decoded section are recovered, keyed by (entry, section, offset). A hit is admitted only when the decompressed bytes strict-parse and decode to RGBA - “decompresses without error” is never a validity signal, since the LZS ring buffer initialises to zeros. Click a thumbnail to load it full-size and switch CLUT variants.
Load a disc (or raw PROT.DAT) above to browse the compressed textures.
Using the viewer
The top viewer lists every PROT entry that carries a Legaia TMD; pick one from the sidebar or jump by PROT index. By default it renders textured (WebGL2; the same paletted fragment shader the native engine uses); toggle "textured" off for a flat-shaded fallback. Below it, the PROT.DAT TIM catalog grid shows every raw 2D texture and the compressed textures grid shows the LZS-embedded ones - click a thumbnail in either to load it full-size and switch CLUT (palette) variants.
Sound and cutscene video on disc live on the media browser. The native build adds stage geometry and cross-PROT-entry CLUT chains (via --vram-extra-dir):
./target/release/asset-viewer prot extracted/PROT.DATRun engine
Tick the Legaia engine VMs in-browser using the same LegaiaRuntime the native engine-shell uses. Provide your disc image (.bin Mode2/2352) and CDNAME.TXT is extracted automatically via ISO9660 walk. Files are read locally via FileReader; nothing is uploaded. The shared browser-cached disc (from any of these pages) is reused here - just hit Load engine, no need to re-pick.
The same disc image you use in the asset browser above works here.