UltraxBlade's #febuilder-help FAQ

Greetings, FEU! Nothing to report! I’m UltraxBlade, and if you’re in the FEU Discord, chances are you’ve probably seen me around the #febuilder-help channel. Like, a lot. Answering FEBuilder questions is what I do, often in extreme, excruciating detail. And there are certain questions that come up again. And again. And again. So, I’ve decided to make this post to compile some of the answers I’ve previously given to those questions. Some of these may also apply to FE6 and FE7, but this is primarily focused on FE8.

Why FE8?

FE8 has far more features available, both in terms of vanilla and even moreso in terms of community-made patches and code. It also has a much more powerful and flexible eventing system with less hardcoded ASM. Anything you can do in FE6 or FE7 can be done in FE8, the other way around is very much not true (without coding it yourself).

FE8, as the most commonly-used base rom, also has the most people able to help you, such as me, and the most documentation and tutorials, such as this FAQ. When someone comes to the FEU discord with an FE6 or FE7-specific question, the answer is very frequently “I don’t know how to do that in FE6/FE7” or “that only exists in FE8”.

FE6 has some theoretical benefits for truly hardcore hackers, since it has more free memory to work with and less engine code to modify, but if you’re in that position you’re probably not using FEBuilder and you definitely don’t need this post – plus, even if you are that kind of hacker, the FE8 decomp is much farther along. The only real reason for the average hacker to use FE6 as a base ROM is to make an FE6 rebalance. The literal only reason to use FE7 as a base is to make an FE7 rebalance, it has no other benefits over FE8. If you are not making a rebalance, you should use FE8.

Table of Contents

(If the links take you to the wrong place, open them in a new tab.)

The Basics
Mechanics
Common Issues and Bugfixes
Eventing
The SkillSystem
Graphics, Music, and Other Assets
Wow, this UltraxBlade guy is really cool! I should play his hack!
36 Likes

Hi! I’m new to hacking, and…

Hello! Welcome! As someone new to FEBuilder, I recommend that you start by watching this tutorial video by Vesly, which covers all the basics:

Where do I find the editor for X?

If it’s not a button on the main screen, or if it is but you can’t find it, click the Advanced Editors button in the top-right. This menu is a massive wall of buttons, but it has a convenient search bar at the top where you can type keywords to filter what’s displayed to find what you’re looking for. If it’s not an editor, there’s a decent chance it’s a patch.

How do I find and install patches?

In Advanced Editors, at the bottom-left, there’s a button labeled “Patch”. Click on that to get to the patches list, which, like the Advanced Editors menu, has a search function. Find the patch you want. Most are as simple to install as clicking “write” or “install”. Some have a value you edit or a selector to toggle before doing so to choose how you want it to behave.

Patches with more complex functionality will have two versions, an “installer” and an “editor”. Once you’ve installed it with the “installer” version, you can go to the “editor” version to find a menu where you can set up whatever features it added.

If you’re having trouble finding a patch with the search function, see here.

I want to install this patch, but Builder is saying I need Event Assembler.

When you installed Builder, the installation should have prompted you with a series of “do you want to also download this?” prompts, to which you should have said yes. If you did, those programs will be in a folder labeled “app”, in the same location as Builder. However, the installer often fails to actually configure Builder’s path to those programs. If that’s the case, you need to go to Builder’s Settings (top-left of the main screen), and in Options, under the Path tabs, set the path to Event Assembler and anything else Builder missed.

If you didn’t download EA with the Builder installer, you can either run the installer again, or you can download it by itself from its post on FEU.

7 Likes

This character is showing up as the wrong class, what’s going on? Why can’t I change certain characters’ classes? This character is joining before they’re supposed to?

…Let me guess. Moulder and Vanessa, or the units you have replacing them.

Characters’ classes are determined in the Unit Placer when they’re first loaded onto the team. Once loaded onto the team, their classes are remembered next time they load. (“Support Class” in the Character Editor just determines what they show up as in the support viewer.)

Moulder and Vanessa don’t actually join in chapter 2, they join during the cutscene at Castle Frelia between chapters 1 and 2. Find the chapter labeled Castle Frelia with a map that looks like a 2x2 square of grass. That’s where they’re loaded. So, if you still have Moulder and Vanessa joining as their original classes in Castle Frelia, they’ll still be those classes if you try to load them again later. You can either change them here, or remove them here and load them where you want them to join.


5 Likes

The game is freezing on this event. It reaches a certain point, then it freezes and the sprites all glitch out.

You’re probably trying to move a unit through tiles they can’t move through. Make sure any units you load or move in your events aren’t being forced to move through walls or other tiles they can’t traverse.

4 Likes

Something’s wrong with this chapter and I can’t figure out why. …units unloading… shops and convoy breaking… gold disappearing… events crashing… game freezing on chapter start…

Uh… that’s very weird… waaaaiiit. Which chapter slot is this written over? Might it, by any chance, be chapter ID 0x05, the chapter slot that was originally Chapter 5x?

The slot in the chapter list for vanilla chapter 5x is extremely hardcoded surrounding the momentary switch to playing as Ephraim, and it breaks at the slightest touch if you try to do nearly anything else with it. Use this patch to make the slot behave normally so you can replace it with a normal chapter.

