lushen124

Universal GBA FE Randomizer v1.0

Recommended Posts

Latest Version: v1.1.0

Link: https://github.com/lushen124/Universal-GBA-FE-Randomizer-Windows/releases/tag/v1.1.0

Changelog:

v1.1.0

  • Added the ability to generate a changelog when randomizing. It always generates a file called Changelog.html in a directory you specify. The changelog includes your settings and the updated characters/classes/items tables. Mostly for convenience so that you don't have to open up Nightmare if you're curious as to what everything changed to. Note that all strings are pulled directly from the game data, so in theory this will display ROM hacks properly. (But the current logic doesn't look in the right place for chapter units, so don't try that yet. That will happen later.) The downside is that IS decided to not use the Female flag for classes, so figuring out which class is the female variant is slightly odd. Know that if two classes with the same name show up, the first one is usually the male variant and the second is usually the female variant. They look something like this:

fmEWa0I.pngTbs2gPN.png

59oiGKb.pngXE67yFj.png

  • Updated weapon rank logic to attempt to transfer a character's highest rank when changing classes as opposed to randomly upping weapon ranks based on appearance. This fixes the issue where everybody starts with A rank because I didn't realize that characters would appear multiple times throughout chapters, so they got bumped several times, which almost guarantees them to be A rank by the end of it.

v1.0.1

  • Added logic to make sure legendary weapons don't show up prematurely.
  • Updated logic for movement costs to only update them for classes of units that need them (FE6: Miledy and Gale, FE7: Fiora and Farina, FE8: Glen and Valter).
  • Removed Enemy Buff: At least Amount.
  • Added Cross Gender option when randomizing classes.
  • Fixed an issue where FE8 monster weapons were getting 1-2 range causing crashes.
  • Fixed an issue where FE8 wasn't determining an appropriate promoted class for trainees (should only affect random recruitment).

v1.0.0

  • Initial Release.


So a few weeks back, after talking about randomizers and other things we could potentially randomize, I decided to start a project to roll all of the possible randomizers into one easy-to-use package. The most well known randomizer is probably the class randomizer, for which there exists apps/scripts to randomize FE7 and FE8, I believe (not sure about FE6). I think there's a weapon stat randomizer somewhere as well for FE7, though I'm not sure about the other ones. Finally, one of my buddies on /r/fireemblem came up with an idea to randomize growths for a character as well, which I thought was a neat idea, though at the time, one person had to randomly generate it by hand.

The purpose of this project was to give the user as much control as they wanted to randomize their game in the most accessible way possible.

