Difference between revisions of "Ultima: Exodus"

From Data Crystal
Jump to: navigation, search
(Updated offsets 0x36-0x37 and 0x38. Added "values" lists for 0x34, 0x35, 0x3C, and 0x3D.)
Line 144: Line 144:
 
0x32 Unknown Byte Byte
 
0x32 Unknown Byte Byte
 
0x33 Current Level Byte
 
0x33 Current Level Byte
0x34 Current Weapon Byte
+
0x34 Current Weapon Byte*
0x35 Current Armor Byte
+
0x35 Current Armor Byte**
0x36 Unused Data? Unsigned Short Initially d150 (0x0096)
+
0x36 Maximum Health Signed Short
 
0x37
 
0x37
0x38 Unused Data? Byte Initially d25 (0x19)
+
0x38 Maximum Magic Byte
 
0x39 Experience Signed Short
 
0x39 Experience Signed Short
 
0x3a
 
0x3a
0x3b Marks Byte (Lower Half Bitfield) b3-King, b2-Snake, b1Fire, b0-Force
+
0x3b Marks Byte***
0x3c Cards Byte (Lower Half Bitfield) b3-Moon, b2-Love, b1-Sun, b0-Death
+
0x3c Cards Byte****
 
0x3d Flower Boolean
 
0x3d Flower Boolean
 
0x3e Padding (No Data) Unsigned Short
 
0x3e Padding (No Data) Unsigned Short
 
0x3f
 
0x3f
 +
 +
*Current Weapon Values (0x34)
 +
 +
Hand            00
 +
Dagger          01
 +
Mace            02
 +
Sling          03   
 +
Ax              04
 +
Blowgun        05
 +
Sword          06
 +
Spear          07
 +
Broad Ax        08
 +
Bow            09
 +
Iron Sword      0A
 +
Gloves          0B
 +
Fighter's Ax    0C
 +
Silver Bow      0D
 +
Sun Sword      0E
 +
Mystic Weapon  0F
 +
 +
**Current Armor Values (0x35)
 +
 +
Skin            00
 +
Cloth          01
 +
Leather        02
 +
Bronze          03
 +
Iron            04
 +
Steel          05
 +
Dragon Armor    06
 +
Mystic Armor    07
 +
 +
***Marks Values (0x3B)
 +
 +
00  None
 +
01  Force
 +
02  Fire
 +
03  Force / Fire
 +
04  Snake
 +
05  Force / Snake
 +
06  Fire / Snake
 +
07  Force / Fire / Snake
 +
08  King
 +
09  Force / King
 +
0A  Fire / King
 +
0B  Force / Fire / King
 +
0C  Snake / King
 +
0D  Force / Snake / King
 +
0E  Fire / Snake / King
 +
0F  All
 +
 +
****Cards Values (0x3C)
 +
 +
00  None
 +
01  Death
 +
02  Sol
 +
03  Death / Sol
 +
04  Love
 +
05  Death / Love
 +
06  Sol / Love
 +
07  Death / Sol / Love
 +
08  Moons
 +
09  Death / Moons
 +
0A  Sol / Moons
 +
0B  Death / Sol / Moons
 +
0C  Love / Moons
 +
0D  Death / Love / Moons
 +
0E  Sol / Love / Moons
 +
0F  All
 +
 
</pre>
 
</pre>

Revision as of 05:19, 10 March 2010


Ultima: Exodus
Mapper No.
Mapper Name
PRG-ROM Pages
CHR-ROM Pages
Mirroring
4-Screen Mirroring
SRAM Enabled
[[{{{game}}}:ROM map|ROM map]] | [[{{{game}}}:RAM map|RAM map]] | [[{{{game}}}:TBL|Text table]] | [[{{{game}}}:Notes|Notes]] | [[{{{game}}}:Tutorials|Tutorials]]


Ultima: Exodus has space for three seperate player records. Each one is 0x600 bytes long. Within each record, there is room for party-common data, such as party order, ship position, or whether a horse has been bought or not. This allows one to completely change the characters in their party without losing their party stats.

Within each party record, there is room for 20 characters, each distinct. Each character record is 0x40 bytes long, for a grand total of 0x500 bytes. This dovetails nicely within the 0x600 space for the player record. I will cover the party file first.

This is a work in progess. This information is as accurate as I can get it. Until I find my original notes, I am going from a combination of memory and some records I made in Excel.

For the curious, the Roman alphabet begins with character 0x8A. Many of the characters used in the text table are Japanese, which you may have seen if your cartridge got bumped and ended up with corrupt data.

Roman Characters (This game only has upper-case): 0x8A through 0xA4
Period and comma: 0x42 and 0x43 respectively
Numbers (standard non-japanese): 0x38 through 0x41


Map summary:

Player record total: 0x600 bytes
     The player record is:
       Party record: 0x100 bytes
       Character records: 0x40 bytes * 20d


The offsets are from the beginning of the player record.