Patch Name:Unlock various restrictions of chapter 5x. @FE8U
Author / Source:Tequila FE_Builder_GBA -- If you have any questions, attach report7z - #1547 by Tequila

4 Likes

How do I expand the class list? There’s no button for it.

First, you will need to install the Expanded Modular Save (ExModularSave/EMS) patch, as without it the game’s save data is incapable of recording units in classes with IDs beyond the length of the vanilla list. WARNING: EMS restructures the save file to allow this and other things, but therefore makes any previous save files incompatible. But it is necessary for class expansion.

EMS is included with the SkillSystem if you want to use the SkillSystem (it has a bunch of extra features and quality-of-life stuff beyond just adding skills). It is also available as a standalone patch if you’re not using SkillSys. To install SkillSys, click the “Skill Config” button on the Advanced Editors screen and you’ll be prompted to install it (or you can find it in the Patches list). To install EMS by itself, go to the Patches list, search for ExModularSave, and choose the version you want (make sure it says compatible with class expansion in the description).

ONLY ONCE YOU’VE INSTALLED EMS, you will now be able to expand classes without causing errors in game. To reveal the class list expansion button, go to Builder’s Settings (top-left of the main screen) and in Options, under one of the Function tabs, there’s an option to un-hide the class expansion button.


These others are also hidden for similar reasons! Mouse over the label to see why, and don’t enable them unless you know what you’re doing!

Expanding the class list is dangerous if you do not follow the proper steps, hence why the button to expand it is hidden by default. Even with the button being hidden and multiple warnings popping up when you do it telling you what you need to do, way too many people somehow manage to ignore all of it and end up with a million bugs because they expanded classes without EMS.

I’m getting a bunch of weird errors. …character suddenly becoming the wrong class… Here’s a report.

So… question before I even look at the report, because some of this is sounding familiar-ish: did you expand the list of classes? (Yes.) Did you install ExModularSave like the three layers of warnings told you to? (No.)

(Facepalms audibly over text.)

Expanding classes without EMS results in a whole host of game-breaking and seemingly-inexplicable bugs because of the game’s inability to save the expanded class data – the “shows up as the wrong class in preps” was what tipped me off. Luckily, it’s fixable by just installing EMS. Don’t ignore the warnings next time.

5 Likes

EXP gain is too high, is there anything I can do about it?

Have you applied the Mode Coefficient Fix?

(What’s a Mode Coefficient?)

The short explanation is “search the patches list for Mode Coefficient Fix and apply it”.

The longer explanation is:
In the Normal modes of FE7 and the pre-routesplit chapters of FE8, there exists a value in the EXP formula known as the Mode Coefficient. The Mode Coefficient causes overleveled units to gain more EXP, sometimes more than underleveled units and sometimes by a ludicrous amount. It promotes snowballing and juggernauting and just results in an unbalanced EXP curve. The specific mechanism of what it does is roughly that, if your level is higher than the enemy’s level, it treats your level as half of what it is. (There’s some more stuff going on with class relative power but you get the idea.) You can remove it with the Mode Coefficient Fix patch, and I highly recommend doing so.

If you still need to adjust EXP gain further after applying the Mode Coefficient Fix, you can use the Modular EXP patch, which is included with the SkillSystem. It allows you to set multipliers and divisors on EXP by source, class, chapter, etc. for detailed control of EXP gains.

4 Likes

How do I install the SkillSystem?

Go to Advanced Editors and click Skill Config. Builder will prompt you to install the newest version of Builder Default SkillSys.

I want this feature of the SkillSystem, but don’t want skills. Can I just install that feature by itself?

Well, you can always just install SkillSys, then remove all the character and class skills. It comes with a lot of useful features besides skills. But if you really don’t want SkillSys, a lot of its other features are available standalone if you search the patches list. The notable exception is Strength/Magic Split. Growth Display is also not available as a standalone Builder patch, but it can be installed standalone with Insert EA using the files here: Teq's Minor Assembly Shenanigans - #13 by Tequila

How do I remove all the default skills? I want the other SkillSys features but not skills, how do I disable skills entirely?

The default installation of SkillSys in Builder will automatically assign skills to every unit and every class. For what I hope would be obvious reasons, DO NOT JUST USE THESE AS IS, even for the vanilla game they’re not really tested or balanced or anything, and you’ve probably changed things from vanilla that could cuase them to make even less sense. Whether you want a blank slate to start from or you’re just installing SkillSys for the QoL and don’t want skills at all, there are two ways to remove the default skill assignments: either go through each individual character and class and clear their skills, or wipe the whole list at once. Here’s how to do the latter:

WARNING: This will also wipe core skills like Canto. Be sure to re-add them after doing this.

In the character or class editor, click “skill” to get to the skill assignment editor. You can also get there from “assign skill by unit” and “assign skill by class” in the Advanced Editors.


At the bottom of the list of units/classes, click “Data Expansion”. Set the amount of new data to allocate to 0 and press “reallocate data and repoint” to erase the list. Immediately after, click “Data Expansion” again and expand it back to what it used to be to restore the list, now with no skills in it. Make sure to do this for both characters and classes if you want to remove all skills, and make sure you re-expand back to the original length to avoid potential errors.

Woah, default SkillSys adds a bunch of other things I wasn’t expecting. How do I turn them off?

SkillSys comes with a lot of useful stuff, but the default installation also includes a bunch of extra things you may not want. Here’s how to disable some of them:

