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.)
(Cleanup)
Line 1: Line 1:
 
{{INES| title = Ultima: Exodus
 
{{INES| title = Ultima: Exodus
|image=  
+
|image =  
|mapperno=  
+
|mapperno = 1
|mappername=  
+
|mappername = [[Nintendo MMC1]]
|prgrom=  
+
|prgrom = 16 x 16kB
|chrrom=  
+
|chrrom = 0 x 8kB
|mirroring=  
+
|mirroring = Horizontal
|4screen=  
+
|4screen = No
|sram=  
+
|sram = Yes
 +
|game = Ultima: Exodus
 
}}
 
}}
  
 +
==Utilities==
 +
* None known.
  
'''Ultima: Exodus''' has space for three seperate player records. Each one is 0x600 bytes long.
+
==Hacks==
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.
+
* None known.
  
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.
+
==Translations==
 +
* None known.
  
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.
+
==Miscellaneous==
 
+
* '''Ultima: Exodus''' has space for three seperate player records. Each one is 0x600 bytes long.
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.
+
* 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.
  
 
<pre>
 
<pre>
Line 26: Line 33:
 
</pre>
 
</pre>
  
 
+
* Map summary:
Map summary:
 
 
<pre>
 
<pre>
 
Player record total: 0x600 bytes
 
Player record total: 0x600 bytes
    The player record is:
+
The player record is:
      Party record: 0x100 bytes
+
  Party record: 0x100 bytes
      Character records: 0x40 bytes * 20d
+
  Character records: 0x40 bytes * 20d
 
</pre>
 
</pre>
 
 
 
  
The offsets are from the beginning of the player record.
+
* The offsets are from the beginning of the player record.
 
<pre>
 
<pre>
Offset Value Meaning Value Type Notes
+
----------------------------------------------------------------
0x00 String "AB" Byte Array Required
+
Offset Value Meaning       Value Type         Notes
0x01
+
----------------------------------------------------------------
0x02 Player Name Name Byte Array
+
0x00   String "AB"         Byte Array         Required
0x03
+
0x01
0x04
+
0x02   Player Name         Byte Array
0x05
+
0x03
0x06
+
0x04
0x07 Unknown/Padding Byte Array
+
0x05
0x08
+
0x06
0x09
+
0x07   Unknown/Padding     Byte Array
0x0a
+
0x08
0x0b
+
0x09
0x0c
+
0x0a
0x0d
+
0x0b
0x0e
+
0x0c
0x0f
+
0x0d
0x10 Party Order Byte Array Actor 1
+
0x0e
0x11 Actor 2
+
0x0f
0x12 Actor 3
+
0x10   Party Order         Byte Array         Actor 1
0x13 Actor 4
+
0x11                                           Actor 2
0x14 Unknown/Padding Byte Array
+
0x12                                           Actor 3
0x15
+
0x13                                           Actor 4
0x16
+
0x14   Unknown/Padding     Byte Array
0x17
+
0x15
0x18
+
0x16
0x19
+
0x17
0x1a
+
0x18
0x1b
+
0x19
0x1c
+
0x1a
0x1d
+
0x1b
0x1e
+
0x1c
0x1f
+
0x1d
0x20 Horse Status Byte (Bitfield) "b7=Mounted, b0=Owned"
+
0x1e
0x21 Extra Commands Byte (Lower Half Bitfield) "b0=Bribe, b1=Pray"
+
0x1f
0x22 Party Position Byte Array Horizontal
+
0x20   Horse Status       Byte (Bitfield)     "b7=Mounted, b0=Owned"
0x23 Vertical
+
0x21   Extra Commands     Byte (Bitfield)     "b0=Bribe, b1=Pray"
0x24 Party Area Location Byte Somewhat Dangerous
+
0x22   Party Position     Byte Array         Horizontal
0x25 Music to Play Byte Extremely Dangerous!
+
0x23                                           Vertical
0x26 Unknown/Padding Byte Array
+
0x24   Party Area Location Byte               Somewhat Dangerous
0x26
+
0x25   Music to Play       Byte               Extremely Dangerous!
0x28
+
0x26   Unknown/Padding     Byte Array
0x29
+
0x27
0x30 Ship Position Byte Horizontal
+
0x28
0x31 Vertical
+
0x29
0x32 to 0xff Padding Byte Array Non-Data.
+
0x30   Ship Position       Byte               Horizontal
 +