Offset	Value Meaning	Value Type	Notes
0x00	String "AB"	Byte Array	Required
0x01			
0x02	Player Name Name	Byte Array	
0x03			
0x04			
0x05			
0x06			
0x07	Unknown/Padding	Byte Array	
0x08			
0x09			
0x0a			
0x0b			
0x0c			
0x0d			
0x0e			
0x0f			
0x10	Party Order	Byte Array	Actor 1
0x11			Actor 2
0x12			Actor 3
0x13			Actor 4
0x14	Unknown/Padding	Byte Array	
0x15			
0x16			
0x17			
0x18			
0x19			
0x1a			
0x1b			
0x1c			
0x1d			
0x1e			
0x1f			
0x20	Horse Status	Byte (Bitfield)	"b7=Mounted, b0=Owned"
0x21	Extra Commands	Byte (Lower Half Bitfield)	"b0=Bribe, b1=Pray"
0x22	Party Position	Byte Array	Horizontal
0x23			Vertical
0x24	Party Area Location	Byte	Somewhat Dangerous
0x25	Music to Play	Byte	Extremely Dangerous!
0x26	Unknown/Padding	Byte Array	
0x26			
0x28			
0x29			
0x30	Ship Position	Byte	Horizontal
0x31			Vertical
0x32 to 0xff	Padding	Byte Array	Non-Data.


A character file has its offset shown from the beginning of the character file.

Offset	Value Meaning	Value Type	Notes

0x00	Character Name	Byte Array	
0x01			
0x02			
0x03			
0x04			
0x05	Character Race	Byte	
0x06	Profession	Byte	
0x07	Strength	Byte	
0x08	Dexterity	Byte	
0x09	Intelligence	Byte	
0x0a	Wisdom	Byte	
0x0b	Status	Byte	
0x0c	Dagger	Byte	
0c0d	Mace	Byte	
0x0e	Sling	Byte
0x0f	Axe	Byte
0x10	Blowgun	Byte
0x11	Sword	Byte
0x12	Spear	Byte
0x13	Broad Axe	Byte
0x14	Bow	Byte
0x15	Iron Sword	Byte
0x16	Gloves	Byte
0x17	Fighter's Axe	Byte
0x18	Silver Bow	Byte
0x19	Sun Sword	Byte
0x1a	Mystic Sword	Byte
0x1b	Cloth Armor	Byte
0x1c	Leather Armor	Byte
0x1d	Bronze Armor	Byte
0x1e	Iron Armor	Byte
0x1f	Steel Armor	Byte
0x20	Dragon Armor	Byte
0x21	Mystic Armor	Byte
0x22	Torches	Byte
0x23	Keys	Byte
0x24	Map Gems	Byte
0x25	Time Powder	Byte
0x26	Tents	Byte
0x26	Gold Pick	Byte
0x28	Silver Pick	Byte
0x29	Silver Horn	Byte
0x2a	Heart Compass	Byte
0x2b	Food Level	Signed Short
0x2c		
0x2d	Current Health	Signed Short
0x2e			
0x2f	Current Magic	Byte	
0x30	Money	Signed Short	
0x31			
0x32	Unknown Byte	Byte	
0x33	Current Level	Byte	
0x34	Current Weapon	Byte*	
0x35	Current Armor	Byte**	
0x36	Maximum Health	Signed Short
0x37			
0x38	Maximum Magic	Byte
0x39	Experience	Signed Short	
0x3a			
0x3b	Marks	Byte***
0x3c	Cards	Byte****
0x3d	Flower	Boolean	
0x3e	Padding (No Data)	Unsigned Short
0x3f		

*Current Weapon Values (0x34)

 Hand            00
 Dagger          01
 Mace            02
 Sling           03     
 Ax              04
 Blowgun         05
 Sword           06
 Spear           07
 Broad Ax        08
 Bow             09
 Iron Sword      0A
 Gloves          0B
 Fighter's Ax    0C
 Silver Bow      0D
 Sun Sword       0E
 Mystic Weapon   0F

**Current Armor Values (0x35)

 Skin            00
 Cloth           01
 Leather         02
 Bronze          03
 Iron            04
 Steel           05
 Dragon Armor    06
 Mystic Armor    07

***Marks Values (0x3B)

 00  None
 01  Force
 02  Fire
 03  Force / Fire
 04  Snake 
 05  Force / Snake
 06  Fire / Snake
 07  Force / Fire / Snake
 08  King
 09  Force / King
 0A  Fire / King
 0B  Force / Fire / King
 0C  Snake / King
 0D  Force / Snake / King
 0E  Fire / Snake / King
 0F  All

****Cards Values (0x3C)

 00  None
 01  Death
 02  Sol
 03  Death / Sol
 04  Love
 05  Death / Love
 06  Sol / Love
 07  Death / Sol / Love
 08  Moons
 09  Death / Moons
 0A  Sol / Moons
 0B  Death / Sol / Moons
 0C  Love / Moons
 0D  Death / Love / Moons
 0E  Sol / Love / Moons
 0F  All