Flashy Mode (killing blow on bosses is always animated as a crit even when crit rate is 0)

Apply this patch:

Patch Name:RemoveFlashyMode(SkillSystems)

Anima Triangle (adds an additional weapon triangle between Fire, Thunder, and Wind magic)

Search “anima triangle” in the patches list to find these three editors, and in all of them, click Data Expansion and resize the list to 0.

Patch Name:AnimaTriangle_FireList SkillSystem Version
Patch Name:AnimaTriangle_ThunderList SkillSystem Version
Patch Name:AnimaTriangle_WindList SkillSystem Version

Leadership Stars (the mechanic from FE4/FE5)

Find this editor in the Patches list. Click Data Expansion and resize the list to 0.

Patch Name:Leadership SkillSystems Version

Additionally, the default configuration may have player and enemy leadership star totals display on the battle status screen instead of player and enemy unit counts. Apply this patch to return to the vanilla behavior:

Patch Name:Remove leadership star total from the MENU->Status screen(SkillSystems)

(This screen. More recent SkillSys versions may already have removed stars from displaying here in the default.)

Now, you will still see the row for leadership stars on the unit stats screen. Removing that requires a custom re-installation of ModularStatScreen, which must be configured outside of FEBuilder.

Reaver Split (reverse and double weapon triangle are now two separate item properties)

Not really a thing to remove, but depending on your SkillSys version your Reaver weapons may no longer double the weapon triangle unless you also check the new “DoubleWeaponTriangle” box in the Item Editor in addition to the “Reaver Effect” checkbox. “Reaver Effect” now only reverses the triangle, it doesn’t double it.

Pop-Up Damage Numbers in Battle Anims

Enable Global Flag 0xEE in your first chapter’s Chapter Start Event. As long as that flag is on, the damage popup is disabled and won’t appear, and as a Global Flag, it will remain on for the rest of the playthrough until you turn it off. (If you have in-progress save files, you can also stick the “turn on flag 0xEE” in other chapter start events as well, nothing bad happens if you turn on a flag that’s already on.)

Strength/Magic Split (strength and magic separated into two different stats)

Now, I personally can’t understand why people wouldn’t want this. If you don’t have hybrid units, you can just set their other stat to 0 base/0 growth, and if you do have hybrid units, having two separate stats to work with gives you way more design space to work with for differentiating them. But if you want to disable Str/Mag Split, you will need to run a SkillSys Custom Build and disable the Str/Mag Split setting in the config file.

5 Likes

How do I make a hybrid class? The animations get screwed up and Builder says there’s an error.

Hybrid classes require a patch to work properly. There’s two options: “melee and magic menu fix”, which makes them work but keeps Str and Mag as the same stat, or installing the SkillSystem, which comes with Str/Mag split

How do I make Strength and Magic separate stats?

Install the SkillSystem. There is no alternative (unless you code it yourself). Strength/Magic Split in its current implementation is inextricably intertwined with SkillSys core functions.

4 Likes

How do I download and insert a spell animation from the repo?

To insert a spell animation from the repo:

Download the files off the repo. You need the entire folder for the animation you want, since you need the script and each of the frames. Unfortunately there’s no nice download link set up like there is for battle anims, but you can download selected folders with the GitZip browser extension. For more information, see here (under “Advanced User”).

In Builder, go to “Magic Extends” under advanced editors. It’ll prompt you to install one of the two versions of the Custom Spell Animations patch. One’s older, one’s newer, the newer one’s supposed to be generally better but has issues with some specific anims. Choose one to install.

Once the patch is installed, you should be able to click “Magic Extends” to go to the custom spell anims menu. Expand the list as prompted to make space, then choose an empty slot and click “Import Animation”. Select the .txt script file from the downloaded animation folder.

From the item editor, you can get to the “indirect effects” magic/ranged/projectile anim per item editor, in which you can now set it to use the new anim.


This spell anim I want to use has different versions for melee and ranged distance, how do I set that up?

Some anims have separate versions for melee vs ranged distance. If you want it to use the appropriate version at the appropriate distance, you’ll need to install the “melee/ranged spell loader” patch:

Patch Name:Melee/Ranged Different - Spell Loader @FE8U
Author / Source:kao [FE8U][FE7U]Spell Loader

This patch adds the option to the projectile anims menu to define different anims to use for melee or ranged. If you don’t set a different ranged anim, it will use the melee anim at range, so you don’t need to worry about changing everything that already exists.

The spell anim I’m using is missing sound effects, how do I fix that? How do I fix the existing Aircalibur anim in the ROM to not break the music?

FE8 does not have every spell anim sound effect from the other GBAFE games, just like those games don’t have every sound effect that’s in FE8. Some anims in the repo use FE6 or FE7 sound effects, as does the otherwise-fully-functional FE6 Aircalibur anim that exists in FE8’s data. As these animations expect sound effects that aren’t there, playing them will cause the battle music to break, as the game tries to play a nonexistent sound. (FEBuilder will usually pop up an error warning on the main menu if you have a custom spell anim trying to use a missing sound effect.)