0x31                                           Vertical
 +
0x32Padding             Byte Array         0x32 to 0xFF is non-data
 +
----------------------------------------------------------------
 
</pre>
 
</pre>
  
 
+
* A character file has its offset shown from the beginning of the character file.  
A character file has its offset shown from the beginning of the character file.  
 
 
<pre>
 
<pre>
Offset Value Meaning Value Type Notes
+
----------------------------------------------------------------
 
+
Offset Value Meaning       Value Type         Notes
0x00 Character Name Byte Array
+
----------------------------------------------------------------
0x01
+
0x00   Character Name     Byte Array
0x02
+
0x01
0x03
+
0x02
0x04
+
0x03
0x05 Character Race Byte
+
0x04
0x06 Profession Byte
+
0x05   Character Race     Byte
0x07 Strength Byte
+
0x06   Profession         Byte
0x08 Dexterity Byte
+
0x07   Strength           Byte
0x09 Intelligence Byte
+
0x08 Dexterity           Byte
0x0a Wisdom Byte
+
0x09 Intelligence       Byte
0x0b Status Byte
+
0x0a   Wisdom             Byte
0x0c Dagger Byte
+
0x0b   Status             Byte
0c0d Mace Byte
+
0x0c   Dagger             Byte
0x0e Sling Byte
+
0c0d   Mace               Byte
0x0f Axe Byte
+
0x0e   Sling               Byte
0x10 Blowgun Byte
+
0x0f   Axe                 Byte
0x11 Sword Byte
+
0x10   Blowgun             Byte
0x12 Spear Byte
+
0x11   Sword               Byte
0x13 Broad Axe Byte
+
0x12   Spear               Byte
0x14 Bow Byte
+
0x13   Broad Axe           Byte
0x15 Iron Sword Byte
+
0x14   Bow                 Byte
0x16 Gloves Byte
+
0x15   Iron Sword         Byte
0x17 Fighter's Axe Byte
+
0x16   Gloves             Byte
0x18 Silver Bow Byte
+
0x17   Fighter's Axe       Byte
0x19 Sun Sword Byte
+
0x18   Silver Bow         Byte
0x1a Mystic Sword Byte
+
0x19   Sun Sword           Byte
0x1b Cloth Armor Byte
+
0x1a   Mystic Sword       Byte
0x1c Leather Armor Byte
+
0x1b   Cloth Armor         Byte
0x1d Bronze Armor Byte
+
0x1c   Leather Armor       Byte
0x1e Iron Armor Byte
+
0x1d   Bronze Armor       Byte
0x1f Steel Armor Byte
+
0x1e   Iron Armor         Byte
0x20 Dragon Armor Byte
+
0x1f   Steel Armor         Byte
0x21 Mystic Armor Byte
+
0x20   Dragon Armor       Byte
0x22 Torches Byte
+
0x21   Mystic Armor       Byte
0x23 Keys Byte
+
0x22   Torches             Byte
0x24 Map Gems Byte
+
0x23   Keys               Byte
0x25 Time Powder Byte
+
0x24   Map Gems           Byte
0x26 Tents Byte
+
0x25   Time Powder         Byte
0x26 Gold Pick Byte
+
0x26   Tents               Byte
0x28 Silver Pick Byte
+
0x27    Gold Pick           Byte
0x29 Silver Horn Byte
+
0x28   Silver Pick         Byte
0x2a Heart Compass Byte
+
0x29   Silver Horn         Byte
0x2b Food Level Signed Short
+
0x2a   Heart Compass       Byte
0x2c
+
0x2b   Food Level         Signed Short
0x2d Current Health Signed Short
+
0x2c
0x2e
+
0x2d   Current Health     Signed Short
0x2f Current Magic Byte
+
0x2e
0x30 Money Signed Short
+
0x2f   Current Magic       Byte
0x31
+
0x30   Money               Signed Short
0x32 Unknown Byte Byte
+
0x31
0x33 Current Level Byte
+
0x32   Unknown Byte       Byte
0x34 Current Weapon Byte*
+
0x33   Current Level       Byte
0x35 Current Armor Byte**
+
0x34   Current Weapon     Byte*
0x36 Maximum Health Signed Short
+
0x35   Current Armor       Byte**
0x37
+
0x36   Maximum Health     Signed Short
0x38 Maximum Magic Byte
+
0x37
0x39 Experience Signed Short
+
0x38   Maximum Magic       Byte
0x3a
+
0x39   Experience         Signed Short
0x3b Marks Byte***
+
0x3a
0x3c Cards Byte****
+
0x3b   Marks               Byte***
0x3d Flower Boolean
+
0x3c   Cards               Byte****
0x3e Padding (No Data) Unsigned Short
+
0x3d   Flower             Boolean
0x3f
+
0x3e   Padding (No Data)   Unsigned Short
 +
