Sme’s ASM and Miscellany

I am in love. Thank you, Sme.

I’ll be sure to follow up with questions once I try to get this working.

1 Like

Some quick questions:

  1. Does this work with the leadership star patch? I’m assuming the MSS parts just overwrites the visuals for it?
  2. What do you believe is the current max number of player characters this patch will allow?
  3. Is there a “lord is immune to fatigue” like with Leif option?
  4. Is there a version where being over fatigued only causes the stat debuff and still allows you to redeploy?

Question of my own is this compatible with FE_Builder_GBA or should I use another software to implement it? Also this looks awesome. Fatigued never gets any love, it’s actually a really smart mechanic.

Yes, you just need to make an MSS layout that shows both

It only adds 4 bytes to each saved character pushing it to 0x30 bytes each, the save chunk is 0x0AA8 bytes long so the cap becomes 56 (previously 62). There is an additional 0x21C bytes of free space that the save chunk size could be expanded by, so setting the size to 0xBA0 would restore the cap to 62.

Oh poop I forgot to mention this part
There’s a list of unit IDs immune to fatigue, as well as a setting for first chapter where fatigue should apply.

Not natively, but if you alter the function that hooks at the prep screen to always return false, units will not be denied deployment

Intended to be applied with EA as part of a buildfile, but if you manually handle the parts that would be handled there you can apply it to any given rom in theory; I would recommend applying this to a clean rom using skillsystem buildfile first then building your hack off of there

1 Like

Fatigue sounds like it would be really useful. I will definitely be using this in a future project…

[ASM] Split Promotion Items (FE8)

Allows the usage of different promo items to result in different classes when used, similar to the Elysian Whip in DSFE.

It also retains the function of vanilla FE8 split promotions, so you can have items like the Master Seal give a choice and separate promotion items to force one or the other pick.

Download

This hack is completely standalone and does not require or integrate with anything else. Afaik it doesn’t conflict with anything else either. To install, just #include “SplitPromoItems.event”. The lists for associating used promo item with list to reference, list of master seal items, and lists of class-promotion pairs for each class are included in that installer.
The default class settings are only present so things don’t get funky when a class can use a promo item and there is no associated promotion option on the table, it’s in no way balanced or even thoroughly thought through and you are free to change it as you see fit.

22 Likes

Pikmin’s gonna love this.

2 Likes

Great! I was thinking about having vanilla seals for regular classes and special seals for future hybrid classes.

1 Like

I think I found a bug.

If you use an item that heals fatigue based on might, and the value becomes negative, it causes the fatigue value to loop.

1 2 3

I believe this section of the fatigueitem.s file is the culprit:

@apply fatigue modifier
mov r1,r4
add r1,#0x3B
ldrb r2,[r1]
sub r2,r0
strb r2,[r1]

Because there is no check if the subtraction results in a negative number, it just stores the looped value.

Nice catch, I likely forgot the “if <0 set to 0” check because I did s drinks first and they don’t need a check like this. I have fixed this and updated the download package, the only changed files are FatigueItems.s and FatigueItems.lyn.event.

1 Like

forgot to release this lol

[ASM] Fixed Damage Weapons (FE8)

A la crossbows. Configurable list of weapons that ignore user’s atk in mt calc and just use the weapon’s mt directly.
HwCdbWSoP4

Download

To install, just #include "FixedDamageWeapons.event" and add POIN FixedDamageWeapons to the end of the skill system pre-battle calc loop.

19 Likes

Yet another step closer to a Radiant Dawn demake

Map affinity when

6 Likes

been a bit, let’s go

[ASM] Conditional Nos/Resire Palette (FE8)

Some time ago, someone wanted to recolor Nosferatu to be a light spell. And so, Tequila produced a way to replace the Nosferatu palette with a new, light-themed palette. However, there have since been fairly regular questions as to using both palettes at once. And thus, this came to be.

saW77n414k

If a weapon has the Nosferatu spell anim and has Light or Staff as its weapon type, it will use the lighter palette. Otherwise, it will use the standard Nosferatu palette.

Download

Just #include NosResire.event to install. Shouldn’t conflict with anything other than repointing/replacing the Nosferatu palette.

[ASM] More Shop Types (FE8)

Normally, there are only 3 kinds of shops: armories, vendors, and secret shops. The way each works behind the scenes is a table for which portrait to use based on the shop type ID and a table containing the number to add to the armory text ID for each case that it needs to get the text ID to display. This is horribly inconvenient when wanting to make more shop types, and as such, this rewrites this system into 20(!) text ID tables indexed by shop type. It also repoints the portrait table for you, into its installer.

Download

#include MoreShops.event and you should be good to go. This shouldn’t conflict with anything that I’m aware of.

As-is, it’s set up to mimic vanilla behavior for the first 3 shop types (0-2), and as an example sets shop type 3 to use armory text in every case and use the arena man portrait. Note this does not touch music, as not to conflict with other hacks that touch shop music. However, without rewriting a shop music hack to account for more than 3 shop types you’ll find vendor music on every new shop type.

Calling a new type of shop isn’t the easiest thing to do without assembly, so you’ll likely need to use this in conjunction with other hacks for implementations of new shops. However, setting this up really isn’t that difficult:

How to call a shop

Calling a shop is very simple, as all you need to do is call the function MakeShop 0x80b4240. This takes 4 arguments:

  • r0 is the char struct of the unit visiting the shop
  • r1 is a pointer to the shop list for the shop
  • r2 is the shop type
  • r3 is an unknown value; the function saves the value passed in r3, but I can’t find a time it ever uses it and giving it various values appears to have no effect. I’d recommend keeping this as 0, just to be safe.

Call the function with this information, and it’ll handle the rest. Very simple!

Speaking of hacks that would require this…

[ASM] Shop Unit (FE8)

By utilizing the above shop type expansion, this turns a unit into a shop that can be visited by any other unit adjacent to them. This uses shop type 3, as you can see by the default case for this shop type described above.

hk93VuOqUv

Download

#include ShopUnit.event, and add a menu command for accessing the shop with functions ShopUnitCommandUsability and ShopUnitCommandEffect. As it does not hook into anything, it cannot conflict with anything.

Note this does not check allegiance, so you can make enemy/NPC units be shops as well. For the specific use case that this was made for, any unit on a list brings up the same shop. However, rewriting the command effect piece slightly would allow for unit-specific shops.

19 Likes

[ASM] Aum/Valkyrie/Bifröst (FE8)

The staff that revives an ally that doesn’t have a consistent name.

Download

Comes with staff usability & effect functions, AumUsability and AumEffect; set them to the appropriate tables for the item you want to be Aum and you’re good to go.

Note that this won’t let you pick which unit you want to revive. When you use this staff, it looks for the first dead unit in recruitment order and revives them. If no units are dead, it cannot be used. It does not track the order units die in.

26 Likes

So this is basically Bifröst.

1 Like

shtick can read confirmed

2 Likes

I mean in the essence that with Aum and Valkyria you can choose who to revive, whereas bifröst just picks one and be done with it.

Occasionally I wish that I lose my ability to read because of some of the things I stumble upon.

2 Likes

So for example, if there’s 2 dead units, one who died in chapter 1 and another that died in the current chapter, the staff will revive the unit who died in chapter 1?

1 Like

It will revive whichever one you recruited first. It checks in the internal unit order, which is the order the units were loaded or recruited.

2 Likes

petition to make it rng-based

4 Likes