If you know the song IDs the game expects those sound effects to be at and where they are in the original games, you can import themwith the “import music from other ROM” tool, but that’s tricky to track down the right locations of, and uses up more memory space. The easier fix is to search the Patches list for “fix sound” and apply all the “fixed sound of ___” patches that come up, which reuse close enough sound effects from FE8 in place of the missing ones (ex. using Excalibur sounds for Aircalibur.) – much more space-efficient, and much easier to do.

If you really want to use the original sound effects instead, you can track it down in the source ROM using Builder’s Debugger. In the etc tab, you can find a display of currently-playing music and sound effects, so if you trigger the sound effect in-game with the debugger open, you can check its ID.

3 Likes

How do Flags work?

Flags are markers you can set in the game, to later check whether they’re on or off. Some flags are Temporary Flags, meaning they turn off after every chapter, while others are Global Flags, meaning they remember their setting throughout the playthrough.

An event can have a thing called a Completion Flag. This specifies a particular flag for the game to turn on when that event runs, as an indicator that the event has happened. If the Completion Flag is already on, the event cannot run, as the game sees it as already completed.

How do I make zone-based reinforcements?

Zone-based reinforcement triggers have two steps, since you usually want the reinforcements to appear at the start of the next player phase, not immediately upon entering the zone.

The first part is the actual trigger, a Range Event set for when a player unit enters. This event needs a Completion Flag, let’s say Temporary Flag 8, so that it only happens the first time a unit enters the area, instead of happening every time a unit enters the area.

The second part is a turn-based event to summon the reinforcements at the start of player phase. This event is set to run every turn – start turn 1, end turn 255=infinite. However, this event also has a Completion Flag, let’s say Temporary Flag 9. By itself, this would mean that the event would run only on turn 1, and then not run after that because its Completion Flag is on. But instead, what you can do is have the Completion Flag be turned on manually in the Chapter Start Event, such that the reinforcement event never runs… until you turn its Completion Flag off manually in the Range Event, after which it will run once on the following turn!

4 Likes

I want to have multiple bosses with battle quotes in one map, but if one of them triggers their quote, the other’s quote doesn’t trigger.

You just have to make sure that each battle quote uses a different Temporary Flag as its Completion Flag that’s not used for anything else in the chapter.


When the game would run a battle quote or any other event with a completion flag, it first checks if the completion flag is turned on. If the flag is on, it does not run. If the flag is not on, it turns the flag on and runs the battle quote/event/etc. That flag stays on for the rest of the chapter if temporary or the rest of the game if global, unless it is manually turned off in an event.

If another event has already turned on a flag, an event that uses that flag as its completion flag will not run. For example, this is how zone-based reinforcements work. The reinforcement spawn event is set to happen at the start of every player turn, but with some completion flag. That flag is turned on at the start of the chapter, then turned off by an event that triggers when you enter the zone. Therefore, the event cannot run until the flag is turned off by entering the zone, but once you enter the zone, the enemies will spawn at the start of your next turn, then the flag turns back on and it doesn’t happen again.

How do I check if a flag is already being used?

In FEBuilder, whenever you have something that interacts with flags, you can get to the flag use checking menu by clicking on the flag, then clicking the button “Check Flag Usage in Chapters”. In that menu, go to the chapter this is supposed to happen in, and it’ll show you if and where each flag is being used. Make sure your battle quote flags aren’t used anywhere else in the chapter.



If you click on one of the lines where it says the flag is being used, FEBuilder will open that event.

4 Likes

How do enemy stats work?

When you place a unit in the Unit Placer, there’s a setting for autoleveling, with two options: Class Dependent and Do Not Grow. Generic enemies with generated stats should generally use Class Dependent, while player units/bosses/other units with fixed stats should use Do Not Grow and be loaded at the same level they’re listed to start at in the Character Editor.

Class dependent autoleveling means the unit is loaded with additional stats based on their Class Growths times their level*. Generic enemies usually start with nothing but their Class Bases, sometimes with small Personal Bases added on top, with most of their stats calculated from autoleveling. So, a level 10 enemy with 5 class base Strength, 2 personal base Strength, and a 50% class Strength growth would have, on average, 5+2+(0.5*(10-1))=7+(0.5*9)=11.5 Strength on average (assuming no difficulty modifier to their level). There’s some variance involved by default, so enemies can sometimes roll a point or two above or below average on any given stat.

*(There is a cutoff, by default 0x3F, at or below which units will use their Personal Growths instead of their Class Growths for autoleveling. This can be changed with a patch. It is meant to mark the divide between playable units and enemies, so playable units can gain personal growths-based autoleveling.)

Patch Name:Units after this Unit ID will Class Grow @FE8U
Author / Source:fe8 decomp project. Autolevel Function - #2 by HyperGammaSpaces

Promoted enemies gain additional autolevels for being promoted, based on the difficulty level. By default in FE8, they gain 9 extra levels on Easy and Normal, and 19 extra levels on Hard. These numbers can be changed from the patches list.

Patch Name:Change Lv bonus value to be given to the enemy’s promoted at normal difficulty @FE8U
Author / Source:7743
Patch Name:Change Lv bonus value to be given to the enemy’s promoted at hard-mode difficulty @FE8U
Author / Source:7743

Bosses, on the other hand, usually have fixed personal stats equal to their Class Bases plus their Personal Bases. Turning on autoleveling for a boss that’s not meant to have it means that boss, whose stats were already designed for a boss of their level, now gets that many extra levels on top of their personal stats. Ever wondered why that random Paladin miniboss in Battle Before Dawn, Maxime, is so ridiculously busted on HHM? They forgot to turn off autoleveling for him, so he gets like 30 extra levels worth of stats (because promoted).

