FE_Builder_GBA -- If you have any questions, attach report7z

How should we use FEBuilderGBA to solve this problem? Can you give us a demonstration?

Do you know other software that can import this animation?
If you have that software, I want to learn from that software.

If you can not import any software, there is a problem with animation method.
This animation is too much movement.

In order to suppress the enlargement of OAM data,.
You need to know how the animation will be compressed.
Explaining this mechanism will be long, so I will talk to another opportunity.

Hi @7743, do you know how I could modify the scripted battles at the very beginning of FE8 + Change the amount of HP that remains to Seth when he arrived on the Escape map ?

This value.

It is erroneously written as X that I must rewrite with HP.
I will fix it in the next version.

The event script instruction of FEBulderGBA has a machine translation of Japanese, so there are quite a mistranslation.
If you have something like this better, please send it to me.

Of course,I also welcome mistranslation corrections for languages other than English.

Example:

Original text of Japanese:
Code: 402C01009C819008
[XXXXXXXX:POINTER_UNIT:ユニット]を読込1 主にイベント 自軍の場合PT入りする

meaning:
Load the units.
There are other instructions to load the unit, but it is the 1st load instruction.
It is mainly used for events.(Means that it will be used at the start event instead of the reinforcement)
If the unit is set up for player, They join a member of your army.

“PT” is the abbreviation of the party.
“Party” with RPG is a group of people who act together.

Current translation:
Code: 402C01009C819008
[XXXXXXXX:POINTER_UNIT:Units] to Load1 Mainly for the event’s own troops to enter PT

Does it pass well?
Probably, I do not seem to have succeeded well.

If you were to explain this command, what would you do?
What name would you like?
What do you explain?

In order to suppress consumption of OAM data,
In adjacent frames, it is necessary to make many common parts for each tile.
The GBA graphic consists of 8 * 8 dot tiles.
The upper left corner of the screen is the origin.

Have you ever seen such a sheet?

This is a sheet where animation is separated by parts.
The sheet will be an image of size 256 * 64.

First, separate the screen from the upper left into 8 * 8 tiles.
Ignore blank tiles.
Once you find a tile with data, you will see if the tile is on the sheet.

If it is on the sheet, record the position on the sheet.
If it is not on the sheet, copy it to the empty area of the sheet and record the position.

At this time, if you compare one tile at a time, the compression ratio will rise, but the data on where the tile was located will become large.
Therefore, in GBAFE, we will process with some blocks.

Start from the block of 64 * 64, 6432 ,3264 ,3232 ,3216 ,1632 ,1616 ,328 ,832 ,168 ,816 ,8*8 …
As we gradually reduce it, we see if the block is on the sheet.
At this time, even if there are tiles whose top, bottom, left and right are reversed, they can be recognized as the same tile.

If the sheet becomes full, we will reserve the next sheet.
In the next sheet as well, we will process in block units.

Even if you move to the next sheet,I will do the same with the next sheet.
If it is on the sheet, record the position on the sheet.
If it is not on the sheet, copy it to the empty area of the sheet and record the position.

At this time, it is important to note that only one sheet can be used simultaneously in one frame.
Multiple sheets can not be used simultaneously within one frame.
For example, you can not store the upper body and lower body of a character on separate sheets.

Since the sheet has only 256 * 64, it means that characters exceeding 256 * 64 can not be displayed.
Therefore, the body of a huge boss such as a demon king and a dragon is drawn as a background.
Their animation is only their heads and arms.
It is hard-coded into program code by class ID.

This is the rule of animation compression of GBAFE.

Now, once you understand the rules, let’s think of ways to maximize your own profit within this rule.

The fact that it is used in the 8 * 8 tile means that when moving, it is best compressed by moving in units of 8 * 8 tiles.

If your character works in 1 dot units, it will not be compressed in GBAFE which compresses in tile units.
It may be a very attractive animation, but it is not compressed.

↓↓↓↓↓↓↓↓↓↓

Also, it is wonderful to change the expressions and gestures of characters in frame units, but the compression ratio goes down.

If you think about only the compression ratio, the animation that moves with 8 * 8 tiles without expression is the best. :slight_smile:
But that is not too funny.

rest assured.
Most animations do not have to worry about this rule.
There is enough OAM buffer.

However, must be careful with big characters animation like Wyvern knight, and animations that move very hard.
When moving large characters quickly and in large quantities , it is necessary to consider moving them as much as possible on a 8*8 tile basis.

Yeah there’s some misstranslation, but the vast majority is okay (except some bad traductions which means the opposite of what they are supposed to mean [don’t have on in mind])
But thanks for pointer !
Sorry if I’m disturbing you, but do you have a list of all the chapters pointers for the Event Editor Adv (can’t manage to find this adress in Chapter Pointer Data or in Chapter Editor).

Oh and @7743, do you think it may be possible to one day have a “tutorial editor”. Because that’s events but this is still a really specific thing, and it may save some times when “hard” editing a rom.

I want you to tell me a bad translation.
I am not good at English, so I do not understand well.
I would like you to tell me how to fix it.

You already have points for all chapters.
The previous HP reduction is the opening event of the prologue.
You can see it by pressing the button called Start Event on the first screen.

This also applies to other chapters.
Representative events such as start event, end event, and conversation and reinforcement of the chapter are listed in the table on the right.
If you want to see more details, you can see the whole event structure by clicking on the link event on the start event.

I know the structure of the tutorial, so I can not make it, but I do not make it because there is no demand.
Do you want to create a tutorial event?

Although I may erase the tutorial event, I have never seen a person who wants to create a new tutorial.
I think that it is unnecessary for a tutorial etc for an emblemer like hand to hack rom.

I think that tutorials etc are unnecessary for the core gamer who plays Hack Rom.

If you want to create an explanation of that chapter, there is a thing called a shinan patch 指南パッチ.
(指南)shinan is like teaching.

This replaces the item in the dictionary of the menu with the shinan event.

Have you played yuggdra patch?(FE8J hack rom)
In this patch, the shinan event is implemented, and if you choose shinan from the menu, you will tell in a conversation style a hint to capture that stage.

For this reason, I have not made a tutorial editor yet.
If you really want it, I can not do it, but since the tutorial will be a fairly complicated event, even if you have an editor it’s pretty difficult to create.

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.

1 Like

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.