In any case, the fruits of that project were recently borne with the v1.0 release that I put up on /r/fireemblem and would like to share here as well. The project is open source on github and is written in Visual Basic for the Windows platforms. I have plans to do a mac one at some point in Cocoa right after I get my new macbook, so in the meantime, this is Windows only. (Somebody suggested an Android version as well, which might be a reality if I can remember how to do android programming (did it a couple of years back, but my forte is in iOS development.)

Github link: https://github.com/lushen124/Universal-GBA-FE-Randomizer-Windows

Link to Randomizer: https://github.com/lushen124/Universal-GBA-FE-Randomizer-Windows/blob/master/GBA%20FE%20Stat%20Randomizer/GBA%20FE%20Stat%20Randomizer/bin/Release/GBA%20FE%20Randomizer.zip

The zip file includes the executable as well as Arch's Tutorial Slayer patch, which is necessary for FE7.

Run the executable and you'll be greeted with a scroll that looks like this.

CRO9p0C.png

Everything is grayed out initially until you select a valid file using the Browse... button. Assuming you fed it a valid file (determined by the header, assuming it's a GBA header and has either game code AFEJ (FE6 JP), AE7E (FE7 NA), or BE8E (FE8 NA), all of the options will re-enable themselves and the game you fed it should show up properly underneath. Feeding it something invalid will let you know the game code it detected.

Most options are self explanatory, but if you need help on any of them, a tooltip will show up if you hover your mouse over the checkboxes or numeric controls.

As a reference, here's a quick rundown:

Randomize Growths: For every important character (i.e. has a character entry), it takes the total amount of growths that unit has and redistributes it across all growth areas.

For example, FE7 Eliwood has 80% + 45% + 50% + 40% + 45% + 30% + 35% = 325%. This option will take that 325% and randomly assign growths so that it still totals up to 325%.

Maybe you'll get an Eliwood that's 100% HP, 50% STR, 25% SKL, 25% SPD, 100% LCK, 15% DEF, and 10% RES.

Or you may get an Eliwood that's 10% HP, 10% STR, 10% SKL, 150% SPD, 45% DEF, and 100% RES.

Growth variance adds or subtracts a random amount up to the specified number to their totals. So if you set a variance of 20, then Eliwood could start with anywhere between 305% and 345% to distribute.

Force minimum growths will ensure that every growth has at least 5%. Without it, 0% growths are a (very real) possibility.

Use weighted HP growths tries to lean more heavily on HP (since that's true most of the time).

Randomize Bases: Same as growths, except with your personal bases. You may know this, but a character's base stats are determined by the sum of their personal base and their class base. This option only redistributes their personal bases.

Base Variance is the same as above. It adds or subtracts a random amount up to the specified base from the total bases a character has before redistributing.

Randomize CON: Exactly as it sounds like, but this works differently than above. There is no redistribution here, just a random number up to the variance specified that is added or subtracted from a character's personal CON.

For example, FE7 Eliwood starts with 7 CON. With a variance of 1, he could start with 6 - 8 CON. With a variance of 2, he could start with 5 - 9 CON. With a variance of 3, he could start with 4 - 10 CON. And so on.

A minimum CON value is also an option in case you really don't want to deal with anything lower than 3 CON, for example. Any CON that ends up less than this value is brought up to this value.

Randomize MOV: Unlike the above, this operates on a class level, and is strictly determined by the range given. Note that male and female variants of a class are considered different classes. The range is determined by the minimum and maximum specified.

Randomize Affinity: So straightforward it doesn't even have any options. It just assigns a random affinity to every major character (bosses included, though I don't think that matters much unless you're one of the desert bandits).

Randomize Items: So many options... This gives you the ability to make random tweaks to weapons. They mostly operate with the same pattern. The variance is the amount of change you want to allow for a weapon's stat. For example, let's say you have an FE7 Iron Sword. It has 5 MT by default. If you set the Might variance to 5, then it could end up anywhere between 0 and 10 MT. If you don't want any low might weapons, you can set the Minimum Might to a desirable value and it will make sure weapons never go below that value. Every other stat works the same. Weight also allows you to set a maximum in case you don't want anything weighing more than 20 WT, for example.

The final, and in my opinion, most interesting option is the ability to randomize traits. What this does is give every weapon in the game an additional random trait on top of it's normal version. The potential traits include Brave Effect, Unbreakable, Devil, Poison, Reverse weapon triangle, Eclipse effect, Magical Damage, Negates Defense (in supported games only), effectiveness to a group of classes (limited to the existing ones), or a random stat bonus (limited to the existing ones). So, for example, maybe all Iron Swords become brave in your game, or all iron axes are actually good against swords, or all iron bows halve your HP (this one is particularly annoying).

Randomize Classes: The meat of it all. Takes all characters and gives them a random class. The options here are straightforward, but without any additional options, Lords, Thieves, and Bosses are not randomized. This is mostly so that the game is more stable (i.e. less issues with lords getting force promoted, or lacking a thief when you need one, etc.). The options re-enable them as desired.

Allow Unique Classes will add more exotic classes to the pool. This includes Dancers, Soldiers, and Manaketes (in supported games). In FE8, this also adds monster classes to the pool.

Buff Enemy Growths: You may know that most basic enemies get their stats from an autoleveling routine in the game based on class growths. This allows you to increase those values for a harder game. The options do exactly as they sound like: Up To Amount is 0 up to X, Exactly amount is exactly X, and At Least Amount is X up to 255. I recommend not doing that last one. I may just remove it because it's not really practical, IMO.

Also Buff Bosses will give every boss character a somewhat matching buff so that they don't end up significantly weaker than the regular enemies on the map.

Recruitment: This is probably the buggiest piece of the entire thing. You know those Reverse Recruitment patches that are floating around out there? This attempts to do it programmatically, with varying degrees of success. If you want to play reverse recruitment, you should probably just use one of the patches. Randomized recruitment might still have some use though if you want to experiment around with it. It does exactly as it sounds: re-arrange when each character joins the party. Does not affect scenes though, so there's some disconnect, story-wise.

Some Screenshots:

bkF3tf2.pngoHzNd3R.png01K39El.png

Additional Notes:

  • Soldiers can actually promote if you randomize classes. I added logic to allow Soldiers to promote with the use of a Knight's Crest. In FE6 and FE7, they promote to General, while in FE8, they get the choice of General or Paladin.
  • Lords can also promote with less exotic items, in case you're stuck with 5 Eliwood Lords. Most use a Knight's Crest, but Lyn Lord uses a Hero Crest instead.
  • Monsters in FE8 are also given promotions if you randomize classes. They use the item you'd expect them to, that is: Mogalls use Guiding Rings, Revenant, Mauthe doogs, and Bonewalkers use Hero Crest, Baels and Tarvos use Knight's Crest, Bow Bonewalkers use Orion's Bolt, and Gargoyles use Elysian Whips.
  • Note that random item effects are additive. Brave Bow will always be Brave, but may also get, say, magical damage.
  • Magical weapons (except axes) will automatically get 1-2 range if they weren't already (this is the only reason why Magic Weapons are a thing in FE6). In addition, Magic Swords and Lances will be assigned a random spell animation if they do not already have one.
  • Some item effects are mutually exclusive. Namely, Devil, Eclipse Effect, and Poison, because they cannot be combined with each other from a technical standpoint.
  • Some characters are always exempt from class randomization. Mostly final bosses and some big name NPCs.
  • The randomizer *potentially* works with other hacks/patches, depending on how involved they are. Repointed tables are ok, but obviously, the number of items or characters the randomizer thinks there are will be off, not to mention, it no longer knows who's a boss and who's a playable character. Patches that don't modify the game too much should be ok, but full on hacks probably won't work.
  • For FE6, please use the translation patch here: http://serenesforest.net/forums/index.php?showtopic=41095 before feeding it to the randomizer. I may do this automatically in the future for you (like Arch's tutorial slayer patch), but it doesn't do it right now.

There are some other things, but you'll find them as you play around with it.

I make no guarantees about this being bugfree. It went through v0.33, v0.66, and v0.99 before finally being good enough for a v1.0 release, so most major issues should be ironed out. However, there can still be other issues nobody has found yet. Please report them so that I can get them fixed.

Edited by lushen124

Share this post


Link to post
Share on other sites

And do note I'm working with him to upgrade it. No promises, but we're looking into adding new stuff, such as randomized chests/villages, randomized enemies, all sorts of other things. It's great right now and certainly the most complete one in the fandom so far, but I'm hoping we can take it to new heights together :D

Oh, and a fix patch. That will likely be a thing as well, and unlike Cam or Ephraim's, we'll be able to auto-apply it as well so you won't even have to do that bit yourself. Hooray for hacking fandom progress!

Edited by Klokinator

Share this post


Link to post
Share on other sites

Hooboy. I'm going to have fun messing around with this. This is reminding me of the Pokemon randomiser. That thing was amazing.

Share this post


Link to post
Share on other sites

Hooboy. I'm going to have fun messing around with this. This is reminding me of the Pokemon randomiser. That thing was amazing.

I actually mentioned this to him, and it turns out he never even used it before/knew it existed. It's just one of those funny coincidences. However, I've been using it for years and the pokemon randomizer is what originally got me into randomizers in general and is what eventually led me to ask "What if FE had a randomizer?" and well, yeah. Inadvertently, it was the inspiration for all randomizers on the internet, I believe.

Share this post


Link to post
Share on other sites

I have problems starting the executeable, because I don't know how to correctly open ICO programms.

Can you give me a more in depht explanation how to correctly start up the randomizer and apply it?

Share this post


Link to post
Share on other sites

Holy cow, this looks amazing. Looking forward to seeing this develop further!

A few requests:

-Semi-randomized starting inventories so that characters come with items they can use (is this already part of it? haven't tested it yet)

-Would it be possible to add in classes not present in other games? (for example, monsters, monks, Hector lords, etc. in FE6, Kings in FE7, etc.)

I'm gonna try this with FE6 as soon as I can.

Share this post


Link to post
Share on other sites

Uh, run into a bug of sorts already. Garcia was replacing Eirika, randomised recruitment. His ax rank has carried over.

9aq0ssG.png

E - Got another one! http://i.imgur.com/hfLJ5PF.png

Weird, I just tried 4 times, and all of the weapon ranks I got were consistent.

u7hme5z.png

I assume you did random recruitment as well as random classes then? Because otherwise, Garcia should remain a fighter or a warrior. Are there any other settings you used? Not sure why the other ones would make a difference, but any info helps. :)

Share this post


Link to post
Share on other sites

hey, this is pretty awesome, nice work!

now do one for fe4

GIve me nightmare modules, and I can. :)

Actually, Klok already sent me some for the SFC games, so I'll be looking over those at some point.

Share this post


Link to post
Share on other sites

Holy cow, this looks amazing. Looking forward to seeing this develop further!

A few requests:

-Semi-randomized starting inventories so that characters come with items they can use (is this already part of it? haven't tested it yet)

-Would it be possible to add in classes not present in other games? (for example, monsters, monks, Hector lords, etc. in FE6, Kings in FE7, etc.)

I'm gonna try this with FE6 as soon as I can.

Inventories are already randomized. The missing feature is the option to keep them consistent. :)

In its current state, the randomizer does not add any new content in. It only takes content already available in each game and randomly assigns them/tweaks them about as much as you could do with a hex editor.

New content was beyond the scope of the project initially, not to mention doing it programmatically would be a pretty interesting challenge.

Share this post


Link to post
Share on other sites

What we're going to try doing first, guys, is adding every possible feature for the GBA games first. Once that's done, we'll add support for FE5 after that, then FE4, and if any games come after that, it'll probably be FE9 or FE10. The NES games aren't out of the question but it's dependent on demand entirely. As far as new classes, that's what the optional fix patch would be for.

Also, suggestions are great, but try using it before making suggestions.

Edited by Klokinator

Share this post


Link to post
Share on other sites

As the project is on github, are you open to forks/pull requests?

Share this post


Link to post
Share on other sites

Ross replaced Seth but came as a Journeyman. I assumed he got made into a tier 3 one, since he was replacing Seth, but he gained standard Journeyman EXP, had the tier 1 caps, and capped at level 10. However, the auto-promote event hasn't happened. Do trainees not work with random recruitment?

Edited by Endomorph

Share this post


Link to post
Share on other sites

This is a pretty nifty tool. I was actually working on one myself, but then other things got in the way and I just never got back to it.

I was playing around with this on an FE7 ROM. I have to say that I strongly disagree with restricting female characters to such a small class list.
Since it's a randomizer, just let everyone become any (usable) class. I don't think folks are going to be upset if Florina becomes a fighter or something, due to the nature of the project. Plus, restricting the gals to the 'traditional' classes they're often in makes them feel same-y, since many of them will get classed to the same thing.

And yeah, definitely do something about the lords' base stats. Lyn tends to get screwed in the prologue due to bases + small class selection. Many times she was rolled as a healer or dancer, which requires re-rolling the entire ROM, or manually editing her.

Share this post


Link to post
Share on other sites

And yeah, definitely do something about the lords' base stats. Lyn tends to get screwed in the prologue due to bases + small class selection. Many times she was rolled as a healer or dancer, which requires re-rolling the entire ROM, or manually editing her.

I haven't tested yet, but this should be compatible with my FE7 fix patch from the other thread. In that case, lord bases would be fixed.

No promises though. I personally recommend using randomized recruitment if no fix patch, so that way you get non-lords as your lord. And then the crappy lords with no fixed stats will be relegated to a throwaway character slot where you can ignore them later on/let them die/never use them.

Share this post


Link to post
Share on other sites

This is a pretty nifty tool. I was actually working on one myself, but then other things got in the way and I just never got back to it.

I was playing around with this on an FE7 ROM. I have to say that I strongly disagree with restricting female characters to such a small class list.

Since it's a randomizer, just let everyone become any (usable) class. I don't think folks are going to be upset if Florina becomes a fighter or something, due to the nature of the project. Plus, restricting the gals to the 'traditional' classes they're often in makes them feel same-y, since many of them will get classed to the same thing.

And yeah, definitely do something about the lords' base stats. Lyn tends to get screwed in the prologue due to bases + small class selection. Many times she was rolled as a healer or dancer, which requires re-rolling the entire ROM, or manually editing her.

I may add an option to break down gender lines, but I intended for them to be kept just for some sense of consistency. FE7 is the only game that has this problem since I think both FE6 and FE8 are pretty good with female classes being naturally working in the game.

The randomizer also should be making sure lords can't be turned into non-attacking or non-promoting classes, actually. So this rules out Dancer, Cleric, and Troubadour. Yes, Lyn really only has her original class, Mage, Pegasus Knight, and Archer beyond that. PK might be a bit hard, but the other three should be perfectly doable.

I'm not really sure what to do with the lord personal bases, so they're unchanged. I'm open to ideas, but it ideally needs to be something that is agreed upon. There are other things that might warrant discussion, like monster promotion bonuses in FE8.

Share this post


Link to post
Share on other sites

Ross replaced Seth but came as a Journeyman. I assumed he got made into a tier 3 one, since he was replacing Seth, but he gained standard Journeyman EXP, had the tier 1 caps, and capped at level 10. However, the auto-promote event hasn't happened. Do trainees not work with random recruitment?

Oh, I might have screwed that up. I don't think I remembered to check for the trainee classes when converting classes.

Share this post


Link to post
Share on other sites

I may add an option to break down gender lines, but I intended for them to be kept just for some sense of consistency. FE7 is the only game that has this problem since I think both FE6 and FE8 are pretty good with female classes being naturally working in the game.

It's not really a randomizer if it tries to be consistent ;)

Also, for lord bases, you could just take like a third of their class bases and transfer them to character bases or something. Other characters that start as a lord class are probably pretty strong since the lords only operate off of class bases + their luck.

Share this post


Link to post
Share on other sites

Gonna have to throw in a vote for greater variety in class randomization for female characters. I don't really mind if they're restricted to their original gender for classes like Mage or Cleric, but the potential for hilarity with classes like brigand and fighter are simply too great to ignore. Also wouldn't mind if male characters could become dancers. :smug:

I have another couple of ideas/requests. I apologize for the number of requests, but I really see this utility as potentially bringing all new life into these games. It's made my new FE6 run exciting and fun for the first time in a long while.

-To make playthroughs without thieves less painful, maybe door and chest keys could be added to all or most shops.

-Maybe there could be an option that makes it so all promotable classes can promote with all promotion items. Alternatively, all promotion items could be combined into one. This would make it so that players wouldn't necessarily be completely screwed over if they end up with a team of 90% magic-using classes or something.

-Somewhere down the line, could bosses potentially be added to the list of random recruitment characters, and normally playable characters added to the list of boss characters? This could potentially increase the craziness.

Current status in my current FE6 playthrough:

Roy: Shaman

Bors: Bard

Allen: Bard (love the abusability of having two bards)

Marcus: Swordmaster (YESYESYES)

Wolt: Myrmidon (awesome!)

Lance: Knight (not so awesome...)

Lot: Brigand

Wade: Mage

Deke: Mage

Shanna: Archer (with a poison bow and longbow, hell yeah!)

Elen: Shaman

Chad: Mercenary

The first boss was a Roy Lord...

This is quite awesome and I can see myself randomizing the GBA FE games to keep them fresh for years.

Share this post


Link to post
Share on other sites

Yo, this is pretty sweet. I'm running it through Lyn Hard mode and having a blast. One little issue I've noticed so far is that Rath's scripted battle hangs the game if he doesn't have a ranged weapon equipped, but fortunately you can skip the whole scene. Erk's battle doesn't have any problems though (I assume because it isn't 'scripted' in the sense that Rath's is).

It also seems that the Weighted HP growths option doesn't seem to work? I went into Nightmare to check the growths of randomized characters and saw a few 10% or lower HP growths. This was with Minimum Growths checked also.

Third problem: Using Randomized Recruitment and Randomized Classes, Lowen (replacing Matthew) joined as a Thief with D Lances (+D Swords).

Edited by Vennobennu

Share this post


Link to post
Share on other sites

Current status in my current FE6 playthrough:

[snip]

Shanna: Archer (with a poison bow and longbow, hell yeah!)

[snip]

This is quite awesome and I can see myself randomizing the GBA FE games to keep them fresh for years.

Yeah, I too love playing FE with randomized classes. And my Shanna's an archer too! She's a huge help, especially since Wendy came as a nomad with a free killer ballista >:3. She's only level 11 or 12 and she's already capped speed! Apart from that, a few notable members of my team are Mercenary Roy, Shaman Lilina, Myrmidon Elen (capped skill at level 12), Lord Barth I think it is? The guy who's usually a knight that joins with Wendy, and the true MVP: Bandit Alen. That guy solves all of my problems :3

Also, is there any chance of making the battle preparations shop sell Flux earlier? I've already burned through about half of Lilina's starting tome, and I'm afraid of not being able to find another until Sophia joins..

Edited by The Magus

Share this post


Link to post
Share on other sites

Yo, this is pretty sweet. I'm running it through Lyn Hard mode and having a blast. One little issue I've noticed so far is that Rath's scripted battle hangs the game if he doesn't have a ranged weapon equipped, but fortunately you can skip the whole scene. Erk's battle doesn't have any problems though (I assume because it isn't 'scripted' in the sense that Rath's is).

It also seems that the Weighted HP growths option doesn't seem to work? I went into Nightmare to check the growths of randomized characters and saw a few 10% or lower HP growths. This was with Minimum Growths checked also.

Third problem: Using Randomized Recruitment and Randomized Classes, Lowen (replacing Matthew) joined as a Thief with D Lances (+D Swords).

Ok, you're the third person that has reported this, so I'll have to take a look at the randomized units having incorrect weapon ranks.

The weighted HP growths are not guaranteed to give you higher HP growths, but only make it more likely. The option doesn't seem to be too useful, and it's a bit misleading, so I may just remove it and give something better.

Share this post


Link to post
Share on other sites

Yeah, I too love playing FE with randomized classes. And my Shanna's an archer too! She's a huge help, especially since Wendy came as a nomad with a free killer ballista >:3. She's only level 11 or 12 and she's already capped speed! Apart from that, a few notable members of my team are Mercenary Roy, Shaman Lilina, Myrmidon Elen (capped skill at level 12), Lord Barth I think it is? The guy who's usually a knight that joins with Wendy, and the true MVP: Bandit Alen. That guy solves all of my problems :3

Also, is there any chance of making the battle preparations shop sell Flux earlier? I've already burned through about half of Lilina's starting tome, and I'm afraid of not being able to find another until Sophia joins...

Finally, I'd like to say that while breaking down the gender barrier would make a nice option, I hope it would be an option, rather than replacing the ability to have classes stay gendered.

It's possible, but the randomizer doesn't look at shop data right now. (Random shops? lol)

It shouldn't be too hard to add unless it's already reached its limit on number of items sold, which I don't remember what it is.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.