Zeta's ASM/C Spellbook

Okay, for those following at home:


Here’s a new download. However, the only thing that’s changed is the lyn output at the bottom of the installer. And it’s the same fix that I posted several posts up, so if you already put that in your installer there’s nothing else to do.

The lag we’re discussing in the previous few posts is mostly because Blademaster’s chapter has something like 70 units + what I’d assume is a pretty big leadership table. Even then it’s not noticeable unless you’re rapidly switching targets with a siege tome. It’s pretty much an extreme edge case, adding code to combat it isn’t worth any possible downsides.

1 Like


Just a quick bugfix (items with no use descriptions were showing attack stats).

3 Likes

Let’s face it: writing text for Fire Emblem hacks sucks. Having to manually insert newlines and [A] is a huge pain. It’s hard to get the spacing right, and you always end up fiddling with it for far too long, or accidentally missing an [A] and causing a text skip. The end result is hard to read, too - littered with [AN] and [Beat] and [ToggleMouthMove].

Wouldn’t it be nice if you could just type like normal and the game would insert newlines for you? What if it could calculate how long sentences are, and intelligently place newlines and A presses to keep them together on the same text box?


This hack intelligently inserts [A] and [NL] codes in text, as well as handling multiple other text codes automatically (for example, turning … into [Beat]). Installation is fairly simple:

  1. #include the Installer.event. It has to be included after Anti-Huffman (usually included in the essential fixes). This hack hooks into Anti-Huffman.
  2. Read the README.txt to get an idea of how to use the hack. It even comes with some example text entries you can insert to get a feel for how the hack works.
  3. Adjust the options in Installer.event… or leave them at defaults, either works.
  4. Have fun writing text without the hassle of manual newlines.

While all code in this hack is original, credit for the concept/idea goes to laqieer ( https://github.com/laqieer/FE7CNLOL/blob/master/src/FE7CNText.c ). I certainly would not have thought to do this on my own.

Note that this hack assumes your Anti-Huffman is installed in the standard location (specifically the " ORG 0x464470; AntiHuffmanFreeSpace:" bit.) If your Anti-Huffman is elsewhere for some reason, just drop me a line and I can make you another hook.

As usual, this hack was written in C with Stan’s FE-CLIB and converted to EA format by lyn.

16 Likes

Two things.

First, a quick compatibility update for LevelUpRework. This makes it work with the upcoming Str/Mag split that should be merged into SkillSystem soon. If you’re not planning on using that, you don’t need to download this. If you are, then download it and install as normal (no further steps required).

Secondly and more interestingly…

Ever had an autoleveled enemy mercenary luck out on STR/SPD and blow poor Neimi away in one round? Ever wish you could make enemy autolevels less random? Ever wondered why promoted enemies have way higher stats in hard mode?


This hack gives you multiple options to tweak how autoleveling works.

  • Normally, the game adds an extra random bonus to autoleveled growths, which makes enemy stats more variable. You can reduce, eliminate, or even increase this bonus.
  • You can specify the amount of ‘bonus’ levels a promoted unit gains. In vanilla, on normal mode this is +9 levels (as if the unit had promoted at level 10)… but on Hard, it’s +19 (as if every enemy unit promoted at level 20)
  • There’s an option to further reduce variance by calculating all growths at once using the promoted class’ growths (instead of autoleveling twice, once for ‘before promotion’, once for ‘after promotion’). See the readme for more details.
  • Finally, it turns out that the difficulty level bonus/penalty is applied separately from autoleveling. There’s an option that does them both at once, to further reduce randomness.
  • Oh, and I threw in the ability to disable level bonus/penalty being applied to bosses. Might be useful.

Installation is simple: #include the Installer.event, change options as desired.

Credits to decomp ( https://github.com/FireEmblemUniverse/fireemblem8u/blob/master/src/bmunit.c ) for making it far easier for me to understand how autoleveling works.

8 Likes

I’m apparently extremely good at releasing hacks, then realizing that I missed something the day after.

So… AutolevelTweaker v1.1 is out. I updated the link in the post above.

Basically, I found out that level bonus/penalty from difficulty is applied separately from autoleveling. The new version of AutolevelTweaker can do both at once (meaning only one growth roll and less variance). With all options combined, you can now have enemy units only vary by 0-1 stat point.

1 Like

Quick fix for anyone using tactician names with AutoNewline, just replace the lyn output in Installer.event with that.

No need to download this if you aren’t.

2 Likes

Just a bit of confusion around installing LevelUpRework.
So I’ve #included the Installer.event to the LevelUpRework.c file, and then I’ve used EA to assemble the LevelUpRework.c file onto my gba file.
Is this correct? Because I’ve run into a few errors trying to assemble this.

That is not correct. The .c file is the source code for the hack, it’s provided if people want to modify how the hack works. If you just want to install the hack you don’t have to do anything with it.

You need to #include the Installer.event from somewhere in your buildfile.

Alternately, if this is the only hack you’re installing with Event Assembler, you’ll need to add this to the start of the file:

#include “EAstdlib.event”
#include “Extensions/Hack Installation.txt”
ORG 0xEFB2E0

The first two lines include necessary definitions for the hack to install. The “ORG 0xEFB2E0” tells Event Assembler where to write the hack to - if you don’t do that, it’ll write it to the start of the ROM, completely breaking it. 0xEFB2E0 is free space in the ROM (assuming you haven’t already installed other things there!)

That said, this assumes you’re assembling to a vanilla ROM - if the ROM you’re assembling to is modified by FEBuilder, I believe FEBuilder has an ‘install with event assembler’ option somewhere, so that would be better to use.

Thanks so much!
Instructions were super clear and it now works like a charm.

1 Like

LeadershipStars is now merged with the skill system master!

This makes it much easier to install.

All you have to do is uncomment

// #include “LeadershipStars/LeadershipStars.event”

in _MasterHackInstaller.event, then edit LeadershipStars.event (under Engine Hacks/LeadershipStars) to change settings as you wish.

4 Likes

(see link in next post)

Might as well just post this thing so it’s public. Right now there’s one outstanding problem - namely, that if you have a sentence too large to fit within a single textbox, it doesn’t look very good. I will be addressing that in the future, hopefully within a few weeks. Other than that, it’s much better than the old version. See the video for an example of how it looks now (with the DynamicTextboxSize option).

3 Likes

Small update - this version uses

[ConversationText] = [0x80][0x90]
[BattleText] = [0x80][0x91]

instead of just [0x90] and [0x91]. This makes it far less likely to conflict with stuff. More specifically, it uses [0x80] for the first byte, then the options in the config file for the second byte (defaulting to 0x90 and 0x91 as before). Make sure to update your ParseDefinitions to match.

4 Likes

Update to ChangeChapterObjective - now it can change chapter turn limit text too.

  • SetTurnLimitText(number) will change the turn limit display.
  • CHECK_TURNLIMIT will return 1 in event slot 0xC if the current turn limit has been exceeded.

Installation remains the same (#include Installer.event, use provided macros in your events). This hack does now use Trap ID 0xEE as well as 0xEF, though on the off chance that this conflicts with something it can be easily changed.

Too lazy to post screenshots this time so just have a link:

5 Likes

Regarding the Level Up Rework:

It seems to write to 0x2ba28 which conflicts with this: