FE_Builder_GBA -- If you have any questions, attach report7z

  1. If I want to edit a list of icons by writing FEB’s patch in my own, how can I write the patch script?
extern const u16 *SkillIconTable[];
  1. If I want to edit such a struct via FEB patch, how can I write the script?
struct SkillInfo {
    u16 msg;
    u16 _pad_;
    const u16 *icon;
};

extern struct SkillInfo SkillInfoTable[];

Are the icons the same uncompressed data as vanilla?

struct SkillInfo {
    u16 msg;
    u16 _pad_;
    const u16 *icon;
};

extern struct SkillInfo SkillInfoTable[];

What is “const u16 *icon”?
Is this a pointer to an uncompressed image?
Why u16 instead of “const byte *icon”?

I think this structure is sizeof()==8bytes.

Similar patches include the following patches.

NAME=章タイトルを表示する時のフレームなどの素材画像を章ごとに変更する(Editor)
NAME.en=Change material frames image when chapter titles for each chapter(Editor)

INFO=新規に画像をImportするときは、アドレス、PALETTEに0かFFFFFFFFを設定した後で、Importしてください。\r\nそうしないと、既存の画像を上書き変更します。

IF:0x20252=0x00 0x00 0x00 0x4B

//STRUCTパッチとして実装します
TYPE=STRUCT
TAG=#ENGINE

//データへのポインタ
POINTER=$GREP4END 0x07 0x4B 0x18 0x47 0xF0 0xBC 0x02 0x02 0xA8 0x3D 0x08 0x08 0xFF 0xFF 0xFF 0xFF 0x00 0x40 0x01 0x06 0x50 0x2F 0x01 0x08 0xB0 0x02 0x02 0x08 0xB8 0x02 0x02 0x08 0x5D 0x02 0x02 0x08

//データサイズ(10進数)
DATASIZE=12

//データ個数 00 が出てくるまで
DATACOUNT=$GREP12 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

//リストに表示されるのはマップIDです
LIST=$B0:MAP

//データを定義します
B0:MAP_ANYFF=MAPID(0xFF=ANY)
B1=Edition(0xFF=ANY)
W2:FLAG=Flag(0x00=ANY)
P4:PatchImage_ZIMAGE=Image
P8:PatchImage_PALETTE=Palette

WIDTH=256
HEIGHT=32
//利用パレット数
PALETTE=1
INFO.en=To import a new image, please set the address, PALETTE to 0 or FFFFFFFF, then import it.\r\nOtherwise, overwrite the existing image and change it.
NAME.zh=在为每个章节显示章节标题时,更改帧等素材图像(Editor)
INFO.zh=要导入新图像,请将地址PALETTE设置为0或FFFFFFFF,然后导入。\r\n否则,覆盖现有图像并进行更改。

Perhaps it would look something like this

NAME=SkillInfo(Editor)

INFO=edit SkillInfo, something.

//What address can I look at to be sure the patch is installed?
IF:0x20252=0x00 0x00 0x00 0x4B

//STRUCTパッチとして実装します
TYPE=STRUCT
TAG=#ENGINE

//Where is the pointer to struct?
//GREP4END means that the ROM is examined in 4-byte increments and a pointer to struct is at the end of the next data.
POINTER=$GREP4END 0x07 0x4B 0x18 0x47 0xF0 0xBC 0x02 0x02 0xA8 0x3D 0x08 0x08 0xFF 0xFF 0xFF 0xFF 0x00 0x40 0x01 0x06 0x50 0x2F 0x01 0x08 0xB0 0x02 0x02 0x08 0xB8 0x02 0x02 0x08 0x5D 0x02 0x02 0x08

//What is the sizeof(struct)?
DATASIZE=8

// What is the end of the data?
// If it is a fixed number, write a value such as 255.
//If the number is indefinite, write a method to find the end data.
//In this example, the search is done in 8-byte increments until a null-terminated 8-byte is found.
DATACOUNT=$GREP8 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

//The name to be displayed in the list.
LIST=$W0:TEXT

//define struct
//Following the windows data format, BYTE=1byte, WORD=2byte, DWORD=4byte.
//Note that the meaning of WORD is different from that of EA.
W0:TEXT=msg
W2=_pad_(00)
P4:PatchImage_IMAGE=Image

//I am not sure if PatchImage_IMAGE will work as this is probably my first time using it.
//This is because most of the data is PatchImage_ZIMAGE.
//PatchImage_IMAGE specifies the pointer to the uncompressed image pointer.
//If it is a lz77 compressed image, it will be prefixed with a Z, i.e., PatchImage_ZIMAGE.


