Traditional ASM hack generally requires modifying in assembly level. Many times it is even hard to say that the hacker himself can make it clear on the original functionality, which results in extremely low reliability and poor efficiency. There are also many of other problems, such as headache RAM space management, conflict on various functionality, limition on skill index bit width, etc.
Today, With the 98% progress of decomp project and extensive CHAX engineering practices (such as this, this, this, this and thisâŚ), We can review on existing work from a higher perspective. At such a stage that peopleâs understanding of the vanilla functionality mechanics has reached at an unprecedented level, I think itâs time to solve existing problems, and reconstruct C-SkillSys project closer to a modern software engineering.
Main features
More diverse functionality features
450+ skills have been introduced and with the bit width of skill index has been expanded to 16 bits, it can support up to 0xFFFF skills working at the same time in theory.
Each unit can carry up to 23 skills, 7 of which can be configured through the prepscreen freely.
Introduced a lot of new combat mechanics, such as ThreeHouses style hit rate decreases with battle range increses, Engage style combo-attack, etc. Combat calculation formula has been restructured so that we can get more reasonable calculation on damage increase and reduction, and thus a large number of FE-Heros skills were introduced based on that.
Reworked movement calculation ARM function enables more Heros style mobility skills introduced such as Flier Formation, etc. This also avoids serious performance losses caused by the introduction of Pass skill.
Anim and UI effects
Reworked better interface on statscreen with FE6 style scrollable statscreenfx.
A variety of cool map anim effects for skills.
Introduce new features via kernel tutorial info during game-playing.
Reworked efxskill and map skill anim effects.
Friendly for FEBuilder users
Proactively provide FEB patches. For non-developer users, you may just download Patches zipped directory in release and put it to <path-to-FEBuilder>\config\patch2\FE8U\. Then you can modify C-Skillsys data easily.
Better performace
Now the kernel run on in-BL range space. For the function call, we can just use BL instruction ranther than slowly BLH.
Frequently called functions are placed in IWRAM and called as ARM functions, including SkillTester, map-task routine, some other judgements, etc.
Higher code quality and stability
Modifications on vanilla functions followed the principles: Unless specific circumstances, the hacked functions should worked consistent with original.
Rigorous PR review based on decomp code.
Rigorous code style review.
Better development control
All components are all generated at once via a make command.
Introduction of debug kit port from FEHRR enables developers use non-std IO functions (such as Printf) to debug on their modification.
More reasonable RAM space control. Now RAM space registration is designed very similar to a malloc function. Developers may just tell the kernel the size. And kernel may automatically maintain the physical address and overflow detection.
Use FEB to config your skillsys!
Modern c-skillsystem can directly enable users to configure the rom data in FEB via FEB patches. For now, 1.0.0-LTS version has been integrated inside latest version of laqieer/FEBuilderGBA from @MisakaMikoto
I think a move towards a C based skillsystem is for the best, although it will take a while. Itâll also make it easier to have a version for fe6/fe7 once all 3 decomps are far along. Kudos to you!
We always could, although progress on the decomp has made this easier over time. Several skills in the older skillsys are written in C, but most are not.
Having a play around with this, itâs really impressive work!
I did notice that pressing left to select combat art doesnât allow you to select Without Art, but pressing right works as expected.
Combo/chain attack could maybe use an indicator similar to the one for battle arts? and sprite doesnât swap when anims off but I guess thatâs just not finished yet.
Also installing worked fine for me on WSL although the dotnet var only worked until I closed the session so might be good to add a note about adding it to ~/.bashrc so it will persist?
In FE-Engage, according to my understanding, it is an inherent mechanism, just like assassin cannot trigger silencer attack to BOSS in FE8. So I also set it to trigger combo-attacks unconditionally.
â
Yes, I recommand to put the following variables to ~/.bashrc:
Is there currently no way to view what combat arts are available to a unit?
This is honestly really cool. Was able to get everything to work following the instructions just fine, though I did need to update and upgrade apt-get since I was doing this on a fresh install, if you feel it might be worth adding a note about that after wsl is installed.
My apologies for not being more clear before, but I mean in game. On the unit menu, other than when you attack, how to you view available combat arts such as wrathful stike and grounder? Do you need to press select on a certain page or?