Alright Ready for FE REPO MAIN!
3H INSPIRED AS CALCULATION
I finally delved into the world of C, and it made this so much easier to make. Thank you Vesly and Dragz for helping me out there.
In 3H, AS (Attack Speed) is calculated by subtracting your speed by the weight of the weapon, buffered by 1 point for every 5 points of strength a unit has.
Formula In Question
Speed-((WeaponWeight-(Str/5))Can’t be lower than 0)
This wouldn’t work very well for GBAFE, so I decided to make some tweaks to it. I made sure that I added the strength part to the constitution.
Now the formula looks like this.
Speed-((WeaponWeight-(Constitution+(Str/4))Can’t be lower than 0)
To show how this changes things, I’ll show this example.

Assuming the vanilla formula for AS, base!Eirika gets weighed down by 5 from a Steel Sword. It gets to the point that she can no longer double this 1AS fighter.

When applying the 3H inspired version of the AS formula, the very same Eirika has another point of AS to work with, thanks to her 4 base strength. Now she can double the same fighter with the same weapon!
For those that are keen on wording, you would be correct in assuming that I did make a more “faithful” version of the 3H AS formula, which will be included in the Harth. Here’s the Harth, and this post will be added to the OP.
Hello, I’m trying to use this and can’t understand how to use it with FEBuilder. May I have to use the option “install with EA” but which file should I use? And how can I call this with the command “Call ASM”?
P.S.
The video is inaccessible
You should be able to install it with “Install with EA” and follow the setup outlined in the image to make the event work.
I tried on my own but didn’t work, I tried BindingBladeCheckModded.txt and EventFile.txt, and with both files, I got an error.
With BindingBladeCheckModded.txt was:
Finished.
1 errors encountered:
File BindingBladeCheckModded.txt, Line 3, Column 14: Didn't reach end, currently at Comma(,)
No data written to output.
And EventFile.txt
Finished.
1 errors encountered:
File EventFile.txt, Line 2, Column 5: Didn't reach end, currently at IntegerLiteral($0xFREESPACE)
No data written to output.
I think i know what the problem is. I forgot to define the freespace was in the event file. I used 0xBA3F60. Just put the address of the freespace you want to you in the event file, and it should work.
ADULT EWAN
When looking through the repo, I noticed that Ewan didn’t have a version of him as an adult, so I threw something together with Saleh and Beta!Forde’s mugs. Also while I’m a bit late on April fools, I’m posting this the week of, so here’s a rickroll for you to click on.
part of me was expecting a different Rick Astley song rather than The Classic but you got me with that one
OLDER GARCIA

In the process of something I’m working on, I was recommended to edit Garcia slightly. I feel like the beard could use more polish, but I think it’s in an acceptable spot as it is.
Yo! I found your adaptation of Cyrus’ theme on the repo, and it’s almost perfect for the final chapter of my hack. My big issue with it is that it doesn’t have any drums/percussion, which I can’t help but feel takes away a lot of the oomph that it should have. Any chance you might be able to update it at some point with drum tracks? Tried to do it myself, but I have zero experience with composition programs and haven’t been able to make it sound as good as your rendition.
Sorry, it’s been a hot minute since I did that (honestly forgot I did it until you mentioned it), so I don’t think I can update it. Maybe in the future, but definitely not now.
Gotcha. The hack is still a long ways away from being finished, so I wouldn’t need it for a while. It would be absolutely killer if you ever did get to it though ![]()
TWEAKED RESCUE PENALTIES
Thank you to Jester and Camdar for helping me with troubleshooting.
I don’t know if I’m the only one upset by this, but in GBAFE, rescue penalties being the same 50% cut to both skill and speed regardless in difference between aid and constitution is a pet peeve of mine. In FE7 terms, Hector (13 Con) shouldn’t be similarly encumbered from rescuing Florina (4 Con), as an example, as he would be if he were rescuing Marcus (11 Con), at least in my opinion. As a result, I decided to take matters into my own hands.
The jist of this C code is that if a rescuer’s aid is at least double the rescuee’s constitution, the rescue penalties are reduced to only 25%. In the video I posted below, Seth would have 9 speed after rescuing Eirika instead of the 6 speed he’d usually have.
The video below will show this C in action.
Here is the Moosh to the C, and this post will be added to the OP like always.
Is there a way to make it where the green numbers don’t show up?
It’s honestly not a priority, and it looked too much for me to remove the green numbers.
As a side tangent, I thought it was a cute idea to reward players that considered the difference between Aid and Constitution.
TWEAKED ARENA PAYOUTS
First off, thanks to Jester for showing me where the payout code actually was.
When I was showing the code on how the arena enemies were generated to someone (in terms of items), I had an idea. The idea was that if your unit wins in the arena with at least half of their max HP left, they get extra money. In this case, I went with quadrupled payout, and used the text ID 0x100, but I’ll attach the raw C code below if you want to compile it for yourself with your own adjustments.
Raw C Code
#include "C_Code.h"
void StartArenaDialogue(int, ProcPtr);
void ArenaUi_ResultsDialogue(ProcPtr proc) {
u32 partyGold = GetPartyGoldAmount();
switch (ArenaGetResult()) {
case 1: ///If player unit wins
if (gActiveUnit->curHP >= (GetUnitMaxHp(gActiveUnit) / 2)) {
SetTalkNumber(ArenaGetMatchupGoldValue() * 4);
StartArenaDialogue(0x100, proc);
SetPartyGoldAmount(partyGold = partyGold + (ArenaGetMatchupGoldValue() * 4));
} else {
SetTalkNumber(ArenaGetMatchupGoldValue() * 2);
StartArenaDialogue(0x8D6, proc);
SetPartyGoldAmount(partyGold = partyGold + (ArenaGetMatchupGoldValue() * 2));
}
break;
case 2: ///If player unit loses
StartArenaDialogue(0x8D7, proc);
break;
case 3: ///If player unit draws like if weapons break
StartArenaDialogue(0x8D9, proc);
SetPartyGoldAmount(partyGold = partyGold + ArenaGetMatchupGoldValue());
break;
case 4: ///If player bows out
StartArenaDialogue(0x8D8, proc);
break;
}
return;
}
Here’s a video showing the code in action.
Here’s the Null to the download, and this post will be added to the OP as always.
This looks amazing!
I know the text is editable. But I would make more sense for it to say something like
Wow! You came out with barely a scratch! Here’s some extra gold for an outstanding performance. XXXX total.
I wanted for it to resemble vanilla size for the demo.
DISABLED CONVOY IN MAP
Just a quick little thing I made. Here’s the Aveil to the code.
FULL SUPPORT BONUSES
Anyone else hate that support bonuses in the GBA games are halved? Well, I’ve made the solution to those problems without having to alter the support bonuses table!
C Code in Question
#include "C_Code.h"
int GetUnitSupportBonuses(struct Unit* unit, struct SupportBonuses* bonuses)
{
int i, count;
int result = 0;
InitSupportBonuses(bonuses);
count = GetUnitSupporterCount(unit);
for (i = 0; i < count; ++i)
{
struct Unit* other;
int level1, level2;
result = result >> 1;
other = GetUnitSupporterUnit(unit, i);
if (!other)
continue;
// TODO: gameStateBits constants
if (!(gBmSt.gameStateBits & 0x40))
{
if (RECT_DISTANCE(unit->xPos, unit->yPos, other->xPos, other->yPos) > SUPPORT_BONUSES_MAX_DISTANCE)
continue;
}
if (other->state & (US_UNAVAILABLE | US_RESCUED))
continue;
level1 = GetUnitSupportLevel(other, GetUnitSupporterNum(other, unit->pCharacterData->number));
ApplyAffinitySupportBonuses(bonuses, other->pCharacterData->affinity, level1);
level2 = GetUnitSupportLevel(unit, i);
ApplyAffinitySupportBonuses(bonuses, unit->pCharacterData->affinity, level2);
if (level1 != 0 && level2 != 0)
result += 1 << (count - 1);
}
bonuses->bonusAttack /= 1;
bonuses->bonusDefense /= 1;
bonuses->bonusHit /= 1;
bonuses->bonusAvoid /= 1;
bonuses->bonusCrit /= 1;
bonuses->bonusDodge /= 1;
return result;
}
Here’s the video showing the code in action:
Here’s the Mutoh to everything you will need, and this post will be linked to in the OP as always.