//Specify the width and height of the image.
WIDTH=32
HEIGHT=32
//Number of pallets to be used
PALETTE=1

// I think this time it is a common palette, so you need to write a pointer to the palette.
// If the location of the palette is indefinite, use $GREP4END, etc. to find the pointer to the palette.
PatchImage_PALETTE=0x05E0B0 //08603F98

//Specifies that the palette should not be rewritten by import since it is a common palette.
KEEPPALETTE=1
1 Like

Does anyone know of a way to create an AOE damaging event to occur after an enemy is defeated? Something like an enemy that explodes after being defeated damaging units around it.

Yeah, uncompressed 0x40 Bytes 4bpp. Thanks for your example, I may have a try!

I have never made one, but I think it could probably be accomplished by installing vesly’s AoE patch and calling AoE in ASMC_AoE.
The problem is specifying the coordinates.
You would need to use the LOW instruction.

EVENTSCRIPT:11.en=400D0000{$L1:ASMC_AoE.dmp}	 Call AoE Attack of Effect from Event(ASMC_AoE)(LOW)	Slot1=Unit, Slot6=AoE ID, Slot7=Rotation, SlotB XY

In the deathQuote for that unit, the coordinates of the unit must be assigned to SlotB.
The process will be a bit complicated.
It will be difficult to make unless you are familiar with the operation of memory slots.

It may be quite difficult if that unit ID is not unique.

1 Like

Thank you! I figured that it would be difficult, but thank you for giving me a good place to start and look.

Hmmm, it seems to be kind of impossible.
I tried to make a test, but it doesn’t work.
In the enemy turn, the AoE animation is not drawn.
Even in the player’s turn, if “SetActive 0” is not issued, the player disappears.

Shame. I appreciate your efforts!

Hi I was going through the entire site to try and find out how to make it so that I can have a weapon that cannot follow-up. So far all I have seen are effects that apply the Wary Fighter effect which I do not want as I want the opponent to be able to double if fast enough. For what I have done:
I’ve searched to see if a skill could be applied that just prevent the user from following up
I’ve also set the Weapon effect to C, but that just applies Wary Fighter which means the opponent also cannot follow-up.

If you are not using SkillSystems, then the following patch is available.
If you are using SkillSystems, I am not sure.

NAME.en=Define Multiple Weapons That Cannot Double Attack
INFO.en=Allows you to configure multiple Weapons that can only attack once per combat.\r\nThese weapons prohibit Follow-Up Attack

I’m new to romhacking and im having trouble playing music, when i click on the box with the music note in it to play a track it just closes the tab, I’m pretty sure I’ve downloaded sappy but I am having trouble, Is there anything I can do or does Febuilder not have a feature to play tracks before applying them

Using SkillSystems because it has so much more additions that I want to use. Was there not any kind of weapon/skill made that only makes it so one side has no follow ups? Seems a bit odd.

Sappy tends to have that problem. Sometimes reinstalling fixes it. Personally, I use VGMusicStudio and haven’t had any problems.

@hderf
EDIT: This was already fixed on the master buildfile, it’s just a matter of when FEBuilder’s version gets updated. Or if you don’t want to wait, do a custom build.

1 Like

Is there a difference for the enemy ai and the NPC ai? I took my Lord unit and I made her an NPC to defend for one chapter. I have all of the No Move/No Action ai turned on, but she still charges at the enemy units.

This is my first time submitting the report, so I don’t know if I did it right or if you even need it for this problem.

I figured out a work around. I had the Lord load in as a player unit, had a turn 1 event that changed them to an NPC, and then changed their AI via an event instead of relying on Unit Placer.

1 Like

Yes, I think that’s the right way to go about it.

I wanted to take my “Lord” unit and turn her into an NPC to defend for one chapter. Even when her Unit Placer AI is set to “Do Not Act,” “Do Not Move,” and “Never Move,” she will charge towards the enemy units.

Your instructions seem to be ignored by the game engine.
Perhaps the game engine is confused by the strange process of LOADing the main character (UnitID 0x01) as an NPC.
It seems to work correctly if you issue a CHAI and specify it directly after the preparation screen.

I mentioned in the discord yesterday how the Nihil Skill does not work if it is attached to items or a weapon. I was told to post the error on the Skill Systems thread. They say the skill works fine on their master build and that I should report the problem here.

Cases like these just happen because FEBuilder’s skill system hasn’t been updated. If you don’t want to wait for the update, then you have to do it through a custom build.

Then it will be fixed in the SkillSystems update in the next year or so.
I don’t feel like doing much this year.

1 Like

Even the current master has an issue with skill scrolls turning into other skills. It would be wise to wait a little bit.

1 Like