]> git.localhorst.tv Git - l2e.git/blobdiff - original-data/items-format.txt
added (processed) original lufia 2 data
[l2e.git] / original-data / items-format.txt
diff --git a/original-data/items-format.txt b/original-data/items-format.txt
new file mode 100644 (file)
index 0000000..07ad601
--- /dev/null
@@ -0,0 +1,682 @@
+**********************************************************************\r
+Items\r
+**********************************************************************\r
+\r
+There are 467 items in Lufia 2. Most of their properties are stored in \r
+what I call the "Item Compendium".\r
+\r
+-----------------------------------------------------------------------\r
+Item names\r
+-----------------------------------------------------------------------\r
+\r
+[$0F49E8 -> $0F5FCB]:  item names\r
+\r
+Item names are 12 bytes long. They are stored one after the other, \r
+without any separation byte.\r
+\r
+-----------------------------------------------------------------------\r
+Item data - the "Item Compendium"\r
+-----------------------------------------------------------------------\r
+\r
+[$0B5169 -> $0B550E]:  pointers to data at [$0B550F]\r
+                       (2 bytes, little-endian (i.e. "least significant \r
+                                                      byte first"))\r
+\r
+                       934 bytes => 467 pointers.\r
+                       Add $0B5169 to the pointers to find the offsets\r
+                       of the Item Compendium "entries".\r
+\r
+                       Example:\r
+                       [$0B5169 -> $0B516A]: $A6 03\r
+                       => pointer: $03A6\r
+                       => offset: $03A6 + $0B5169 = $0B550F\r
+                       => The first Item Compendium entry starts \r
+                          at offset [$0B550F]\r
+\r
+[$0B550F -> $0B7CDC]:  "Item Compendium"\r
+\r
+                       467 entries:\r
+                       [$0B550F]:  No equip    \r
+                       [$0B551C]:  Charred newt\r
+                       ...\r
+                       [$0B7CBD]:  Tag candy   \r
+                       [$0B7CCE]:  Last        \r
+\r
+- - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - \r
+Format of the Item Compendium entries:\r
+- - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - \r
+\r
+  13 "common properties bytes" \r
++ a variable number of "additional properties bytes" \r
++ a variable number of "effect bytes"\r
+\r
+\r
+Start offset of the Monster Compendium entry = offset [+$0000]\r
+\r
+- - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - \r
+"Common properties bytes":\r
+- - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - \r
+\r
+  Byte 0:           "Usability"\r
+  Byte 1:           ???\r
+  Byte 2:           Targetting mode\r
+  Byte 3:           Icon\r
+  Byte 4:           Sprite\r
+  Bytes 5 and 6:    GP cost\r
+  Byte 7:           "Equipability"\r
+  Byte 8:           Who can be equipped with the item\r
+  Bytes 9 and 10:   "additional properties" flags\r
+  Bytes 11 and 12:  $00 00 for all items\r
+\r
+[+$0000]\r
+Byte 0: "Usability"\r
+\r
+        Each bit of this byte is a flag. These flags define some of the \r
+        most important properties of items, hence defining their type and \r
+        usability. The state of the flags for a given item also determines \r
+        its "rank" (position) in the inventory after the use of the Sort\r
+        option of the Party Status screen Item menu.\r
+\r
+        bit 0: 1 => Is one of the "most useful items". \r
+                    For items that should stay at the top of the inventory\r
+                    (HP/MP recovery potions, ...)\r
+\r
+        bit 1: 1 => Equipable item.\r
+                    This flag MUST be set for an item to be equipable: \r
+                    if it's not set, the item name doesn't appear \r
+                    in the Equip menu. See also: byte 7.\r
+                    Also set for dungeon items ('Hook', ...).\r
+\r
+        bit 2:      (not used - always 0.\r
+                    If set, places the item between "equipable" and \r
+                    "fruit" items when the inventory is sorted.)\r
+\r
+        bit 3: 1 => Cursed item.\r
+                    Only used for equipable items. Once equipped, cursed \r
+                    equipable items can't be removed and their name appears \r
+                    in red (instead of white) in the Equip menu.\r
+\r
+        bit 4: 1 => "fruit item" \r
+                    Fruits occupy the lowest places in the inventory. \r
+\r
+        bit 5: 1 => Can't be dropped/sold. Set for:\r
+                    - scenario items\r
+                    - dungeon items ('Hook', ...)\r
+                    - 'Jewel sonar'\r
+                    - Iris Treasures\r
+                    - 'Dragon egg'\r
+                    - 'Dual blade'\r
+\r
+        bit 6: 1 => Usable at Party Status screen.\r
+                    The name appears in black (instead of gray) in the \r
+                    Party Status screen Item menu).\r
+                    Ex.: 'Potion', 'Spell potion'\r
+                    Not for weapons.\r
+\r
+        bit 7: 1 => Usable as an item (not as a weapon) during battle.\r
+                    The name appears in white (instead of blue) in the \r
+                    Battle screen Item menu.\r
+                    Ex.: 'Potion', 'Shriek'\r
+\r
+        Here's the list of the values of byte 0 actually used in the game:\r
+\r
+        $00 (b0000 0000) => (no flag set)\r
+                            - 'No equip'\r
+                            - 'Green tea', \r
+                            - coins ('1 coin', '10 coin set', ...)\r
+\r
+        $02 (b0000 0010) => Equipable item.\r
+                            For all non-cursed equipable items \r
+                            except the 'Dual blade'.\r
+\r
+        $0A (b0000 1010) => Cursed equipable item.\r
+\r
+        $10 (b0001 0000) => Fruit.\r
+\r
+        $20 (b0010 0000) => Can't be dropped/sold.\r
+                            - 'Dragon egg'\r
+                            - Iris treasures\r
+                            - scenario items\r
+\r
+        $22 (b0010 0010) => Equipable item, can't be dropped/sold.\r
+                            - 'Dual blade'\r
+                            - dungeon items ('Hook', ...)\r
+\r
+        $40 (b0100 0000) => Usable as an item at Party Status screen.\r
+                            - 'Escape'\r
+                            - 'Warp'\r
+                            - 'Providence'\r
+\r
+        $41 (b0100 0001) => Usable at Party Status screen, \r
+                            very useful. \r
+                            - 'Life potion', 'Spell potion', 'Brave'\r
+                            - 'Curselifter'\r
+\r
+        $60 (b0110 0000) => Usable at Party Status screen, \r
+                            can't be dropped/sold.\r
+                            - 'Jewel sonar'.\r
+\r
+        $80 (b1000 0000) => Usable as an item (not as a weapon) \r
+                            during battle.\r
+                            - 'Awake', 'Shriek', 'Mystery pin'\r
+                            - 'Power gourd', 'Mind gourd', 'Magic guard'\r
+                            - balls ('Sleep ball', ...)\r
+                            - boomerangs ('Boomerang', ..., 'Dragon tooth')\r
+                            - 'Flame charm', 'Zap charm', 'Magic lamp'\r
+                            - 'Tag candy'\r
+\r
+        $C1 (b1100 0001) => Usable as an item at Party Status screen \r
+                            as well as during battle,\r
+                            very useful.\r
+                            - HP/MP recovery items\r
+                              ('Charred newt', 'Ex-Magic', 'Statue', ...)\r
+                            - 'Regain', 'Miracle'\r
+                            - 'Antidote'\r
+                            - ciders ('Pear cider', ...)\r
+\r
+        Items "rank":\r
+        The position an item will occupy in the inventory after the use \r
+        of the Sort option depends of several flags of byte 0. It also \r
+        depends of other bytes. The following "rank" list is not 100 % \r
+        complete/accurate.\r
+\r
+        Top of the inventory    "most useful items"\r
+                                items usable at Party Status screen\r
+                                items usable during battle\r
+                                items that cannot be dropped\r
+                                equipable items\r
+        Bottom                  fruits\r
+\r
+                          - - - - - - - - - - - \r
+\r
+[+$0001]\r
+Byte 1: ???\r
+\r
+        The use of this byte is unkown.\r
+        Here's a list of all encountered values:\r
+\r
+        $01 for Arrow\r
+        $03 for Hook\r
+        $04 for Bomb\r
+        $06 for Fire arrow\r
+        $07 for Hammer\r
+\r
+        Note: to invert the values of two dungeon items inverts \r
+              their positions in the "dungeon item ring".\r
+\r
+        $20 for S-fire ring,\r
+                S-water ring,\r
+                S-ice ring,\r
+                S-thun ring\r
+\r
+        $40 for a lot of "good" equipment items\r
+            (items that have an IP, an "elemental power", ...)\r
+\r
+        $60 for a lot of "good" equipment items, including (but not \r
+            limited to) all the blue chest items.\r
+            Also for 'Curselifter', 'Providence' and 'Tag candy'\r
+\r
+        $70 for Egg sword,\r
+                Pearl armor,\r
+                Pearl shield,\r
+                Pearl helmet,\r
+                Egg ring\r
+\r
+        $80 for all the fruits\r
+\r
+        $00 for all the other items (including the 'Dual blade')\r
+\r
+        Notes: - generally speaking, it seems that more "valuable" \r
+                 items have a higher value for byte 1.\r
+               - the value of this byte doesn't *seem* to be related to the \r
+                 "nutritional" value of the object for Capsule Monsters.\r
+\r
+                          - - - - - - - - - - - \r
+\r
+[+$0002]\r
+Byte 2: Targetting mode\r
+\r
+        $00 => You can't/don't have to target\r
+               (bows, boomerangs, ...)\r
+\r
+        $01 => You must target one or several allies\r
+               (the 'Statue' is the only item having this property)\r
+\r
+        $02 => You must target one (and only one) ally\r
+               ('Potion', 'Mystery pin', ...)\r
+\r
+        $81 => You must target one or several enemies\r
+               (the Freeze bow is the only weapon having this property)\r
+\r
+        $82 => You must target one (and only one) enemy\r
+               (most weapons)\r
+\r
+        !!! This byte does not affect the effect of the weapon\r
+            (ex.: Arty's bow (targetting mode: $00) will still attack all \r
+            enemies even if this byte is set to $81 or $82)\r
+\r
+                          - - - - - - - - - - - \r
+\r
+[+$0003]\r
+Byte 3: Icon\r
+\r
+        The icon that appears to the left of the item name in \r
+        the Item menu.\r
+\r
+        $10 => no icon\r
+        $E0 => Sword\r
+        $E1 => Armor\r
+        $E2 => Shield\r
+        $E3 => Helmet\r
+        $E4 => Shoe (not used by any existing item)\r
+        $E5 => Ring\r
+        $E6 => Potion\r
+        $E7 => Key\r
+        $E8 => Whip\r
+        $E9 => Staff\r
+        $EA => Spear\r
+        $EB => Arrow (for bows and boomerangs)\r
+        $EC => Jewel\r
+        $ED => Ax\r
+        $EE => Ball ('Sleep ball', 'Confuse ball', ...)\r
+        $EF => Wrench (for tools)\r
+\r
+        !!! This byte affects only the icon, not the usability/equipability \r
+            of the items (see byte 0 and 7)\r
+\r
+                          - - - - - - - - - - - \r
+\r
+[+$0004]\r
+Byte 4: Sprite\r
+\r
+        The sprite that represents the item when you obtain it by opening \r
+        a chest, when someone gives it to you (scenario items), ...\r
+        There's a lot of item sprites. The following list is not complete.\r
+\r
+        $00 => Coins ('1 coin', ... \r
+                      Also used for some items not found in chests,\r
+                      like the 'Dual blade')\r
+        $01 => Sword ('Gladius', ...)\r
+        $02 => Armor ('Metal mail', ...)\r
+        $03 => Shield\r
+        $04 => Helmet\r
+        $05 => VIP card\r
+        $06 => Ring\r
+        $08 => Key\r
+        $09 => Whip\r
+        $0A => Rod\r
+        $0B => Spear\r
+        $0C => Bracelet\r
+        $0D => Jewel ('Evil jewel', 'Magma rock', ...)\r
+        $0E => Ax\r
+        $0F => Ball\r
+        $10 => Wrench\r
+        $11 => Gloves\r
+        $12 => Dragon Egg\r
+        $13 => Mace ('Morning star', ...)\r
+        $15 => Boomerang\r
+        $17 => Fruit\r
+        $18 => Bow\r
+        $1B => Dress ('Quilted silk', ...)\r
+        $1C => Scroll (for spells in the Ancient Cave. Not used for items)\r
+        $1D => Hat ('Blue beret')\r
+        $20 => Wing ('Escape', 'Warp', 'Providence')\r
+        $21 => Tiara ('Fury ribbon', ...)\r
+        $22 => Knife\r
+        $40 => Bomb\r
+        $41 => Hook\r
+        $42 => Hammer\r
+        $43 => Arrow\r
+        $44 => Fire arrow\r
+        $45 => Hourglass ('Reset' spell. Not used for items)\r
+\r
+                          - - - - - - - - - - - \r
+\r
+[+$0005, +$0006]\r
+Bytes 5 and 6:\r
+        GP cost (2 bytes, little-endian).\r
+\r
+        Example:\r
+        - Bytes 5 and 6 of the 'Silver sword':\r
+          $48 71 => GP cost = $7148 = 29000 GP\r
+\r
+        The following items have a cost of 0 GP:\r
+        - 'No equip'\r
+        - 'Dragon egg'\r
+        - 'Dual blade'\r
+        - Iris Treasures,\r
+        - Scenario items.\r
+\r
+                          - - - - - - - - - - - \r
+\r
+[+$0007]\r
+Byte 7: "Equipability"\r
+\r
+        Each bit of this byte is a flag. Only one bit can be set for \r
+        each item. if 2 or more bits are set, only the least significant \r
+        one will be taken into account.\r
+\r
+        $00 (b00000000) => non equipable\r
+        $01 (b00000001) => equipable as Weapon\r
+        $02 (b00000010) => equipable as Armor\r
+        $04 (b00000100) => equipable as Shield\r
+        $08 (b00001000) => equipable as Helmet\r
+        $10 (b00010000) => equipable as Ring\r
+        $20 (b00100000) => equipable as Jewel\r
+\r
+        Note: bit 1 of byte 0 must be set for an item to be equipable.\r
+\r
+                          - - - - - - - - - - - \r
+\r
+[+$0008]\r
+Byte 8: Who can be equipped with the item\r
+\r
+        Each bit of this byte is a flag.\r
+\r
+        bit 0: 1 => Maxim\r
+        bit 1: 1 => Selan\r
+        bit 2: 1 => Guy\r
+        bit 3: 1 => Artea\r
+        bit 4: 1 => Tia\r
+        bit 5: 1 => Dekar\r
+        bit 6: 1 => Lexis\r
+        bit 7: (not used - 0 for all existing items)\r
+\r
+        Examples:\r
+\r
+        - Byte 8 of all the "non-equipable" items:\r
+          $00 = b00000000 => Nobody\r
+\r
+        - Byte 8 of the 'Dual blade':\r
+          $01 = b00000001 => Maxim only\r
+\r
+        - Byte 8 of the 'Bunny ears':\r
+          $1A = b00011010 => Selan, Artea and Tia\r
+\r
+        - Byte 8 of the 'Mystery ring':\r
+          $7F = b01111111 => All\r
+\r
+                          - - - - - - - - - - - \r
+\r
+[+$0009, +$000A]\r
+Bytes 9 and 10:\r
+        "additional properties" flags\r
+\r
+        Each bit of these bytes is a flag. \r
+        For each set flag, there will be 2 "additional properties bytes" \r
+        (if none of the flags are set, there will be no "additional \r
+        properties bytes").\r
+\r
+        Byte 9:\r
+\r
+        bit 0: 1 => Has an "Item effect" at Party Status screen.\r
+                    Some item effects: \r
+                    - HP/MP recovery ('Charred newt', ...)\r
+                    - warp ('Escape', 'Warp', ...)\r
+                    - ...\r
+                 => A pointer to the "item effect bytes" is stored on \r
+                    2 "Additional properties bytes" (little-endian). \r
+                    Add the start offset of the Item Compendium entry to\r
+                    find the offset of the item effect bytes.\r
+\r
+                    Example:\r
+                    - Byte 9 for the 'Charred newt': $03 (b00000011)\r
+                      => bit 0 is set\r
+                      => the 'Charred newt' has an "Item effect" at \r
+                         Party Status screen.\r
+\r
+                         "Additional properties bytes" corresponding to \r
+                         bit 0: $15 00\r
+                         => pointer to the "effect bytes": $0015\r
+\r
+                      Start offset of the 'Charred newt' Item \r
+                      Compendium entry: [$0B551C]\r
+                      => offset of the "effect bytes":\r
+                         $0015 + $0B551C = $0B5531\r
+                      => the bytes defining the effect of the \r
+                         'Charred newt' when it's used at the Party Status \r
+                         screen start at offset [$0B5531].\r
+\r
+        bit 1: 1 => Has an "item effect" during battle.\r
+                    Not for equipable items (see bit 2).\r
+                    Some item effects: \r
+                    - HP/MP recovery\r
+                    - damage (boomerangs, ...)\r
+                    - ...\r
+                 => A pointer to the "item effect bytes" is stored on \r
+                    2 "Additional properties bytes" (little-endian). \r
+                    Add the start offset of the Item Compendium entry to\r
+                    find the offset of the item effect bytes.\r
+\r
+        bit 2: 1 => Has a "Weapon special effect".\r
+                    For weapons, 'Undead ring', 'Sea ring', 'Dragon ring'.\r
+                    Some weapon special effects: \r
+                    - enhanced critical hit rate\r
+                    - "elemental attacks" (Fire, Thunder, ...)\r
+                    - chances of causing Confusion, Sleep, \r
+                      Instant Death, ...\r
+                    - ...\r
+                 => A pointer to the "weapon effect bytes" is stored on \r
+                    2 "Additional properties bytes" (little-endian). \r
+                    Add the start offset of the Item Compendium entry to\r
+                    find the offset of the weapon effect bytes.\r
+\r
+        bit 3: 1 => Has an "Armor special effect".\r
+                    For protective equipment (armors, shields, helmets, \r
+                    rings, ...).\r
+                    Some armor special effects: \r
+                    - "elemental protection" (Fire, Thunder, ...)\r
+                    - protection against Confusion, Sleep, \r
+                      Instant Death, ...\r
+                    - ...\r
+                 => A pointer to the "armor effect bytes" is stored on \r
+                    2 "Additional properties bytes" (little-endian). \r
+                    Add the start offset of the Item Compendium entry to\r
+                    find the offset of the armor effect bytes.\r
+\r
+        bit 4: 1 => Increases ATP.\r
+                    For equipable items only, not for "potions" \r
+                    (see bit 0 and 1).\r
+                 => The ATP increasment is stored on 2 "Additional \r
+                    properties bytes" (little-endian).\r
+\r
+        bit 5: 1 => Increases DFP.\r
+                    For equipable items only, not for "potions"\r
+                    (see bit 0 and 1).\r
+                 => The DFP increasment is stored on 2 "Additional \r
+                    properties bytes" (little-endian).\r
+\r
+        bit 6: 1 => Increases STR.\r
+                    For equipable items only, not for "potions"\r
+                    (see bit 0 and 1).\r
+                 => The STR increasment is stored on 2 "Additional \r
+                    properties bytes" (little-endian).\r
+\r
+        bit 7: 1 => Increases AGL.\r
+                    For equipable items only, not for "potions"\r
+                    (see bit 0 and 1).\r
+                 => The AGL increasment is stored on 2 "Additional \r
+                    properties bytes" (little-endian).\r
+\r
+        Byte 10:\r
+\r
+        bit 0: 1 => Increases INT.\r
+                    For equipable items only, not for "potions"\r
+                    (see bit 0 and 1).\r
+                 => The INT increasment is stored on 2 "Additional \r
+                    properties bytes" (little-endian).\r
+\r
+        bit 1: 1 => Increases GUT.\r
+                    For equipable items only, not for "potions"\r
+                    (see bit 0 and 1).\r
+                 => The GUT increasment is stored on 2 "Additional \r
+                    properties bytes" (little-endian).\r
+\r
+        bit 2: 1 => Increases MGR.\r
+                    For equipable items only, not for "potions"\r
+                    (see bit 0 and 1).\r
+                 => The MGR increasment is stored on 2 "Additional \r
+                    properties bytes" (little-endian).\r
+\r
+        bit 3: 1 => (not used - 0 for all existing items)\r
+\r
+        bit 4: 1 => (not used - 0 for all existing items)\r
+\r
+        bit 5: 1 => Animation when used during battle.\r
+                    For weapons, "potions", ...\r
+                 => The animation number is stored on 2 "Additional \r
+                    properties bytes" (little-endian).\r
+                    Some animation numbers:\r
+                    $0000 => No battle animation\r
+                             The character doesn't move; no sound; \r
+                             no "slashing" effect (but the attack inflicts \r
+                             damage).\r
+                             For 'Last' and 'RAN-RAN step'.\r
+                    $0001 => "Sword" animation\r
+                             For all swords (except 'Frypan' and 'Last') \r
+                             and daggers.\r
+                    $0003 => "Rod" animation\r
+                             For all rods and maces + 'Frypan'.\r
+                    $0005 => "Bow" animation\r
+                             For all bows.\r
+                    $0007 => "Spear" animation\r
+                             For all spears + 'Superdriver'.\r
+                    $0009 => "Whip" animation\r
+                             For all whips.\r
+                    $000B => "Tool animation\r
+                             For all tools except 'Superdriver'.\r
+                    $000D => "Ax" animation\r
+                             For all axes.\r
+                    $000F => "Punch" animation\r
+                             For attacks without an equipped weapon.\r
+\r
+                    $0013 => 'Flash' spell animation\r
+                    $0014 => 'Bolt' spell animation\r
+                    ...\r
+                    $0033 => 'Zap spell' animation\r
+                    $0091 => 'Dark Fry' animation\r
+\r
+        bit 6: 1 => ???\r
+                 => 2 "Additional properties bytes": $64 00\r
+                    Note: the value of these 2 bytes doesn't seem to have \r
+                          an effect on the animation displayed when the \r
+                          item is used at Party Status screen.\r
+\r
+        bit 7: 1 => Has an IP effect.\r
+                    For equipable items only.\r
+                 => The IP number is stored on 2 "Additional \r
+                    properties bytes" (little-endian).\r
+                    Some IP numbers:\r
+                    $0001 => Repeat attack\r
+                    $0002 => Iron kick\r
+                    $0003 => Mirror block\r
+                    ...\r
+                    $002D => Wave motion\r
+                    ...\r
+                    $00A8 => Octo-strike\r
+                    $00A7 => Double slash\r
+                    $00A8 => Ancient power\r
+\r
+                          - - - - - - - - - - - \r
+\r
+[+$000B, $000C]\r
+Bytes 11 and 12:\r
+        $00 00 for all items\r
+\r
+- - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - \r
+"Additional properties bytes"\r
+- - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - \r
+\r
+The "Additional properties bytes" corresponding to the "Additional \r
+properties flags" (bytes 9 and 10) are stored in the following order:\r
+[2 bytes for byte  9, bit 0], \r
+[2 bytes for byte  9, bit 1], \r
+...\r
+[2 bytes for byte  9, bit 6], \r
+[2 bytes for byte  9, bit 7], \r
+[2 bytes for byte 10, bit 0], \r
+[2 bytes for byte 10, bit 1], \r
+...\r
+[2 bytes for byte 10, bit 6], \r
+[2 bytes for byte 10, bit 7].\r
+\r
+Example: 'Hi-Potion' [$0B556C]\r
+- Byte  9: $03 (b00000011)\r
+           bit 0: 1 => Has an "Item effect" at Party Status screen.\r
+           bit 1: 1 => Has an "item effect" during battle.\r
+- Byte 10: $60 (b01100000)\r
+           bit 5: 1 => Animation when used during battle.\r
+           bit 6: 1 => ???\r
+=> the 'Hi-Potion' has 8 (= 4 * 2) additional properties bytes:\r
+   15 00 1D 00 61 00 64 00\r
+   - $15 00: the "Item effect at Party Status screen" bytes start at \r
+             offset [$0B556C + $0015]\r
+   - $1D 00: the "Item effect at Party Status screen" bytes start at \r
+             offset [$0B556C + $001D]\r
+   - $61 00: animation when used during battle: animation number $0061\r
+   - $64 00: ???\r
+\r
+\r
+Important remark about the "stats increasment bytes":\r
+\r
+When an item increases STR, it also increases ATP, even if bit 4 of \r
+byte 9 is not set:\r
+\r
+  total ATP increasment granted by an item \r
+  = ATP incr (if bit 4 of bytes 9 is set)\r
+  + STR incr (if bit 6 of bytes 9 is set)\r
+\r
+Similarly, when an item increases STR and/or AGL, it also increases DFP, \r
+even if bit 5 of byte 9 is not set:\r
+\r
+  total DFP increasment granted by an item \r
+  = DFP incr \r
+  + (STR incr + AGL incr) / 2\r
+\r
+Example: 'lion fang' [$0B7557]\r
+\r
+- Byte  9: $C0 (b11000000)\r
+           bit 4: 0 => Doesn't (explicitely) increase ATP.\r
+           bit 5: 0 => Doesn't (explicitely) increase DFP.\r
+           bit 6: 1 => Increases STR.\r
+           bit 7: 1 => Increases AGL.\r
+\r
+STR incr bytes: $0F 00 => STR incr = 15\r
+AGL incr bytes: $0A 00 => AGL incr = 10\r
+\r
+=> total ATP incr = ATP incr + STR incr\r
+                  = 0 + 15\r
+                  = 15\r
+\r
+=> total DFP incr = DFP incr + (STR incr + AGL incr) / 2\r
+                  = 0 + (15 + 10) / 2\r
+                  = 12.5\r
+                  ~= 12\r
+\r
+=> Increasments of the 'Lion fang': ATP +15, DFP +12, STR +15, AGL +10\r
+\r
+Other example: 'Fire dagger' [$0B5C2A]\r
+\r
+ATP incr = 50\r
+DFP incr = 0\r
+STR incr = 6\r
+AGL incr = 0\r
+=> total ATP incr = 56\r
+   total DFP incr = 3\r
+=> Increasments of the 'Fire dagger': ATP +56, DFP +3, STR +6\r
+\r
+- - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - \r
+"Effect bytes"\r
+- - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - \r
+\r
+...\r
+\r
+-----------------------------------------------------------------------\r
+Item descriptions\r
+-----------------------------------------------------------------------\r
+\r
+[$0B8200 -> $0B85FF]:  pointers to item descriptions\r
+                       (2 bytes, little-endian)\r
+\r
+[$0B87B4 -> $0BB2A0]:  item/spell/IP descriptions\r
+\r