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: Characters
JeffLudwig.com
GOG.com

Characters

Characters

Your experience of Final Fantasy is vastly dependent on the party you create. No decision during the game is quite as important as your decision as to the makeup of that party.

The data that actually drives the behavior of those character classes is detailed here. Based on this information, you could make the game impossible, or insanely easy.

Initial Character Stats data structure

Upon creation, each character is given starting statistical values for such things as their strength, HP, spell level, etc. Since you can only pick six character classes This data is stored in six 16-byte records starting at 0×1e1354. Note that there are actually twelve character classes, but six of those are upgraded versions of these initial six characters, and as such there are only six records stored for initial stats.

This is an example of an unmodified Warrior’s initial stats.

23 00 00 00 00 0a 08 01 0f 08 0a 35 0f 02 01 00
HP MP Spell Level Str. Agi. Int. Stam. Luck Accuracy Evade Magic Def. Weapon Armor ?

Level Up data

Experience Table

Every character class uses the same experience table in Final Fantasy. It is to be found at 0×1be3b8 – 0×1be53f. It lists, in order, the experience value needed to reach level 2, 3, 4, … all the way up to level 99. Hence, a level cap of 99 is hard coded into the game. Each experience value is represented by 4 bytes.

Accuracy and Magic Defense

At level up, each character gains a specific amount of Accuracy and Magic Defense respectively. Each of the twelve (!) character classes is given a specific value, and that is found in the ROM at location 0×226fd6 – 0×226fed. This is a span of 24 bytes, and this is how the data breaks down. For reference, the original data in the ROM is shown:

03 05 03 03 01 02 04 05 03 03 02 02
Warrior Thief Monk Red Mage White Mage Black Mage Knight Ninja Master Red Wizard White Wizard Black Wizard
Accuracy bonus
 
02 02 01 03 04 04 03 03 02 03 05 05
Warrior Thief Monk Red Mage White Mage Black Mage Knight Ninja Master Red Wizard White Wizard Black Wizard
Magic Defense bonus

Statistical increases

To understand this data, you’ll need to understand a little bit about how stats are actually increased at level up. HP and MP are increased using one of two algorithms; for our purposes we will differentiate these algorithms by a “strong” or “weak” moniker. A strong HP gives a flat bonus (20, by default), in addition to a value based on the individual character’s Stamina. A weak MP bonus is only based on the character’s Intellect stat; i.e. no additional bonus. Stats are either increased by one, or left alone. If the character is a caster, it either gains the ability to cast the next spell level, or it does not.

The information that drives level ups is stored in a bit-by-bit format, and each level up requires 8 bits of information. Each of the six basic classes is represented in the ROM. Hence, one level up for one character class is stored in exactly one byte, and are stored in level 2, 3, 4, … 99 fashion.

Warrior/Knight Level up table: 0×223adc — 0×223b3e
Thief/Ninja Level up table: 0×223b3f — 0×223ba1
Monk/Master Level up table: 0×223ba2 — 0×223c04
Red Mage/Wizard Level up table: 0×223c05 — 0×223c67
White Mage/Wizard Level up table: 0×223c68 — 0×223cca
Black Mage/Wizard Level up table: 0×223ccb — 0×223d2d

Now, lets break down a “level-up byte” further. For instance a “95“ would break down in binary as follows: 1001 0101. For the purposes of HP/MP gain, a “1” indicates a guaranteed strong bonus (a “0” indicates that the character would have to “get lucky” in order to gain a strong bonus; in the unmodified ROM the chance to receive a strong bonus is 1 in 8.) For attributes, a “1” indicates a guaranteed increase, a “0” forces the character to “roll an 8” to increase the attribute. For spell levels, again, you gain a spell level or you don’t, except in the special circumstances shown below.

This said, the bits for a 95 level up break down as follows:

1 0 0 1 0 1 0 1
Spell Level Luck Stamina Intellect Agility Strength MP HP

