Zeta's ASM/C Spellbook

#1

Everything here is free to use and modify.
Credit is not mandatory, just don’t take my stuff and claim you’re the one that made it.
Everything here is for FE8.
With the exception of MurderSticks, every hack here was written in C with Stan’s FE-CLIB and converted to EA format with lyn. If you want to modify/recompile a hack here you’ll need both.

Ever wanted to include arenas in your hack, but didn’t want people abusing them to max units out?

Arena Limits + Non Lethal Arena



Download Here - Version 1.1

This hack allows does two things:

  • Allows you to set limits on arena usage. You can set a level limit, a turn limit, both or neither.
  • Allows you to optionally make arenas nonlethal - lose, and you’ll just lose your gold and be spit out of the arena at 1HP.

Installing it is relatively simple:

  • Go into installer.event and change the ArenaLevelLimitTextID define to whichever textID you want to replace. The text itself is built in RAM, so you don’t have to do anything further to have it display.
  • Edit the ArenaLimitTable as desired.
  • If you want lethal arenas back, change the _NonLethalArena define to 0x0 instead of 0x1.
  • If you use a higher maximum level than 20, change the related #define.

It should be compatible with anything that doesn’t alter the arena command usability routine (or the routines I hooked to make arenas nonlethal). Though this hack does store its text in RAM - if you find that this does conflict with another hack, just go and change the FreeSpaceRAM define to a different free RAM location.

Tired of empty level ups/lords getting stat screwed? Want to change maximum levels or maximum luck?

Level Up Rework


Download Here - Version 2

This hack allows you to set a few things:

  • Minimum stats gained per level up
  • Minimum stats gained per level up for characters with the Lord ability
  • The maximum level for all units, and the maximum level for specific classes. So you could have all classes max out at level 15, or some classes max out at level 30, or both.

There’s nothing special to do to install it - just change the settings in Installer.event to suit your needs and then #include it.

It should be compatible with anything that doesn’t modify the same routines, and I’ve tested to make sure it’s compatible with the skill system.

Ever wanted to include offensive staves in your hack?

Murder Sticks

Download Here - v1.0.1

Normally, offensive staves won’t display their statistics in the attack/item windows (since the game expects staves to display an item use description instead). This hack fixes that problem.

Note that unless you modify the default priest/cleric animations (they need to have the right code to wait for the enemy’s HP to deplete), trying to play attack animations for them softlocks the game. So I’ve included fixed versions of those animations in the zip (made with Animation Assembler). Just #include those ontop of the Installer.event and you’re good to go.

Ever wanted to change a chapter’s objective through events?

ChangeChapterObjective


*Download Here

This hack allows you to change chapter objective text through events. Installation is simple - just #include the Installer.event, then use the provided SetChapterObjectiveText(textid, textid2) macro in your events as necessary. The first text ID is the short objective (the one shown on the map itself), the second one is the longer objective text (shown in the prep screen and status screen).

This stores the new textIDs to be read in trap data. It shouldn’t conflict with any other hacks, unless they also use trap type ID 0xEF. And if that does happen, I can just change the id to something else. If you don’t use SetChapterObjectiveText, it just reads the values from chapter data like in vanilla.

Special thanks to Leonarth for providing multiple suggestions (storing the new textIDs in trap data), and Stan for catching a bug before I posted this.

Ever wanted a little more 776 in your 8? Or just liked the idea of leadership stars?

LeadershipStarsFE8


https://www.dropbox.com/s/k3lbldm2plqeq52/LeadershipStars%20v2.1.1.7z?dl=0

This hack brings the ‘leadership stars’ mechanic to FE8. Units with leadership stars grant a (configurable) Hit / Avoid bonus to all units of the same allegiance. It requires the Skill System and Modular Stat Screen. Installation is slightly complicated:

  1. #include the Installer.event - note that it has to be included before Master Skill Installer.event! Edit the LeadershipTable, and other options as desired.
  2. Go into Skill System\Battle Calculations.event, and add

LeadershipHook

after one of the POINs. You should end up with a line that looks similar to this:

