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.
- Character name; 16 bytes; 14 character maximum
- 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 |
- 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 |
- Character gender; 16 bit integer; Set to 0-1 denoting gender attribute:
Set |
Gender |
0 |
Male |
1 |
Female |
- Remaining hit points of character; 16 bit integer; architecture maximum of 9999 points
- Strength attribute; 16 bit integer; Normal limit 99, architecture maximum 255
- Agility attribute; 16 bit integer; Normal limit 99, architecture maximum 255
- Stamina attribute; 16 bit integer; Normal limit 99, architecture maximum 255
- Charisma attribute; 16 bit integer; Normal limit 99, architecture maximum 255
- Wisdom attribute; 16 bit integer; Normal limit 99, architecture maximum 255
- Intelligence attribute; 16 bit integer; Normal limit 99, architecture maximum 255
- Total remaining money (copper pence) of character; 16 bit integer; architecture maximum of
9999 points
- Accumulated experience of character; 16 bit integer; architecture maximum of 9999 points
- Total remaining food of character; 16 bit integer; architecture maximum of 9999 points
- 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
- 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
- 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
- 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
- Dungeon Randomize Seed; 16 bit integer; set at character creation,
constant for entire game
- X-Coordinate; 16 bit integer; 0-167 on world map (longitude)
- Y-Coordinate; 16 bit integer; 0-153 on world map (latitude)
- 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)
- British; Grave of the lost soul
- Lost King; Kill a Gelatinous Cube (third/fourth dungeon level); gives Red Gem; It
requires all four gems to launch a time machine
- Barataria; southern sign post
- Rondorin; Kill a Carrion Creeper (fifth/sixth dungeon level); gives Green gem; the time
machine must be used in order to win
- Olympus; Pillar of Ozymandias
- Black Dragon; Kill a Lich (seventh/eighth dungeon level); gives Blue gem; the princess
will help a space ace through time
- White Dragon; Tower of Knowledge
- Shamino; Kill a Balron (ninth/tenth dungeon level); gives White gem; take nine items
from the castle stores
- Gem keys; 4 member array 16 bit integer; 0 - not have, 1 - have; 1. red, 2. green, 3. blue,
4. white
- Armours Carried; 5 member array 16 bit integer;
Index |
Armour |
|
Index |
Armour |
0 |
leather |
|
3 |
vacuum |
1 |
chain |
|
4 |
reflect |
2 |
plate |
|
|
|
- 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*** |
|
|
|
- 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 |
- 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 |
|
|
|
- Enemy ships destroyed; 16 bit integer; positive integer, more than 20 possible but useless
- Object table entry count; 16 bit integer; does not include player, should not exceed
39
- Total Moves; 16 bit integer; counter of entered commands, rolls over at 0xffff
- Spacecraft Fuel; 16 bit integer; normally 1000, if 0 or less on takeoff, player dies
- 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
- Object tile; 16 bit integer; undefined beyond 0x2f
- Map tile that object covers; 16 bit integer; undefined beyond 0x11
- X-Coordinate; 16 bit integer; same as world map coordinate S
- Y-Coordinate; 16 bit integer; same as world map coordinate T
- Hit Points; 16 bit integer; 0 for player and transports, varies with NPC
- Object unknown 1; 16 bit integer; always found to be 0
- Object unknown 2; 16 bit integer; always found to be 0
- 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
- Unknown 1 unknown variance, has an initial value of 1.
- Unknown 2 unknown variance, has an initial value of 0.
- Unknown 3 unknown variance, has an initial value of 0.