As you can see, this character will gain, at minimum, a spell level, intellect, strength, and HP at this level up.

Advanced cases— Code Hacking

Two categories of concern may arise from this information. First, it is possible to modify the algorithms for HP/MP increases, as well as the chances for gaining a strong bonus with a “0”. Strong level ups are discussed here.

Astute veterans of Final Fantasy may ask me, “Your level up information is all well and good, but Knights and Ninjas gain their spell levels all at once (not one at a time)! How does this work?” Glad you asked For this information, please see my notes regarding spell levels.

Spell Ability

There are 64 spells that characters are able to learn. In Final Fantasy 1, characters learn spells by purchasing them at the appropriate shop. Characters must satisfy two requirements to be able to put coin down for a spell: they must have attained the spell level of the spell in question, and they must be a member of an appropriate class.

The table which defines which of the spells members of the twelve classes can learn is found at 0×1a20c20×1a2141. Each spell is given two bytes of information, and twelve of these sixteen bits are used in determining which characters may potentially buy the spell. For instance, let’s look at an unmodded Cure spell, which has a 2-byte entry of 1819, which resolves to “0001 1000 0001 1001” in binary.

0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1
  Black Mage White Mage Red Mage Monk Thief Warrior   Black Wizard White Wizard Red Wizard Master Samurai Knight
ludmeister

Date published: 2010-09-10

