Ultima I Save Game Format

From ModdingWiki
Jump to navigation Jump to search
Ultima I Save Game Format
Format typeSaved game
Save locationsOn world map only
Elements savedStats, inventory, location of vehicles and enemies
Games

In Ultima I, players must create a player which is stored into a save game file called player*.u1. A maximum of four characters can be created. The player can save their game at any time on the over world. The save game file stores all of the player's stats, inventory, the location of their vehicles, and the location of nearby enemies.

When the game needs to jump from one EXE to another, like when you use the space shuttle (which moves from out.exe to space.exe), the currently running EXE save the player in a file called inuse.u1, and the next EXE loads the data from the file and deletes it.

File format

Each save game file stores the following data:

Offset Data type Name Description
0x00 ASCIIZ[15] Name Player's name. Max of 14 characters, 15 is null.
0x0F BYTE Null Null value.
0x10 INT16LE Race 0 - Human, 1 - Elf, 2 - Dwarf, 3 - Bobbit
0x12 INT16LE Class 0 - Fighter, 1 - Cleric, 2 - Wizard, 3 - Thief
0x14 INT16LE Sex 0 - Male, 1 - Female
0x16 INT16LE Hits 0-9999.
0x18 INT16LE Strength Strength.
0x1A INT16LE Agility Agility.
0x1C INT16LE Stamina Stamina.
0x1E INT16LE Charisma Charisma.
0x20 INT16LE Wisdom Wisdom.
0x22 INT16LE Intelligence Intelligence.
0x24 INT16LE Coin 0-9999.
0x26 INT16LE Experience 0-9999.
0x28 INT16LE Food 0-9999.
0x2A INT16LE Ready Weapon 1 - Dagger, 2 - Mace, 3 - Axe, 4 - Rope and Spikes, 5 - Sword, 6 - Great Sword, 7 - Bow and Arrows, 8 - Amulet, 9 - Wand, A - Staff, B - Triangle, C - Pistol, D - Light Sword, E - Phazor, F - Blaster.
0x2C INT16LE Ready Spell 1 - Open, 2 - Unlock, 3 - Magic Missile, 4 - Steal, 5 - Ladder Down, 6 - Ladder Up, 7 - Blink, 8 - Create, 9 - Destroy, A - Kill.
0x2E INT16LE Ready Armour 1 - Leather, 2 - Chain mail, 3 - Plate mail, 4 - Vacuum suit, 5 - Reflect suit.
0x30 INT16LE Boarded Transport 0 - Walking, 1 - Horse, 2 - Cart, 3 - Raft, 4 - Frigate, 5 - Aircar. Note: If you set this value without other changes, your icon won't change.
0x32 INT16LE Unknown ! Unknown.
0x34 INT16LE Player X Location
0x36 INT16LE Player Y Location
0x38 INT16LE Unknown ! Unknown.
0x3A-0x4B INT16LE Unknown ! Unknown.
0x4C INT16LE Gem, Red Qty
0x4E INT16LE Gem, Green Qty
0x50 INT16LE Gem, Blue Qty
0x52 INT16LE Gem, White Qty
0x54 INT16LE Unknown Always 0xFFFF. End of gem list marker?
0x56 INT16LE Armor, Leather Qty
0x58 INT16LE Armor, Chain Mail Qty
0x5A INT16LE Armor, Plate Mail Qty
0x5C INT16LE Armor, Vacuum Suit Qty
0x5E INT16LE Armor, Reflect Suit Qty
0x60 INT16LE Unknown Always 0xFFFF. End of armour list marker?
0x62 INT16LE Weapon, Dagger Qty
0x64 INT16LE Weapon, Mace Qty
0x66 INT16LE Weapon, Axe Qty
0x68 INT16LE Weapon, Rope and Spikes Qty
0x6A INT16LE Weapon, Sword Qty
0x6C INT16LE Weapon, Great Sword Qty
0x6E INT16LE Weapon, Bow and Arrows Qty
0x70 INT16LE Weapon, Amulet Qty
0x72 INT16LE Weapon, Wand Qty
0x74 INT16LE Weapon, Staff Qty
0x76 INT16LE Weapon, Triangle Qty
0x78 INT16LE Weapon, Pistol Qty
0x7A INT16LE Weapon, Light Sword Qty
0x7C INT16LE Weapon, Phazor Qty
0x7E INT16LE Weapon, Blaster Qty
0x80 INT16LE Unknown Always 0xFFFF. End of weapon list marker?
0x82 INT16LE Spell, Open Qty
0x84 INT16LE Spell, Unlock Qty
0x86 INT16LE Spell, Magic Missile Qty
0x88 INT16LE Spell, Steal Qty
0x8A INT16LE Spell, Ladder Down Qty
0x8C INT16LE Spell, Ladder Up Qty
0x8E INT16LE Spell, Blink Qty
0x90 INT16LE Spell, Create Qty
0x92 INT16LE Spell, Destroy Qty
0x94 INT16LE Spell, Kill Qty
0x96 INT16LE Unknown Always 0xFFFF. End of spell list marker?
0x98 INT16LE Transport, Horse Qty
0x9A INT16LE Transport, Cart Qty
0x9C INT16LE Transport, Raft Qty
0x9E INT16LE Transport, Frigate Qty
0xA0 INT16LE Transport, Aircar Qty
0xA2 INT16LE Transport, Shuttle Qty
0xA4 INT16LE Transport, Time Machine Qty
0xA6 INT16LE Unknown ! Unknown.
0xA8 INT16LE Last Signpost The index of the last signpost you visited. Default: 0xFFFF.
0xAA INT16LE Unknown ! Unknown.
0xAC INT16LE Steps Number of steps the player has moved.
0xAE INT16LE Unknown ! Unknown.
0xB0 INT16LE Unknown ! Unknown.
0xB2 INT16LE Unknown ! Unknown.
0xB4-0x333 BYTE[16] Map Objects Array of 40 objects on map, see below.

Map Objects

The last part of the save game file is an array of the objects on the map. Each object is made up of 16 bytes (eight 16-bit integers), and there are a total of 40 objects saved. Map objects include monsters and the player's vehicles.

Offset Data type Name Description
0x00 INT16LE Object Type You can discern the number from the map tiles in Ultima I Tile Graphic Format.
0x02 INT16LE Unknown Matches object type for vehicles, usually 1 or 2 for monsters.
0x04 INT16LE X position Object's X position on the map.
0x06 INT16LE Y position Object's Y position on the map.
0x08 INT16LE Hits Object's hit points. 0 for vehicles.
0x0A INT16LE Unknown ! Unknown. Seems to always be 0.
0x0C INT16LE Unknown ! Unknown. Seems to always be 0.
0x0E INT16LE Unknown ! Unknown. Seems to always be 0.

Credits

This save game format was reverse engineered by TheAlmightyGuru and Daniel D'Agostino. If you find this information helpful in a project you're working on, please give credit where credit is due. (A link back to this wiki would be nice too!)