Ultima Stones | Ultima I Home | Development
PLAYERX.U1 | MAP.BIN | TCD.BIN | EGATILES.BIN | EGATOWN.BIN


Ultima > I Mondain > Development > Player Data Type

Player Saved Game Data Type

   The player save file (PLAYERX.U1) is a fixed length file 334 bytes long. There can be four files where 'X' is 1, 2, 3 or 4. Each is referred to as a 'game.' I have four outstanding global unknowns while the object table entries have three each. 

playerFileType.gif (13619 bytes)

  1. Character name; 16 bytes; 14 character maximum
  2. Character race; 16 bit integer; Set to 0-3 denoting race attribute:
    Set Race; Standard Attribute Adjustments*
    0 Human; Intelligence + 5
    1 Elf; Agility + 5
    2 Dwarf; Strength + 5
    3 Bobbit; Strength - 5, Wisdom + 10
  3. Character class; 16 bit integer; Set to 0-3 denoting class attribute:
    Set Class; Standard Attribute Adjustments*
    0 Fighter; Strength + 10, Agility + 10
    1 Cleric; Wisdom + 10
    2 Wizard; Intelligence + 10
    3 Thief; Agility + 10
  4. Character gender; 16 bit integer; Set to 0-1 denoting gender attribute:
    Set Gender
    0 Male
    1 Female
  5. Remaining hit points of character; 16 bit integer; architecture maximum of 9999 points
  6. Strength attribute; 16 bit integer; Normal limit 99, architecture maximum 255
  7. Agility attribute; 16 bit integer; Normal limit 99, architecture maximum 255
  8. Stamina attribute; 16 bit integer; Normal limit 99, architecture maximum 255
  9. Charisma attribute; 16 bit integer; Normal limit 99, architecture maximum 255
  10. Wisdom attribute; 16 bit integer; Normal limit 99, architecture maximum 255
  11. Intelligence attribute; 16 bit integer; Normal limit 99, architecture maximum 255
  12. Total remaining money (copper pence) of character; 16 bit integer; architecture maximum of 9999 points
  13. Accumulated experience of character; 16 bit integer; architecture maximum of 9999 points
  14. Total remaining food of character; 16 bit integer; architecture maximum of 9999 points
  15. Currently readied weapon; 16 bit integer; 0-15 setting representing weapon on hand, should be at least one of said weapon owned, selection 0 is hands
  16. Currently memorized spell; 16 bit integer; 0-10 setting representing spell ready to cast, should be at least one of said spell owned, selection 0 is prayer
  17. Currently worn armour; 16 bit integer; 0-5 setting representing armour worn, should be at least one of said armour owned, selection 0 is bare skin
  18. Current transport used; 16 bit integer; 0-7 setting representing current transportation, should be at least one of said transport owned, selection 0 is on foot
  19. Dungeon Randomize Seed; 16 bit integer; set at character creation, constant for entire game
  20. X-Coordinate; 16 bit integer; 0-167 on world map (longitude)
  21. Y-Coordinate; 16 bit integer; 0-153 on world map (latitude)
  22. Quest flags; 8 member array 16 bit integer; 0 if uncommissioned, 1 if commissioned yet incomplete, 0xffff if completed; follows is Commissioner - Quest Where (- Reward - Extra Clue)
    1. British; Grave of the lost soul
    2. Lost King; Kill a Gelatinous Cube (third/fourth dungeon level); gives Red Gem; It requires all four gems to launch a time machine
    3. Barataria; southern sign post
    4. Rondorin; Kill a Carrion Creeper (fifth/sixth dungeon level); gives Green gem; the time machine must be used in order to win
    5. Olympus; Pillar of Ozymandias
    6. Black Dragon; Kill a Lich (seventh/eighth dungeon level); gives Blue gem; the princess will help a space ace through time
    7. White Dragon; Tower of Knowledge
    8. Shamino; Kill a Balron (ninth/tenth dungeon level); gives White gem; take nine items from the castle stores
  23. Gem keys; 4 member array 16 bit integer; 0 - not have, 1 - have; 1. red, 2. green, 3. blue, 4. white
  24. Armours Carried; 5 member array 16 bit integer;
    Index Armour Index Armour
    0 leather 3 vacuum
    1 chain 4 reflect
    2 plate
  25. Weapons Carried; 15 member array 16 bit integer;
    Index Weapon Index Weapon
    0 dagger 8 wand***
    1 mace 9 staff***
    2 axe 10 triangle***
    3 rope & spikes** 11 pistol
    4 sword 12 light sword
    5 great sword 13 phazor
    6 bow and arrows 14 blaster
    7 amulet***
  26. Spells Available; 10 member array 16 bit integer;
    Index Spell Index Spell
    0 open 5 ladder up
    1 unlock 6 blink
    2 magic missile 7 create
    3 steal 8 destroy
    4 ladder down 9 kill
  27. Transport Available; 7 member array 16 bit integer;
    Set Weapon on hand Set Weapon on hand
    0 horse 4 aircar
    1 cart 5 shuttle
    2 raft 6 time machine
    3 frigate
  28. Enemy ships destroyed; 16 bit integer; positive integer, more than 20 possible but useless
  29. Object table entry count; 16 bit integer; does not include player, should not exceed 39
  30. Total Moves; 16 bit integer; counter of entered commands, rolls over at 0xffff
  31. Spacecraft Fuel; 16 bit integer; normally 1000, if 0 or less on takeoff, player dies
  32. Spacecraft Shields; 16 bit integer; normally 1000, if 0 or less on takeoff, player dies

TB. Object table; 40 entries, each entry contains the following eight 16 bit integers

  1. Object tile; 16 bit integer; undefined beyond 0x2f
  2. Map tile that object covers; 16 bit integer; undefined beyond 0x11
  3. X-Coordinate; 16 bit integer; same as world map coordinate S
  4. Y-Coordinate; 16 bit integer; same as world map coordinate T
  5. Hit Points; 16 bit integer; 0 for player and transports, varies with NPC
  6. Object unknown 1; 16 bit integer; always found to be 0
  7. Object unknown 2; 16 bit integer; always found to be 0
  8. Object unknown 3; 16 bit integer; always found to be 0

* Adjustments applied to attributes for choosing race and class at character creation.
** Unknown use for rope and spikes.
*** These "weapons" are magic enhancers, only the triangle can be used as a physical weapon.
**** Formatting blocks always found to be 0xffff

Unknowns