Sme’s ASM and Miscellany

finally circling back to the “miscellany” part of the thread title

[EA] Debug String Setters (FE8U)

This is a pair of EA tools for setting the debug date/time string and the debug project name string automatically to data relevant to a buildfile (separated into two different programs because date/time is potentially useful outside of a buildfile and project name has very specific buildfile use cases). These serve no non-cosmetic purposes but are neat.

In vanilla, the debug menu looks something like this:
SkillsTest_001
In the top left, you can see the project name _2003 and the date & time at which the game was built.

Date Time Setter will update the date & time information to the system date & time when it was invoked:
SkillsTest_003

Project Name Setter will update the project name information:

SkillsTest_004

The project name is changed to the first 7 letters of the name of the directory that the file passed into EA is located in. This is generally the root folder of a buildfile, but not particularly useful in any other environment.

And of course, you can use both at once:

SkillsTest_005

This information is only displayed on this one screen, so again, a largely pointless thing to change.

Download: Date Time Setter

Download: Project Name Setter

10 Likes

For curiosity’s sake, the pointer to the project name is at 0xB30, and the pointer to the date is at 0xB2C, in case you want to expand either of the strings.

1 Like

no need to repoint the date & time string since that’s always the same length, but updated Project Name Setter to repoint the name string so it can do longer names now
SkillsTest_012
it could also go anywhere before since it fit inline but now needs to go in free space
also made both downloads be release builds instead of debug builds oops

3 Likes

fixed a few things

Previously with Laguz Bars, your class would not be reverted between chapters but the transformed flag would be, leading to weirdness.
5RaF4vcP3s
Fatigue has been updated to add an ASMC & macros for setting fatigue value to alleviate any issues with units starting with fatigue when it would not make sense to as well as to be functional with being able to easily set any unit’s fatigue.

Fixed Damage Weapons used to ignore effectiveness, but now will recalculate it and apply effects accordingly.
LJns3ZqtDG
(It does glow to show effectiveness, just only on the Strat window and not the Detail one)

Shop Unit has been completely rewritten, and now allows you to properly handle multiple shop units.

Download links are all the same as before.

10 Likes

Walking Shops?! I’m totally down dude!!! But… Ain’t that broken like the weapons with skills like I said in my topic few days back before?
I mean, what’s the point of existence of the shops now in rom hacks if you can have the prep screen and a walking shop?
Or let’s put it in other way. Will this mean the ruin of shops!?

If there’s one thing to learn from Assembly for Dummies
image

13 Likes

[ASM] Status Immunities (FE8)

In vanilla, the Demon King is immune to status effects inflicted via a weapon by just not getting statused if hit and via status staves by just setting their hitrate to 0. This takes both of these immunity cases and applies them to a list of classes instead of just the one. This way, you can set as many classes as you’d like that are immune to status effects applied in each of these ways.

KnL6wtbkjk

Download

Just #include StatusImmunities.event, this file contains the class list as well.

7 Likes

It’s pretty much there to support the game design for those who want to use them. I don’t think I’m going to be using walking shops anytime soon, but it’s still neat and I’m sure someone is going to get a kick out of it, which is probably most important.

1 Like

[ASM] Free Movement (FE8)

This allows you to freely control a character on a map in lieu of traditional cursor-based gameplay.

Of course, if the only thing you could do is move around it would be pretty useless. You can also interact with the map using the A button.

This means you can do shops as well.

Shops aren’t the only thing you can interact with. Interacting with a door or chest will open it.

You can also have events that run when you enter a certain area or every time you take a step.

You can also interact with other units on the map.

Lastly, you have a menu, which you can do anything you want with content-wise. By default, it contains some map menu commands specifically the ones that I tested and didn’t crash the game.

Movement collision is based upon whether or not the tile is passable by the unit you’re controlling, or if there is a unit in the space you’re attempting to move onto. You are always in control of the first player unit (to let the player choose who this is, make a prep screen with 1 deploy slot; otherwise, this will usually be your lord if they are force-deployed on every map). Move around with the D-pad as you would expect, and press A to interact with the tile you’re standing on. If you hold a direction and press A, you interact with the tile next to you in that direction; standing next to a unit, holding towards them, and pressing A will interact with them. The L button opens the menu.

Events for this are set up largely the same way that you would normally do events for a chapter. AFEVs and AREAs will run the step after the condition to run them is met, largely analogous to them running after each unit’s action in normal gameplay. Chests and doors are defined the same way as they are normally, but you don’t need a key/lockpick/etc to open them in free movement mode. You can place chest events anywhere, but note that if there is not a tile change at that position the chest won’t work properly (the tile change can be a single tile of the tile that denotes “don’t change this tile”). Talk events are defined in the same place as normal, but note that the only thing read is the second character and the event pointer, so you can’t have multiple talk events with one unit from different initiators set up in the normal way. You can do checks within the event called by talking to determine character-specific interactions, however. There’s an input for char ID that lets you use the first player unit, but the unit you’re controlling is set to the active unit as well for ease of use. Shops do not work as normal, but instead require the use of an ASMC to call the shop, included with Free Movement (but not installed in its installer). To use it, put a pointer to the shop list in s2 and the shop type ID in s3, then ASMC MakeShopASMC.

To enable Free Movement mode, call the EnableFreeMovementASMC. This comes with the definition EnableFreeMovement for ease of use. As this works by hijacking the phase controller, this will only go into effect at the next phase change. As such, the ideal place for this is in a chapter start event. There’s no way to normally end phase while already in Free Movement mode, and enabling it mid-chapter can lead to some weirdness. There’s also a DisableFreeMovementASMC, but as before there’s no way to normally end phase while in free movement mode and disabling it mid-chapter will break things, so I would not recommend using this. Note that the game does not suspend automatically while in Free Movement mode. You can call the make suspend save ASMC ASMC 0xB5D5D to make one at points within your events that you want to save the player’s progress. Of course, manual suspend saves from the menu do function as well. If you have debuffs installed, free movement mode will be automatically turned off between chapters. Otherwise, you’ll need to turn it off manually.

Download

Installing is just #includeing FreeMovement.event. To save the state of being in Free Movement mode through suspend, you’ll need Expanded Modular Save (its default configuration should be fine). The command list for the menu is near the bottom of FreeMovement.event. This will conflict with anything that affects the phase controller function, as it rewrites it. For the shop ASMC, #include "MakeShopASMC.lyn.event".

Map used for demonstration here was made by @ZoramineFae with minor edits for the purpose of showing off doors and chests.

60 Likes

oh hey its me

My only complaint is that the game doesn’t immediately break after the Gilliam line, tbh.

I can already hear vesly’s approval from a mile away.

7 Likes

Amazing stuff as usual!

5 Likes

The future is now

3 Likes

Actual base screen with talkable allies. This is epic.

2 Likes

It is like Gaiden, and therefore epic!

Very impressive, can’t wait to see it used. Maybe I’ll use it someday.

2 Likes

Absolutely incredible! Definitely gonna use this sometime in the future (though I’ll need the door/chest event to probably require a key if I want to make actual dungeons).

4 Likes

I wonder if Sacred Echoes might get this incorporated into it…

3 Likes

Wow. Simply incredible!

1 Like

x0LMvr5yWS

He looks a bit funny while walking to the right. But this is everything I ever dreamed of! I can finally be the pokemon!!

9 Likes

I don’t know if you can do anything about this, but this hack doesn’t seem to play nice with the “you can talk” HUD.

1 Like

this is so cool its indescribable

1 Like