TITAN Updated to Support “Ultima 7” and Dialogue Export
Over on the Ultima Dragons Discord server, The Grey Wanderer has posted a couple of exciting updates about TITAN (Tool for Interpreting and Transforming Archival Nodes), a utility that can read, convert, extract, and reconstruct the proprietary formats of the data files for Ultima 8…and, as of version 0.60 of the tool, Ultima 7 (both parts) as well:
titan-ultima 0.6.0
Added — Ultima 7 support
- Multi-game architecture — game-specific commands live under
titan u8andtitan u7sub-apps; shared commands remain at root.- U7 shapes — read/write U7 RLE shapes and VGA Flex archives (
SHAPES.VGA,FACES.VGA, etc.).U7Shape.to_bytes()/.save()for round-trip encoding. New commands:shape-export,shape-batch.- U7 palettes — 12-palette
PALETTES.FLXsupport. New:palette-export.- U7 music — Flex-based XMIDI extraction (
ADLIBMUS.DAT,MT32MUS.DAT, etc.) and standalone.xmiconversion. Multi-track XMIDI now produces MIDI Format 1. New:u7 music-export,u8 music-export.- U7 sound — Creative Voice (.voc) decoder with ADPCM support; batch speech export from
U7SPEECH.SPC. New:voc-export,speech-export,u8 sound-export-all.- U7 map rendering — parallel oblique projection (classic / flat / steep), IFIX + optional IREG objects, dependency-DAG depth sorting, TFA flag filtering,
--fullworld render, colour-sampled minimap. New:map-render,map-sample.- U7 type flags —
TFA.DAT,SHPDIMS.DAT,WGTVOL.DAT,OCCLUDE.DATparser with animation nibbles, shape class enum, andbuild_exclude_set(). New:typeflag-dump(summary / detail / csv).- U7 savegame reader — Exult
.sav(ZIP & FLEX), global flags, save metadata, NPC stats, schedules. New:save-list,save-extract,gflag-dump,save-info,save-npcs,save-schedules.- Multi-game config —
titan.tomlnow supports[u7bg.*]/[u7si.*]sections alongside the existing[u8.*]/ legacy[game]format.- Enhanced grid overlays — chunk coordinate labels and superchunk boundary lines for both U7 and U8 map commands.
Added — U7 font creation
- Font wizard — new
titan u7 font-createinteractive wizard builds Exult-compatible font shapes from TrueType sources. Steps: game/archive selection, slot picking (11 BG/SI stock presets), TTF source, render method, dimensions, palette, preview, and output (.shpor Flex patch). Non-interactive batch mode via--config recipe.toml.- Font rendering pipeline —
titan.fontspackage: FreeType mono/grayscale renderer, palette LUT mapper (7 built-in LUTs), glyph-to-shape encoder.- Hollow gradient rendering — stroke outline + vertical gradient fill with morphological erosion; 30 built-in gradient presets (from U7 palette and uiGradients) with ANSI colour swatch display. Hex-to-palette resolver maps any CSS gradient to nearest game indices.
- Bundled TTFs — six fonts: dosVga437-win, Ophidean Runes, Britannian Runes I/II/II Sans Serif, and Gargish.
- Exult integration — parses
exult.cfgfor game paths and font config; scans game directories for*font*.vgaarchives; shows live slot tables from actual Flex data; resolves mod patch directories for archive patching.- Exult Studio preview — auto-fills frame 65 (the hardcoded thumbnail frame) with a representative glyph for non-standard layouts (Gargish, Runic, Serpentine).
Version 0.62 of the tool continued to expand on these features, notably adding highlighting features to the world map, allowing for the definition of custom zones. And the most recent release, version 0.63, added support for dialogue export and editing, in addition to improving the tool’s installation process a bit.

Of course, installing TITAN still requires working on the command line to begin with, and continues to require Python 3.9+, along with NumPy 1.24+, Pillow 10.0+, and Typer 0.15+. To kick off the installation process, once these prerequisites are in place, type:
pip install titan-ultima
And once TITAN has been installed, there is a one-time setup wizard:
titan setup
You can check the project’s GitHub or PyPi pages for more details, and for usage instructions once setup has been completed.











































