[FE8] Skill System v1.0 - 254 skills done, more on the way

Oh yeah we’ve also reached 254 skills which is the max number before you have to start messing with skill definitions, so that’s neat and probably newsworthy

Skill System Johto time

4 Likes

Easy fix: Make a second skill system, and fill it with blackjack and hookers.

1 Like

I think this warrants an update to the topic, don’t you?

(‘more on the way’ is still true, I have some skill asm I’ll be submitting eventually too)

1 Like

Nah it’s set up so things get installed in whatever order you specify so you just define skills you don’t want as 255 and then they don’t work or exist

2 Likes

Shit, that’s pretty slick.

The version of 2019/10/22 seems to have a bug that the enemy AI in the Silence state performs a magic attack.
It doesn’t occur in 2019/07/08 version, so it seems like a bug that occurred in 3 months.

Enemy mage will try to attack even while Silence.
This only happens on enemy turns.

test ups
https://cdn.discordapp.com/attachments/235253973588639747/643204202352345095/skillsystems_Silence_glitch.7z

old.ups installed skillsystems 2019/07/08
new.ups installed skillsystems 2019/10/22

It does not occur in old.ups.
It occurs in new.ups.

The same phenomenon was confirmed in the latest version of github.
Novala is attacking in Status: Silence.
In this case, it did not freeze for some reason.
However, it seems to be a bug that the enemy AI in Silence state attacks.

I’m really sorry, and I know someone already asked something similar, but I’m having difficulty using the str/mag split with febuilder. I tried taking away the slashes in config.event, but what should I do after that? (Sorry if this is a dumb question, I have very little experience)

If you are using febuilder the str/mag split should be a different patch, you don’t need to touch anything from the skill system files.

I think.

As of right now, they only way to use it in FEBuilder is to build Skill Systems use the buildfile first.

If there was a list of patch conflicts that prevent str/mag split from being installed with skill system in FEBuilder, that would be very useful in resolving them so an FEBuilder patch form would be viable.

Or just patch conflicts in general, having everything work nicely together is always a goal.

Ok guys, just one question, it looks like we are not going to be able to “toggle” the ST/MG split with Febuilder for a while, how can I add that feature to my obviously not clean ROM that has the current Febuilder skill system?

Getting into the edited ROM requires a fairly complex procedure.
It’s a lot of work, so you should stop doing it yourself.

I will briefly explain the work I am doing.

Build SkillSystems using vanilla ROM.

However, if you use it as it is, it will be in the SkillTest stage, so remove unnecessary things.
Enable other options you want to, remove unneeded patches , and enable patch and options.

Although now improved, old SkillSystems created strings on top of prologues and ch1 lines, so they are remapped.
Current SkillSystems are mapped to 0xD4C or later.
FEBuilderGBA reserves 0xE00-0xFFF and maps to this range.
If you want to meet the specifications of FEBuilderGBA, you need to remap.
I make the list by hand.

Build SkillSystems.
At this point, check the operation.

Now you need to merge.
This is also a very troublesome task.

Load the FE8 vanilla ROM at FEBuilderGBA.

MENU->Tool->Diff

Make a difference with the ROM that contains the SkillSystems you built earlier.
The difference is saved as a FEBuilderGBA bin patch.

Apply this bin patch to get the latest SkillSystems.
Just before that, you need to erase the old SKillSystems from your ROM.

Look at the old skillsystems patch in FEBuilderGBA.
Various things are written, but simply explaining, uninstalling existing SkillSystems and installing new SkillSystems.

Apply the bin patch created earlier to this format.

Finally, ready.
Let’s update the skill system from the patch of FEBuilderGBA.

If it is updated correctly, it is a success.
If it doesn’t work, it’s a failure.
It is necessary to proceed while checking the procedure from the beginning.

Even if i omit the detailed work and write it, there is this amount.
There are traps everywhere.
If one fails, it will not work.

I am using an old vision quest to test for updates.
I have saved a copy of 2018 version and have confirmed that this version can be updated properly.

Even with so much care and testing, SkillSystems updates often have unexpected events.

2 Likes

