FE_Builder_GBA -- If you have any questions, attach report7z

oh really? is there any way to work around this? I feel like boss fights are extremely easy this way. Thanks for the fast reply btw

It only happens on the very last hit, if the hit would normally kill without any critical and it rolled a hit, it plays the crit animation. so the gameplay isn’t affected by that, it’s purely cosmetic.

ohhh i see now. Thank you guys for the clarification!

I ran into another problem. I am trying to give a character a specific Bishop battle animation without changing all of the bishop’s animations. I tried to expand the number of classes but I keep getting an error even if I have the latest class expansion patch installed. How do I fix this?

Since class extension only causes problems, I recommend not extending it.

A new function has been implemented in FEBuilderGBA.

The problem with FEBuilderGBA is fragments of ROM.
If you are doing data repotting many times, you will end up with a lot of shredded areas, squeezing the capacity of the ROM.
This is a problem if you make very big remodeling.
REBUILD is a feature that automatically solves this problem.
For example, it is like defragmentation.

Algorithm
The algorithm is as follows.

Write the all data of the area known by FEBuilderGBA to the file.

Imports that data to unmodified ROM.

Create a cleaned-up ROM.

In other words, it may be easier to understand if you think that you are automatically generating something like Buildfile from the existing ROM.
However, since the data to be generated is assumed to be read by the machine, the readability is lower than that of the buildfile.

Even data structures that FEBuilderGBA does not know will keep track of LDR references and will work.
FE 8 works most correctly.
FE 7, FE 6, there are still many unknown data structures, so it is highly likely to fail.

Moreover, it does not correspond to the code which is executed complicated from the middle as follows.
If you write in EA it is a patch like the following.

 org 1234
 jmpToHack (my_program + $50)
 
 my_program:
 #incbin "my_program.dmp"
 
 my_program.asm
 .thumb
 MyLib:
 push {lr}
 
 pop {pc}
 
 
 .org 0x50
 Main:
 bl MyLib
 bl MyLib
 bl MyLib

In other words, it is a code that is jumping relative to BL with respect to the relative address above the specified pointer.
There are rare such codes, but in FE 8 J, the old two patches were written in this writing style.
If this code is in the address 0x01000000 which is the target of the rebuild, the rebuild fails.

There are newly rewritten versions of FE 8 J’s old two patches, so please use it when using rebuild.

Data sharing
When rebuilding, you may share existing BIN data and reduce its size.
For example, it is a waste of capacity to add the same violin instrument data even though the violin instrument data is in the ROM.
In REBUILD, if you have such a data structure, it will be shared automatically. (The log shows SHARE!)

Improve compression efficiency
It seems that it has about 2 MB - 11 MB compression effect.
This is because remodeling made in the past did not share musical instrument data.

Kaitou
31MB

19MB

Yugdra
28MB

21MB

zyouou no ken
21MB

18MB

The old zalhman’s song editor could not share instruments.
Currently, I expanded version and FEBuilderGBA will automatically share instruments.
Therefore, it is better not to expect much for 10 MB capacity reduction.
I think that it is about 2-5 MB.

Although there are slight modifications to the modification made by Buildfile, there are times when there is compression effect.
However, the effect is small, so you do not have to worry.

Usage scene
Normally you do not need to use REBUILD.
It is good to consider when the ROM capacity is near the limit of 32 MB.
Do not abuse it if you use it unnecessarily because it will cause a bug.

When you rebuild ROM.GBA, a file called ROM.R.GBA is created.
ROM.R.GBA is the rebuilt ROM.

After rebuilding, please be sure to perform a clear test.
If something goes wrong, it is dangerous, please discard the rebuilt ROM.
It is because it is very difficult to repair broken ROM as a result of rebuilding.
Therefore, a full test on whether to adopt the rebuild result is absolutely necessary.

3 Likes

File structure

ROM.gba // target ROM
ROM.R.gba // rebuilt ROM (R mark enters)
ROM.R.rebuild.log.txt // Rebuild result log file

ROM.R.rebuild // rebuild script
rebuild_bin // Directory to store binary data that does not contain pointers Image or instrument data etc.
rebuild_ifr // directory storing tabular data such as units and classes
rebuild_mix // directory to store the data that contains the pointer

About dumped formats

