Teq's Minor Assembly Shenanigans


#1

These are some minor assembly hacks I’ve done. The source docs are included; feel free to modify them, but please give credit. Everything found here is to be patched with Event Assembler 10.1 or higher (certain things might work with earlier versions, but don’t count on it).

FE8-Rogue Robbery
FE8-Walking Sounds Patch
FE8-Modified Crit Stuff
FE8-Pathfinder
FE8-Slayer and Weapon Effectiveness Rework
FE7-Staff/Range Fix
FE8-Staff/Range Fix
FE8-Stat Colors/Talk
FE7-Str/Mag Split
FE7/8-Show Heal Amount
FE8-Capture
FE8-Show Battle Stats with Anims Off
FE8-Show Rank when Weapon Level Increases
FE8-Easier Title Screen Background
FE6-Droppable Items

FE8-Battle Transformations
FE8-Set/Unset Conditions
FE7-QoL Collection


FE6 Hack Bug: "Attack" Causes Unit to Wait
#2

FE8-Rogue Robbery

This hack consists of 2 parts: 1 for the player units and 1 for NPC/enemy units.
The player version allows rogues to steal anything from an enemy’s inventory provided that a) the item isn’t equipped, and b) the rogue’s con is greater than the item’s weight.
The NPC/enemy version is the same, except it calculates priority based on (cost per use)*(uses). Items with a cost per use of 0 cannot be stolen. If you want an unsellable item to be stealable, simply set the 5th bit (0x10) of weapon ability 1 and set the cost to whatever you’d like.

EDIT: There is a glitch. If a person has an item with the same id and uses as their equipped weapon, that second one will not be stealable either. I’m working on it.

EDIT: EDIT: This glitch is now fixed.

FE8-Walking Sounds Fix

This hack allows you to select what kind of walking sounds a class uses. Included with this file are 2 .dmp files. “walking_sounds_class_dict.dmp” is simply an array where the index is the class ID and the byte at that index is a number corresponding to the appropriate pointer in “walking_sounds_pointer_table.dmp”.
Here are the entries of the latter:
0x0 Walking
0x1 Mounts (horses)
0x2 Wyverns
0x3 Pegasi
0x4 Armored units/Dragons
0x5 Fleet
0x6 F!Mamkute
0x7 Zombies
0x8 Skeletons
0x9 Spiders
0xA Dogs
0xB Mogalls
0xC Gorgon
If you want to change the Eirika lord class to use pegasus noises, for example, simply go to the [class ID-th] index of the first .dmp (in this case, 0x2), and change the value there to the sounds you want according to the second .dmp (in this case, 0x3).
The first table has 0xFF entries, so there’s no need to expand it (the default option is 0x0). You can repoint it in the definitions if you want to. The second table can be expanded if you want to make custom walking noises, although you’ll need to experiment a bit to find out how those work.

The one that Nintenlord has in his FE8 patches folder doesn’t work. In fact, I have no idea what it actually does. If someone figures it out, please let me know.


#4

EA Pls


ASM Hacking, Is this possible in terms of weapons?
#5

FE8-Modified Crit Stuff

This hack consists of two parts.
The first part makes weapons with 255 (0xFF) crit unable to crit. They will display – on the Equipment tab of the Inventory page and while using the R-button examine.
The second part modifies items with the Negate Criticals ability (0x80 in Weapon Ability 2) so that anything that is not an item with that effect only activates if equipped. For example, if you give an iron axe this ability, and Garcia has it in his inventory but is wielding a hand axe, the crit negation will not take effect. Likewise, if you trade that axe to someone who cannot wield axes, nothing will happen.

EDIT: I modified the check for the second part. Now, it first checks if the item has the first or second bits set (weapon or tome); if yes, then it checks if it’s equipped. Items that can’t be equipped get a free pass. Doesn’t really change much, unless you wanted a staff that negates crits.

FE8-Pathfinder

This hack gives items 0xBC and 0xBD (can be changed in the EA file) the ability to modify their holder’s movement costs.
0xBC drops all traversable terrain costs to 1.
Example: Seth, a paladin, will now be able to cross forests with no movement penalty, but he will NOT be able to cross peak tiles, since he couldn’t do so normally.
0xBD makes the unit use the flying movement table.
Example: Seth will now be able to move as though he were a flying unit (obviously, terrain bonuses still apply (yes, this is ever-so-slightly OP)).
If both items are in the inventory, the first from the top will take effect.
NOTE: They don’t take into account weather conditions. If you absolutely want them to, contact me.

If you don’t want one or the other, change the item ID to one that isn’t used (0xFE or something). If you have a full item table and don’t know how to modify the .asm, contact your local wizard for instructions. It’s really easy, I promise.


FE_Builder_GBA
[FE8] Iron Rune effect on weapon: Only when equipped
#6

