Catching Up With TITAN: “Ultima 6” and “Underworld 2” Support, and a Sosaria Map
I last wrote about TITAN — The Grey Wanderer’s “Tool for Interpreting and Transforming Archival Nodes” — on May 5th, when version 0.6.3 had just added Ultima 7 support and dialogue export. That was, I am slightly ashamed to admit, four months ago. The changelog since then is the sort of thing you read standing up, and I am only now catching up on it.
If you missed the March introduction, TITAN is a Python-based command-line tool for reading, extracting, and rebuilding the proprietary data formats of the later Ultima games. It started as an Ultima 8-specific utility, and has expanded to cover other games in the series since then…especially over the last couple of months!
In mid-July, with version 0.6.8 of the tool, The Grey Wanderer went deep on Ultima 7 monsters and NPCs: TITAN gained the ability to parse the game’s MONSTERS.DAT and EQUIP.DAT files, added support for inventory export from NPC.DAT, and included a conservative USECODE disassembler that, as The Grey Wanderer put its, “does not claim high-level decompilation.”
Then, on the 26th of that month, he posted a short update summarizing the changes made up to version 0.7.1 of the tool with the sort of notes that I love to see when writing catch-up articles like this:
too much to list!
Basically, Titan can now interrogate U6 formats and many U9 formats.
Version 0.7.2 was also mentioned in the same post, this time with a few listed changes: initial Ultima Online (Classic Client) support, better handling of Ultima 7 and Ultima 8 .SHP files, fuller coverage of non-3D Ultima 9 graphics, and the start of a framework for converting Ultima 8 shape data into Ultima 7 shapes. There’s some promise there for future Exult mods, I’m sure.
The most recent update to TITAN, posted on the last day of August, brought news of Underworld II support. Versions 0.7.3 and 0.7.4 add a titan uw2 command set that pulls maps, palettes, shapes, objects, and native model data out of the game files, with textured 3D map export feature that supports PNG, OBJ/MTL, JSON, and GLB as file types. Doors, bridges, wall panels, levers, writing, owner-colored beds: the sort of special objects that usually get skipped on a first pass. There is also, for the Ultima 7 enjoyers, the ability to build .SHP files from PNG frames.
The current TITAN release on PyPI, at least as of the time I’m writing this, is 0.7.5. That one adds a universal Ultima 7 map JSON export/import feature and, somewhat delightfully, a conversion of the NES Ultima 3 Sosaria overworld into a Serpent Isle-sized Ultima 7 secondary map. Might be worth checking out!
You’d do well to follow The Grey Wanderer on the Ultima Dragons Discord server if you want to keep on top of TITAN updates, and of course you can always check out the project’s GitHub repo or the PyPI page. If you’d like to install TITAN to try it for yourself, you’ll first need to make sure you have Python installed on your system. From there, at the command line:
pip install titan-ultima
To catch up from an older copy:
pip install --upgrade --force-reinstall --no-cache-dir titan-ultima
And if you’re using the Ultima 8 dialogue simulator, run these again before launching:
titan dialogue prepare
titan dialogue validate
As ever, you need the original game files to use TITAN, but I’m assuming that if you’re reading news here you probably have those on hand already.











