This format is assumed to be read by machine.
You should not handwrite.
However, except @ BIN, it is stored in text format.

All numbers are in hexadecimal notation.
A space is one space.
Unless it is a pointer, it is one byte unit.
The pointer is fixed to 4 bytes.

@pointer
It corresponds to POIN label in EA.
Example:@08123456

When expressed in EA it becomes as follows.
POIN _08123456

`pointer
It is an anti Huffman pointer.
It is used when text data is stored in anti Huffman format.

Example:`08123456

***+Self reference pointer
Record the relative position from the start address.
It is often used for musical scores etc.

Example:+123

&Pointer to ASM function
Unless there is a special reason, write the pointer with an even number.
For a pointer to an ASM function, it also searches for a +1 area.

Unless there is a special reason, write the pointer with an even number.
For a pointer to an ASM function, it also searches for a +1 area.

Example:&08123456
It matches both 08123456 and & 08123457.

Items in ROM.R.rebuild

@IFR
Represents form data.
The INDEX th is always inserted at the beginning.
After that, the data follows in hexadecimal notation.
#0 data data data

@BIN
Binary data that does not contain any pointers
Image etc.

@MIX
It is data that the pointer mixes.

@MIXLZ77
Compressed into data LZ77 in which the pointer is mixed for use.
It is frame data of battle animation.

@DEF 123456
Definition only Used with unchanged addresses.
If you write in EA, it is a label that does not define anything.

org $123456
_123456:

Other

@_CRC32
It is a hash of CRC32 of the corresponding unmodified ROM.
Based on this hash, unmodified ROM is specified.

@ _ REBUILDADDRESS
rebuild will rebuild this address and later.
Usually it will be 0x01000000.

Finally
As I said before, this function is experimental.
Please do not run this function easily because it is dangerous.

1 Like

Is there a way to have multiple death quotes for the same boss? I want to make a death quote for the boss that is different after a fight with a specific character. Do I need to make an ASM event that triggers after the bosses death for this to work?

It can not do it now.
I do not know if there are any patches that can be done with existing patches.
However, since there is free space in the data structure, it may be possible to add it.

On the text editing screen, right click and the item called Script Notation was added.

All escape sequences used in FE are registered.

On the event screen, right click, the item called template has been added.
(Currently only FE8)

Template is a function to add frequently used command group.
It is aimed at making events quickly by modifying the added instructions.

1 Like

You can also use templates when creating new events.(FE8 Only)

You should also add : If Yes, Do ‘this’
If No, Do ‘that’ Etc.

The events of FE are written in a format close to the ASM branch.
Therefore, it is difficult to take IF ELSE format of general programming language.

For example, in the case of pasting a screen shot last time,
If the unit is alive, the portion of the green line will be executed.
If the unit is dead, the portion of the yellow line will be executed.

I am trying to uninstall three patches from a romhack I’m working on of FE 8 that I got from FE Builder: “Melee and Magic Menu Fix,” by Hextator and Tequila, “Limit Weapon Rank Display” by jil2357, Blademaster, Hextator, and Tequila, and “Display All 8 weapon ranks” by Kirb. The uninstall feature in FE Builder is not working for me, so I was wondering if and how i could uninstall them manually.

Update, In EventCond, the DEL key so that it can be used.
Press the DEL key to make the event an empty event.

Update, re-point screen has become a simpler UI.

Can You uninstall it even with the latest version of FEBuilderGBA?
This Version is lastest version 20180725.01

If you can not uninstall it again please create report.7z from “Menu” -> “Create Report Issue” and send it to me.

Hey 7743! Just letting you know I am very happy with this tool and wanted to stop by to say thanks for all of your hard work! Cannot express it enough and I am sure the FE hacking community loves what you have done as well. I hope I’m not bothering you too much with a Thank You. :slight_smile:

2 Likes

Dear LinguineEmblem Author.

I fixed the error “ErrorMessage: System.IndexOutOfRangeException” @ OpenLastROMButton that you sent during the day.
ver 20180727.00

However, the “System.NullReferenceException Object reference” @ CheckEnableEvenet you subsequently sent is not obvious.
If it happens even with the modified version, please send me an ups patch to reproduce the error.

Update: I created FELint to Support Thresholds.
In addition, I prepared an option to automatically synchronize support value with support person.