What about enemy weapon ranks?

Enemies set to Class Dependent Autoleveling will also autolevel their weapon ranks to be able to use any weapons in their inventory that can be used by their class. Enemies set to Do Not Grow will not, but as those are generally units with fixed personal stats, you can give them personal weapon ranks as needed.

Of note: weapons with weapon locks or the “show prf” checkbox are ignored by weapon rank autoleveling by default, there is a patch to fix this:

Patch Name:Autoleveling Prf Weapons @FE8U
Author / Source:Datagne [FE8] PSA: Autoleveling Prf Weapons

How do Hard Mode Bonuses work?

Hard Mode Bonuses are a slightly different thing. All enemies, regardless of being set to Class Dependent or Do Not Grow, get a few additional invisible autolevels on hard mode, set from the Chapter Editor. There are actually also level adjustments for Easy and Normal, which in FE8 are both negative by default – FE8 easy and normal enemies have lower-leveled stats than their displayed level, though it can’t go below 0 autolevels. Generic enemies autolevel these bonuses based on their class growths as described above, while bosses autolevel these bonuses based on their personal growths.

There’s some catches to that when it comes to recruitable enemies:

  • FE6 doesn’t give hard mode bonuses to recruitable units who start on the map, but does give them to those who spawn as reinforcements. Coincidentally, most enemy recruitables in FE6 appear as reinforcements, hence why it seems like a mostly-standardized thing instead of the glitch it originally was.
  • FE7 I think gives them to all enemies, recruitable or no, reinforcement or no? But I’m not sure.
  • FE8 doesn’t give hard mode bonuses to recruitable units by default. It’s based on a unit ID cutoff, default 0x3B. Units with IDs below the cutoff don’t get hard mode bonuses, units with IDs above the cutoff do get hard mode bonuses. You can enable hard mode bonuses on recruitables with a patch.

As stated above, promoted enemies gain additional autolevels for being promoted, based on the difficulty level. By default in FE8, they gain 9 extra levels on Easy and Normal, and 19 extra levels on Hard. These numbers can be changed from the patches list.

Patch Name:Change Lv bonus value to be given to the enemy’s promoted at normal difficulty @FE8U
Author / Source:7743
Patch Name:Change Lv bonus value to be given to the enemy’s promoted at hard-mode difficulty @FE8U
Author / Source:7743

4 Likes

How do I remove the randomness from enemy autoleveling? I want enemies of the same level to always have the same stats.

The standalone Builder patch for non-random enemy growths is:

Patch Name:Change formula of automatic growth auto level of enemy. @FE8U
Author / Source:stan

However, it’s incompatible with the SkillSystem. But, there is a workaround to achieve the same effect for SkillSys users without ASM, though it’s slightly tedious to implement.

The following does not work anymore in the current FEBuilder SkillSys default. I am investigating alternatives.

To anyone who wants to remove random stat variance from enemies, you may have run into the problem that SkillSys is incompatible with the patch that does so. Now, there’s definitely a better way to do this if you know how to modify the code, but some of us don’t. Without touching ASM, here’s what you can do:

SkillSys includes a feature where, if Global Flag EF is enabled, it turns on Fixed Growths Mode, which applies to both the player and the enemy. Enemy autolevels are fixed, player level ups are fixed. This isn’t quite what we want, we want the player’s levels to stay random while removing variance from enemies. So, simply turn the Fixed Growths Mode flag on immediately before loading enemies, then turn it off immediately after. As long as the flag is on while the enemies load, they will spawn without stat variance, according to the fixed growths formula (note: this may be slightly different than what Builder will show for their stats in the unit placer). As long as it’s off during actual gameplay, the player’s level-ups will be random.
image

It’s a bit tedious to implement, since you need to put the flag on and flag off commands into every event that loads enemies, but it accomplishes the goal of removing enemy stat variance while keeping player level-ups random.

5 Likes

How do I make it so this dialogue only plays if this character is alive?
How do I make a village check who’s visiting?
How do I make a gaiden chapter with a turn limit to unlock?
How do I make it so X happens when Y is the case?

How do conditionals in events work?

I’ve explained conditionals so many times that I almost want to make a video on it, but I don’t know how to make videos and don’t quite have the energy. So I’ll grab one of my more in-depth examples from Discord, answering “Does anyone know how to write it so an event happens only if a certain unit visits a house?”

Alright, so, let’s start with the general idea. What you want to do is:

Check if the visiting unit is that specific unit
If they are, do the special thing
If they aren’t, do something else

This kind of thing, where what happens depends on some condition, is done in events with conditional branches, which generally take the following form:

Get the value of something
Compare the resulting value to something else, if the comparison holds true skip to a Label
    If the comparison was not true, this part will run
Label to skip to

Or, when you have two different cases instead of just "do the thing or don’t do the thing:

Get the value of something
Compare the resulting value to something else, if the comparison holds true skip to First Label
    If the comparison was not true, this part will run
    Skip ahead to Second Label
First Label to skip to
    If the comparison was true, this part will run
Second Label to skip to

