[FE9] Character Editor and Randomizer [v1.3.2]

So i used the time between exams and the new semester, and now a significant time into said semester, to give a crack at making an FE9 randomizer. What i ended up with was a Character Editor/Randomizer for Windows.

It takes a PAL and US FE9 root folder, that can be extracted with GCTool (remember to mark “Also extract header, apploader, DOL, and TOC”). All the decompressing/recompressing of relevant files is handled automatically with a modified version of Nintenlord’s compressor, including automatic recompressing if you exit without saving with the X button. Then GCrebuilder can be used to rebuild the ISO.
I’ve done what i can in the way of hint tooltips and ensuring people don’t break anything.

Character editing features:

  • Bases
  • Growths
  • Weapon ranks — What weapons you can actually use is class based though
  • Level
  • Class — Automatically changes the models to class defaults
  • Models
  • Portrait
  • Build and Weight
  • Name ID — Doesn’t let you input a new name, just which name already in the game gets used
  • Position
  • Weapons and Items — Only replacing, no adding
  • Skills — Only replacing, no adding
  • Enemy growths

I also made a randomizer section with:

  • Bases
  • Growths
  • Class
  • Skills

The randomizer creates a log with the changed values in it, as well as one with only the growths for avoiding spoilers.

Bases and Growths both swap Str and Mag so the higher one matches the class’s weapon type.

Class randomizing has some nuances: A character’s highest weaponrank is applied to the new class’s primary weapon, and the last item in their inventory becomes an Iron weapon for their new class. Laguz classes are handled by counting 1 laguz level = 2 beorc levels, and weapon ranks are assigned by level too. Laguz have a Laguz Stone as their starting weapon (i tested, it works).
Marcia and Jill are moved to appear in spots where they can be reached without flight.

As for the features i still can’t figure out:

  • Allowing more items in starting inventories. Just putting the items in the dispos entries is not reflected in game, seems like everyone’s number of weapons/items is hardcoded somewhere.
  • Allowing more skills than in vanilla. Same as above, just putting them in the empty slots is not reflected in game.
  • Speeding up map animations. I can make units t-pose at each other for combat, and in the full battle animations that makes them go by in a flash, but not so for map animations sadly.

You can find it in my Onedrive public folder. You need the whole “FE9 Character Editor and Randomizer” folder: https://1drv.ms/f/s!AsfU3qRjcTTdhi8Mglgc0qgyEr-C

Source code on Github: https://github.com/jespoketheepic/FE9-Character-Editor-and-Randomizer


v1.1 changelog:

  • Fixed enemy growth increase instead setting them to 0
  • Illyana should be fixed now?

I added a fixing case for updating to v1.1 without re-randomizing: Open the new version of the editor, go to Illyana, press apply, set the enemy growth to 0, then save and quit. That should fix everything up, except Illyana past her recruitment. You are then free to open the editor back up to (now for real) re-apply the enemy growth increase. You can then re-build the iso with the fixes, it will work with the old save.

v1.2

  • The system.cmp simultaneous access issue should be fixed now.
  • Skill randomizing, fixed the main bug, might be some bugs hiding under it still, idk.
  • Ike can’t become classes that can’t fight.

v1.3

  • Fixed an NA version exclusive issue where skill randomizing went completely haywire.
  • Lords and Thieves can now promote
  • Randomizing now makes the laguz royals no longer transform when they arrive, to prevent them from de-promoting into beorc classes. I can sadly not edit this for each individually as it is the same cutscene for all three.
  • Fixed an issue where the enormous HP growths of base game Laguz were counting negative to their growth total. I also put some new overflow protection on the growth randomizing.
  • Removed all the unused Mages/Sages from the random selection. Increased the appearance odds of the standard ones to be higher, but it still results in less overabundance of magic units.
  • Gatrie now also can’t become a laguz, like Shinon, again to prevent literal declawing upon rejoining.
  • Known issue: Geoffrey always gets bow access for some reason? Use them at your own risk, it can crash in various ways.

v1.3.1

  • Hopefully now for real fixed an issue where the enormous HP growths of base game Laguz were counting negative to their growth total. I also put some new overflow protection on the growth randomizing.
  • Fixed occasional wrong levels caused by the system for rerolling invalid results.

