Let us start with a simple roll call: please raise your hand if you remember XIDX, what it is and what it does?
For those who do not know: XIDX is a program to extract the contents from pairs of Rome Total War IDX/DAT files, and repackage files as IDX/DAT pairs. It was one of the earliest modding tools around, and it was created by a modder nicknamed Vercingetorix. Vercingetorix may no longer spend his days dissecting and reverse engineering file formats created for the Total War engine, but he did something fairly unique in the TW community which ensured his work is still of great value: he released the source code for XIDX under an open source licence. (Of course Vercingetorix is most famous for his work on the CAS file format.)
Why is his decision to release the source code so important? Well, it turns out that with Medieval II Total War the same types of files were used, again. The tool continued to work beautifully, but there was a catch: the game did not accept packs created by XIDX anymore. What had happened was that the Creative Assembly had made a tiny modification to the file format which amounted to updating the version stamp included in the first few bytes (used by the game to identify the file format).
Additionally, it also turned out that there were a few problems with XIDX. For one thing, sometimes it crashed mysteriously on Windows Vista or Windows 7. For another, sometimes the names of skeletons in the skeletons IDX/DAT pair clashed with the names of directories used to store the related animations files. For a third, it only ran on Windows. That will probably not be an issue for most of our fans or most of the TW modders out there, but it is a problem for us when we want to use XIDX to build IDX/DAT pairs on our Linux server!
However, because the source code for XIDX was freely available to us we were able to make changes to the tool and fix bugs (including the crashes). We also updated it to support the Medieval II file formats, added support for a new type of IDX/DAT pair (events.dat, and events.idx), and implemented a scheme for the tool to add/strip file extensions when packing/unpacking files. (That last feature can be used to circumvent the issue with skeleton names mentioned earlier).
Finally, because the code was available to us under an open source licence, we can now pass on our modified version to you as well, so you may benefit from it.
Regards,