Leave a comment ->

  1. I actually did some testing using your hacking notes (which are god sent!), and decided to raise Luck to 238 (EE) and lowered Int to 2 and Fire did ~ 180 to 200s in damage! Then I decided to have two characters: One with 238 in Int only, and one with 238 Int and Luck. Fire did ~ 600 damage with the one with lower Luck. It did ~ 800 damage with both Int and Luck being 238. This would mean that Luck has an affect on spell damage; somewhere around 1/4 or 1/3 the affect Int has on it. I then did the same test with two different characters again; one with 238 Luck and 18 Int, the other with 05 Luck and 18 Int. I targeted any ally with cure and the one with 238 Luck only healed about 35 Hp, which I’m certain it would do so without the Luck. The one with. And it did, they healed just about the same (35 – 40 Hp). So therefore, while Luck definitely has an effect on spell damage, it has no effect on healing. I just sent this to you just to let you know if you didn’t already; this may be of your intention, though it may not be, but it does help explain the perpetual (though not great) gap in the magic damage between Black Mage and Red Mage.

    — Neil · Nov 14, 06:43 AM · #

  2. Thanks for responding to my message.

    Regarding, Stamina; since Luck rose magic damage, I was hoping Stamina would raise the effectiveness of healing spells. So I did the same test as the other one with Luck only I rose Stamina instead. The one with both 238 Int and Stamina healed about 250, the one with only 238 Stamina and 12 Int healed only about 30. So it would seem Stamina has no effect other than raising max Hp.

    Also, does magic defense have an effect on magic damage received; I’m sure it does but the effect is so small that it can’t really be seen. I know from the original FF 1,magic defense’s main use was to protect against status effects (which is why another hack on the NES FF1 prefers to call it ‘Magic Evasion’).
    Astos was pretty hard with the ‘ra spells; the mages died sooner because of their lower Hp.

    I already tried raising Luck for critical hits and I’m almost certain that it’s based on the weapon only; the number of critical hits didn’t seem any greater with 238 than without it.

    I think that Dia should cost 6 Mp instead of 8; that or make it a little stronger. Dia is significantly weaker than Fira to the majority of undead monsters, even so when they are not weak against fire. Though Fira costs 8 Mp too. So Dia comes sooner and costs less (money), and you can use against Garland; I would suppose you made it as strong as it is so that having a White Mage in your party when fighting Garland wouldn’t be so easy. But Fira can also kill off many of the enemies in the Marsh Cave when you’ll be using it often, while Dia can’t touch them. By the way, I was surprised Monk or Master couldn’t get Dia, you know because they are ‘monks’, but it’s not a big issue.

    I also wondered if you would change Thief or Samurai’s name into Duelist. Samurai gives me the impression of people who wear a lot of heavy armor by themselves (or at least, more than a ninja wold), but in this case, Samurai gets light armor, and Ninja gets a bit more heavy armor. And yeah, I know it’s because of job promotional reasons but still, Duelist fits in pretty well.

    I also feel pretty bad for Black Mage, if you look in your class charts, in 6 out the 9 talents, he has worst of. 1 he’s best in, another he’s tied for best in, and the other (evasion), he’s 3rd worst. I’d figure he’d have a bit higher evasion because of his higher agility.

    — Neil · Nov 20, 03:48 AM · #

  3. Oh, I almost forgot: Weapons.

    Staff vs. Knife Staff is one stronger but has 13 less Accuracy and 9 % less chance of critical hits (in other words, almost never). But it costs 10 while knife costs 5. I think you should make staff either 1 stronger, 2 more acc, or both – just something that makes a little better.

    Falchion vs. Saber The Falchion is 5 stronger, has one less acc, and 3 % less chance to score a critical hit. But it costs 50 less gil (450 Falchion, 500 Saber). I’d think that you would make it the other way around. If not, you should probably raise Saber’s accuracy by like 4.

    Power Staff vs. Crosier (vs. Venom Dagger) First thing, Crosier costs much less and is available only Knight, Monk, and White Mage. Power Staff is available to them plus Black Mage, and it’s only real use is to help Black Mage catch up to the others in damage. Even so, he lags behind by quite a bit, not surprisingly though. It is also 5 weaker, 1 more acc, and has 25 % chance to score a critical hit. That critical hit chance is the only thing it’s really got going for it, other than that, not so much. 2800 gil seems to be much for it (especially if you don’t have a Black Mage!). Black Mage also seems much better off with a Venom Dagger; it costs a lot but it also costs a lot less than the Power Staff. The damage difference is only 6 (Venom Dagger is pretty strong for it being a knife). Not to mention, a whole lot of enemies not in the marsh cave are weak against poison. Power Staff also has weird description, but I think you’ve already mentioned it.

    — Neil · Nov 20, 04:07 AM · #

  4. Uh… please excuse the weird format of note # 3, it’s supposed to go Staff vs. Knife (enter) Staff is one… And so were the others, just so you know.

    — Neil · Nov 20, 04:10 AM · #

  5. Actually, after doing some testing of my own with the iOS version of Final Fantasy, which is supposedly the same as the GBA version, I’ve found that Luck does have an effect on healing spells, just not in the way Neil expected in comment 1. Healing spells are not affected by the caster’s Luck; instead they are influenced by the recipient’s Luck. Furthermore, this influence is random rather than fixed.

    When a healing spell is cast on a character, a random number of HP of healing is added, ranging from 0 to half the recipient’s Luck, minus 1. So a character with Luck 42 can have anywhere from 0 to 20 HP of healing added, while one with Luck 22 will have only 0 to 10 HP of healing added for the same spell. This random HP is added regardless of the type or strength of the healing spell or the character casting it, and it includes the spells cast by the Healing Staff and Helm. It applies both in and out of combat.

    (Items like Potions and Sleeping Bags do not get this random HP of extra healing.)

    The effect is most visible with the spell Heal (including that cast by the Healing Staff and Helm), since this spell delivers the lowest healing and applies to the entire party. (A good party to demonstrate the effect is a high-level one containing both a Thief/Ninja and a Black Mage/Wizard, since this will produce the greatest difference in Luck.) Since the effect is random, it is still possible for a low-Luck character to get more healing than a high-Luck character if the latter gets a “low roll”, but the highest possible values of healing for the high-Luck character will definitely exceed those possible for the low-Luck one.

    — Colin Howell · Jul 12, 01:47 AM · #