The Armor List, by ID
Here is the exhaustive list of armor in FF1-DoS. There are a total of 70 armor types, denoted as 0×01 through 0×46.
0×01 | Clothes | Leather Armor | Chain Mail | Iron Armor |
0×05 | Knight’s Armor | Mythril Mail | Flame Mail | Ice Armor |
0×09 | Diamond Armor | Dragon Mail | Copper Armlet | Silver Armlet |
0×0d | Ruby Armlet | Diamond Armlet | White Robe | Black Robe |
0×11 | Crystal Mail | Thief’s Armlet | Black Garb | Kenpogi |
0×15 | Power Vest | Red Jacket | Sage’s Surplice | Light Robe |
0×19 | Gaia Gear | Bard’s Tunic | Genji Armor | Leather Shield |
0×1d | Iron Shield | Mythril Shield | Flame Shield | Ice Shield |
0×21 | Diamond Shield | Aegis Shield | Buckler | Protect Cloak |
0×25 | Genji Shield | Crystal Shield | Hero’s Shield | Zephyr Cape |
0×29 | Elven Cloak | Leather Cap | Helm | Great Helm |
0×2d | Mythril Helm | Diamond Helm | Healing Helm | Ribbon |
0×31 | Genji Helm | Crystal Helm | Black Cowl | Twist Headband |
0×35 | Tiger Mask | Feathered Cap | Red Cap | Wizard’s Hat |
0×39 | Sage’s Mitre | Leather Gloves | Bronze Gloves | Steel Gloves |
0×3d | Mythril Gloves | Gauntlets | Giant’s Gloves | Diamond Gloves |
0×41 | Protect Ring | Crystal Gloves | Thief’s Gloves | Crystal Ring |
0×45 | Angel’s Ring | Genji Gloves |
Armor Data
Table location: 0×19fa76 — 0×1a021b.
Data structure size: 28 bytes
Example: White Robe
Bytes 1-16 | 02 00 | 00 10 | 18 | 02 | 00 | 18 | 18 00 | 00 | 00 | 00 | 00 | 00 | 00 |
??? | Who equips | Defense | Evade Penalty | Evade+ | Spell effect (ID) | Resists | Str | Vit | Agil | Int | HP+ (%) | MP+ (%) |
Bytes 16-28 | 00 00 00 00 | a8 61 00 00 | 01 00 00 00 |
??? | Purchase cost | Selling price |
Decoding various bytes of information
The (two) Equip bytes
In our example, the White Robe, these bytes are 00 10. The first byte concerns initial character classes, and the second byte governs promoted classes:
04 = | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
—- | —- | Black Mage | White Mage | Red Mage | Monk | Thief | Warrior |
So, it’s easy to see that the White Robe cannot be used by any starting characters.
10 = | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | |
—- | —- | Black Wizard | White Wizard | Red Wizard | Master | Ninja | Knight |
This proves that the White Wizard is the only one proficient in the use of the White Robe.
The (two) Resist bytes…
The Resist bytes for the White Robe shows that it has a few interesting defensive properties. Observe, 18 00 breaks down as follows:
Byte 1— 18 = | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | |
Quake | Lightning | Ice | Fire | Death | Time | Stone | Stun | ||
Byte 2— 00 = | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
—- | —- | Mind | Confuse | Silence | Sleep | Blind | Poison |
Therefore, the White Robe protects against Fire and Death attacks.
Other information that may not be obvious
The bytes Evade+, Str, Vit, Agl, Int are all signed 8-bit integers. I assume this follows for HP+% and MP+%. That means if you want a weapon to lower Strength by 3, make its Str byte fd, as that would resolve to -3 rather than 253.
HP+% and MP+% are named as such because their bonus is applied as an additional percentage over the user’s maximum, and not as a straight bonus like attribute bonuses are applied.
The Spell effect byte is 00 if the weapon does not have a special effect when used. If it is not 00, then it calls the spell ID specified. See the Spell List to find the IDs of all the spells in the game.
It is important to note that I have not figured out all the information that there is to know about armor. So there’s an avenue for intrepid hackers to possibly learn something new.