Friday, July 3, 2009

The Problem Child

Getting the latest release of Item Assistant out the door has been problematic to say the least. The first published binary labeled v0.9.4 proved to be flawed in more ways than one.

After FunCom released the 18.1 patch to Anarchy Online, I had to completely re-implement the database extraction code. Before it was using an existing DLL by Faircom called CTreeStd.dll. Unfortunately the age of that DLL was showing and FunCom decided (wisely IMHO) it was time to move to something that supported a database size larger than 2 GB.

Re-implementing it wasn't really that hard, as I originally based it on mapped_file_source from the boost iostreams library, to map each of the data-files into memory at a turn, and extracting all relevant information. This turned out to be a shortlived solution, as bug reports started flooding in from Windows XP users. Apparently there are limitations in the older Windows kernel that prevent me from mapping a 1 GB file into memory at one go. So I went back to the drawing board, and implemented it all again, this time using the more classic approach of the std::ifstream. Since the "random" access I cause isn't really that random (I read all items in the sequence they are stored in the file) there was no noticable performance difference between the two solutions on my PC.

So just to sum up, here is the list of what has changed between v0.9.3 and the current v0.9.5:

  • Added support for the new database in v18.1.
  • The application is no longer using the registry to store its settings. Settings are stored in the ItemAssistant.conf file.
  • Enhanced item listing so the container column shows if an item is equipped, and at which tab-panel it is.
  • Added baloon warning popup when application is started after the AO client was started since this may lead to the database being out of sync.
  • Improved statusbar for the Inventory view.
  • The application will now remember which dimension you chose last time you changed dimension in either the find panel or the pattern matcher.
  • Added "Copy Item Name(s)" to the item context menu.
  • Bug Fix: Fixed weird encoding of ampersands in backpack names.
  • Bug Fix: Exporting all items from a toon should not put multiple quotes around the backpack names any more.
  • Bug Fix: Fixed buffer overflow with long backpack names.