0x3f
  
 
*Current Weapon Values (0x34)
 
*Current Weapon Values (0x34)
Line 189: Line 196:
 
***Marks Values (0x3B)
 
***Marks Values (0x3B)
  
  00 None
+
  00                           (None)
  01 Force
+
  01                     Force
  02 Fire
+
  02               Fire
  03  Force / Fire
+
  03               Fire Force
  04 Snake  
+
  04       Snake
  05 Force / Snake
+
  05       Snake        Force
  06  Fire / Snake
+
  06       Snake Fire
  07  Force / Fire / Snake
+
  07       Snake  Fire Force
 
  08  King
 
  08  King
  09  Force / King
+
  09  King              Force
  0A  Fire / King
+
  0A  King        Fire
  0B  Force / Fire / King
+
  0B King        Fire Force
  0C  Snake / King
+
  0C King Snake
  0D  Force / Snake / King
+
  0D  King  Snake        Force
  0E  Fire / Snake / King
+
  0E King  Snake Fire
  0F  All
+
  0F  King  Snake  Fire  Force  (All)
  
 
****Cards Values (0x3C)
 
****Cards Values (0x3C)
  
  00 None
+
  00                           (None)
  01 Death
+
  01                   Death
  02 Sol
+
  02               Sol
  03  Death / Sol
+
  03               Sol Death
  04 Love
+
  04         Love
  05 Death / Love
+
  05         Love      Death
  06  Sol / Love
+
  06         Love Sol
  07  Death / Sol / Love
+
  07         Love  Sol Death
 
  08  Moons
 
  08  Moons
  09  Death / Moons
+
  09  Moons            Death
  0A  Sol / Moons
+
  0A  Moons        Sol
  0B  Death / Sol / Moons
+
  0B Moons        Sol Death
  0C  Love / Moons
+
  0C Moons Love
  0D  Death / Love / Moons
+
  0D  Moons  Love      Death
  0E  Sol / Love / Moons
+
  0E Moons  Love Sol
  0F  All
+
  0F  Moons  Love  Sol  Death  (All)
 +
</pre>
 +
 
 +
==Known Dumps==
 +
* Ultima - Exodus (U) [!]
 +
* Ultima - Kyoufu no Exodus (J)
  
</pre>
+
==External Links==
 +
* No external links yet.

Revision as of 18:43, 6 October 2011


Ultima: Exodus
Mapper No. 1
Mapper Name Nintendo MMC1
PRG-ROM Pages 16 x 16kB
CHR-ROM Pages 0 x 8kB
Mirroring Horizontal
4-Screen Mirroring No
SRAM Enabled Yes
ROM map | RAM map | Text table | Notes | Tutorials

Utilities

  • None known.

Hacks

  • None known.

Translations

  • None known.

Miscellaneous

  • 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         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 (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
0x27
0x28
0x29
0x30    Ship Position       Byte                Horizontal
0x31                                            Vertical
0x32+   Padding             Byte Array          0x32 to 0xFF is 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
0x27    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               Fire  Force
 04        Snake
 05        Snake        Force
 06        Snake  Fire
 07        Snake  Fire  Force
 08  King
 09  King               Force
 0A  King         Fire
 0B  King         Fire  Force
 0C  King  Snake
 0D  King  Snake        Force
 0E  King  Snake  Fire
 0F  King  Snake  Fire  Force  (All)

****Cards Values (0x3C)

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

Known Dumps

  • Ultima - Exodus (U) [!]
  • Ultima - Kyoufu no Exodus (J)

External Links

  • No external links yet.