I wrote an explanation about the OAM rules.

Your 狂王 animation will use OAM data 39504 bytes.
An animation that generals wielding large swords is 7608 bytes.
Animation that Wyvern flies around is also 11400 bytes.

狂王 A is a very large animation that uses more than five times the data area of general animation.
狂王(Madness king) is As the name suggests, it is a horrible monster.

I think the big dragon flapping its wings makes the data bigger.
This can not be expressed with GBA’s poor memory.

Although it is a wonderful work, in order to make this work on gba, there is no choice but to cut the animation and reduce the size.


Well, I’m making a rom Hack with a friend (which is a real fan of FE, I’m more newbie) for a group of friends. In this group, the vast majority has never played to a FIre Emblem game, so the tutorial is required. But we are changing completely maps, characters and classes.
By this way, on the 01 Chapter for example, Seth is supposed to use his sword instead of his spear, but the character that replaced Seth is a metamorph. A man becoming a wolf (we named the class Okami which is wolf in japanese, right ?). So he will use a dragonstone-like item and no swords. So the tutorial will just crash :confused:
I hope, this was clear enough for you.

And I will search again for an example of misstranslation ^^


Ah got it:
I’m not sure, but I think that this is a misstranslation:
Pointer destination specified by animation

With what I know of pointers (i did some C/C++), that the pointer which specify the position of the specified animation, and not the animation that will leads to pointer destination. Did you get it ?


On another subject @7743, I have found a problem.
That’s in the class editor -> the Unit Movement Icon.
First that’s put under a name without any meaning : No (why ?)
Second thing, if we want to put let’s say the unit movement icon number 00A1, we need to put 00A2 instead.
I was clear enough ? >.<


The limit to “OAM data” size has nothing to do with the gba hardware. It is decided to the original program design.

The rule of “move by tile” has nothing to do with the original animation engine. It is decided to your own algorithm.

The error “OAM data overflow” doesn’t mean that the OAM is really full. The max size of the “OAM data” (not really data in OAM, just a name) is hardcoded in the animation engine. It can be surpassed if you hack it. Even if the WRAM area is limited, you can hack the routine to load the OAM data from ROM area directly (but that’s a waste of ROM space because you cannot compress the data). I have succeeded in testing that but haven’t broken the size limit yet, because many places need fixing and I feel bored with that and lack that motivation.
There are other ways to solve that problem. As is known to us all, the official way is to split the animation into background and sprites. Though it is hardcoded, you can hack the engine to realize it. My youtube channel has a demo. Another way is to improve your own algorithm which you demonstrate here. The direct cause of that error is that the total number of the sprites is too large, so you can also try to divide the frame more roughly to reduce the number of generated sprites. Of course, that will lead to some waste of the sheet space, so it is a double-edged rapier. I designed an algorithm to divide frame as large as possible so that it generates the fewest sprites and the result is over 100 sheets, so I don’t use it in practice. Some optimizations can be designed here.

When it comes to the algorithm of the animation creator, the “move by tile” rule is also related to that. There is no rule that the sprites can only move by tile in the original engine. Their positions on the gba screen is as fine-grained as pixel. The possible reason is how you handle the input frames.Of course, the algorithm will be much more efficient if you make a rule like that. My algorithm runs over 10 hours on a server in my lab for an animation, so it is impractical. I don’t know much of the algorithm in image processing, but you can challenge it anyway. After all, the official way is to do all these by hand. Human is always smarter than computer, so that problem can be dealt with easily. To conclude, the non-8px aligned movement is not that special.


First to thank you for your reply, but I found that I import other pictures more animation, there were some bugs, I am confused, can’t use the FEBuilderGBA to directly replace more animated picture?

The king animation was exported with FEBuilderGBA, but what did he seem to affect, causing the enemy to not animate, and the king didn’t move on?

The GIF images, too, he has the full animation, but he can only run the magic sword of animation, if he use 1 distance of animation, ROM will crash, the king also can only run the remote animation


A question about Character Palettes. I extended the list, so i can add a new palette, but i also need a new Pointer or else i just replace, in this case, Roys palette:

How do i find out which pointers are avaible?


Hello, 7743. I have solved the issue from before, and the portrait imports just fine.
However, when I go to import a custom animation, I get this error.

Here’s the animation in question. Do you have any ideas what could be happening other than the non-descript engrish of 256x64? Here’s the file, by the way.


It is very hard to make a tutorial.
Two scripts need to work together.
Also, to compensate for missing processing you need to write asm code.
It is far more difficult than making main story.
I recommend you stop it.

If you still want to write it, I will tell you the address of the code of the tutorial.

089E85FC-089E8638 Tutorial Pointers table Introduction
089E8760-089E8798 Introduction of an event called from the tutorial
089EF2B0-089EF828 Tutorial Pointers table ch1 chapter
089EFC9C-089F0284 Events called from the tutorial 1 chapter
089E88B8-089E8930 Tutorial Pointers table ch2
089F0808-089F1154 Events called from the tutorial Chapter 2

It is safe to quit if you can not understand with this information.