In this case, the value you want to check is the ID of the active unit. There’s a command for “Check if active unit matches specified ID”. This command, like any other “get this value” or “check this condition” command, will store its result in Memory Slot C – specifically, it will store a 0 there if the active unit does not match, or a 1 if the active unit does match. All yes/no “check” commands should return 1 if the check is true, or 0 if the check is false. If you’re ever unsure, Builder includes notes on each such command detailing its return cases when you hover over its description in the event editor:

Next, you need a branch command to check the result and determine whether or not to skip ahead. There are a lot of these – BEQ (branch if equal) and BNE (branch if not equal) are the most common. These commands compare the values in two different Memory Slots. Most often, you will compare Slot C, the result of the previous get/check function, with Slot 0, which always has the value 0. So, if Slot C equals Slot 0, the result was 0, and the active unit does not match. When you need to compare Slot C with a nonzero value, you can use the “Imm” variants of these commands, Imm BEQ, Imm BNE, and so on, which directly compare Slot C to a specified value.

Finally, you use Labels to mark where in the event to skip to. Each label must be unique within the event – you can only have one Label 0, Label 1, and so on in each event, but multiple separate events can each have their own Label 0.

In addition to skipping to a label when a certain condition is true, you can also unconditionally skip to a label with GOTO, the command to go to a label.

So, with that, we have:

Check if active unit matches [Unit ID of the special unit]
BEQ if [Slot C] == [Slot 0] go to [Label 0], else execute following
    [Whatever happens if that unit is the one visiting]
Label [0]

Or, if you want it to do something different when another unit visits instead of doing nothing:

Check if active unit matches [Unit ID of the special unit]
BEQ if [Slot C] == [Slot 0] go to [Label 0], else execute following
    [Whatever happens if that unit is the one visiting]
    GOTO [Label 1]
Label [0]
    [Whatever happens if that unit is NOT the one visiting]
Label [1]


This example I screenshotted from my hack, doing exactly the situation described above, also sets and checks a Flag to make sure it doesn’t give the item twice by putting a conditional block inside a conditional block, since it’s in a house that can be visited multiple times. You can also reference the village in Chapter 2 of vanilla FE8, which has a different result if Eirika visits it vs if anyone else visits it.

Here’s another example from my hack: a yes/no branch for a gaiden chapter, requiring a certain character to be alive and a certain flag to have been set during the chapter.


When Caitlyn is alive and Flag 10 is on, it gives you a choice to go to the gaiden chapter, displaying a textbox with the [Yes] command in it.
image
[Yes] and [No] are largely interchangeable commands for putting a yes/no choice in text, the only difference being that [Yes] has the cursor start on the “yes” option while [No] does the opposite. In this event, when the player says yes, it sends them to the gaiden chapter without the world map. When the player says no, or if they didn’t meet the requirements to get the option in the first place, it sends them to the next main chapter, with the world map. Note that they can’t both use the world map, as once you send the player back to the world map, the actual next chapter they enter is determined by the next World Map Node, not by the “goto next chapter” command.

In general, it is often worth looking for and referencing places in vanilla that you know have a similar condition to what you want. FEBuilder also has a set of Event Templates that include various simple conditional structures. If you have more questions, stop by the Discord and I’ll probably be around.

4 Likes

How do I change music (or run other events) in the middle of a conversation? The heck is a [LoadOverworldFaces]?

In Builder’s Event Templates, you should be able to find “execute events side-by-side during a conversation to change music”, which is the most basic such structure. Just start typing it out to search the list.

It should give you something that looks like this:

To make a conversation where the music changes once, use that template. Set the text entry to the one you’re using, set the music to what you want before the change and after the change, and in the conversation text, add [LoadOverworldFaces] where you want the music to change.

To change music more than once in the same conversation, here’s a more detailed explanation of how it works.

[LoadOverworldFaces] is a text command, included in text, like [A] or [ToggleSmile]. What it basically means is “stop the conversation here and continue the running event”. You combine it with certain structures in the event, such as the one in the template, to make things happen during the conversation.

The normal dialogue command is actually multiple commands in one: TEXTSTART, TEXTSHOW, TEXTEND, and REMA, in that order.
TEXTSTART tells the game “get ready to start a dialogue conversation” (as opposed to a textbox with TUTORIALTEXTBOXSTART or other text display)
TEXTSHOW makes the text actually appear.
TEXTEND is where the text stops and the event resumes.
And REMA is what clears the text/portraits/etc from the screen.

There is, however, one other command: TEXTCONT, continue/resume text, which resumes an active conversation that was paused by [LoadOverworldFaces].

The general structure of an event with a conversation using [LoadOverworldFaces] is as follows:

events before conversation
TEXTSTART
TEXTSHOW [Text ID]
TEXTEND
event after first [LoadOverworldFaces]
TEXTCONT
TEXTEND
event after second [LoadOverworldFaces]
TEXTCONT
...
TEXTEND
REMA
events after conversation

Each time you hit a [LoadOverworldFaces] in the conversation, it returns to the event at the next TEXTEND, and then goes back to the conversation at the next TEXTCONT
When the conversation’s finally over, you put REMA after the last TEXTEND as always to clear the conversation from the screen.

The “execute events side-by-side during a conversation to change music” template is this, set up for one [LoadOverworldFaces]. The first time the conversation stops, it changes the music then resumes it. The next time it stops, it ends the conversation and clears the text.

