Wiki

Clone wiki

ultima-exodus / U3_Party_File_Format

U3 Party File Format

The PARTY.ULT file stores player data for all members of the currently active party. It is a 274 byte file which consists of a 18 byte header and four 64 byte player sections.

Header

The 18 byte header describes high-level information about the party's state including party size and world position.

  • 0x00 - party icon tile index
    • 0a = horse
    • 0b = ship
    • 0c = whirlpool
    • 3f = avatar
  • 0x01 - ?
  • 0x02 - map identifier (always saved as 00)
    • 00 = sosaria
    • 01 = dungeon
    • 02 = town
    • 03 = castle
    • 04 = shrine
    • 11 = gem (u3up only)
    • 80 = combat
    • f0 = shopping (u3up only)
    • ff = ambrosia
  • 0x03-0x06 - number of moves (32-bit int)
  • 0x07 - party size
  • 0x08 - x coordinate on overworld map
  • 0x09 - y coordinate on overworld map
  • 0x0a - player 1 - roster member number
  • 0x0b - player 2 - roster member number
  • 0x0c - player 3 - roster member number
  • 0x0d - player 4 - roster member number
  • 0x0e - player 1 status (00 = dead, ff = alive)
  • 0x0f - player 2 status (00 = dead, ff = alive)
  • 0x10 - player 3 status (00 = dead, ff = alive)
  • 0x11 - player 4 status (00 = dead, ff = alive)

Player Section

There are four 64-byte player sections at the following addresses:

  • 0x0012-0x0051 - player 1
  • 0x0052-0x0091 - player 2
  • 0x0092-0x00D1 - player 3
  • 0x00D2-0x0111 - player 4

The individual player sections are structured as follows. Note that fields annotated with {BCD} indicate the value is a binary coded decimal. This structure matches exactly the one used in the player sections of the U3 Roster File Format.

  • 0x00-0x09 - party member name (10 characters)
  • 0x0a-0x0d - ?
  • 0x0e - mark/card flags
    • bit 7 - Mark of Kings
    • bit 6 - Mark of Snake
    • bit 5 - Mark of Fire
    • bit 4 - Mark of Force
    • bit 3 - Card of Death
    • bit 2 - Card of Sol
    • bit 1 - Card of Love
    • bit 0 - Card of Moons
  • 0x0f - torches
  • 0x10 - in party flag (00=false/FF=true)
  • 0x11 - status
    • G - Good
    • P - Poisoned
    • D - Deceased
  • 0x12 - strength
  • 0x13 - dexterity
  • 0x14 - intelligence
  • 0x15 - wisdom
  • 0x16 - race
    • H - Human
    • D - Dwarf
    • E - Elf
    • F - Fuzzy
    • B - Bobbit
  • 0x17 - class
    • F - Fighter
    • P - Paladin
    • C - Cleric
    • D - Druid
    • W - Wizard
    • L - Lark
    • B - Barbarian
    • T - Thief
    • R - Ranger
    • I - Illusionist
    • A - Alchemist
  • 0x18 - gender
    • M - Male
    • F - Female
    • O - Other
  • 0x19 - mana
  • 0x1a - health (word)
  • 0x1c - max health (word)
  • 0x1e - experience (word)
  • 0x20 - partial food counter (1/100ths of food) {BCD}
  • 0x21 - food (word) {BCD}
  • 0x23 - gold (word)
  • 0x25 - gems
  • 0x26 - keys
  • 0x27 - powder
  • 0x28 - current armor (00-07)
  • 0x29 - qty cloth
  • 0x2a - qty leather
  • 0x2b - qty chain
  • 0x2c - qty plate
  • 0x2d - qty +2 chain
  • 0x2e - qty +2 plate
  • 0x2f - qty exotic armor
  • 0x30 - current weapon (00-0f)
  • 0x31 - qty dagger
  • 0x32 - qty mace
  • 0x33 - qty sling
  • 0x34 - qty axe
  • 0x35 - qty bow
  • 0x36 - qty sword
  • 0x37 - qty 2h sword
  • 0x38 - qty +2 axe
  • 0x39 - qty +2 bow
  • 0x3a - qty +2 sword
  • 0x3b - qty gloves
  • 0x3c - qty +4 axe
  • 0x3d - qty +4 bow
  • 0x3e - qty +4 sword
  • 0x3f - qty exotic weapon

Execution Info

The PARTY.ULT file is loaded to the following memory addresses depending on which binary is currently executing:

Binary Memory Address
BOOTUP.BIN DS:0x01bc
EXODUS.BIN DS:0x14ba

See Also

Updated