FE8-Slayer and Weapon Effectiveness Rework

Not going to copy the readme here, because it’s rather long. Here’s the gist:

Slayer: Normally, the slayer skill is hardcoded to bishops. This part allows you to set up an array such that other classes can get in on that sweet, sweet extra damage. I’ve also included functionality to allow a class to have different multipliers against different classes.

Weapon effectiveness: This is basically a port of Venno’s effectiveness rework for FE7, which makes it easy to create different protector items like the Fili Shield. I’ve added functionality that only allows wieldable protector items to do their job when they’re wielded (staves and rings get a free pass), along with instructions on how to remove that.

In addition, thanks to Crazycolorz’s help, the EA file also sets up all vanilla class weaknesses and item effectivenesses for you, so you don’t have to rewrite everything in Nightmare. If you decide to totally ignore the readme (which you shouldn’t, because it clearly says read me) and just assemble the file to a vanilla rom, nothing should be terribly different*.

*I made two relatively minor changes. The first is that rather than having the item effectiveness multiplier overwrite the slayer coefficient, the higher value is used. Thus, bishops now get full power of Ivaldi, rather than having to use Aura. The second minor change is that Gleipnir has monster effectiveness. I hope no one minds.

Credit goes to Vennobennu.


#7

When I first started learning assembly, I had one goal in mind: make the Unlock staff a mag/2-range staff.

Approximately one year, lots of tears, and a few smaller projects later, I finally finished.

FE7-Staff/Range Fix

This hack rewrites the way the game displays weapon/staff ranges; ie, the red/green squares that display how far away you can whack someone upside the head with the item of your choice. Originally, weapons that weren’t in the set of designated ranges (1, 2, 1-2, 2-3, 3-10, 3-15) wouldn’t display the range properly in the R-button examine and wouldn’t highlight the proper amount of squares, but would still be able to attack at whatever range value was input. Staff ranges were hardcoded (except Torch), and even if you figured out where that value was, there were only 3 valid ranges that would display green squares: 1, 1-2, and 1-mag/2.

Now, staffs read their range value from the 0x19th byte of the item struct, just like weapons. Note that the range byte is broken into its nibbles to be read as {min, max}. So a 1-2 range weapon has range byte 0x12.
Some new functionality has been added:

  • having a max nibble of 0 will use max{5, mag/2}. This was standard for status staves, for instance. Now, however, you can also apply this to weapons AND set the min to whatever you’d like, rather than having it be automatically set to 1. That being said, it’ll still display Mag/2 on the item’s R-button examine and the Equipment tab on the inventory screen, so if you have a minimum other than 1 (for whatever reason; I don’t judge), you’ll have to let your audience know via the description text or something.
  • setting the range byte to 0xFF will now display Total and, as the name suggests, have total (1-FF) range. I opted to not display the squares for this option, similar to FE6’s Saint’s Staff and FE8’s Latona, but there’s some…issues.

Which brings me to…GLITCHES:

  1. Total range weapons/staves will display SOME squares when selecting the target. The squares to highlight seem to be be the ones not on screen when the cursor jumps to the first target. I don’t know how to fix it, and since it’s (as far as I can tell) purely graphical in nature, I’m not too concerned about it. If you want to recreate Latona in FE7 (which I figure is the main reason someone would use total range), simply make a copy of Fortify with 0xFF range and this problem won’t even appear (since Fortify doesn’t let you pick a target).
  2. Torch had a funny glitch where, if it was the only staff in your inventory, after selecting the square to move to, the displayed squares would be blue instead of green. I came up with a fix for that, but it overrode my “do not display squares if 0xFF range” function for some reason.
  3. However, that’s not an issue, because Torch doesn’t work at 0xFF range AT ALL. I suspect the reason is because this staff is weird (I mean, they’re all weird, but this one’s REALLY weird), and I’m not willing to put in more time and energy into solving this unless someone really really really needs it (and you’d better have a damn good reason as to why you need it). Torch works fine at non-total ranges, and other staffs work fine (aside from the graphics glitch mentioned earlier) at total range, so…yeah. If you find a fix, lemme know.

To use this, patch FE7-Staff Range EA.txt with Event Assembler 9.12 or higher. If you’ve repointed the item table and/or usability table (if you don’t know that is, then you didn’t repoint it), be sure to update that in the definitions section.

This hack also makes it a lot easier to add skills that increase your range (like bows get +1 range, or something). If there’s any glitches other than the ones described here, please let me know. I did test things, but I’m relatively sure I missed something, somewhere.

FAQ:
Fe8 version when?
Soon.


#8


Yeah… The game crashed for me, as shown in the video. I might just be an idiot when it came to the target pointers, but despite the ten range, the game allowed me to cast Sleep within the original range, therefore crashing the game as there is no target in range of Sleep.


