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 u8 and titan u7 sub-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.FLX support. New: palette-export.
  • U7 music — Flex-based XMIDI extraction (ADLIBMUS.DAT, MT32MUS.DAT, etc.) and standalone .xmi conversion. 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, --full world render, colour-sampled minimap. New: map-render, map-sample.
  • U7 type flagsTFA.DAT, SHPDIMS.DAT, WGTVOL.DAT, OCCLUDE.DAT parser with animation nibbles, shape class enum, and build_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 configtitan.toml now 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-create interactive 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 (.shp or Flex patch). Non-interactive batch mode via --config recipe.toml.
  • Font rendering pipelinetitan.fonts package: 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.cfg for game paths and font config; scans game directories for *font*.vga archives; 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.