If you don’t get all that, just stick to using the template. All you have to know with the template is “put [LoadOverworldFaces] in the conversation where you want the music to change”.

4 Likes

How do I import music from the Music Repo?

First, you’ll need to install two patches: Native Instrument Map 2 (NIMAP) and Drumfix. Once you’ve installed those patches, download the .s file of the song you want from the repo (not the .ogg, that’s just a preview for you to listen to, you want the .s). Then, in Builder, go to Song Table → Song Track Editor, and find either an empty track or a song you’re willing to replace. Select it, then click “import music”, and select the .s file. Builder will ask you what instrument set to use, and if NIMAP is installed will offer that as the default. All music in the repo is formatted for the NIMAP, so just click the confirmation button, and the song is imported!



To add it to the Sound Room in-game and change the song’s name, you then go to Song Table → Sound Room Editor and add it as an entry in the list.

What about the “import music from another ROM” tool?

It is generally advised not to use this for actual music, as importing music with this function will copy over the entire instrument set of that song along with it, eating up large amounts of memory space. (It is, however, useful if you need to import sound effects that don’t have a close enough equivalent in the base ROM.) Repo music using the NIMAP takes up much less space as the NIMAP instruments are already in the ROM. But if you must, it’s found in “tools”, and the way it works is fairly simple: it’ll show you the sound table of your ROM and the ROM you’re importing from. You select which entry to import from the other ROM, and which entry to replace in your ROM, and click “import”. You’ll have to check the sound table of the other ROM yourself to figure out what’s what.

Note: DO NOT USE THIS TO RIP MUSIC FROM HACKS. Directly taking assets from other people’s hacks without their permission is art theft.

4 Likes

What FEBuilder patches are considered quality-of-life?

First of all, my honest recommendation is to install the SkillSystem and remove skills, as SkillSys comes with so much quality-of-life built in that I honestly can’t even remember all of it off the top of my head until I notice it’s missing in a non-SkillSys hack. While most of it is available standalone, not all of it is, and tracking down the individual patches can be annoying. But aside from that:

General QoL:

  • ModularMinimugBox – Allows you to add information like stats and inventory to the minimug box display when hovering over a unit. The exact information it shows can be customized by editing the installation files, and you’re encouraged to do so, but there are a handful of solid defaults in Builder.
  • HP Bars with Warnings (included in SkillSys)
  • Battle Stats with Anims Off (included in SkillSys)
  • Check danger zone with Select (included in SkillSys)
  • Show how much HP is healed with staves
  • Nullify move range of units with stationary AI is included with SkillSys, but is not available as a standalone Builder patch. Its standalone non-SkillSys version can be found here and installed manually with Insert EA.
  • Set default text speed to fast
  • Turn off autocursor by default
  • OPENING_CUT – disables everything before the title screen (health and safety warning, Nintendo/IS logos, and opening animation). These can also be disabled individually if you for some reason want to keep part of this.
  • Various patches to reduce lag and fix bugs
  • Check growths on statscreen isn’t a standalone patch in Builder outside of SkillSys, but it can be installed standalone if you want to, you just have to install it yourself with Insert EA. This is also bundled with being able to see who a unit can talk to on the stat screen.
  • Adding Casual Mode as an option – I advocate strongly for designing around Classic Mode, but support adding Casual Mode as an option for casual players. Giving the option is as easy as installing the patch and it doesn’t take away anything to include it for the people who want it.
  • Add a game option to disable staff and dance animations
  • Show weapon stats of monster weapons
  • Not a patch, but including in item descriptions actual numbers for things like how much a Vulnerary heals for
  • Hold A to speed up battle animations (warning: one version of this patch is known to be a bit glitchy, test it out and see if it causes any unwanted side effects in your ROM like jank in spell animations or slowing base animation speed)
  • Hold L to skip battle animations
  • While not inherently a quality-of-life bonus just by installing it, the “display multiple escape markers on map” patch can be used to create visual indicators for all sorts of things on maps (including but very much not limited to actual thief escape points), which in the right situations can be very helpful for communicating information to the player.

Typing #ESSENTIAL in the patch list search bar will also come up with a bunch of useful and important fixes.

There’s a handful of other things that are mechanical changes, but people usually like and generally don’t hurt:

  • Convoy expansion to 200 (this is part of ExModularSave, and therefore included with SkillSys)
  • Talk doesn’t use your action
  • Support doesn’t use your action
  • Stealing with a full inventory
  • If you have supports, changing how supports work in some way, such as increasing the support gain range or changing it to FE9-style per-chapter gains or just making them grow faster. There’s a lot of different ways you can go, but most people agree vanilla GBA support gains are too slow/restrictive and could use improvement. (To do FE9-style, find the patch to set support gain range and set it to “whole map”, it will change it to trigger once at the start of the chapter for being deployed together.)

And others that are more significant changes, which some people could consider to be QoL but have serious design implications you have to build around:

  • Thracia trading, being able to trade multiple times in one action - makes item management more flexible. Too flexible, potentially, one unit can completely rearrange and swap around the inventories of everyone adjacent to them all at the same time.
  • Moving force-deployed units, instead of them always being in the same place – a nice feature for more “normal” levels where the lord/forced units are just grouped with everyone else, but it prevents you from designing levels around certain units starting in specific places, ex. the lord getting separated from the main army. (Well, it doesn’t make it impossible, but you have to do some shenanigans where you prevent them from being deployed and then load them onto the map after preps. There’s a more updated version of move force-deployed units that lets you toggle it per-unit, but that version’s not available as a Builder patch, you’d have to insert it yourself.)