#9

Rng displaying the wrong thing on equipment screen:

Yeah, I dunno what to make of it either. It refuses to go away. I’ll have to think about it a bit.

In regards to the (much more important) glitch, I was unable to reproduce it.

Changed sleep to 1-7 range. Here there’s no targets (it was first in my inventory).

And here it is with 2 valid targets.

Try repatching is all I can say. I’ll look into the inventory screen, though.


#10

FE8 version of the staff/range fix. Same glitches as the FE7 version, I’m afraid. I also didn’t get a chance to test Unlock, although it should be fine; but if it’s not, lemme know.


A couple ROM hacking questions
#11

Fixed the Rng=Mg/2 glitch; if you didn’t have an equipped item, the item id was 00, which has a range byte of 00, which has a lower order nibble of 0, which meant it fell in the MAG/2 category. Go ahead and redownload it; the links should be the same.


#12

Fixed another glitch where if a unit were standing on a ballista, its range would get added to the unit’s own even if the unit in question couldn’t use them, leading to possible targeting errors. Redownload if needed.

Also fixed Darrman’s problem. If you’ve used Blazer’s item usability/effect repointing patch (found here), my pointers don’t get written to the right spot. To fix this, open the EA file and in lines 13 and 32 (FE7) or 12 and 3 (FE8) change “item/TorchStaff-0x4B” to “item/TorchStaff”.


#13

Something I’ve been meaning to do for a while; a display growths hack.

[spoiler=“Example gif”]

[/spoiler]

There’s 3 parts to this: Stat colors, Display growths, and Talk.

Stat colors is something that Pi did in FE7, and Brendor showed off for FE8 but never released; it changes the color of the stat depending on the unit’s growth in said stat. It’s unfortunately very limited; there’s only 5 color choices. The options to configure are in the main EA file.

Display growths allows the player to press Select to bring up, well, growths. As you can see, it also displays the Metis Tome bonuses. Pressing Select will revert back to the normal stats page. Pressing Select on the weapon rank or inventory screens does nothing. If Stat Colors isn’t included, the HP label won’t display, unfortunately. I did want to make each part stand-alone, but this turned out to be too much of a hassle. If you really don’t want the different colors, there’s a way to do that, detailed in the main file.

Talk is a throwback from FE4; it shows any conversations the character can have. It will only display them if a) the event hasn’t occurred yet, and b) the recipient is present on the map. Otherwise, it’ll display —. This way, you can still have reinforcements that are recruitable without giving away the surprise ahead of time. As noted, you’ll need to provide your own text ID; the menu option has a space in front of it, as you can see in the gif, and it just looks bad. Currently it still says Affin (and the R-button text id will need to be changed as well). The affinity icon, in case you didn’t notice, has been moved next to Aid and the mounted icons. If you can think of a better place to put it, let me know!

Patch with EA 10.1.


FE_Builder_GBA
[FE8] Cannot find patch that shows growth rates
#14

“minor”


#15

Hoo boy I just KNOW what’s going into Mad Mode v1.8 :smiley:


#16

Jesus, you outdid Brendor in every meaning of the word. I’m legitimately awestruck :o


#17

Fixed a glitch with the Display Growths/Talk hack where longer names would run into the Cond label. It’s possible the fix might have some graphical glitches elsewhere, but I have no idea where, so let me know if you see such a thing.

In other news, the Staff/Range fix hack is blithely ignored by the AI (especially for staves, although I think 1-mag/2 range stuff might also cause issues), so don’t be surprised if you make the berserk staff a 1-3 range staff and you still get berserked from halfway across the map. No idea how long the fix will take, but it generally needs a complete overhaul. You can still use it, of course; it works fine for player-controlled units. There’s another minor glitch where if there’s a ballista, units that can move onto it will highlight the ballista’s range even if they can’t use it; don’t worry, they can’t use it. This has been fixed for FE8, but not 7.


#18

It’s a FEATURE! Enemies get, uh, free range boosts!

Yeah! You can just cross that off the ol’ fix-em-up list!


#19

Actually to be honest this sounds legitimately interesting; giving players and enemies different ranges on the same staff. :]


#20

Since Bloodlines is out, I can now release this:

FE7 Str/Mag Split

This is my most ambitious hack so far. I recommend reading the readme (and not just because it says to); it’s long, but it should answer any questions you may have.


FE_Builder_GBA
Opposing Programs, Patches, and Plans
FE_Builder_GBA
#21

Actual minor assembly shenanigans: In vanilla FE7, Pent leaves if Louise dies, and vice versa. One workaround is to not use both of those character slots, but if you don’t want to do that, change 796E4 to 0A E0. This skips code that sets the dead+do not display flags for the other person.