Ultima VIII Internal Formats

This page deals with the details on the specifications of the file formats for the different files included in Ultima VIII.

Files
These are the files in an Ultima VIII installation, and what is known about them.


 * u8.exe
 * savegame/u8save.###
 * sound/*.dll - Music device drivers.
 * sound/music.flx
 * sound/sound.flx
 * static/anim.dat
 * static/ecredits.dat
 * static/eintro.skf
 * static/endgame.skf
 * static/fixed.dat
 * static/glob.flx
 * static/gumpage.dat
 * static/quotes.dat
 * static/typeflag.dat
 * static/u8fonts.flx
 * static/u8gumps.flx
 * static/u8mouse.shp
 * static/u8pal.pal
 * static/u8shapes.cmp - Compressed form of "static/u8shapes.flx". The first time the game is run, it is decompressed.
 * static/u8shapes.flx
 * static/wpnovlav.dat
 * static/xformpal.dat

Common Formats
All multi-byte data are stored in little-endian order. For example, 1122h could be stored as the bytes (22h 11h). Signed values are stored as two's-complement. For example, the signed byte -1 is stored as FFh. These are the basic types that are referred to throughout this document:


 * uint8/16/24/32 - Unsigned one, two, three, and four-byte integers.
 * int8/16/32 - Signed one, two, and four-byte integers.
 * char - ASCII character stored as uint8.
 * zero - A single byte that is always zero.

FLX Archives
Files with a ".flx" extension, and many without, are stored in a common archive file format. The header has this format:

The interpretation of record data depends upon the file itself. All records in an archive have the same format.