Jump to content

(FE12) Growth Rates


EdeaCreamer
 Share

Recommended Posts

The growth rates and base stats for your units in Fire Emblem 12 are located as follows:

*You need the game, DSLazy, PuyoTools, and a decent hex editor. Microsoft .NET framework requirements are in effect, in case you find one of those programs to be non-functioning.

*Load the game file into DSLazy using the "..." button.

*Hit the icon with the saw on it (NDS Unpack).

*This should make an "NDS_Unpack" folder in whatever directory you placed DSLazy. Go to NDS_Unpack/data/data/FE12data.bin and copy.

*Place the copy somewhere outside the "NDS_Unpack" folder, ideally off on its own.

*Open PuyoTools, select Compression->Decompress->Select Files, then go to the copy of FE12data.bin you made and confirm.

*This should make an "LZ11_Decompressed" folder in whatever directory you placed the copy of FE12data.bin.

*Open it, and view the file inside using a hex editor. You'll notice Marth's and My Unit's base stats at the top almost immediately.

However, the growth rates for characters are not as easy to manipulate as the base stats, due to the game utilizing a 'cipher' that interprets the raw data (thanks VincentASM/DarkTwilkitri). Note that all known growth rates are divisible by 5, and it's possible to have negative base growths. It seems there are also two sets of base growth rates for each character, and only one of them's actually used in FE12.

This thread is for archiving any additional information obtained about unit growth rates in FE12. Currently wanting to learn how the cipher operates, and potentially generate a .xls or .txt file that simply lists what values you need to enter to get a given growth rate on a given character.

Edited by EdeaCreamer
Link to comment
Share on other sites

I found my notes on FE12 growths.

As I warned earlier, it's a bit messy, since it uses a roundabout method. It's also slightly out of date, but that shouldn't be an issue I hope!

What I do is use the fact that one of the rows is unused and typically set to all zeroes and create my own "cipher". In cases where both rows are used, you'll need to use another trick, which I probably can't help with--however, you might be able to use a combination of my notes and DT's emulator builds to work something out.

I believe the growths are encrypted in this game. I sort of know how they work, but I'm kind of lazy to explain the details.

Here's a discussion between me and another member about editing growths.

[spoiler=Warning, long!]

You do need to decompress the file, but IIRC it uses LZZ7-11 compression instead of the usual type 10. BatchLZZ7 can handle type 11, as can some other programs.

I can make modules for the growth rates, but it's kind of pointless since the numbers don't really mean anything this time.

What you need to do is to subtract one set of numbers from another and then match the result with this incomplete list. This method only works for playable characters. I don't think it's possible to do it for classes.

Real growth rate / Result of subtraction

-20

-15

-10 ED

-5 F6

00 00

05 BE

10 7E

15 DD

20 3F

25 63

30 3C

35 B3

40 65

45 3A

50 39

55 22

60 4F

65 5C

70 D3

75 36

80 71

85

90 87

95

100
The growths start from 21 and end at 35 in terms of Nightmare module numbering. The first eight numbers are the player growth rates in the normal in-game order, not sure who the second set is supposed to be for.

The second set of numbers are meant to be all 0 for playble characters, but as you can see, they're not 0 and instead are a bunch of random numbers. To make them 0, you should subtract the numbers from themselves, eg. 7E - 7E = 0. Then do the same for the first set, using the corresponding numbers from the second set.

Eg. Marth

HP ST MA SK SP LC DE RE

D1 E3 6C E1 F6 2E 15 49 MINUS

98 A9 AE A7 BC BD B2 CB

=

39 3A -- 3A 3A -- -- --

-- -- BE -- -- 71 63 7E
Sometimes you'll subtract a larger number from a smaller one. Eg. 6C - AE. In this case, add a 1 in front of the first number, i.e 16C - AE = BE.

Then to modify the growths, you'll need to work backwards and change the first row of numbers. Don't bother changing the second row, because it doesn't do anything.

I haven't tried changing growths myself, so I don't know if this will work properly. There might also be some ambiguities with which way you're supposed to add the numbers.

