Deprecated: Function get_magic_quotes_gpc() is deprecated in /home2/jludwig/public_html/finalfantasy/hacking/textpattern/lib/constants.php on line 29
Final Fantasy GBA Hacking Notes: Weapons
JeffLudwig.com
GOG.com

Weapons

The Weapon List, by ID

As with the spells, it seems best to lay out the exhaustive list of weapons in FF1-DoS before we decode the weapon data in the ROM. There is a grand total of 64 weapons, denoted as 0×01 through 0×40. Any weapon with an ID of 0×29 or greater was not in NES version of Final Fantasy.

0×01 Nunchaku Knife Staff Rapier
0×05 Hammer Broadsword Battle Axe Scimitar
0×09 Iron Nunchaku Dagger Crosier Saber
0×0d Longsword Great Axe Falchion Mythril Knife
0×11 Mythril Sword Mythril Hammer Mythril Axe Flame Sword
0×15 Ice Brand Wyrmkiller Great Sword Sun Blade
0×19 Coral Sword Werebuster Rune Blade Power Staff
0×1d Light Axe Healing Staff Mage’s Staff Defender
0×21 Wizard’s Staff Vorpal Sword Cat Claws Thor’s Hammer
0×25 Razer Sasuke’s Blade Excalibur Masamune
0×29 Ultima Weapon Ragnarok Murasame Lightbringer
0×2d Rune Staff Judgment Staff Dark Claymore Duel Rapier
0×31 Braveheart Deathbringer Enhancer Gigantaxe
0×35 Viking Axe Rune Axe Ogrekiller Kikuichimonji
0×39 Asura Kotetsu War Hammer Assassin Dagger
0×3d Orichalcum (Dagger) Mage Masher Gladius Sage’s Staff

Weapon Data

Table location: 0×19f3580×19fa75.

Data structure size: 28 bytes

Example: Nunchaku

Bytes 1-15 29 00 04 06 0C 00 00 00 00 00 00 00 00 00 00
  ??? Who equips Attack Accuracy Evade+ Spell effect (ID) Attack bits Family Str Vit Agil Int
Bytes 16-28 01 00 00 00 00 08 00 00 00 04 00 00 00
  Critical % ??? Purchase cost Selling price

Decoding various bytes of information

The (two) Equip bytes

In our example, the Nunchaku, these bytes are 04 06. The first byte concerns initial character classes, and the second byte governs promoted classes:

04 = 0 0 0 0   0 1 0 0
  —- —- Black Mage White Mage   Red Mage Monk Thief Warrior

So… the Monk alone can equip the Nunchaku before promotion. Makes sense. How about after class change?

06 = 0 0 0 0   0 1 1 0
  —- —- Black Wizard White Wizard   Red Wizard Master Ninja Knight

The Ninja picks up proficiency with the Nunchaku at class change. Exactly!

The (two) Attack bytes…

The Nunchaku has no additional information… so I’ll just list each set of decoded bits as they appear. This can be borne out by looking at other weapons. The Flame Sword has 10 00 in its attack bytes.

Byte 1— 10 = 0 0 0 1   0 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

Obviously, the Flame Sword is fire-elemental, and so its Fire bit is set.

The Family byte…

The Flame Sword again proves instructional here. This byte is used to set whether certain families of monsters prove vulnerable to the weapon. Observe the following based on the Flame Sword’s “Type” byte:

88 = 1 0 0 0   1 0 0 0
  Regenerating Magical Aquatic Lycanthrope   Undead Giant Dragon Evil

Indeed, the Flame Sword deals extra damage versus Regenerating monsters, as well as any Undead creatures, even if they might be staunch versus Fire!

Other information that may not be obvious

The bytes Evade+, Str, Vit, Agl, Int are all signed 8-bit integers. 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.

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 weapons. So there’s an avenue for intrepid hackers to possibly learn something new.

ludmeister

Date published: 2011-11-17

Leave a comment ->

  1. Thanks again for the extremely helpful guide. Do you remember how you created the Holy Staff’s 50% Holy Spell boost in v3.0 of your mod? That was a very creative idea I would like to tinker with.

    — Pete · Mar 8, 02:46 PM · #

  2. Hey, I wanted to post something that was slightly alarming. The byte you have for Critical Hit % does not seem to have a dramatic effect on whether or not a weapon actually does do a critical hit.

    It was odd because I dramatically increased critical hit rate for almost all weapons, but still got very few of them. So when i rose the byte to 100 (64), I was getting crits once per every 5-10 attacks. When I rose it to 255 (FF), the exact same chance as well…

    — Arc · Dec 6, 03:05 PM · #