[FE7] Unique Animation Table Questions[Seems Resolved]

I was doing a bit of research into how FE7 handles variant animations for certain classes (Guy, Legault or Hawkeye for example) that allows for a unit to have a unique animation instead of the generic class animation. After tracing the different tables, I have some questions about how the tables are setup and whether they can be modified to allow for more variant animations.

I started looking at the Custom Battle Sprite Table in Nightmare (Located @ 0xC996B8):
Offset C996B8 - 18 unique entries in table:
7495C908 Lucius Monk
8895C908 Lucius Bishop
A095C908 Linus (rt A?)
B895C908 Linus (rt B?)
D095C908 Linus (morph)
E895C908 Lloyd (rt A?)
F495C908 Lloyd (rt B?)
0096C908 Lloyd (morph)
0C96C908 Isadora
2896C908 Nino Sage
4096C908 Legault Thief
4C96C908 Legault Assassin
5896C908 Raven Hero
7096C908 Guy Myrmidon
7C96C908 Guy Swordmaster
8896C908 Hawkeye Berserker
9C96C908 Jerme Assassin
A896C908 Jerme Assassin (morph)

I then looked at each of these pointers for the assignment of animations to particular weapons/weapon types. For example, each of Linus’s and Raven’s entries appear identical (as they should since they both use the Coated Hero animation set):

C995A0: Linus 1
00019000 09019300 02019100 28009200 29009200 00000000;
C995B8: Linus 2
00019000 09019300 02019100 28009200 29009200 00000000;
C995D0: Linus (morph)
00019000 09019300 02019100 28009200 29009200 00000000;
C99658: Raven Hero
00019000 09019300 02019100 28009200 29009200 00000000;

After looking these over, I have a few questions for the veteran hackers out there:

  1. Could duplicate entries be consolidated into a single set (Coated Hero, Long Hair Assassin, etc.) leaving extra slots for new unique animations?

  2. Would consolidation break anything for handling animations, or is it a safe way to add more unique animations without moving/expanding this table?

  3. Is there any downside to consolidating duplicate entries?

  4. Would it be prudent to move or expand the table in addition to consolidating it?

  5. How would I repoint to the table if it is moved?

Based on this concept, the table would have 7 vacant slots for new animations without moving or expanding it. I’m really hoping somebody more experienced could look this over and confirm if this would be a safe alteration. Would it be worth it to implement these changes?

1 Like

Yes. Intelligent Systems was, as always, unintelligent.

That primarily depends on how many custom animations you need.

Replace command, put the pointer to the original table in byte forme (i.e. 00D80000 → 00 00 D8 08), paste the data elsewhere into free space, write in the new pointer as the phrase to replace with and hit “replace all.”

I wouldn’t say unintelligent, but fairly inefficient. Seriously, they used up one of the unique slots for Isadora rather then giving the Female Paladin her animation set!

I don’t think there would be a whole slew of unique animations, but I’d like to know what options are available for any enterprising hackers out there.

In the case above, I should look for “B8 96 C9 08” for hex values, yet HxD is giving no results. Perhaps I’m not at the true start of the table in question which is strange.

Subtract four?

Bingo! I guess it was padded at the start as well as between entries, which I should have figured. The entry is located at 0x528E4 should anyone wish to repoint the table after moving it.

1 Like

Oh hey, I found where the game used these in the actual loading of the animations before. I think it’s a bit before where I modify the “Read In-Battle Display” part of my display hack(Uhm, none of you know what file that is; it’s a note to myself to dig it out later). So yeah, I’ll tell you where the game actually uses these; that might be useful documentation to stick here. Not something you couldn’t do in 5 minutes with a break-on-read, however.

Would definitely be useful information for completing the branching promotions functionality, since that still needs to rerout the battle palette and custom animation designations to separate tables that specify character and class alongside the value in order to accommodate multiple possible T2 classes.

That would be great! It’s more than I currently know how to do, and it could be very useful for future endeavors.

@Arch I’m guessing you’re taking a page from FE8 to handle the unit class and palette organization? I’m curious how a villager style class would work for multiple branches, depending on how they promote.