This assembly patch allows you to pull off things like “Marth’s level cap is different than the rest of this team’s”. By altering the value at 0xD5C000 + N, you can change the maximum level that units of class ID N can reach.
If I want Lyn’s lord class to have a level cap of 30, the following steps are taken:
Lyn’s lord class has ID 0x3
The offset of this class’s level cap is 0xD5C000 + 0x3 = 0xD5C003
30 in hex is 0x1E
so I go to 0xD5C003 in a hex editor and input value 0x1E
Now, any unit with the Lyn Lord class will cap his/her level at 30.
Okay, I found the equivalent section of code in FE8 and wrote a routine to replace it. The following code will take as your level cap the value at (0x8.B60000 + class ID). If the value is zero or negative, it will use the default 20 as the cap. This might obsolete the ‘Max level 10’ ability depending on if the trainee autopromotion routine checks for it.
Paste this at 0x2BA58. The 0000B608 is the location of the level cap table:
Awesome! So this means I need to paste this into 0x2BA58, then go to 0xB60000 and type a class ID (Like 01 for Eirika Lord) and then a value up to 30in hex afterwards to set a class and level cap? Or wait, maybe I’m misunderstanding how to write this.
Ah, no, you need a byte for every class in the game, one after the other. The class ID functions as an index in the table. So for Eirika Lord, which has a class ID of 0x1, that class’s level cap would be read from 0xB60001.
in the future you should make your utility patches actually not change the function of the game by having your data initialized with the correct values needed to preserve it (i.e. klok shouldn’t be copying and pasting 0x14s; that’s the hacker’s job)
I mean, Klok’s the only one asking for this in FE8, and Venno was kind enough to give him the hex to make the change. Klok’s hacking the game, so yes that is the hacker’s job. His job. People shouldn’t expect to be spoonfed no matter their experience level. I think Cam’s original patch for FE7 handled that, which was nice of him to do.
Well my instructions weren’t as clear as they could have been. I updated the hex slightly; now if it reads zero or a negative value for the level cap, it will use 20 instead.
Making it only use a non-20 value if you specifically define one for a class, like Klok’s original suggestion, would be easy but it also wouldn’t fit within the space that the original routine affords. This way it’s pretty easy to install.