POIN LeadershipHook ElbowRoom NaturalCover Gamble FieryBlood LifeAndDeath WindDisciple Perfectionist Puissance Hawkeye LightWeight Trample Opportunist

  1. Take the contents of “put these in your text buildfile.txt” and put it in the top of your text buildfile. If you’ve changed the hit/avoid bonus, you probably want to update the text to match.
  2. Copy the contents of the ‘mss stuff’ folder into your MSS folder (it should overwrite ModularStatScreen.event, and the mss_page1_skill.dmp/s files)
  3. (Optional) If you’re using icon 0xCA already (it’s an unused icon in vanilla), it’s possible to change what icon is used for the star. You’ll have to change it in Installer.event, and in mss_page1_skills.s, StatusScreenEnemy.s and StatusScreenPlayer.s (don’t forget to run Assemble ARM on again after changing the icon number)

By default this replaces the affinity/element icon on page 1. If you don’t like that, it’s not too hard to whip up your own MSS settings. It also replaces the textID for one of the debug menu options (the third, which doesn’t even work anyway).

This changes the unit count on the ‘Status’ screen to instead display the total amount of leadership stars for ally and enemy units, so players can have a quick way to view total leadership.

As usual, this hack (well, LeadershipFunctions.c at least) was written in Stan’s FE-CLIB and converted to EA format by lyn.

12 Likes
#2

Quick questions, can the level of the arena limit chapters?

#3

Arena level limits are separate per chapter. You can have different chapters with different level limits.

1 Like
#4

It’s just like fe4. It’s wonderful.

#5

With the Arena Limit hack, the limit is the same for unpromoted and promoted units?

#6

Currently yes, though I might change that later. Not 100% sure how I’d want to handle promoted units yet.

#7

Most things regarding level treat promoted as a static +20

#8

I could do something like: A level limit of 25 would equal ‘all non promoted units and level 5 promoted units’

But I’m not sure how you’d communicate that information to the player. Shame the brown text box is so limited.

#9

How about that check promoted unit ability of class?

#10

Checking if a unit is promoted or not is easy, yeah.

Hmm, if I switch over to using this text box I should have a lot more room.

Then I could say something like:
Arena Level Limit: 6
Promoted units not allowed.

Arena Level Limit: 6
No limit for unpromoted units.

(or whatever, the strings would be changeable to your liking)

1 Like
#11


New version soon.

1 Like
#12

New version now. Installation is the same as before, just a couple new text strings that you can change if you feel like it.

1 Like
#13

Normally, offensive staves won’t display their statistics in the item/attack menus…


This hack fixes that problem.

Note that unless you modify the default priest/cleric animations (they need to have the right code to wait for the enemy’s HP to deplete), trying to play attack animations for them softlocks the game. So I’ve included fixed versions of those animations in the zip (made with Animation Assembler). So just #include those ontop of the Installer.event and you’re good to go.

9 Likes
#14

Hey. How would I go about adding the additional animation events to FEBuilder?

#15

I do not use FEBuilder (at least in the sense of modifying ROMs with it), so I don’t know.

Fortunately it’s a simple fix, and I assume FEBuilder can just edit the animations itself. Go to 0x7F and 0x80 of the battle animations, and insert the ‘wait for HP to deplete’ code before the ‘begin opponent’s turn’ code (I put it one frame before). Do this for every ‘attack’ mode (you don’t have to change the dodges).

#16

Thank You so much! Been wondering how to add staff attack animations for Priests and Clerics for the longest.

#17

Murder sticks working like fe9-10 stick?. That’s awesome.

#18

Ever wanted to change a chapter’s objective through some event, and been told you had to make a copy of the map and use LOMA? Well, that’s too clunky for me and I have the power to fix it, so…


Requires lyn.

This hack allows you to change chapter objective text through events. Installation is simple - just #include the Installer.event, then use the provided SetChapterObjectiveText(textid, textid2) macro in your events as necessary. The first text ID is the short objective (the one shown on the map itself), the second one is the longer objective text (shown in the prep screen and status screen).

This stores the new textIDs to be read in trap data. It shouldn’t conflict with any other hacks, unless they also use trap type ID 0xEF. And if that does happen, I can just change the id to something else. If you don’t use SetChapterObjectiveText, it just reads the values from chapter data like in vanilla.

This was written in C with Stan’s FE-CLib. Special thanks to Leonarth for providing multiple suggestions (storing the new textIDs in trap data), and Stan for catching a bug before I posted this.

10 Likes
#19

Thank you for making this, it’s amazing.

1 Like
#20

Don’t like the music changing when there’s only one enemy left? Well, I know I don’t.

Does nop-ing a single opcode count as a hack? I don’t know, but either way, here you go:

PUSH
ORG 0x1609E
SHORT 0x0
POP

2 Likes