I read over your notes relating to growths on the 1st page more clearly. I think I now have a correct understanding on how it works. One thing I want to try and do is make it so that Bantu doesn't have negative growths (actually giving him decent growths for once). For example, if I wanted most of his personal growths to be say: 40. I would have to make sure that the subtractions between the first and second lines = 65(in hex), right?

His current growths look like this if I'm correct:

HP ST MA SK SP LC DE RE

C1 D5 EA D0 D5 77 FE D4

D4 D5 EA E3 E8 F9 FE F7

=

ED 00 00 ED ED 7E 00 DD

Dec:

-10 00 00 -10 -10 10 00 15

You mentioned that the 2nd line being modified does nothing, so in order to get a 40% def growth for Bantu would the top DEF value have to be 63? So that should mean (1)63 - FE = 65 in hex.

EDIT: You may have made a mistake on that list, 70 and 75 could be mixed up. Because when I was getting Jake's speed I got 36 for 70, when I calculated Maria's speed I got D3 for 75. Did you get some things mixed up?

You mentioned that the 2nd line being modified does nothing, so in order to get a 40% def growth for Bantu would the top DEF value have to be 63? So that should mean (1)63 - FE = 65 in hex.

I think that should be right.

EDIT: You may have made a mistake on that list, 70 and 75 could be mixed up. Because when I was getting Jake's speed I got 36 for 70, when I calculated Maria's speed I got D3 for 75. Did you get some things mixed up?

Yeah I did, although it should only be the 70% and 75% growths that got mixed up. I noticed this after playing around with DarkTwilkitri's growth rate checker. I don't think I've fixed it on my FE12 growth hacking notes though.

Which reminds me, can you use Desume on your machine? I followed DT's instructions and edited the emulator so that it outputs a character's personal growth rates when they level up. Might be useful for double checking your modified growths.

Desume is the emulator i've been always using. Would you send me that edited version of the emulator to tell me how to modify it?

Regarding class growths, there seems to be 2 sets of lines that might relate to this. For example, on the Female Pegasus Knight there is:

E3 C2 A9 95 56 20 43 E2

2E A7 69 D4 58 20 04 21

Could one be the player growth and one be the enemy growth? How did DT calculate the player and enemy class growths anyway?

Desume is the emulator i've been always using. Would you send me that edited version of the emulator to tell me how to modify it?

Well, it's already built in into the emulator. So you just need to use the build version that I made. I also have one for class growths, since you seem to be interested in editing them.

http://serenesforest.net/download/DeSmuME-Char.exe

http://serenesforest.net/download/DeSmuME-Class.exe

Just play the game normally and the growths will be dumped to the secondary debug window when appropriate. Sometimes you'll just junk data, but it should be fairly easy to tell when you get that.

Regarding class growths, there seems to be 2 sets of lines that might relate to this. For example, on the Female Pegasus Knight there is:

E3 C2 A9 95 56 20 43 E2

2E A7 69 D4 58 20 04 21

Could one be the player growth and one be the enemy growth? How did DT calculate the player and enemy class growths anyway?

There are indeed separate growths for players and enemies, so you can't use the exact same trick as with character growths. However, since the actual growth rates have already been recorded, there's a fairly easy way of deciphering them.

What you need to do is work backwards and figure out what string of numbers you'd need so that the first (player growths) or second (enemy growths) row subtracted by this string of numbers creates the string of numbers that you can convert into growth rates. Basically you need one extra step compared to character growths.

If that didn't make sense, I can show an example.

I'd be okay with you showing an example. How about showing how I could modify the Dracoknight growths(both player and enemy), because I want to decrease the player growth speed to 10. Also, I want to remove all of the negative resistance and magic growths on physIcal units. Another thing I want to do is increase enemy hunter/horseman strength growths, if you show me an example for one class(both player and enemy) I might understand how to do the others.