Oh, and if you’re willing to do a bit more work to install it and set it up, give Danger Radius and Droppable Item Marker a look. But it requires installing it with Insert EA, as it’s not a Builder patch, and you have to edit the fog palettes of all your tilesets. (Well, you don’t have to, but highlighted enemy ranges showing up fog-colored is weird. It comes with a script to process palettes easily for Buildfile users, but it doesn’t work nicely for FEBuilder.) Vesly has also made a version that adds a stealable item indicator as well, which can be found here – if you want Danger Radius alsongside it, you’ll have to install Danger Radius first, then change the Installter.event file for DisplayObtainableItem to have True instead of False towards the bottom for using Danger Radius.

Another non-Builder patch: Convoy Partition and Item Combination by Tequila, which allows you to merge uses of duplicate items by holding L while depositing them in the convoy. (It also comes with functions to partition the convoy between multiple parties if you need that, but the QoL feature is the item merging.) To use it, you do need to change some values in the .event config file, particularly if you’re using SkillSys, to make sure it has the proper address for the convoy and the correct number of items in it.

Some notes on installing Convoy Item Combination in Builder

If you’ve installed EMS or anything else that messes with save structure, you’ll need to make sure to change the address in the .event file for where the convoy is to match where it is in your ROM. If you have the wrong address, your convoy will end up getting wiped.


To find the correct address, run your ROM from Builder to open it with the debugger. Go into the game, then in the debugger, under the “Etc” tab, find “Supply”, and check the address on the upper-right of the list. That’s the address you need to have in the .event file.

If you’ve installed a version of EMS that expands the convoy, you’ll also need to change the values for how many items can go in the convoy. (Note: installing the convoy partition hack won’t change the amount of things in the convoy can be saved, so you’ll need EMS first to go above 100 total.) If you’re just using the hack for item combining, just specify a single full-convoy partition like this:

You may find that the colors for the “L+R: Combine” graphic on the convoy screen get screwed up. To fix this, at the end of the .event file, comment out the #incbin s and uncomment the #incext s, like this:

Once that’s all set up correctly, in Builder, go to “Insert EA” under the advanced editors, select the .event file, install it, and test to make sure it’s all functional. (Make sure your convoy doesn’t disappear after you do things in-game!)

6 Likes

My Chapter Start Event is acting weird. It’s not showing units moving, the camera’s jumping around instead of scrolling, and it’s skipping things.

You probably have the chapter set to start faded to black in the Chapter Editor, and forgot to include a “fade screen in from black” at the start of the event where you want it to start showing things happening.

But the screen isn’t black?

Some things in events can force the screen to show while the game still thinks it’s faded out, resulting in this issue as the game tries to skip through the “faded-to-black” event.

4 Likes

How do I go to the next chapter WITHOUT the World Map? The game’s freezing when I try!

To go to the next chapter without the world map, all you have to do is use the “go to next chapter without world map” command in the previous chapter’s End Event, and specify the chapter ID to go to. However, the vanilla game is hardcoded to only allow going to specific chapters without the world map. Luckily, as you might expect, there’s a patch to fix it. Search for “MNC2 Fix” in the patches list. There are two versions, one that disables skirmishes and one that doesn’t.

How do I go to the next chapter WITH the World Map? It’s not going to the chapter I want!

To go to the next chapter with the world map, use the “go to next chapter with world map” command. However, while this command takes a chapter ID, that chapter ID doesn’t actually determine what the next chapter is. When using the world map, the next chapter is determined by the chapter ID set for the World Map Node you enter. In the World Map Nodes editor, you’ll find that each node has two chapter IDs. The first is used for pre-routesplit and Eirika Route, the second is used for Ephraim Route.

If the current chapter was entered without the world map, you will likely need to use the version “go to next chapter with world map based on designated base”, which specifies which world map node the player appears at when returning to the world map.

I have a gaiden branch set up, but it’s going to the wrong chapter.

Both versions of the “go to next chapter” command do not actually end the event and go to the next chapter, they only tell the game what to do once the event ends. Therefore, if the game sees one “go to next chapter” and then another “go to next chapter”, it will go to whatever is specified by the last one it saw. You need to make sure that your conditionals for the gaiden branch are skipping the alternative chapter’s “go to next chapter” command, for example:

CHECK_FLAG
BEQ if [slot C result]==[slot 0 always 0] goto label A, else:
    [result if flag is on]
    go to next chapter without world map [gaiden]
    goto label B
label A
    [result if flag is off]
    go to next chapter with world map [main chapter]
label B

This would go to the gaiden chapter if the flag is on, or the main chapter if the flag is off. The “goto label B” here is the important part, causing it to skip past the other “go to next chapter” after the command to go to the gaiden.

It is also worth noting that, as mentioned above, when going to a chapter with the world map, the chapter is determined by the next World Map Node and not the command, so barring complex world map eventing that I’d rather not get into, you cannot go to different chapters with the world map based on the end event’s conditional, so you will usually have to have at least one side of the branch (usually the gaiden) go to the chapter without the world map.

3 Likes