1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
0/5,

UOP Archive File Format Schematic

Summary of the tutorial

The new UOP archive format for Ultima Online game files as of late have not been well documented.

After a bit of investigation and a lot of cross-referencing with the help of the Orion team, I've managed to draft what I consider a simplified schematic of the file format/structure.

Keep in mind that this structure does not cover individual data structures, just the actual UOP storage format.

I hope this will help break down some walls that may otherwise be hindering the development of new and improved tools. I am currently developing a simple UOP SDK library with read and write capability that can hopefully replace or patch missing functionality in the Ultima SDK, RunUO and ServUO cores.

Code (C#):
  1.  
  2.     /* 
  3.      *  Unknow1[4]
  4.      *  VersionMajor[1]
  5.      *  VersionMinor[1]
  6.      *  VersionBuild[1]
  7.      *  VersionPatch[1]
  8.      *  Unknown2[4]
  9.      *  BlockStart[8]
  10.      *  BlockCount[4]
  11.      *  FileCount[4]
  12.      *
  13.      *  FOR BlockCount[12]
  14.      *  {
  15.      *      BlockFileCount[4]
  16.      *      BlockStartNext[8]
  17.      *     
  18.      *      FOR BlockFileCount[34]
  19.      *      {
  20.      *          HeaderStart[8]
  21.      *          HeaderLength[4]
  22.      *          DeflatedLength[4]
  23.      *          InflatedLength[4]
  24.      *          HashCode[8]
  25.      *          AdlerValue[4]
  26.      *          ZLibQuality[2]
  27.      *      }
  28.      *  }
  29.      * 
  30.      *  FOR FileCount[*]
  31.      *  {
  32.      *      Header[HeaderLength]
  33.      *      Data[DataLength]
  34.      *  }
  35.      */
  36.  
If anyone has anything to add to this, please feel free, I may have missed something!

Check out the Orion client project, you don't want to miss out!