Ultima: Exodus (NES): Difference between revisions

From Data Crystal
Jump to navigation Jump to 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 22:43, 6 October 2011

Ultima: Exodus
Mapper No. 1
Mapper Name [[Nintendo MMC1]][[Category:NES games using the Nintendo MMC1 mapper]]
PRG-ROM Pages 16 x 16kB
CHR-ROM Pages 0 x 8kB
Mirroring Horizontal
4-Screen Mirroring No
SRAM Enabled Yes


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.