Overall, just show me the example of how it would work with the Dracoknight class(Male or Female, doesn't matter) for both player and enemy growths.

Male Dracoknights have these numbers for their two rows:

0D FC DB 87 D0 0A 75 14

58 E1 9B C6 D2 0A 33 92

Which correspond to these actual growths:

30 10 -15 20 25 00 10 00

90 25 00 10 40 00 30 10

However, the numbers the game reads to get the above growths are:

3C 7E 40 3F 63 00 7E 00

87 63 00 7E 65 00 3C 7E

If you subtract the first rows from each other and the second rows from each other, you should get the same result:

Eg. 10D - 3C = 158 - 87 = D1

D1 7E 9B 48 6D 0A F7 14

D1 7E 9B 48 6D 0A F7 14

(If not, you can tell something's gone wrong)

Then, you can modify the growths using the exact principles as character growths, except that instead of using the coded second row in the subtraction, you use the result of the subtraction between the coded value and the actual growth.

So to decrease the player speed to 10% requires X - 6D = 7E or X = 7E + 6D = EB. So swap the D0 for EB.

Decreasing, say, enemy HP to 80% requires X - D1 = 71 or X = 71 + D1 = (1)42. In this case, swap the 58 for 42.

Of course, you should try it out in the game to see if the changes work. It might be possible that I got some of the logic backwards or something.

Say, if I want the Dracoknight defense growth to be 20% I would do this:

F7 + 3F = 1(36), and then 36 goes in place of the 75?

I'm wondering is Marth's (Lord) class an exception? I notice subtracting the enemy growths from the player growths there seem to match up with what's recorded on this site. Also, using the above method didn't get matching numbers.

EDIT: So I have to subtract the known growths from the current numbers in the database, then add onto that result to figure out which number needs to go in if I want to chance the growth right?

If I wanted to change Paladin's speed growth to 15% I would have to do:

1(6F) - 7E = F1, --> F1 + DD = (1)CE, then replace 6F with CE so the growth becomes 15%. I hope I got understanding of it now.

If this is the case then I need to know the values that equal -15 and -20. Since you listed the dracoknight example above, would 40 = -15?

I'm wondering is Marth's (Lord) class an exception? I notice subtracting the enemy growths from the player growths there seem to match up with what's recorded on this site. Also, using the above method didn't get matching numbers.

There are a few exceptions where you don't need to use the known growths, such as Lord since their enemy growths are all meant to be 0 or Soldier, Emperor and etc. whose player growths are all 0 (which in this case, you subtract the first row off instead).

EDIT: So I have to subtract the known growths from the current numbers in the database, then add onto that result to figure out which number needs to go in if I want to chance the growth right?

If I wanted to change Paladin's speed growth to 15% I would have to do:

1(6F) - 7E = F1, --> F1 + DD = (1)CE, then replace 6F with CE so the growth becomes 15%. I hope I got understanding of it now.

That sounds right.

f this is the case then I need to know the values that equal -15 and -20. Since you listed the dracoknight example above, would 40 = -15?

Here's the most updated list.

-20 07

-15 40

-10 ED

-5 F6

00 00

05 BE

10 7E

15 DD

20 3F

25 63

30 3C

35 B3

40 65

45 3A

50 39

55 22

60 4F

65 5C

70 36

75 D3

80 71

85

90 87

95

100 92

I think the best solution might be to design a ASM hack that removes the encryption and then recode all the growths to match what they should be. Although, to be honest, this is probably going to be a lot of hard work for a game that rarely gets hacked.

Link to comment
Share on other sites

THANK YOU so much for the notes; I'm going to be digesting this for awhile. If anyone else cares to assimilate and post thoughts, feel free.

Edit: I've made an Excel table that tells the user exactly what hex value to insert to get a given growth rate for a given character, all 77 of the main ones (Marth through Elice, not like you'll ever need the latter but...), assuming you leave the ciphers (the second string of eight values) alone and don't change them. Any particular place recommended to host this thing so others can look at it? I'm just going to go through it and highlight the default values for each person.

Edit 2: Aw, I'm not allowed to upload Excel files to this post. Welp, if someone wants a look, just give me a message.

Edit 3: Here's the growth cyphers for characters in .txt format: fe12growthcyphers.txt

Edited by EdeaCreamer
Link to comment
Share on other sites

  • 2 years later...
  • 1 year later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...