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

@LynStan
Try asking in #hacking_help on discord or referencing someone’s project buildfile

No you aren’t going to want the |IsPointer on your table label. In your top left cell, you’re going to want INLINE CharLevelUpSkillTable. Your EirikaSkillList|IsPointer looks correct. Be sure that you’re reassembling your tables before testing, and keep in mind that Eirika will only learn Lethality at level 20.

2 Likes

Thanks! It was the | in INLINE CharLevelUpSkillTable messing everything up lol.

2 Likes

Any way to have skill on items to affect the unit just by being in the units inventory, rather than equipping. Say for example Mystery of the Emblem’s Life Sphere which grants renewal just by holding it. I’ve tried clicking the passive boosts box and turning the item into a ring, but no dice.

This is already how it functions on the github skill systems. But the febuilder patch is about 12 months out of date for most things at this point, so it does not include the code. You could run a custom build and copy over the needed code from the skillsys github, or you could try a buildfile.

Ah, well I assume the febuilder version will be updated to that version eventually in that case. No real rush on my part.

I have found a problem in NewSummonUsability.s and will report it.
There is a bug that allows you to run Summon again while you have already summoned Phantom.

//OLD
@summon char ID config check
ldr r4,=0xFFFF
mov r2,#0
ldr r0,[r5]
ldr r1,=gSummonCharIdConfig_maybe  @<<<
ldr r1,[r1]   @Get SummonTable
ldrb r0,[r0,#4]
mov r3,r1
ldrb r1,[r3]
cmp r0,r1
bne LoopStart
mov r4,#0
b PostLoop

//NEW

@summon char ID config check
ldr r4,=0xFFFF
mov r2,#0
ldr r0,[r5]
ldr r0,[r0]
ldr r1,=0x0802442C
ldr r1,[r1]   @Get SummonTable
ldrb r0,[r0,#4]
mov r3,r1
ldrb r1,[r3]
cmp r0,r1
bne LoopStart
mov r4,#0
b PostLoop

one more.

//OLD
ExistingPhantomCheck:
mov r4,#1
lsl r1,#1
ldr r0,=#0x895F5A5  @<<<<
add r5,r1,r0
GetSummonUnit:
mov r0,r4
blh GetUnit,r6
mov r2,r0
cmp r2,#0
beq CheckNextUnit

//NEW

ExistingPhantomCheck:
mov r4,#1
lsl r1,#1
ldr r0,=0x0802442C
ldr r0,[r0]   @Get SummonTable
add r0,#0x1   @SummonTable+1
add r5,r1,r0
GetSummonUnit:
mov r0,r4
blh GetUnit,r6
mov r2,r0
cmp r2,#0
beq CheckNextUnit

0x895F5A5 is the value of SummonTable 0x895F5A4 plus +1.
This value also needs to be changed to repoint the SummonTable.

However, doing so is troublesome, so I will substitute it by directly referring to the address where SummonTable 0x895F5A4 is written in vanilla and adding +1 to that value.

It’s easier to ride on a vanilla pointer instead of writing the address directly.
If you move to lyn completely, there seems to be another answer.

https://cdn.discordapp.com/attachments/179027738454261760/821428169181233202/NewSummonUsability.s
https://cdn.discordapp.com/attachments/179027738454261760/821428189771202610/NewSummonUsability.dmp

5 Likes

I may just be missing something, but I’ve attempted to follow the installation directions and do not have a successfully skilled-up ROM. Does is wind up someplace weird (outside of the extracted folder)? Might there be an issue with the recently updated files or event assembler? I could definitely use some help here.

My steps:

  1. Download all the github files for the project and extract to folder (on desktop, FE8 Skills)
  2. Download newest version of event assembler; extract in folder and rename previous version of EA to EventAssembler_OLD and name current version EventAssembler.
  3. Move Fe8 rom into folder and rename FE8_clean.gba
  4. Run Make_Hack_Full.cmd

As far as I can tell, I just don’t have the updated .gba. I’ve attempted to run targeted FE8_clean, looked for new .gba file, patched with the generated .ups file and then tested, attempted to run the skill test .gba file. I’ve tried with both the included and new event assembler. I’m new at this, so maybe I’m doing something wrong—but I did everything I could think of. Any notion what’s up?

Is there an error being generated in the command output when you run make hack? Skill test.gba should be the correct output if everything worked right.

Nope, no error message that I noted. So the skill test .gba should be the patched / updated fe8 rom, right? I’m aiming to just have the main game playable, and that .gba forced me into a boss rush chapter (when it didn’t wind up as a vanilla-looking fe8). I couldn’t find a way to access anything else. Is that intended?

I’ll focus on that .gba and double check that I didn’t miss any error messages.

1 Like

If you’re on the Boss Rush chapter, then it worked. That’s a toggle-able chapter in place as a config option & example chapter for those new to creating chapters in a buildfile. You can delete it in Events or you can turn it off in Config.

2 Likes

Okay, awesome! That’s great. I’ve gotten into the game now with the test chapter disabled. Personal skills work right. Unfortunately … class skills don’t seem to. Seth doesn’t have Elbow Room, Gilliam doesn’t have Provoke. Tried re-doing the patch process from the ground up a couple times in a couple different ways to see if it was something I’d done wrong. No luck, no errors on the install process. Any sense what might be going on here?

When I try to open the event assembler directly, I do get a Microsoft .NET Framework error. I’ve copied that text below. Could that be part of what’s going on? (I have found that the installer only works with the packaged EA; the new one results in a vanilla rom, so I’ve been using the EA files included in the zip.)

Summary

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NotSupportedException: Language any not supported.
at Nintenlord.Event_Assembler.Core.Program.LoadCodes(String rawsFolder, String extension, Boolean isDirectory, Boolean collectDocCodes)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4300.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll

Event assembler
Assembly Version: 1.1.0.0
Win32 Version: 1.1.0.0
CodeBase: file:///C:/Users/Rob/Desktop/Romhack%20stuff/Projects/FE8%20Skills%20Base%20Files/EventAssembler/Event_assembler.exe

System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4270.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

System
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4300.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4190.0 built by: NET48REL1LAST_B
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4320.0 built by: NET48REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll

System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.8.4084.0 built by: NET48REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

Nintenlord.Forms
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/Rob/Desktop/Romhack%20stuff/Projects/FE8%20Skills%20Base%20Files/EventAssembler/Nintenlord.Forms.DLL

Core
Assembly Version: 11.1.0.0
Win32 Version: 11.1
CodeBase: file:///C:/Users/Rob/Desktop/Romhack%20stuff/Projects/FE8%20Skills%20Base%20Files/EventAssembler/Core.EXE

Nintenlord
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/Rob/Desktop/Romhack%20stuff/Projects/FE8%20Skills%20Base%20Files/EventAssembler/Nintenlord.DLL

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

And, in case this helps, here are all the messages I get at the end of running the installer .cmd. Does one of these tell me what’s going on?

Summary

Processing maps
Assembling
message: C:\Users\Rob\Desktop\Romhack stuff\Projects\FE8 Skills Base Files\ROMBuildfile.event:11:5: Used text space ends at exB336A6
message: C:\Users\Rob\Desktop\Romhack stuff\Projects\FE& Skills Base Files\ROMBuildfile.event:15:5: Used table space ends at exB38B80
warning: C:\Users\Rob\Desktop\Romhack stuff\Projects\FE8 Skills Base Files\EngineHacks\Skillsystem\SkillsystemInstaller.event:21:2: “Default skills have been reordered!”
warning: C:\Users\Rob\Desktop\Romhack stuff\Projects\FE8 Skills Base Files\EngineHacks\Skillsystem\Skillsystem Installer.event:22:2: “This will break existing save files made with old configs.”
warning: C:\Users\Rob\Desktop\Romhack stuff\Projects\FE8 Skills Base Files\EngineHacks\Skillsystem\Skillsystem Installer.event:23:2: “Restore your old ‘skill_definitions.event’ if necessary to avoid any issues.”
warning: C:\Users\Rob\Desktop\Romhack stuff\Projects\FE8 Skills Base Files\EngineHacks\Skillsystem\Skillsystem Installer.event:24:2: "To hide these
message: C:\Users\Rob\Desktop\Romhack stuff Projects\FE8 Skills Base Files\EngineHacks\ _MasterHackInstaller.event:240:5: "Using Legacy Suspend Eye Comment out ‘#define SHOW SKILL WARNING’ in “Config.event’.”
message: C:\Users\Rob\Desktop\Romhack stuff\Projects\FE8 Skills Base Files\ROMBuildfile.event:19:5: Used hax space ends at exB7F2D2
message: C:\Users\Rob\Desktop\Romhack stuff\Projects\FE& Skills Base Files\ROMBuildfile.event:30:5: Used free space ends at OxB7F2D2
No errors. Please continue being awesome.
Generating patch
Done!
Press any key to continue …

Nope. Sorry.

Please share your fork on github with us and be clearer about exactly what it is you are trying to do but are unsuccessful. All I understand right now is that you want some units to be learning skills, but they aren’t. Is that correct?

I am under the impression that the file folder here should allow me to play FE8 but with learned skills for classes and personal skills for each unit. That’s really all I’m trying to accomplish. It is the current version as of today.

Maybe I’m just too much of a novice for this. I tried just installing the .ups, but it was a massively outdated version. So I tried to do the full install so I could have the full, current skill system with both the learned class skills and the personal skills. The personal skills work. The class skills do not.

You want to just click the link in the OP.

Yes, it is very old. But there’s nothing really wrong with it. The skill systems buildfile, on the other hand, has become a foundation for many hackers to build their hack, even without skills in it.

By default it is set up to be close to vanilla, because we as a community agree that skills are only fun when the game is designed around them. You’d have to edit the skill lists yourself if you want a more up to date version of the hack, I guess. It shouldn’t really make much difference.

Look, I just saw there were loads of skills added /altered and I wanted to tinker in Nightmare and such. Even the skill list is inaccessible with the old .ups. So I’ll just use that or look elsewhere.

I’m not sure why there’s such a barrier to entry here. I’m just trying to follow the goram directions for implementing the current version of the skill hack.

Are you editing with febuilder? Assembling the buildfile won’t show learned skills correctly in febuilder, as febuilder has its own skill sys patch and does things its own way.

You could also try just opening fe8 clean and installing the skill sys patch with febuilder. That uses the old skill lists, still, I believe. It is about 13 months old, rather than 3 years old.

I’m sorry if I’ve made you feel like we’re trying to exclude you. I assure you I am simply trying to help you with whatever problem you describe to me. I do feel that you have been vague at times so I’ve had to guess at your issues a lot. If you want the easiest way, I suggest downloading the link in OP or using febuilder to install skillsystems.

I’ll give FEBuilder a whirl. Maybe it’s more my speed.

The lack of learned skills for classes was visible directly in the rom, not when trying to manipulate it. So it’s not an issue of it simply displaying incorrectly in an editing tool.

I do appreciate your efforts to help. It just feels like this is so wildly complicated and I’m really just trying to do a simple thing: Get an FE8 rom patched to the current version of the skill system that I can manipulate in Nightmare, etc. Since I was carefully following the directions, I figured it wouldn’t be that hard to patch the file with the current build—and potentially tinker with the back-end files (e.g., the .event file that lays out the when/what of skills being learned) after the base version looked good. It’s been frustrating to feel that this simple task is beyond my reach.

Looking at the buildfile myself, it seems the old skill lists were made a legacy config option. Sorry, I thought they were deleted.

Just uncomment line 260 in config for the buildfile version.

Other files you can edit to swap skills around:

Skill tables: https://github.com/FireEmblemUniverse/SkillSystem_FE8/tree/master/Tables/NightmareModules/Skills

Class Learned lists:

Ah, crum, is it that simple? I noticed the default skill list in the skill event file. Didn’t spot the config option.

Thanks for taking the time to look through the files and spot that. I really do appreciate it.

1 Like