How do i add the Reverse Mode option for fe 6,7 and 8?

Can some1 explain to me if its possible to add reverse mode on evry gba romhack and how to do it, is it a patch or?? I would like to challenge myself by playing all romhacks that i already finished with this mode where the enemies always attack 1st but have no idea how to do it.

I use FEBuilderGBA + mGBA if that helps,

Ty!

In fe8 hacks with skillsys, you can give enemies the vantage+ skill. You’ll have to assign the skill for each enemy, which could get tedious.

If you’re fine with breaking vantage for players, it’d be easiest to just replace this function.

void BattleGetBattleUnitOrder(struct BattleUnit** outAttacker, struct BattleUnit** outDefender) {
    *outAttacker = &gBattleActor;
    *outDefender = &gBattleTarget;
}

This guide can help you to easily compile the c code:

void BattleGetBattleUnitOrder(struct BattleUnit** outAttacker, struct BattleUnit** outDefender) {
    *outAttacker = &gBattleActor;
    *outDefender = &gBattleTarget;
    if (gBattleTarget.unit.index & 0x80) // enemy
    { 
        *outAttacker = &gBattleTarget;
        *outDefender = &gBattleActor;
    } 
}

Something like this might work.

I try to make sense of this but i have absolutely no idea what any of it means.

I though that the reverse mode was a patch ppl were using via FEBuilder but this is way out of my understanding.

ty for trying though :sob:

You can try this for FE8, probably won’t work for Skillsys hacks but can try it I guess

some1 helped me already but it didnt work out.

:frowning:

If you copy the C I put, follow the c setup guide, click amake.bat, then insert ea via febuilder, it should make enemies always attack first. I don’t think it’s particularly difficult and it shouldn’t take that long to do.

ok let me try 1 more time

i keep getting error when trying to make lyn event with aMake.bat

void BattleGetBattleUnitOrder(struct BattleUnit** outAttacker, struct BattleUnit** outDefender) {
    *outAttacker = &gBattleActor;
    *outDefender = &gBattleTarget;
    if (gBattleTarget->unit.index & 0x80) // enemy
    { 
        *outAttacker = &gBattleTarget;
        *outDefender = &gBattleActor;
    } 
}

i tried using battle crit unit and that 1 worked though i managed to change 1 char crit to 100 with lyn event inject but this c code i keep getting error

void ComputeBattleUnitCritRate(struct BattleUnit* bu) {
    bu->battleCritRate = GetItemCrit(bu->weapon) + (bu->unit.skl / 2);

    if (UNIT_CATTRIBUTES(&bu->unit) & CA_CRITBONUS)
        bu->battleCritRate += 99;
}

yeah so I mixed up using -> and .

try
gBattleTarget.unit.index or gBattleTarget.unit->index

1 Like

IT WORKS!!!

:sob: :heart_eyes:

i got a couple of Qs though, how do i see the script in installed patches in febuilder??

a̶l̶s̶o̶ ̶w̶i̶l̶l̶ ̶t̶h̶i̶s̶ ̶w̶o̶r̶k̶ ̶w̶i̶t̶h̶ ̶f̶e̶7̶ ̶o̶r̶ ̶f̶e̶6̶?̶ = it doesnt but it does work on 2 fe8 romhacks i just tried 1 with skills and 1 with no skills.

Ty!!!

1 Like

You don’t, it’s not a patch.

You need to do more setup for it to work for fe6/7.

Example setup:
https://github.com/Veslyquix/ASM/tree/main/DangerBones

You need to add BattleGetBattleUnitOrder to definitions.s for fe6 and fe7

fe6/fe7j/fe7u/fe8j/fe8u
8024B2C 80294D8 8029028 802AEEC 802AF7C BattleGetBattleUnitOrder

DangerBones goes to C:\devkitPro\Here?

I don’t think the folder it’s in matters. I have it as desktop/asm.

DangerBones probably uses fe-clib 2024 but you can change that if you like

can u explain a bit more indepth, 1 look at definitions.s and my head is spinning

fe6 8024B2C BattleGetBattleUnitOrder
add 1 to the address for SET_FUNC

find the fe6 section and put
SET_FUNC BattleGetBattleUnitOrder, 0x8024B2D

do same process for fe7

when i Make C fe7.bat or fe6 i get error

that’s not very descriptive, sorry

after adding the set funcs in definitions.s, shouldnt we use Make_C_fe6.bat or fe7 bat for lyn event?

I am sorry i am not a very technical person, you should explain it to me like i am a 10 year old

:baby:t5: :baby_bottle:

but what’s the error?