v.1.3.2

  • New button to apply the misc support edits without needing to randomize.
27 Likes

Yesterday: “An FE9 randomizer would be too complicated. It can’t be done.”
Today: “Ok well fuck me I guess it can.”

13 Likes

Bless you for this chief
Also, I’m assuming this is the case for all laguz classes but I can’t say for sure. Ike randomized into a Hawk and lost his beak weapon after the prologue.

1 Like

Oh, that is the part where the Trainer sword gets replaced with an Iron Sword, hadn’t thought of that. Others should be fine i think?

Wow, this is impressive stuff. I was looking into doing this next for Yune, but it seems I was beaten to the punch on this. It’s good to know that it is possible to do. (In theory, FE10 should be somewhat similar, right?) Nice work!

Also, I was wondering if you’d like to help me out with getting this supported in Yune. It’d save me a lot of time seeing as you already put in the work to get things working. If you have any reference docs, that would be a lot of help too.

5 Likes

Ended up spending way longer than it could have on support for the US version, but it should work now. Also fixed a ton of small things.

1 Like

With the new semester starting i won’t have the time/motivation for this kind of thing again for a while. But i should probably get around to writing documentation about all of this, and put the source code up on github.

1 Like

I’m running it at the point at the root folder being put into the software. But it’s been loading for quiet a bit. It says “Compressor running.give it a minute…” I think it’s been around 15 minutes, is this normal?

Are you on not-Windows? I forgot to put in the post that the compressor is a bottleneck that’s limiting it to Windows, so your error would be what happens in that case.

1 Like

I am on Windows 7.

1 Like

This is nice, it’s refreshing to see some non-GBA games get some attention.

2 Likes

The “give it a minute” is pretty literal. The application should open a command window where it spews its progress and exceptions, what does that say?

1 Like

Sounds good. I have some experience with messing around with FE9 a while back, and I think I got stuck around the same part you did, namely, expanding skill counts. I’m surprised to learn that changing a character’s class does work without issue though, because I surely thought either the game would soft lock trying to play an unknown animation for a model or you’d get some nightmarish blend of the wrong texture slapped on the wrong model. But any documentation you might have would definitely help. I actually referenced your FE4 randomizer a few times to see how you handled some specific cases as well.

I work on Yune in my spare time, so it’s not too much time I have either to work on it (only after work or on weekends usually). So I’m generally pretty slow, not to mention I’ll be doing preliminary research as well.

But my initial thought when doing FE9 was to hopefully not rely on any external tool. Ideally, it would be most natural to load a single file like we do with most other games. In theory, ISOs aren’t encrypted or anything, so you could directly change the ISO without any bad side effects until you start needing to move files around or change the length of files. Of course, theory can be very far removed from practical in some cases. :slight_smile:

I’ll probably start working on FE9 after I finish up the final bits of Random Recruitment on GBAFE and the last randomization options for FE4, but I’ll probably be looking into general processing for ISOs first before I do anything specifically with FE9.

1 Like

Changing class is definitely the most involved thing going on here. The game is actually really good at not crashing (it once ran pretty fine despite me forgetting to recompress system.cmp!), but it’s also quick to display everyone as textureless black Rangers. The key is that a character’s class in system.cmp has to match with the one in the dispos.cmp of the chapter where the character joins in, specifically in the dispos.c section of the file which is not always the first. Then the textures have to match the class.
It was made enormously much easier by the fact that increasing the size of the .cmp files doesn’t seem to cause any problems at all, at least not on the scale i have been working.

2 Likes

My rebuilt ISO freezes/whitescreens after the prologue cutscene, any advice?

Unmodified ISO works just fine.

1 Like

Would it be possible to change the name ID’s for each character as well? So If I wanted to change a portrait I could change the name to match?

1 Like

Can you send me the your system.cmp and \zmap\bmap01\dispos.cmp? Then i can look if there is an issue there.

Hey can someone here help me with the FE9 Randomizer? I need to rebuild the ISO but i keep getting an error saying “Folder ‘&&systemdata’ not found”

When I choose my root folder

1 Like
1 Like

When you extract the ISO using GCTool, check “Also extract header, apploader, DOL, and TOC”

1 Like