SkillSystems has a bug that allows re-move when the 0x03 flag is enabled.

Please read the suspended file.
The unit starts moving indefinitely.

sample ups
https://cdn.discordapp.com/attachments/235253973588639747/644844482084208641/test_ups.7z

I found the problematic code.

\Engine Hacks\SkillSystem\Post Combat Skills\Post Combat Skills Installer.event

ORG $1D26C //this used to be part of the "check for this turn's action"
SHORT 0x2110

If comment out this code, the bug doesn’t occur.
So this code is causing the bug.
We need to find out more about what this is doing.

If you are worried about this problem, you can fix it with hexeditor as follows.
However, there may be side effects.

Replacing with vanilla code will fix the bug.
1D26C: 41 7C

SkillSystems

0801D266 2800   cmp r0, #0x0
0801D268 D116   bne #0x801d298
    0801D26A 480E   ldr r0, [pc, #0x38] # pointer:0801D2A4 -> 0203A958 (ActionData@gActionData._u00 )
    0801D26C 2110   MOV r1, #0x10 <<<<
    0801D26E 1C02   mov r2 ,r0
    0801D270 2903   cmp r1, #0x3
    0801D272 DC01   bgt #0x801d278

Vanilla

0801D266 2800   cmp r0, #0x0
0801D268 D116   bne #0x801d298
    0801D26A 480E   ldr r0, [pc, #0x38] # pointer:0801D2A4 -> 0203A958 (ActionData@gActionData._u00 )
    0801D26C 7C41   ldrb r1, [r0, #0x11] # pointer:0203A969 (ActionData@gActionData.unitActionType )
    0801D26E 1C02   mov r2 ,r0
    0801D270 2903   cmp r1, #0x3
    0801D272 DC01   bgt #0x801d278

I’m not sure what this code wants to do.
It seems that 0x10 is forcibly assigned to r1 and the branch is ignored.

Does anyone know what this code wants to do?

I understand the cause of the bug that the enemy AI ignores Silence.
It is caused by the hook of WeaponLockCalcLoop.event.
Disabling this routine will solve the problem.

WeaponLockCalcLoop.event

PUSH
ORG 0x16574
#incbin "CanUnitWieldWeapon.dmp"
POIN ItemTable
POIN WLockLookupList
POIN WeaponLockLoop
POP

FEBuilderGBA has a patch that disables this hook.
“Uninstall SkillSystems ShadowGift 20191108”

This is a feature for installing WeaponLockEx, but it can also be used as a workaround for this bug.

1 Like

Like I said yesterday, this is part of Canto and Galeforce, all of these checks were moved to the PostCombatLoop, if there’s something the loop is missing just add it in.

I see.
I think we just moved forward just by knowing where the problem was.
I understand that the side effects are too strong.
I hope it will be modified in a coordinated manner with other skills.

1 Like

how do I apply the bin file to my current ROM?
edit: I found out, save it in the patches area of febuilder.

Ok Guys, how do I unlock the weapons with the new array? this way every weapon is locked by default…

Based on the documentation in Teq’s “better notes” dropbox file, in the battle struct, normally the following indexes are unused:

0x59, 0x7A, 0x7F

With 0x6C, 0x6D unused for all intents and purposes if GBA lethality isn’t in place (not sure about the skill system’s implementation), 0x58 for tile resistance (which I don’t think is ever used in vanilla FE8?) and 0x7E being occasionally set to 0 by two routines I’m not sure when are called.

However, the Str/Mag split now makes use of 0x7A for allowing the stat to grow. Are any of the other entries in the battle struct safe to manipulate? They would be as follows:

0x58 (If no resistance tiles are used)
0x59
0x6C (with no GBA lethality)
0x6D (with no GBA lethality)
0x7E (?)
0x7F

I’m trying to add in con and movement growth and deciding where to store the level up value is the only thing I’m having trouble with at this point.

EDIT: Oh, and figuring out where to manipulate the animation off extended level up screen. Where is this routine stored? I was able to figure out the one for when animations are on.

Strength/Magic split does a lot to the level up screen. You can look in Strmag/Strength Magic Split/Level Up.