When the engine that can process an infinite length of animation is completed, I will make a patch.

The size of the sheet may not be changed because there are restrictions on the tile area size,
If it can be exceeded, We may be able to import / export large characters such as the demon king.


wolf is おおかみ(狼)

o o ka mi

The sound of “o” twice.
You can pronounce “o: ka mi”.

It is another meaning if it is only one “o” , okami.

o ka mi

When it is a おかみ(okami), the meaning is different.
おかみ==女将(The hotel’s landlady)、
おかみ==お上(A person of high rank(this words to use when irony them))


I think that this image is ignoring the rule of battle animation image.

There is no palette designation that should be on the right side.

The image itself is 16 colors, but the order of the palettes is incorrect.
The images are specified for the 0x5th palette why the background color is.

FEBuilderGBA follows the palette designation in the upper right in the animation of FEEditorAdv if there is one.
However, there was no pallet designation in the upper right.

Therefore, if there is a palette designation of the image itself, it follows it accordingly.
The palette of the image was being impersonated.
The background color is not 0x0 number, it is 0x5 number.

Why do not these images ignore the rules?

Certainly, the largest rear area of the human beings is the background.
The color of 0x05 is the background.

However, it is not so in general image rules.
0x00 is the background.

FEBuilderGBA was confronted with contradiction.
So, it does not work well.

If you really want to import this format, you have to define a new rule.
Even if a palette is specified by the user, if the background detection fails, the new rule is to move the background color.
The rules become complicated more and more.

As expected, I do not want to implement it.
If implemented, The next is a fight against false detection.

If battle animation also has no palette, there is no choice but to have a human being choose a palette.
To import an image ignoring rules, it is the only one… :frowning:

Can this be imported into FEEditorAdv?
I made an error on the way when I tried it with my version.
Which software can battle animation be imported successfully?


I am confused, can’t use the FEBuilderGBA to directly replace more animated picture?

The animation of GBA FE is very complicated.
Depending on the animation, some instructions are hard-coded by program code.
FEBilderGBA will try to export it as an image.
As a result, the image of Zephyr was output as huge data.
This is the same reason why 狂王 does not go well.

As an alternative, you can dump OAM data as it is in the javaSerialize format as FEEditorAdv employs.
When exporting battle animation, please select BIN format by file type.
Here, we will extract the data as it is without doing anything.

However, even if you use this method you will have problems.
That is, FE 6’s Zeffeel’s sword sound is not in FE 8.
Therefore, when Zephyr starts attacking it becomes silent.

I think FE8CN is based on FE8J.
With FE8J, I think that there was an address to squeal Ekskex, but I have not found it.
Once you know the address, I’d like to provide it as a patch.
(There is a patch that restores the sound of Eile Caliber now.)


For the unit palette, I have not yet implemented separation of palettes when expanded.
I will implement it later…
Please wait a little.


I noticed an critical mistake.

The FE7U and FE7J are midway event instruction codes are shifted!!
It seems that there are two instructions out of 0x1x-Ax.
I am doing a different shift from 0xBx.

I could not fully understand the meaning of FEBuilderGBA 's event script being said to be terrible.

I thought it was against mistranslation and UI.
Indeed, there was also a mistranslation and UI was incomplete.
I am fixing about it for a while.

However, it is the deviation of the instruction code of FE7 that is more problematic.
Based on Japanese analysis data, I added the results of EA there and completed the event order list.

However, there was a gap in the instruction codes of both.
I noticed the problem.

Fix the problem.
However, it takes time.

FE7J 02003C00

FE7U 02003C00



FE7J 0C000000

FE7U 0C000000

//This gap will start from around here.

//The gap will be two.
FE7J 1C000000

FE7U 1E000000



FE7J 39000000

FE7U 3B000000

FE7J 3B000000

FE7U 3D000000

FE7J 76003F00

FE7U 78003F00

FE7J 8D001000

FE7U 8F001000

//Suddenly the gap will reverse.
FE7J D2000000

FE7U CF000000

FE7J D5000200

FE7U D8000200

FE7J D8000200

FE7U D5000200

FE’s code has many mysteries…


No problem. I will wait and make a workaround instead. Seems like you’re busy anyway. :grin:


Hum yeah I see, dear assembler…

Arf, even the event assembler don’t know which code correspond to what. I’m only getting (in majority) WORD. And pure ASM is just, well too hard xD. Seems that would not be possible…
Arf i’m pretty sad, seems like I will have to disabled the tutorial :confused:

You talked about the fact you have the possibility to made a tutorial editor but even in this case it would be pretty difficult. Because I do not want you to do a useless editor, could you explain why even with an editor it would still be pretty difficult ? :confused:

But whatever will be your answer, thanks for everything @7743


Hi, @7743 , I have found another misstranslation:
In the Dissassembler Window, there is a button called “Save to all files” -> In fact it save all the code in a file, so it should be: “Save all to file”


I’m also wondering:
This リブロー持ち is “Someone holding a book” or the durability of the book ? (how many times we can used it before it’s destroyed)


I’ve been wondering…

Is there any similar tool to this for any of the Super Famicom games?