Final Fantasy Hacktics

Modding => PSX FFT Hacking => Topic started by: Xifanie on October 29, 2014, 09:16:45 pm

Title: ASM Requests
Post by: Xifanie on October 29, 2014, 09:16:45 pm
Feel free to request any ASM here for the PSX version; you will not be judged.
If you have an idea that would benefit more than yourself and understand video game mechanics, feel free to post it in the proposals thread (http://ffhacktics.com/smf/index.php?topic=10535.0) instead.


Who knows, someone just might look into it if it interests them. If you really need a hack done, you should try to avoid relying on luck and do it yourself (http://ffhacktics.com/wiki/Learning_ASM).

What is ASM?
ASM stands for assembly. It is the compiled language that FFT runs on, and it's what we alter to make hacks to enhance the game. ASMing is literally altering the code of the game; it's not easy like changing the WP value of Excalibur from 21 to 30.

If you don't understand the mechanics behind video games though, don't be surprised if anyone tells you your idea is either impossible or far too much trouble to accomplish.

As a quick note, look at my signature to have a better understanding of what ASM can't do.
Title: Re: ASM Requests
Post by: Devreckas on November 06, 2014, 10:39:43 pm
Alright, I have a couple of ideas for ASM hacks that could improve gameplay:

1.) Change archer's Charge Skill to be able to target units and go off if enemy stays within weapon range.
2.) Change ranged weapon attacks to factor distance from target into its accuracy%
Title: Re: ASM Requests
Post by: Kaijyuu on November 07, 2014, 01:02:42 am
On the topic of charging: charge abilities scaling with unit speed.
Title: Re: ASM Requests
Post by: TFM on November 10, 2014, 09:18:24 pm
Quote from: Kaijyuu on November 07, 2014, 01:02:42 am
On the topic of charging: charge abilities scaling with unit speed.


Edit: Nevermind, that hack only seemed to work at the time.

This one should set CT to CT - MA when Math Skill is flagged.
    <Location file="BATTLE_BIN" offset="e9378">
      00000000
      0C004390
      05004290
      37007292
      40005730
      0500E012
      00000000
      22187200
      02006104
      00000000
      21180000
      14F20508
      00000000
    </Location>
    <Location file="BATTLE_BIN" offset="e93d0">
      05008390
      0C008290
      40006430
      0E008010
      00000000
      B000A48F
      C0011034
      18009000
      12200000
      1980103C
      CC081036
      21209000
      37008490
      00000000
      22104400
      02004104
      00000000
      21100000
      94060608
      00000000
    </Location>
    <Location file="BATTLE_BIN" offset="115848">
      df400508
      00000000
    </Location>
    <Location file="BATTLE_BIN" offset="11aa48">
      f4400508
      00000000
    </Location>


If you needed a specific CT formula, I could make it.
Title: Re: ASM Requests
Post by: Heretic on November 12, 2014, 04:16:56 pm
I was browsing through the forum for the first time in like 5 years and came across your Synthesis Shop hack and it is probably the most innovative thing I've seen on this site in years.  I have been trying to find a clever way to implement wotl items into the psx version and this is perfect.  Since you clearly know a good deal about asm hacking, i was wondering if you could give me your opinion on how difficult or if its even possible to make an idea i had a reality.  I absolutely hate doing propositions and the rewards for doing them were pretty much just novelties anyway, so i was thinking of a way to make the treasures you find actually useful.  Would it be possible to add a condition to your synth shop to require having found a certain treasure in order for a select item to be synthed.  For example, in order to make a Knight sword like Excalibur, you could set the white materia treasure as a prerequisite.  Any feed back would be appreciated.

Just thought of this as well.  Would be kinda cool to use the unexplored lands found as prerequisites for custom maps or events
Title: Re: ASM Requests
Post by: 3lric on November 12, 2014, 07:07:38 pm
Quote from: Heretic on November 12, 2014, 04:16:56 pm
I was browsing through the forum for the first time in like 5 years and came across your Synthesis Shop hack and it is probably the most innovative thing I've seen on this site in years.  I have been trying to find a clever way to implement wotl items into the psx version and this is perfect.  Since you clearly know a good deal about asm hacking, i was wondering if you could give me your opinion on how difficult or if its even possible to make an idea i had a reality.  I absolutely hate doing propositions and the rewards for doing them were pretty much just novelties anyway, so i was thinking of a way to make the treasures you find actually useful.  Would it be possible to add a condition to your synth shop to require having found a certain treasure in order for a select item to be synthed.  For example, in order to make a Knight sword like Excalibur, you could set the white materia treasure as a prerequisite.  Any feed back would be appreciated.

Just thought of this as well.  Would be kinda cool to use the unexplored lands found as prerequisites for custom maps or events


The hack actually doesn't work this way. It doesn't add any additional item slots. All the vanilla item slots were used in vanilla and there is no way to add in the WotL items. This hack only gives you ways to create existing vanilla items using combinations of other vanilla items.

The hack also isn't setup to require conditions like, ((if you have this item, these combos become available)) and although I see where you are going with that, the hack simply was not made to have these kind of requirements. I can tell you right now that Xifanie won't be interested in adding something like that, since that was never her intention to have those kind of restrictions.
Title: Re: ASM Requests
Post by: Heretic on November 12, 2014, 08:00:38 pm
yeah i replaced a few items i deemed useless to get the wotl items into psx version.  and the synth hack gave me a unique way to put them in the game.  i was just wondering if the treasure aspect was realistically doable with out ripping my hair out


also looking forward to "The Lion War"
Title: Re: ASM Requests
Post by: Darkholme on November 26, 2014, 02:47:22 pm
Request:

For enemy units: Party Level +(+1...+99) -> Party Level +(-15...+15) & Party Level (Random) +(-15...+15).(Doesn't matter what is done with the other 39 slots)

Basically, I would like to have the option to include "Easy" Enemies into an ENTD without hardcoding their levels.
Title: Re: ASM Requests
Post by: Kurosabes on November 30, 2014, 06:00:19 am
Hm, I thought there would have been more requests than that within a month's time. I guess I'm the only one that can't figure out ASM even if my life depended on it... I suppose I'll post some of my wishlist then. I don't have any expectations of course, but if any of these feel like good ideas to someone for their own mod and is willing to make an ASM, then.. I'm not against it :)

In no particular order...

Edit: Edited for stuff I don't need anymore. Math Skill costing MP and that last one with element absorb is all that's left.

- Math Skill costs MP, perhaps even more than if you'd normally cast the spell. Because calculating precisely on top of focusing energy - instantly - seems quite mentally exhausting to me.

- X status (Charging, Performing, Frog, Sleep...) doesn't take extra damage from attacks. Or at least a way to reduce that extra damage. Found it (partially). I really didn't look around enough, found a lot of stuff tonight.

- Berserk also reduces Magic defense. Actually I have a load of similar ideas, if I could choose which status increases or decreases defense or attack (whether physical or magical), that'd be great. I'd also like to mess around with accuracy. I believe some mods out there have things for magic accuracy as well. Anyway, this is kind of on the same branch as the above I believe

- Picking up crystals cancels X statii when choosing HP/MP Restore. Darkness, Poison, Silence, Don't Act. Low priority

- Shadow Walk (renamed Silent Walk): Save 20 CT regardless if you move or not. This is low priority, just wanted to find some extra use for that move ability..

- Magical C-Ev. I want this especially for monsters, who have no way to dodge any kind of magic. Alternatively, making equipment possible so that I could have them wear mantles (in my mod, mantles are more about magical evasion) Found it, but having a little trouble making it work. I'll tinker more with it when I have time.

- Replace Formula 2D: (PA * (WP + Y)) with (PA * (WP + Y)) / X. If possible, a value of '0' in the X slot would default to '1' to prevent division by 0. No more need

- If a target absorbs a certain element, they don't try to block or dodge an attack of that element. Similarly, a unit under Oil/Float status could not dodge Fire/Wind elemental attacks. (I think someone recently posted that idea)
Title: Re: ASM Requests
Post by: nitwit on November 30, 2014, 04:41:02 pm
Quote from: Darkholme on November 26, 2014, 02:47:22 pm
Request:

For enemy units: Party Level +(+1...+99) -> Party Level +(-15...+15) & Party Level (Random) +(-15...+15).(Doesn't matter what is done with the other 39 slots)

Basically, I would like to have the option to include "Easy" Enemies into an ENTD without hardcoding their levels.


I saw a request somewhere for Party level or level (0-99), whichever is greater.  I want that.
Title: Re: ASM Requests
Post by: BlankM on December 09, 2014, 01:07:46 pm
So I have two requests for a hack I'm working on. Before looking into them myself I figure I'd ask before  I look into it myself, and maybe someone who can accomplish it with less effort could do so. Worth a shot?

-Innate MP Regen
Maybe I could do this with FFT Patcher? I would rather it not be a status effect. As an addition to this make MP Regen maybe 3-5% of max MP. I want mages to still feel useful after blowing all their spells.

-Spillover JP = Regular JP Gain
Make spillover JP gained from other jobs a 1:1 ratio instead of a cut. I don't want units penalized for not making worthless actions every turn to gain jp.

If anybody could do these I'd be VERY grateful. Thanks for your time.
Title: Re: ASM Requests
Post by: Dome on December 09, 2014, 01:41:43 pm
Can someone ASM these 2 formulas
Drain Hp: F(MA*Y)
Drain Mp: F(MA*Y)
and place them into a blank spot?
Title: Re: ASM Requests
Post by: Pride on December 09, 2014, 03:32:51 pm
Quote from: BlankM on December 09, 2014, 01:07:46 pm
So I have two requests for a hack I'm working on. Before looking into them myself I figure I'd ask before  I look into it myself, and maybe someone who can accomplish it with less effort could do so. Worth a shot?

-Innate MP Regen
Maybe I could do this with FFT Patcher? I would rather it not be a status effect. As an addition to this make MP Regen maybe 3-5% of max MP. I want mages to still feel useful after blowing all their spells.

-Spillover JP = Regular JP Gain
Make spillover JP gained from other jobs a 1:1 ratio instead of a cut. I don't want units penalized for not making worthless actions every turn to gain jp.

If anybody could do these I'd be VERY grateful. Thanks for your time.



<?xml version="1.0" encoding="utf-8"?>
  <Patch name="Restore 5% of Max MP on turn start">
    <Description>MP Restores by 5% on turn</Description>
    <Location file="BATTLE_BIN" offset="F6EBC">
      CCCC033C
      2E000296
      CDCC6334
      19004300
      10180000
      02180300
      960103A6
      24000292
      10000334
      B10103A2
      0800E003
      00000000
    </Location>
    <Location file="BATTLE_BIN" offset="11C280">
      AF77050C
      00000000
    </Location>
  </Patch>

  <Patch name="Spillover JP = Regular">
   <Description>Units gain FULL(?!) JP spillover, dunno why someone would want this but here it is</Description>
   <Location="BATTLE_BIN" offset="117978">
     00000000
   </Location>
</Patch>
</Patches>


You're lucky because I've already made one of these and the other is literally changing one line of code. I'm lazy as shit. Changed the bolded 0 to C if you want to do 10%

Title: Re: ASM Requests
Post by: BlankM on December 09, 2014, 07:00:48 pm
Thank you so much! Definitely lucked out, your help is much appreciated.
Title: Re: ASM Requests
Post by: JantheX on December 09, 2014, 07:07:16 pm
My guess is this will either be pretty simple or massively complicated, but is there any way to change the game's routine for evade to treat the EV stat as a % damage reduction stat (so 13% dodge chance = 13% reduced damage instead)?  Maybe by cannibalizing that hack that attaches damage multipliers to different status effects?

Title: Re: ASM Requests
Post by: Glain on December 10, 2014, 10:19:00 pm
I have a defense (damage reduction) hack in my ASM thread (http://ffhacktics.com/smf/index.php?topic=7864.0) that uses the unknown values for items in FFTPatcher as damage reduction stats.  I'd think it could be modified to use evade instead.
Title: Re: ASM Requests
Post by: JantheX on December 11, 2014, 10:40:31 pm
Thanks Glain!  I'll look into doing that.
Title: Re: ASM Requests
Post by: ngovandang on December 25, 2014, 01:01:25 pm
I want a little mod can join or invitation all bosses and all special enemy. And I want have teleport 2 of Altima in moverment skills tap  :D
Title: Re: ASM Requests
Post by: Argy on December 30, 2014, 01:02:10 pm
Hi All,

I have an ASM request and I am not sure how easy it will be to do. Is there are a way that we can change MP switch to be an MP equivalent of regenerator? (the white mage support ability) Or to maybe use the blank space available 01BB? Or even use Absorb Used MP?

Cheers Argy
Title: Re: ASM Requests
Post by: Choto on December 31, 2014, 12:22:59 pm
I thought Pride made something like that... I can't remember though. We do know pretty much all of the regen routines and post-movement/action display routines so the hack could be made.
Title: Re: ASM Requests
Post by: Pride on December 31, 2014, 01:16:47 pm
You'd have to make a status effect that causes you to regen MP (which Choto correctly said that I already made) and also hack the reaction routine to cause it to give the status. Not very hard but also incredibly impractical because unless MP values of spells are very low; I cannot see how it would be better then Absorb Used MP when its already a subpar reaction ability.


Wall becomes "Mist" or MP Regen
This is intended to be used with FFMaster's Wall asm to make the ai attack Wall'd units. The MP Regen recovers 1/4 of Max MP after each turn. I thought it was better then 1/8 like normal Regen.


0x000F6EBC

5B000392
00000000
01006230
08004010
00000000
2E000296
1980033C
902D638C
82100200
0A0062A4
10000234
250062A0
FD350608
5B000392

0x001267EC

AF770508
00000000
Title: Re: ASM Requests
Post by: Argy on January 01, 2015, 12:56:56 am
Thank you Choto and Pride for your time and answers to this. Looks like I will be using the Mp regen hack you have already have created.
Title: Re: ASM Requests
Post by: The Damned on January 13, 2015, 12:18:52 am
I figure I might as well do this before I potentially lose Internet, so I might as well do this now before I forget to ask too:


1. Is there someway to generally "fix" weapon evasion being tied to the upper/right hand and shield evasion being tied to the lower/left hand and thus both generally being obviated if you switch hands (without Two Swords)? Similarly, is there a way to make it so that Two Swords with only a shield will still give you two punches if your upper hand is the one that's bare-handed? (Note: The latter is completely superfluous if the former can be amended.)


2. Is there some way that just Bervenia Volcano can be opened up in Chapter 1 (or early Chapter 2) without screwing up the map order or presumably forcing everything else to be open? While also keeping opening of map locations otherwise normalized?


3. Is changing formula 5D (or some other formula) from "Dragon Only: Set Quick No Status" to "Monster Only: Hit (MA+(n)X)% Set Quick 100% Add Status" (or vice versa if necessary) workable? I wanted to avoid asking for formulas in here if possible, but given how atypical Quick is, I figured I should ask since otherwise I'll have to rework a crucial skill in one of my classes. (Note: The (n) is just to denote any integer--for now one can safely assume that n = 1 as it "should" be.)


Regardless of whether any of these get answered, thanks in advance and thanks to Xifanie for opening up a separate thread.


Quote from: ngovandang on December 25, 2014, 01:01:25 pm
I want a little mod can join or invitation all bosses and all special enemy. And I want have teleport 2 of Altima in moverment skills tap  :D


Since no one answered this, I'll just say that you can already do all of this in FFTPatcher via the Jobs, ENTD and Skill Set tabs. It will probably kill game-balance and I think some of the bosses, chiefly the Lucavi like Altima, will act buggy if you have more than one of them on the map, but if it's what you want, then hey. I don't think it will outright mess with the story though--you'll just end up with Wiegraf literally fighting himself (twice) at worst if you want recruit literally every special character.

That said, I'm also not sure what will happen if you try to recruit Gafgarion during the same fight where he would otherwise instantly crystallize if you didn't change the event that causes said instant Crystal to happen. Shrug.

Regardless, pretty much everything you requested already exists in FFPatcher if you haven't realized that already in the eighteen or so days since you asked this.
Title: Re: ASM Requests
Post by: Pride on January 14, 2015, 02:41:16 am
I'll only respond to 2.

You can open Bervenia Volcano without effecting anything else after the Desert is open in Chapter 1. Before that, yeah it would screw up things. You can open it via event commands (the way its opened in vanilla).
Title: Re: ASM Requests
Post by: The Damned on January 15, 2015, 06:46:04 pm
I see. That's mercifully easy then. Thanks, Pride.

One more thing I forgot to ask was about Reflect the reaction, especially since it came up in other ASM thread: Would it be easy to turn Reflect the reaction into essentially a second reaction in the vein of Counter Tackle that reacts with an ability rather than with adding status to the self?

I mean, it's not like it's being used currently, I think there already exists an ASM that lets it add status and I agree with the sentiment that just "fixing" it to add Reflect to self would be boring while also agreeing that making it into the Hamedo version of Counter Magic would probably make it broken.

Shrug. Regardless, thanks.
Title: Re: ASM Requests
Post by: Choto on January 15, 2015, 07:07:14 pm
in regards to the dragon targeting becomes monster targeting thing, i'm pretty sure the hack has been done a couple of times actually. You'll have to search the forums though because at least for me it was one of the first hacks I did and didn't record it in a hacking thread or anything.

then for the reaction thing, stand by for now. I have a hack in the works that will give you many more options for counter abilities.
Title: Re: ASM Requests
Post by: The Damned on January 16, 2015, 07:11:57 pm
I should have been more clear about the formula request. My apologies for being imprecise.

What I was asking with regards to that particular formula was not if Dragon to Monster targeting existed as I was already aware it did, but if a working formula that added a Quick flag and then status would, well, work given how atypical Quick is. Given the ability said formula would be used for is rather vital to at least one of my classes, I figured I should ask despite not wanting to request formulas in this thread if I can avoid it. I guess I also would prefer if said formula didn't work unless the unit also had Monster Talk, but meh, that's not strictly necessary and I figure "baby steps" to see if the general form could work at all.

Besides that, I see. As with your hacks in general, I look forward to seeing what you come with there. It would be nice to do something with Gilgame Heart's space among other things. Thanks.
Title: Re: ASM Requests
Post by: The Damned on January 29, 2015, 02:19:04 am
I dislike double-posting, but one more thing just occurred to me that I figure I might well ask here: It is currently impossible to manufacture random yet precise all-map targeting in the vein of abilities like Roulette, which selects one unit on the map to instantly kill, is it not? At best the closest we can currently get in FFTPatcher is just making abilities target the entire map with AoE 255, toggling Random Hit and then hoping against hope that the ability deigns to strike one of the comparatively few occupied panels rather than empty space, right?

So...I am of course wondering if that can (easily) be done or if it's completely impossible outside of perhaps making a very specific formula just for it.

I'd just ask Dokurider about this, but given he's been gone for the past couple of months...yeah. For the record, given how little importance this is, I'd totally settle for just being able to target any occupied space rather than Roulette and its ilk even greater precision in also ignoring units afflicted with a KO status.
Title: Re: ASM Requests
Post by: A Blood Red Fox on January 31, 2015, 04:28:25 am
I was wondering about the possibility of a hack to make it so that broken items are not permanently destroyed. They'd be inaccessible during the battle, but once the battle ends they're back in your inventory. It'd make item breaking abilities less annoying while not losing their effectiveness. The logic being that the item could be repaired once the fighting has ended.
Title: Re: ASM Requests
Post by: Jumza on January 31, 2015, 11:45:55 am
I believe there is a hack like this, where you can buy back broken or stolen items from the fur shop. I think it's included in the default hacks with the ASM program in the FFTPatcher suite.
Title: Re: ASM Requests
Post by: A Blood Red Fox on February 02, 2015, 07:27:33 am
Quote from: Jumza on January 31, 2015, 11:45:55 am
I believe there is a hack like this, where you can buy back broken or stolen items from the fur shop. I think it's included in the default hacks with the ASM program in the FFTPatcher suite.


You're right, there is a hack like that in there. Apparently I overlooked it somehow.
Title: Re: ASM Requests
Post by: Grond on March 03, 2015, 12:01:18 pm
This is a bugfix request, but I suppose it fits in here. Who else has noticed that all Draw Out abilities call up the wrong weapon graphic tiles? For most of them, the only visible problem is that the katana 'wraps' (or whatever the thing near the base of the blade is called) aren't right. However for Bizen Boat, Kiyomori, and Masamune, it actually reads past the katana graphic tiles and pulls up a rod graphic instead! I don't know whether this bug exists in the Japanese or PSP versions of the game.

(http://i.imgur.com/XATS1mv.png)This shows what tiles the code is calling vs what it should be.

(http://i.imgur.com/SGqnpZP.png)Bizen Boat as an example. Photo on left is of retail game on real hardware (rod graphic outlined for clarity). Included to show that it isn't an emulation bug/bad game dump. On the right are emulator screenshots of the same.

(http://i.imgur.com/5q7JcKo.png)Chirijiraden as a less obvious example. Correct graphic on the left (No wrap on blade). Wrong graphic at right (Green wrap).


Complicating the matter, I found a screen (http://lparchive.org/Final-Fantasy-Tactics/Update%2064/24-capture_26022011_192554.png) of Elmdor drawing Muramasa as a rod, and another (http://lparchive.org/Final-Fantasy-Tactics/Update%2064/66-capture_26022011_200656.png) of him drawing Kiku as a rod (both from the Let's Play Archive (http://lparchive.org/Final-Fantasy-Tactics)), so it seems Elmdor's (or his two unique Sword Spirit skillsets') draw out graphics are even more messed up than the regular versions. Regardless, you've probably all noticed that his draw out animations go completely screwy (http://lparchive.org/Final-Fantasy-Tactics/Update%2064/101-capture_26022011_204230.png) sometimes anyway.

So, any ASM-ers want to tackle this? I'm willing to bet it's a simple fix, if you know where to look.
Title: Re: ASM Requests
Post by: Angel on March 03, 2015, 06:45:47 pm
Neither Xifanie nor I had noticed this before (which is unusual, and surprising). Elmdor being a bit wonky is very much known, however, including on PSP.

Elmdor's nonsense isn't likely to be bothered with by anyone, just because his job is obnoxious as hell to work with already, but I'm sure you're right about Draw Out likely being an easy fix.
Title: Re: ASM Requests
Post by: Choto on March 05, 2015, 04:47:27 pm
How much are you willing to bet Grond?

Turns out it's not quite a simple fix to do via ASM. I documented the relevant parts of the routine here: http://ffhacktics.com/wiki/Load_WEP_graphic_from_WEP1_Sheet

The routine does an offset calculation to find out where on the WEP sheet to load from, but it references some stuff in the WEP.SHP file which I didn't really care for figuring out. In the end, the routine adds 0x10 to the Y offset... which bumps each weapon graphic to the one right below it. However... I guess this only happens for draw out skills... or katanas...

Anyways... I tried a quick fix for this by editing the WEP1.SHP. It fixes the Rod issue for normal draw-out skills and hopefully doesn't break anything else. This is about all I want to devote to fixing this though. Elmdor is just... fucked lol. I have no clue why he specifically would wig out like that
Title: Re: ASM Requests
Post by: Kurosabes on March 06, 2015, 03:32:21 am
Good observation, I've never noticed it being a rod, always seen it as a sheated katana and didn't give it logic thought, haha. No such thing as sheated katana sprites in this game. Maybe I'll give your ASM a try sometime later.

---

I was about to request something, but after checking through the BATTLE.BIN stuff a bit, I may have figured a tiny fraction of it.


BATTLE.BIN
0x124AA6

Change 40 to 42


I don't know if I got that right, no time to test right now (also first attempt at ASM), but I'll leave this here and if I got it completely wrong I'll probably remove it. I may as well say what my request is/was before I forget about it. My intention is for Petrify to reduce all damage to 1 (and not ignore attacks of course) so that a weapon that cancels Petrify can actually hit a Petrified unit.
Title: Re: ASM Requests
Post by: Grond on March 06, 2015, 12:26:11 pm
QuoteHow much are you willing to bet Grond?

l i t t l e   m o n e y
:)
Good job (and fast!), but for some reason it seems the back view is handled separately and was still bugged:

(http://i.imgur.com/YC5wAzs.png)Kiyomori front vs back view

However I seem to have fixed that by changing the next 3 5c's in that code sequence into 1c's.

(http://i.imgur.com/X7sojX6.png)Masamune correct'd


Thanks, and hopefully this resolves the issue once and for all:
Title: Re: ASM Requests
Post by: Choto on March 08, 2015, 03:01:57 pm
Nice work! glad we could square that away pretty quickly
Title: Re: ASM Requests
Post by: The Damned on March 10, 2015, 09:13:03 pm
Congrats on both noticing and fixing such an obscure issue Choto and Grond, especially given it was solved so quickly. I'd been noticing things were off with Draw Out for years in ARENA, but I thought that was largely because of something that FFMaster might have inadvertently changed. I never really noticed Elmdor was/is apparently so buggy since usually he was too busy using Blood Suck or Rafa was too busy dying or the Assassins were too busy being bigger issues. I wonder if this works if you change what weapons Draw Out or what Draw Out generally uses. It seems like it should, but only testing would confirm that, which can wait.

Anyway, since I'm posting in here again, I might as well dump three somewhat general status-related things that have come up while working on my own newest patch that I might actually finish for once. These might be better off in "Help!" section technically since they're more questions than outright requests, at least in the sense that I don't expect them to fulfilled anytime soon, if ever. There's no reason, however, not post them here in case anyone else might be interested in tackling them provided they can be tackled:


1. Is there a(n easy) way to go about fixing Frog's behavior for the A.I. in terms of making it so that A.I. Frogs don't run far (far) away from their team? Staying away from the enemy and/or staying behind their teammates when possible is generally fine, but given I'm not hoping for miracles that I don't believe in anyway, I'd be fine with just making it so that Frog A.I. has the A.I. attack as "normal" despite the drastic change to the unit. (Speaking of which, on a related note, has anyone looked into the far, far more minor issue of why A.I. Frogs' attacks supposed ignore Countergrasp reactions?)

2. Is there some way to essentially "fold" Invite into Train so Invite's space on the status list can be used by something else? Or does Invite essentially have to be separate for Train to work properly even if one is not actively using it for something? I'm guessing it's the latter, but there's no reason not to ask really since it isn't abundantly clear due to the rather opaque way that Invite works in general with its invisible, weird flagging.

3. Finally, is there anyway to (easily) assign Berserk status a skill set like Blood Suck (A7) and Frog (A8) have? Between the two "types", I'd personally prefer if it was like Frog's skill set where you--well, the A.I.--are restricted to moves that can only be used if you already had them in either your Primary or Secondary skill set. This compared to Blood Suck's type, where it just seems like A7 outright hijacks anything else could unit originally do and causes them to only use abilities within that skill set since no one but Elmdor has (that version of) Blood Suck (the attack).


Regardless, thanks in advance and good work once again.
Title: Re: ASM Requests
Post by: Choto on March 11, 2015, 11:30:40 pm
Thanks for the congrats, and here's what I have:

1. Is there an easy way? probs not. However, I've recently uploaded all of the disassembly in Battle.Bin to the wiki: http://ffhacktics.com/wiki/BATTLE.BIN

00193e50 to around 0019f2f0 are the AI routines.. so chances are movement decisions are in there somewhere. Although, the exact location is, as yet , unknown.

2. This is a pretty interesting idea. One could hardcode certain ability ID's to initialize a "to be invited after battle" byte for each unit in battle.. then after battle check that instead of invite. However, there is also a bunch of other hardcoding for invite which one would have to remove.

3. For this one you may be in luck. I planned on making a berserker for my own patch and allowing him to use the second half of a skillet when berserk only. So the second half of the skillset would be "berserk only" abilities. The only thing is I don't know when I'll get around to doing this because I'm terrible at making progress with a patch >_> I'd like to do it sometime though.
Title: Re: ASM Requests
Post by: The Damned on March 12, 2015, 01:52:10 am
I see. Thanks, especially for the BATTLE.BIN thing even though I currently won't understand most of it. Good to know for other people at least.

Regardless, waiting is completely fine with me, especially since I'm not guaranteed to finish this (like always) and I read you were pretty busy with summer. It's just good to know about how easy or not it may be to do things given how many things are technically possible. The third thing with Berserk is pretty coincidental though, even though it seems like you and I want it for rather differing purposes and styles of Berserker.
Title: Re: ASM Requests
Post by: The Damned on April 06, 2015, 05:55:46 am
Ugh. I've waited so long to ask some things that I've forgotten most, but given that I can wait regardless, I suppose it's fine since I may remember eventually if it was actually important. Unfortunately the one I do remember is the one most likely to help only me.

So, in the meanwhile, that self-serving question to ask somewhat relates to the "skill set for a status" one above (Choto):


Given that we know (?) at least implicitly from Counter Flood that a reaction can directly tap into a skill set that user doesn't actively have (learned), would it be (easily) possible for a reaction to tap into a skill set that a) isn't bound to terrain or other special conditions, b) (probably) isn't even ever on an active class and--most greedily--c) is somehow divided up into percentages of likeliness within the reaction skill set itself?


I suppose that part c is technically a separate question, so I suppose I should further clarify.

For clarification, I'll use this example: say that the reaction I wanted to make with regards above is "Blow You Away" for an enemy-only class, "Fiend of Wind", and the contents of the linked "Bushy Beard" skill set were five spells: Aero, Aerora, Aeroga, Tornado and Aeroja. Provided that a) and b) worked, would it be (not mind-numbingly) feasible to manipulate the percentages of likelihood to which ability was used by said reaction?

For instance, say I wanted to make Aero & Aerora each have a 30% chance of happening (so 60% combined if that would somehow make coding easier), Aeroga & Tornado 15% each and Aeroja 10%. Would that be possible (without inducing homicidal rage)? I figure if it somehow is-slash-was, then ordering-slash-grouping the abilities in blocks of probability might make things easier, though I'm not sure if it's strictly necessary. Still, I've already the order in mind for the reaction I would be making with this, hence why I'm asking.

(I suppose there's also technically a part d, i.e. if all the above is possible, then would it also be possible to have said reactions forego MP costs even though Counter Magic currently doesn't by default. Asking that, however, is basically Wall Street levels of greed, so it can easily be excised if parts a-c even would work in the first place, especially since I'm kind on the fence with regards to it anyway.)

Regardless, as ever, thanks.
Title: Re: ASM Requests
Post by: The Damned on April 15, 2015, 04:38:51 am
I'll try to make this the last consecutive post I make in here if I can help it. After all, I can wait for things as I've said, especially since I still don't know how to do them myself unfortunately.

That said, having remembered what I forgot to ask above, I should ask it now before I forget yet again. Thankfully, these requests are all easier to explain than the above:


1. Is there a way to make it possible to view skill sets that are already "Mastered!" so that you no longer get auto-locked out of any class's ability screen information if you buy all of its skills (or if they come inherently learned, like with Mime and monsters)?

2. Can formulas be made that specifically cancel a status without needing the appropriate inflict status for it? If so, could one also potentially use another inflict status that also adds something at the same time? (I'm guessing "no".)

3. Is there a way to "junction" status onto the various Charge skills (as a way to help differentiate them beyond just damage)?

4. Finally, can reactions (in theory) be made to react only a limited amount of times per battle before they stop working or are we stuck with unlimited reactions? I vaguely recall this being asked years ago with regards to HP Restore, but I can't recall if it was every answered and otherwise the closest thing is Auto Potion, which doesn't qualify.


Regardless, as ever, thanks.
Title: Re: ASM Requests
Post by: Aqueous on April 15, 2015, 08:57:13 am
Quote from: The Damned on April 15, 2015, 04:38:51 am
I'll try to make this the last consecutive post I make in here if I can help it. After all, I can wait for things as I've said, especially since I still don't know how to do them myself unfortunately.

That said, having remembered what I forgot to ask above, I should ask it now before I forget yet again. Thankfully, these requests are all easier to explain than the above:


1. Is there a way to make it possible to view skill sets that are already "Mastered!" so that you no longer get auto-locked out of any class's ability screen information if you buy all of its skills (or if they come inherently learned, like with Mime and monsters)?

2. Can formulas be made that specifically cancel a status without needing the appropriate inflict status for it? If so, could one also potentially use another inflict status that also adds something at the same time? (I'm guessing "no".)

3. Is there a way to "junction" status onto the various Charge skills (as a way to help differentiate them beyond just damage)?

4. Finally, can reactions (in theory) be made to react only a limited amount of times per battle before they stop working or are we stuck with unlimited reactions? I vaguely recall this being asked years ago with regards to HP Restore, but I can't recall if it was every answered and otherwise the closest thing is Auto Potion, which doesn't qualify.

Regardless, as ever, thanks.


Will answer to the extent of what I know:

2. Yes but depends on the level of configurability.

The quick, dirty way would be to make a formula hack that takes the existing status applying formula and just adds in an extra section that then adds/cancels additional statuses. Could be made to use X or Y for the additional status ID. The limitation would be that you'd be restricted within a certain status "section" ie. below are "two" examples of what I mean:

0x01a7/0x1b - Attack's Status Infliction 1
         0x80 -
         0x40 - Crystal
         0x20 - Dead
         0x10 - Undead
         0x08 - Charging
         0x04 - Jump
         0x02 - Defending
         0x01 - Performing
   0x01a8/0x1c - Attack's Status Infliction 2
         0x80 - Petrify
         0x40 - Invite
         0x20 - Darkness
         0x10 - Confusion
         0x08 - Silence
         0x04 - Blood Suck
         0x02 - Cursed
         0x01 - Treasure

So you'd be restricted into applying statuses within only one of such "sections". So if you wanted to add Darkness and Confusion, no problem. If you wanted to add Undead and Darkness though then this would need to be hardcoded.

3. What do you mean by "junction"? You mean Charge + 1 adds a particular status, Charge + 2 adds another etc.? Could hack the Charge routine to apply certain statuses based on the power stat - again, though, it would be hardcoded simply because in FFTPatcher there's no input fields available for the Charge skills to put a Status ID or whatever.

4. Tentative on this, someone more experienced with ASM hacking might have a more complete answer. From my perspective, you'd need to be storing a byte of information (ie. the number of times it triggered) then pull that byte into the reaction command routine. Not a problem provided there's empty space attributed to the unit for a byte that we KNOW won't affect anything else...which is probably where the main challenge lies. Someone else might know if there's sections of the unit data which are available.
Title: Re: ASM Requests
Post by: Pride on April 15, 2015, 12:38:46 pm
Quote3. What do you mean by "junction"? You mean Charge + 1 adds a particular status, Charge + 2 adds another etc.? Could hack the Charge routine to apply certain statuses based on the power stat - again, though, it would be hardcoded simply because in FFTPatcher there's no input fields available for the Charge skills to put a Status ID or whatever


Errr.... I'm not sure I understand, you could just use the power stat to tie it to one of the inflict status, which all use one byte. Or if you wanted each of the charges having varying power, just have a small table 8 byte in some kanja space.
Title: Re: ASM Requests
Post by: The Damned on April 15, 2015, 07:55:23 pm
(Thanks for the answers Pride, especially so promptly again.)

You actually interpreted the third question correctly for first time. I apologize for using "junction" when I could just said "add". Yes, I'm talking about if it's possible add statuses to the differing charges regardless of their power. I'd be fine with having to hard-code it since, yeah, it isn't in FFTPatcher, and since I wasn't expecting to be able to apply certain statuses based solely on how powerful it was--I merely wondering if you could assign status to the space since, like Item, Throw, Jump and CT, we currently can't really affect Charge otherwise.

Incidentally, you've also answered my question about whether it would possible to make certain Items vulnerable to be Silence, so you've thanks for that too.
Title: Re: ASM Requests
Post by: Kurosabes on April 28, 2015, 04:23:52 am
Quote from: The Damned on April 15, 2015, 04:38:51 am
1. Is there a way to make it possible to view skill sets that are already "Mastered!" so that you no longer get auto-locked out of any class's ability screen information if you buy all of its skills (or if they come inherently learned, like with Mime and monsters)?


You can view mastered skillsets by pressing circle while on a unit's status screen to go directly to their jobs (Instead of Ability -> Learn). It will bypass the "You have already learned all skills for this job" message.
Title: Re: ASM Requests
Post by: Argy on May 09, 2015, 02:54:21 pm
Hello All,

I was wondering if someone could make Equip Change only allow for armour, clothes and robes to be changed. I know that Choto has created one for weapons, so would it be easy to create one just for armour/clothes/robes?
The reasoning behind it is I a member near the end of my FFTX-2 patch and equip change would essentially become garment change.
Kind regards Argy
Title: Re: ASM Requests
Post by: Choto on May 10, 2015, 09:51:24 am
remind me to look into it in about a week. This week is my last final. I think that hack is doable
Title: Re: ASM Requests
Post by: Argy on May 10, 2015, 02:06:05 pm
Choto, thank you for taking tour time to consider the hack and good luck with your finals. I will most definitely ask you in a week or so.

kind regards
Title: Re: ASM Requests
Post by: Choto on May 14, 2015, 04:50:53 pm
Here you go Argy... this should work. Lemme know if you have trouble

<Patch name="Equip change only for helmet, armor, accessory ">
    <Description>
      Disables the ability to change weapons with equip change.
    </Description>
    <Location offset="A694" file="EVENT_EQUIP_OUT">
      <!--Jump-->
C04F0508
21184000
    </Location>
    <Location offset="A6e4" file="EVENT_EQUIP_OUT">
      <!--Jump for menu activity-->
02000224
    </Location>
    <Location offset="ECF00" file="BATTLE_BIN">
      <!--Body for menu activity-->
FeFF4224
03004014
00000000
A7250708
00000000
A9250708
00000000
    </Location>
    <Location offset="A620" file="EVENT_EQUIP_OUT">
      <!--Jump for initialization-->
CC4F0508
00000000
    </Location>
    <Location offset="ECF30" file="BATTLE_BIN">
      <!--Body for initialization-->
1F80013C
EC8F2124
02001034
0800E003
000030A0
    </Location>
</Patch
Title: Re: ASM Requests
Post by: Argy on May 15, 2015, 01:21:00 am
Thank you Choto. I will test and feedback to you. :-)
Title: Re: ASM Requests
Post by: Bradsmr on May 20, 2015, 02:15:52 am
Is it possible to extend JP spillover to the entire party? Even those that are not included in battle? It would be nice to have a hack like this so that you don't have to spend so much time grinding multiple characters (especially special story characters) just to have options and variety in unit selection.
Title: Re: ASM Requests
Post by: Pride on May 20, 2015, 05:33:48 am
Possibly? Certainly but probably not easily done.
Title: Re: ASM Requests
Post by: Bradsmr on May 20, 2015, 08:20:58 am
Ah, was worried it wouldn't be simple. Oh well. What about altering spillover JP to be something like 2/3 (66%) instead of 1/4 (25%)? I saw a few things posted about disabling it, but couldn't find anything about this change specifically. Maybe I just didn't look hard enough.
Title: Re: ASM Requests
Post by: Xifanie on May 20, 2015, 12:04:58 pm
Not easily done? Why? SCUS space or what?
It's just adding a value to the 20 characters in the World data and setting the max to 9999 (which it already does for the units in battle); it's not rocket science.
Title: Re: ASM Requests
Post by: Pride on May 20, 2015, 10:44:49 pm
Yeah SCUS space and I'd be too lazy to rewrite a routine for it =p

Unless you know if there's any free space in scus.
Title: Re: ASM Requests
Post by: Bradsmr on May 22, 2015, 12:04:13 am
Another question: Is there a hack that would set everyone's faith to 70? Or at least have Caster & Target Faith be a constant 70 in spell damage calculation? I used two hacks in FFTorgASM to have the spell damage calculations ignore these values, but this made spell damage waaay too high. (Was simply MA*Y, not reduced by anything) I could just go through and edit all the Y values for spells, but I'd rather not.
Title: Re: ASM Requests
Post by: Choto on May 23, 2015, 09:39:48 pm
I know there were a couple of faith hacks made, but I'm not sure what they do unfortunately... I think there was one like that I remember FDC talking about it or something..
Title: Re: ASM Requests
Post by: gatebuster202 on July 13, 2015, 01:28:07 pm
Hi guys, I've searched the Forums, and can't find anything. Is there a way to change Requires Materia Blade to Requires x Catagory?
I have the ASM to swap it to One Item(I might have a "Combat Shield", but that would be incredibly limiting for the player.)

Specifically, Shields? I'd like to change five or six skills so doing it manually would work too, I'd just have to figure out Exactly which skills I want to lose.

To be clear, I still need the requires sword segment of Patcher. (Considering that's almost a dozen generic skills that use it right this moment.)

Thanks. - Gate

(Also, though not relevant to ASMs, Anyone know if I can make an ability proc a "Shield Hit" on my sprites as the combat animation? IF not, I'll ask elsewhere when I get to that point.)
Title: Re: ASM Requests
Post by: Aiolon on July 13, 2015, 02:15:27 pm
im pretty sure the FFTorgASM comes with a hack that allow you to do this it should appear as
[highlight=yellow]Require Materia blade --> Require item type X (Default Lance)[/highlight]
it allows you to set a weapon category instead of just 1 item. its not the same as the Require Item X


EDIT: there isnt an option for shields tho :/
Title: Re: ASM Requests
Post by: gatebuster202 on July 13, 2015, 05:06:30 pm
Hmm. That's a seperate ASM? I'll go look for it. But lacking the Shield Catagory, still leaves me in a bit of a bind. For now I am going to test the balance of the skills without it.

(We are talking about the preloaded ones? I am hacking on l i t t l e sleep again.
Title: Re: ASM Requests
Post by: nitwit on July 14, 2015, 01:30:30 am
Can we get all stats to update real time in battle as we gain or lose levels?
Title: Re: ASM Requests
Post by: Kaijyuu on July 24, 2015, 02:17:28 am
Dunno if this exists yet:

How about something to change the % chance to get in a random battle? I'd like to halve it.
Also, a lot more complicated: Standing on a random battle map and selecting the dot (like you would in a town to pull up the menu) puts you into a random battle (among all the available battles from any direction, still of course keeping the story progression limits).
Title: Re: ASM Requests
Post by: 3lric on July 24, 2015, 03:25:29 am
http://ffhacktics.com/smf/index.php?topic=953.msg189610#msg189610
Title: Re: ASM Requests
Post by: Kaijyuu on July 24, 2015, 04:04:21 am
Very clever hack. Not exactly what I was wanting (I still want some battles to pop up without your permission, though less) but I imagine I can add in the functionality I want.

Thanks.
Title: Re: ASM Requests
Post by: 3lric on July 24, 2015, 04:44:25 am
Quote from: Kaijyuu on July 24, 2015, 04:04:21 am
Very clever hack. Not exactly what I was wanting (I still want some battles to pop up without your permission, though less) but I imagine I can add in the functionality I want.

Thanks.


...

QuoteAlso, a lot more complicated: Standing on a random battle map and selecting the dot (like you would in a town to pull up the menu) puts you into a random battle (among all the available battles from any direction, still of course keeping the story progression limits).


Nope, It's actually exactly what you asked for. And I doubt you'll be able to easily modify it. It's not of Xif's ASMs and she is a wizard.
Title: Re: ASM Requests
Post by: Austin on August 02, 2015, 02:25:02 pm
Hi folks, I've put up a little hack on romhacking ( http://www.romhacking.net/hacks/2509/ ) and i'm trying to include some stuff that gets rid of some of the more irritating aspects of fft. I'm going to update it soon with one of Razele's asm hacks so that the rare poach % will be doubled from ~12% to ~24% and I wanted to see if anyone would be willing to take a look at one FFMaster's hacks that affects the draw out katana break percentage:



BATTLE.BIN
0x120984
XX000524

This sets all Katana to XX% break when a Draw Out is used. 00 for 0% break chance, 64 for 100% break chance. A lot of people have been waiting for this one =p
NOTE: If you set a formula other than the Draw Out ones, the Katana will still break at 100% chance!



I wanted to set this to 0% and remove the katana breaking feature from the game entirely so that people don't have to deal with their ultra rare legendary folded 12000 times katana breaking like a toothpick the first time they try to use it in a battle, but it doesn't seem to work as it's supposed to. AFAIK katana break chance is tied to the weapon power of the katana, so to test I set all the katanas to 99WP and applied the hack with the new % set to 00 of course. It seems to do something since the katanas don't always break automatically, but sometimes the katana does break and when it does the game doesn't give the "XX was blown away!" or whatever break message, the katana just flat out disappears from the inventory.

So if anybody with the knowhow would be willing to look into this I'd certainly appreciate it, and you'd obviously be given credit over on the romhacking page if you happen to come up with a fix.

Thanks!
Title: Re: ASM Requests
Post by: LohikaarmeX on August 03, 2015, 12:27:35 am
Hi. I'm new in the forums. There's a way to add a formula that makes damage based on a percentage of the max HP of the target? Also, there's a way to add HP cost to the abillities?
Title: Re: ASM Requests
Post by: Jumza on August 03, 2015, 12:57:32 am
The formula's the Demi spells use (and a few others) do damage based on max HP. (I think?)
Title: Re: ASM Requests
Post by: LohikaarmeX on August 03, 2015, 07:42:25 pm
Quote from: Jumza on August 03, 2015, 12:57:32 am
The formula's the Demi spells use (and a few others) do damage based on max HP. (I think?)


Mmm... I think that Demi does half the HP in damage, or something like that. Maybe i check out that one
Title: Re: ASM Requests
Post by: Aiolon on August 03, 2015, 08:39:19 pm
formula 09 of demi and demi2 does % damage
Y = %Damage inflicted
X = Succes chance
ME = Magic evasion (meaning if you use this formula the attack will be considered as magical)

NOTE: the %Damage inflicted is based of target MAX HP not current/remaining HP
Title: Re: ASM Requests
Post by: LohikaarmeX on August 03, 2015, 11:20:02 pm
Quote from: Aiolon on August 03, 2015, 08:39:19 pm
formula 09 of demi and demi2 does % damage
Y = %Damage inflicted
X = Succes chance
ME = Magic evasion (meaning if you use this formula the attack will be considered as magical)

NOTE: the %Damage inflicted is based of target MAX HP not current/remaining HP


Nice to know that. Thanks for the info. :)

Also, there's a ASM out there that add chance of breaking an item using the formulas of Mighty Sword?
Title: Re: ASM Requests
Post by: Aiolon on August 04, 2015, 12:07:31 am
Yes it is!
(http://i354.photobucket.com/albums/r403/Aiolon7/FFT%20patch%20screenshots/ASM_zpsjglyjkw9.png)

if you have the latest version of FFTPatcher suite it should be included in FFTorgASM
the values are in Hex ( 64 Hex = 100 decimal ) so if you want to add another value make sure you convert it into hex first
Title: Re: ASM Requests
Post by: LohikaarmeX on August 04, 2015, 09:12:33 pm
Quote from: Aiolon on August 04, 2015, 12:07:31 am
Yes it is!
(http://i354.photobucket.com/albums/r403/Aiolon7/FFT%20patch%20screenshots/ASM_zpsjglyjkw9.png)

if you have the latest version of FFTPatcher suite it should be included in FFTorgASM
the values are in Hex ( 64 Hex = 100 decimal ) so if you want to add another value make sure you convert it into hex first


Nice! I can use this for my changes to the knight :3

Sorry if i'm a little disturbing, but i'm trying to make a "balance" patch. So i'm looking for formulas n_nu
Now, there's a formula that make HP cost? Also, there's a formula that uses the same damage like Metabone Slash?
Title: Re: ASM Requests
Post by: Kaijyuu on August 05, 2015, 02:33:45 am
Here's a list of all the formulas and some descriptions of them:

ffhacktics.com/wiki/formulas (http://ffhacktics.com/wiki/formulas)
Title: Re: ASM Requests
Post by: LohikaarmeX on August 06, 2015, 05:37:52 am
Quote from: Kaijyuu on August 05, 2015, 02:33:45 am
Here's a list of all the formulas and some descriptions of them:

ffhacktics.com/wiki/formulas (http://ffhacktics.com/wiki/formulas)


Thanks a lot, hands down to you. You're some kind of hero to me now :3
Title: Re: ASM Requests
Post by: Kaijyuu on August 06, 2015, 05:56:58 am
Thank the people who actually made the list. It's helped me a lot too.



Request of my own:
Gained JP Up innate all. Manually doing this in the patcher takes away one innate slot from every humanoid unit, which is a big deal for things like Dragoner, which have all 4 slots already taken up. Other methods (like reducing JP costs to do effectively the same thing) have side effects too. Modifying the JP gain formula to always have the 3/2 multiplier would be the cleanest way of doing things.
Title: Re: ASM Requests
Post by: gatebuster202 on August 06, 2015, 12:26:32 pm
@ Kaijyuu. Check the base group of ASMs that came with the most recent patch suite. That should be in there. (Along with Attack, Defense, Magic Defense and Magic Attack Up. Equip Change, and Defend as well.)
Title: Re: ASM Requests
Post by: Kaijyuu on August 06, 2015, 12:58:03 pm
Redownloaded it (482, the one linked in the important links thread) and looked thoroughly; didn't see it there. (I DID see most of the various other things you mentioned though.)
Title: Re: ASM Requests
Post by: gatebuster202 on August 06, 2015, 01:09:23 pm
Let me get on my computer. I swore I saw it on my ASMs list.
Title: Re: ASM Requests
Post by: 3lric on August 06, 2015, 01:16:07 pm
.482 isn't the most recent version. .483 is..
Title: Re: ASM Requests
Post by: Kaijyuu on August 06, 2015, 01:29:14 pm
Looked around for that; only found this (http://ffhacktics.com/smf/index.php?topic=7163.msg189742#msg189742) which has the same asm hacks included as .482.

If .483 is stable and release worthy, the wiki and stickies should probably be updated.
Title: Re: ASM Requests
Post by: Kaijyuu on August 08, 2015, 06:27:19 pm
Fulfilled my own request (well actually most of the work was done by whoever put stuff on the wiki):


Gained JP Up innate all

BATTLE.BIN
Address: 1179a4
Change to 00000000
Title: Re: ASM Requests
Post by: Angel on August 08, 2015, 08:30:59 pm
When I saw the aforementioned request, I asked in chat if it had already been made, since I was sure I'd seen it before, but I didn't get a response. At least now it's certainly a thing. Good work! <(^.^)b
Title: Re: ASM Requests
Post by: LohikaarmeX on August 20, 2015, 05:25:49 am
Sorry if this it's not the right place but... There's a formula to make a 100% knockback skill?
Title: Re: ASM Requests
Post by: 3lric on August 20, 2015, 05:37:30 am
This already exists and comes with the default hacks with FFTP...

It's in Zodiac.xml and the patch name is X% chance of Knockback for Dash/Throw Stone

also, one thing to keep in mind:

Quote from: formerdeathcorps on January 02, 2012, 02:03:58 am
All it does is change a byte.  Of course it works, though you should know that knockback does not work if the terrain type behind a unit is different than the one he is currently standing on or of higher elevation.


(I found ALL this info by simply typing 100% knockback in the searchbar btw)
Title: Re: ASM Requests
Post by: LohikaarmeX on August 20, 2015, 09:30:08 am
I know i didn't search in the bar, but the time difference from here (Actually, in Argentina, was the 6 AM when i post the message) it's a problem... And almost died over the keyboard at that time. But, Elric, thanks a lot
Title: Re: ASM Requests
Post by: Supernaut on August 20, 2015, 02:15:03 pm
Hello! Long time lurker, first time poster here, hope I'm posting this in the right thread.
I don't know if something like this has already been suggested, but what if instead of choosing whether a spell would target a unit/tile, one could choose whether to cast a spell by using MP or by charging?

If you chose to use MP, the spell would be cast instantly but there would be no means of restoring MP (all MP restoring abilities and items would be removed).
If, on the other hand, you chose to cast the same spell via charging the spell would only be able to target a panel (in other words, follow target would be disabled).

I tried to do something similar in my patch by creating duplicate abilities, one with a charge time and the other with an MP cost. So the black magic skillset, for example, has Fire (MP) and Fire (CT).
As you can see, this solution isn't all that elegant and it limits the amount of abilities with different effects you can have in the same skillset, but I kinda like it so far.

This isn't really a request, just an idea I thought I'd post to hear your opinions or if someone wanted to use it for their patch. If someone with ASM skills took a liking to it, all the better  ;)

P.S. thanks for the amazing patching tools and patches, and I apologise if my post is a bit hard to read since english is not my first language.
Title: Re: ASM Requests
Post by: reyhan37 on August 25, 2015, 10:21:17 am
I've noticed that with a bow, even if a target is within range 3, but height +4, the target is out of range. That doesn't make sense to me.

I believe the following should be within bow range

Is there already a hack for this? If not, can someone make one?

Another request:

The damage formula for crossbows is WP * PA.

I don't think PA should play in any part in a crossbow's damage. Its power comes from the mechanical spring of the crossbow and the penetration of the bolt. I propose

[Damage] = WP * WP
ignores Zodiac compatibility
Title: Re: ASM Requests
Post by: Emmy on August 25, 2015, 09:02:37 pm
Quote from: reyhan37 on August 25, 2015, 10:21:17 am
Another request:

The damage formula for crossbows is WP * PA.

I don't think PA should play in any part in a crossbow's damage. Its power comes from the mechanical spring of the crossbow and the penetration of the bolt. I propose

[Damage] = WP * WP
ignores Zodiac compatibility


http://ffhacktics.com/smf/index.php?topic=7271.0

This can be done with one of the spreadsheets i linked here. You can change any weapon to whatever formula you want within the ones listed, and wp^2 is one of the options.  Not sure if you can edit zodiac compat for individual weapons though.
Title: Re: ASM Requests
Post by: Darkholme on August 28, 2015, 09:21:27 pm
Quote from: reyhan37 on August 25, 2015, 10:21:17 amThe damage formula for crossbows is WP * PA.

I don't think PA should play in any part in a crossbow's damage. Its power comes from the mechanical spring of the crossbow and the penetration of the bolt. I propose

[Damage] = WP * WP
ignores Zodiac compatibility

This kind of formula is what makes Gun and Monk damage so wonky. In this case you're looking at Gun Damage for Crossbows.

This will result in Guns being significantly more effective to a poorly leveled party, and near useless in comparison to other weapons If you're someone who does some grinding to get the jobs, skills, and levels they want their characters to have.

This is of course the opposite effect of Martial Arts, which is super effective if you are well leveled, and complete shit if you're under-leveled.

This is (obviously) because stats scale by level, and items scale by plot progression. Weapons that use just one or just the other balance poorly. Regardless of whether you CAN implement such a formula, it's a bad idea.

A better idea would be to have a variable that increments based on plot progression (this may already be a thing, either by default or in another hack) and then build a formula based on that, multiplied out to have the same basic progression as whatever the average growth pattern of item-based damage is.

In the case of the crossbow (and gun) perhaps use a multiplied Spd to effectively yield a number range on the same scale as your PA.
Title: Re: ASM Requests
Post by: TigerKnee on November 09, 2015, 09:19:05 pm
May I request a simple ASM hack where the ability triggered by Caution is changed from Defending to Haste?

And a (not sure if impossible) ASM hack for Gilgame heart which triggers a single random status infliction on the reactor from a set of (Defending/Reraise/Regen/Protect/Shell/Haste/Death Sentence)?

And is there an easier way to do the 1st request much more easily with an FFTOrgasm patch so I can change any reaction's triggering status condition into what I want instead of requesting?

I know about this page but I don't understand how to actually use the information in it (what does "Load Attack's Status Inflict" connect to?)
http://ffhacktics.com/wiki/Sunken_State,_Caution,_Dragon_Spirit,_etc._usability
Title: Re: ASM Requests
Post by: Emmy on November 09, 2015, 10:33:40 pm
The first one is easy.  I changed sunken state into haste for my mod, code for it is here:

<Patch name="Sunken State adds Haste">
    <Description>Sunken State adds Haste</Description>
    <Location file="BATTLE_BIN" offset="00124020">
      08000234
    </Location>
    <Location file="BATTLE_BIN" offset="00124028">
      1E0062A0
    </Location>
  </Patch>

Though if you want to change Caution into Haste instead, use the offsets here instead of those of Sunken State (Also answers your 3rd  question): http://ffhacktics.com/smf/index.php?topic=6505.0
Title: Re: ASM Requests
Post by: TigerKnee on November 09, 2015, 10:51:15 pm
Thank you for that.

Is Sunken state + Dragon Spirit + Caution + Regenerator the only ones that are easily changed in this way? Any way to change Gilgame Heart to work in a similar way?
Title: Re: ASM Requests
Post by: Emmy on November 09, 2015, 10:59:13 pm
I'm not sure if anyone has figured out how to change Gilgame heart into something better.  I know another patch has changed Face Up into another status infliction ability, no clue how he did it though since to my knowledge the hack was never posted here.  Those 4 abilities can be changed easily with that hack though. 
Title: Re: ASM Requests
Post by: TigerKnee on November 09, 2015, 11:04:41 pm
Ok, thanks for the help.

Btw, for that particular hack, what is the YY "Status Bit Offset" supposed to do in relation to the XX value?
Title: Re: ASM Requests
Post by: Emmy on November 11, 2015, 02:08:47 am
Status bit xx is which status you want, yy is which group it's from.  So for example you can create an ability that gives protect and shell, but you can't combine protect and transparent, because they must be in the same group.
Title: Re: ASM Requests
Post by: theultrawolf on November 17, 2015, 09:36:10 am
Not even sure if this is possible...
Would it be possible to create a support ability (hell, even an action ability) that has similar qualities to the Rampart Aura skill in Tactics Ogre? Basically what it does is prevent movement beyond the Rampart Aura's radius, and then each turn you can get one square closer to that unit. So basically it hampers Move within a certain AOE. (It could even be a status, or a mixture of both, since there's an Action ability in TO that gives the status, as well as the support ability which gives it innately.)
Title: Re: ASM Requests
Post by: Adhelbert on November 18, 2015, 07:12:58 pm
Hello everybody ..

Just wondering if i can get these abilities :
(Shield, Bubble, Sturdy, Adeptness, counter deathblow, Keen senses) from Jot5.

And can the asm hacks that used to change all damage formulas in call of power, can i used it in vanilla? If yeah, can i get it ?


And the last question : How can i do this ?
Make Hp Boost -Dark Knight Support ability from wotl-

Sticky Fingers -i want it work this way : when a unit try to attack u & use their weapon except (gun, bow, crossbow) there will be a chance to steal that weapon-.

Thanks to anyone help me :D.
Title: Re: ASM Requests
Post by: 3lric on November 18, 2015, 10:17:41 pm
Quote from: Mike on November 18, 2015, 07:12:58 pm
Just wondering if i can get these abilities :
(Shield, Bubble, Sturdy, Adeptness, counter deathblow, Keen senses) from Jot5.


Lol, no. Not until the re'release is out anyway. Things are being reworked and retested ASMwise.
Title: Re: ASM Requests
Post by: theultrawolf on November 19, 2015, 12:02:41 am
Emmy, your Raw JP Gain +130 is a little bit glitchy. I tested it out on a fresh ISO file and when I enter a battle, after a unit uses an ability (of any kind) they DO gain the 130 JP, but their job is reset to 1 with only 130 JP gain. It does this every time you enter a new battle.
Title: Re: ASM Requests
Post by: Jumza on November 22, 2015, 08:48:06 pm
Request

The Status button (when checking a unit mid-turn that has ??? stats set) is not greyed out. This way you can see an enemies stats / current statuses / equipment / RSM even if they have ???.

This shouldn't be a huge deal right? I mean, ??? multiplies HP and MP so those remain the greyed out ??? bars that they are, but PA and MA aren't increased, so just revealing the page shouldn't be too much trouble... Right?
Title: Re: ASM Requests
Post by: theultrawolf on November 22, 2015, 09:01:50 pm
Shouldn't be. since using battle debug you can actually see ??? status. And everything in the status except the equipment/skills are ???
Title: Re: ASM Requests
Post by: Xifanie on November 23, 2015, 01:17:12 am
Quote from: Jumza on November 22, 2015, 08:48:06 pm
Request

The Status button (when checking a unit mid-turn that has ??? stats set) is not greyed out. This way you can see an enemies stats / current statuses / equipment / RSM even if they have ???.

This shouldn't be a huge deal right? I mean, ??? multiplies HP and MP so those remain the greyed out ??? bars that they are, but PA and MA aren't increased, so just revealing the page shouldn't be too much trouble... Right?


http://ffhacktics.com/smf/index.php?topic=953.msg212314#msg212314
Title: Re: ASM Requests
Post by: ArcticPrism on December 29, 2015, 08:25:23 pm
Am I allowed to make more than one request in my post?

Poison/Regen is 1/5 of HP

Phoenix Down only takes 50% of undead HP.

Change Gun damage formula from Dmg_(WP^2) NS NE to  Dmg_[Weapon] PE NE. Basically, I want guns to use normal weapon damage formula but instead of being based on weapon power ^2 so it can scale while keeping the no evade.

Thanks in advance!
Title: Re: ASM Requests
Post by: Argy on January 02, 2016, 05:06:48 am
Hello,
Is there away your come up with a formula (or ability) that let's see me use a random ability from a prescribed skillset. Like the Shades of Black ability from FFXII.

Cheers Argy
Title: Re: ASM Requests
Post by: Atma on January 04, 2016, 06:28:52 pm
@Mike
Your Sticky Fingers reaction ability is doable.  I think the Hamedo Fix and chosen ability hack by choto is exactly what you need.  Should be able to change the action to Steal Weapon (or your own custom ability) during Hamedo, instead of the default Attack.  http://ffhacktics.com/smf/index.php?topic=8507.0
Title: Re: ASM Requests
Post by: HalfGodBro on January 08, 2016, 06:04:39 am
Hi, i am looking for a way to make certain abilities to retain their AoE when casted via On hit Effect, do i need ASM Hack for this, or theres a way to do that with FFTPatcher?
Title: Re: ASM Requests
Post by: Blitzball Pro on March 05, 2016, 10:32:45 am
Hi everyone, I have an idea I wanted to throw out there or at least see if it is even viable. I know there are GameShark codes which make all enemy units controllable for example. I was wondering the possibility of asm hacking a new mechanic/status/ability that would that would allow a unit to control an enemy unit, such as Relm's control skill in Final Fantasy VI or the Beast master's monster type control in Final Fantasy Tactics Advance? It should probably be similar to charm in that a successful attack against a controlled unit would cancel status.
Title: Re: ASM Requests
Post by: Choto on March 09, 2016, 10:44:52 pm
that could actually be done without tieing it to a status. You could set the control byte for the target in the formula, and then remove it at the same code that does it for charm. There wouldn't be a display... but you could actually add one in based on those conditions (enemy team + control).

you would have to add the removal in this routine I think:
http://ffhacktics.com/wiki/Store_status,modified_ENTD_for_current_attack

and you would edit this byte:

   0x0005: ENTD Flags
      0x80 - Always Present
      0x40 - Randomly Present
      0x3X - Green Team
      0x2X - Light Blue Team
      0x1X - Red Team
      0x0X - Blue Team
      0x08 - Control
      0x04 - Immortal
      0x02 - (both set by Ramza when initialized)
      0x01 -

Otherwise if you want a status CT to count down... it's more involved or different.
Title: Re: ASM Requests
Post by: Blitzball Pro on March 12, 2016, 04:55:39 pm
Hi Xifanie, I haven't had the chance to pinpoint what is causing it, because I did not change anything from default as far as items or throwing items is concerned, but with the alternate animations patch applied whenever a unit uses an item on another unit it freezes the game.
Title: Re: ASM Requests
Post by: Fosil on June 10, 2016, 08:37:34 pm
I've a request, if someone(s) would be so kind.

Change the 'Innocent'/'Atheist' status to a copy of the 'Faith' status but with Bravery. So, a 'Bravery' status that temporary sets Brave to 100.
Or, if someone has figured out how to make 'Blood Suck' status allow player control, tack this 100 Brave effect onto it, so I can keep Innocent?

It is something I've desired for a while now. And I failed trying to do it in a very convoluted way by using the ASM that sets Status X into using Wall's CT.  I used Blood Suck for this instance, and gave the Blood Suck skillset a 0 JP, 100% learn-chance support ability that increases Brave by 100 via ALMA attributes. (And although I removed Blood Suck from the skillset, AI still uses it.)

As you can imagine, with Blood Suck's hardcode limits, always AI control, and other limiting factors(?), it did not work.

I've seen that there is a way to fix AI behavior for Blood Suck, involving more ASM and "nops" which I'm not familiar with. Whether that would allow player control of the unit, or prevent AI use of Blood Suck ability, I do not know.

Finally, I figure units can't gain impromptu temporary Support abilities that alter stats mid battle?

TL;DR: Innocent/Atheist status replaced with Bravery=100 instead. OR a fully fixed Blood Suck status with this 100 Brave effect tacked on.
Title: Re: ASM Requests
Post by: Emmy on June 11, 2016, 07:15:05 pm
Why not just disable Wall along with the asm that makes ai no longer ignore Wall units, and then use Alma to grant 100 br to Wall?  Then you'll get to keep Blood Suck or change it to do something else negative.

What do you mean by impromptu temporary support abilities mid-battle?  I've been able to successfully make a few abilities that increase effective speed/damage output under Berserk/Critical.  I'm guessing this isn't what you mean?

Title: Re: ASM Requests
Post by: Fosil on June 12, 2016, 10:27:05 pm
I thought that despite any attempts to fix Wall, AI still ignores those with it? As in, unknown hardcoding still plagues it? (Or am I not making sense of the post I saw where someone, I forget who, striked-through a clause about AI and Wall behavior after ASM-ing and it still not working right...)

And, I'm not sure how to edit the statuses themselves? ALMA can't do it?

Or it can, and I just derp? Like you say, you've done similar things... Looking over the ALMA editor again, I see nothing about status edits?

(And as far as "impromptu temporary support abilities" I meant, you can't make it so units temporarily gain a Support ability like say... 'Attack Up' or 'Short Charge' when tacked onto a Status effect with CT, right? (For example only.))

*Edit*
Is it ALMA Script? I see a sort of way ASM "If Wall flagged, reward with setting Modified Brave with a Value of 64 hex (100 dec)". Am I on the right track? I have no idea how to do it correctly, though. :(
Title: Re: ASM Requests
Post by: Emmy on June 13, 2016, 12:45:55 am
http://ffhacktics.com/smf/index.php?topic=5658.0

"Wall does nothing and ai attacks units with wall status" - Never had any issues whatsoever with this.

As for actually coding a new status, there's a few hacks around that do that (such as the "mist" hack).  Many status effects and support abilities are coded similarly - all over the place in the code, in spots relevant to whatever it does or when it resolves.  For example, Attack/Defense up as part of the physical attack routine, poison/regen in a routine that plays at a unit's turn end, haste/slow in a routine that checks turn order, etc.

I think it's possible to replicate the effects of support abilities as a status, depending on what you want to tie to the status effect.  You need to be more specific as to what you want on a status effect though.
Title: Re: ASM Requests
Post by: Fosil on June 13, 2016, 07:06:28 pm
Ah, thank you, Emmy. I suppose there being multiple posts on the topic confused me.

So, I would like: Wall status = Bravery 100. (Like Faith)
Title: Re: ASM Requests
Post by: nitwit on July 08, 2016, 11:43:16 am
Request: dehardcode the ability formulas.
Title: Re: ASM Requests
Post by: Xifanie on July 08, 2016, 11:50:21 am
http://ffhacktics.com/smf/index.php?topic=8051.0

But hey, it doesn't work. All I have to say to fdc is:
(http://images1.tickld.com/live/677989.png)

Because it's an enormous endeavor of astronomical proportions, and with how easy it is with Chotokukyan and SecondAdvent's documentation on the wiki to create custom formulas, I just don't see a point to doing so.
Title: Re: ASM Requests
Post by: Emmy on July 08, 2016, 05:22:57 pm
If you want formulas, there's *TONS* in my asm topic, and I'm working on more.  :)
Title: Re: ASM Requests
Post by: nitwit on July 08, 2016, 08:26:50 pm
Quote from: Xifanie on July 08, 2016, 11:50:21 am
http://ffhacktics.com/smf/index.php?topic=8051.0

But hey, it doesn't work. All I have to say to fdc is:
(http://images1.tickld.com/live/677989.png)

Because it's an enormous endeavor of astronomical proportions, and with how easy it is with Chotokukyan and SecondAdvent's documentation on the wiki to create custom formulas, I just don't see a point to doing so.

Pretty clever to tie them to unused flags in FFTPatcher.  Might be fun to LARP about it.

Quote from: Emmy on July 08, 2016, 05:22:57 pm
If you want formulas, there's *TONS* in my asm topic, and I'm working on more.  :)

Not much point in making something that isn't modular.  Way less effort in the long run... but still probably too much.
Title: Re: ASM Requests
Post by: Jumza on July 08, 2016, 09:00:44 pm
Quote from: nitwit on July 08, 2016, 08:26:50 pm
Not much point in making something that isn't modular.  Way less effort in the long run...


Unless you just wanted something specific :P As Xifanie said, it's easy enough to just make what you want with all the documentation on the wiki. Emmy doesn't just make formula's for the heck of it, she either uses them for her own purposes or makes them for other people.
Title: Re: ASM Requests
Post by: Blitzball Pro on July 08, 2016, 09:47:25 pm
Been a long time since I've posted anything, sorry I've got so much personal stuff going on, especially apologize to Xif, haven't had time to test your alt animations yet either. I suspect I'll get to have a bit more pc time soon though once people get back from vacation at work and when my inlaws move downstairs and we get more than our large room for ourselves and our kids. Anyways, I was wondering if there is a way to give special units a completely different job tree than generics? I think Rad can get me close to it, and most likely would have to cut each wheel at least in half, but basically want to change it so special/unique classes start on a different generic job, perhaps further down the wheel or even be able to choose where each individual one starts, ie if it the character is more of a mage than warrior type for example. Or if there is some kind of tool I am missing do exactly that without ASM?
Title: Re: ASM Requests
Post by: Pride on July 09, 2016, 02:05:35 am
I was originally altering the formulas to read as a script so you could be able to add in the routines that you wanted to use for each individual formulas. Not as expansive as FDCs which go by individual ability but very flexible (and easier to implement/code).
Title: Re: ASM Requests
Post by: nitwit on July 10, 2016, 09:50:53 pm
That sounds mighty interesting Pride.  This fdc guy didn't really tell people what he was trying to do or document anything, so all his work is long gone.  If it's planned out, it will be easier for several people to work on and for people to pick it up when one person quits.

I don't want to spam this topic though, so want to make another one?  What should it be called?
Title: Re: ASM Requests
Post by: Emmy on September 03, 2016, 12:43:52 pm
I'm looking to merge Move on Water, Move on Lava, Move in Water, Move Underwater, Any Weather into one ability; and disable the rest of the slots.  Just changing the terrain data itself (via the Status/Terrain/Multiplier spreadsheet) wasn't enough, and I can't find where the game enables a character to stand on a lava square. :(
Title: Re: ASM Requests
Post by: dotchan on September 03, 2016, 09:45:29 pm
Is it possible to make it so that Guests cannot change classes or gear?
Title: Re: ASM Requests
Post by: Darkholme on September 03, 2016, 11:48:41 pm
Not that I know of.

But they take up a slot in any battles they're present in, anyways.

The way *I* would do it, is have them never actually join as guests at all, and just make them friendly NPCs in battle with the gear they're supposed to have.
Title: Re: ASM Requests
Post by: nitwit on September 06, 2016, 01:05:59 am
Quote from: Darkholme on September 03, 2016, 11:48:41 pm
Not that I know of.

But they take up a slot in any battles they're present in, anyways.

The way *I* would do it, is have them never actually join as guests at all, and just make them friendly NPCs in battle with the gear they're supposed to have.

How many character slots would that free up, at the expense of some slightly larger battle editing?  Aren't guests already present in the battles anyways?
Title: Re: ASM Requests
Post by: Xifanie on September 06, 2016, 02:45:49 am
Quote from: dotchan on September 03, 2016, 09:45:29 pm
Is it possible to make it so that Guests cannot change classes or gear?

You could probably force the game to read slot 17-20 as monster types (only when checking their ability/item menus though), but that would still be a bit of trouble to code.
Title: Re: ASM Requests
Post by: Desocupado on September 06, 2016, 05:54:04 am
How about changing reaction trigger rate to be independent from brave.
I see all critical XXX as having 100% trigger.
Some others too like distribute and damage split.
Title: Re: ASM Requests
Post by: Darkholme on September 07, 2016, 12:51:04 am
Quote from: nitwit on September 06, 2016, 01:05:59 amHow many character slots would that free up, at the expense of some slightly larger battle editing?

3 or 4 I think? Someone already made a hack that lets you use the guest slots for your own characters. Personally I never run out of slots anyways (unless I'm running around hatching eggs and most of my slots are full of unhatched eggs). It's a pain to keep everyone up to level, so I always just do 5 that are kept up to level + whatever special characters I'm lugging around for cutscenes.

Quote from: nitwit on September 06, 2016, 01:05:59 amAren't guests already present in the battles anyways?
Yes, but by default it loads their stats from your party roster, and then saves back to party roster, rather than recalculating them each fight.

If you were to skip the load & save (turn the flags off), and set their gear to Random, level to Party Level, and Job to whatever you want it to be, that's how I'd handle it. As an added bonus, your guests are now actually the same level as your PCs rather than underleveled and shitty (though their job/skill loadouts may still suck, depending on how you handle your skill JP/level JP/job requirements).
Title: Re: ASM Requests
Post by: nitwit on September 07, 2016, 12:37:21 pm
Quote from: Darkholme on September 07, 2016, 12:51:04 am
3 or 4 I think? Someone already made a hack that lets you use the guest slots for your own characters. Personally I never run out of slots anyways (unless I'm running around hatching eggs and most of my slots are full of unhatched eggs). It's a pain to keep everyone up to level, so I always just do 5 that are kept up to level + whatever special characters I'm lugging around for cutscenes.
Yes, but by default it loads their stats from your party roster, and then saves back to party roster, rather than recalculating them each fight.

If you were to skip the load & save (turn the flags off), and set their gear to Random, level to Party Level, and Job to whatever you want it to be, that's how I'd handle it. As an added bonus, your guests are now actually the same level as your PCs rather than underleveled and shitty (though their job/skill loadouts may still suck, depending on how you handle your skill JP/level JP/job requirements).

IIRC that doesn't even require event editing.  That's just battle editing.  Turn off the join after battle flag, then use the guest slot hack. 

Title: Re: ASM Requests
Post by: Darkholme on September 08, 2016, 09:45:09 pm
Quote from: nitwit on September 07, 2016, 12:37:21 pmTurn off the join after battle flag, then use the guest slot hack.
And specify the stats you want them to have; yes.

Isn't that what I said?

You do that, and nobody is doing any tampering with "Guest" equipment or skills.
Title: Re: ASM Requests
Post by: Emmy on September 08, 2016, 11:31:23 pm
I've already done it that way in my mod (due to needing the special class slots for something else, and to keep the human characters from being too crappy).    No ASM required here.  Uncheck save/load formation for *every* instance the character appears in, and uncheck "join after event" if that appears too.  Make sure you edit every instance the character appears in to the Br/fa you want, gear, class, etc.  If you set them to party lv, and make them master a class they're in, they'll at least be able to do something at any player level.  As a bonus, check "Control" and the player can control the guests (Keep Algus from using all your Potions this way!) :P

@Desocupado - changing *all* reactions to 100%, or to use a different stat would be pretty easy.  All reactions use this routine in some form: http://ffhacktics.com/wiki/Chance_to_React  Changing a few to 100% while keeping others not is a bit tricky.  Would be easier/take less space if you wanted, say all critical triggers to behave that way.
Title: Re: ASM Requests
Post by: Darkholme on September 09, 2016, 08:41:56 pm
Quote from: Emmy on September 08, 2016, 11:31:23 pm(Keep Algus from using all your Potions this way!)
That rat bastard! I have on several occasions killed him because he was an active detriment to the party. Contributing nothing useful, and using up all my items.
Title: Re: ASM Requests
Post by: ArcticPrism on September 17, 2016, 08:54:43 pm
How about something that changes gun damage from WP^2 NE to PA * WP NE?
Title: Re: ASM Requests
Post by: nitwit on September 18, 2016, 05:48:05 am
I'm pretty sure that's been done before.  Most of the weapon damage formulas have.
Title: Re: ASM Requests
Post by: ArcticPrism on September 24, 2016, 12:40:54 am
Quote from: nitwit on September 18, 2016, 05:48:05 am
I'm pretty sure that's been done before.  Most of the weapon damage formulas have.


I've been able to change it to PA * WP with Torg ASM but it loses the no evade flag which is what I really want to keep.
Title: Re: ASM Requests
Post by: nitwit on September 24, 2016, 04:08:14 am
Here is the gun damage formula:
http://ffhacktics.com/wiki/03_Dmg_%28WP%5E2%29

Here is the generic weapon damage formula:
http://ffhacktics.com/wiki/01_Dmg_%28Weapon%29

Follow the generic weapon damage formula to:
http://ffhacktics.com/wiki/Weapon_Damage_Calculation

Follow that to base XA damage calculation for each weapon (besides guns, apparently):
http://ffhacktics.com/wiki/Base_XA_Calculation

This seems to be the line to load an attackers PA into r16:
0185ad4: 90500036 lbu r16,0x0036(r2)          Load Attacker's PA

I'm guessing you could change these lines in 03 Dmg(WP^2) to load PA, but I'm not quite sure what register they should be loaded into:
00188bfc: 3c018019 lui r1,0x8019
00188c00: a42238d0 sh r2,0x38d0(r1)      YA = WP

Title: Re: ASM Requests
Post by: dw6561 on September 27, 2016, 11:24:51 am
What about making statuses like Undead or Confusion have a CT (without replacing the CT of another status)? I realize this would be pretty complicated (considering that it would have to expand upon at least 3 routines relating to status CT setting, decrement, and whatever else I'm missing), but I also know that it would be helpful. Let me know if this is a good idea or if it changes too much to be worthwhile in the end.
Title: Re: ASM Requests
Post by: Emmy on September 27, 2016, 09:40:03 pm
Does anyone know where this menu is in the code?  Specifically this option (Max equip at job change).  I'd like to either default it to "off" or turn it off permanently in the code and not give the option to put it back on again, whichever is more feasible.  But I can't find it in the wiki. :(

(http://i.imgur.com/kDTxyCs.jpg)

Title: Re: ASM Requests
Post by: nitwit on September 28, 2016, 09:51:38 am
Quote from: dw6561 on September 27, 2016, 11:24:51 am
What about making statuses like Undead or Confusion have a CT (without replacing the CT of another status)? I realize this would be pretty complicated (considering that it would have to expand upon at least 3 routines relating to status CT setting, decrement, and whatever else I'm missing), but I also know that it would be helpful. Let me know if this is a good idea or if it changes too much to be worthwhile in the end.

IIRC there's a hack that combines the CT of statuses that cancel each other (regen/poison, haste/slow, possibly death-sentence/reraise) to free up room for this.  Author was Pokeytax or Glain, I think.  Download latest version of FFTOrgASM and it should be present in one of the XML files.

Quote from: Emmy on September 27, 2016, 09:40:03 pm
Does anyone know where this menu is in the code?  Specifically this option (Max equip at job change).  I'd like to either default it to "off" or turn it off permanently in the code and not give the option to put it back on again, whichever is more feasible.  But I can't find it in the wiki. :(

(http://i.imgur.com/kDTxyCs.jpg)

http://ffhacktics.com/wiki/Data/Table_Locations

800473ac - Customized Options
NOTE: each of the flags uses the next bit as well, but it's just to display
either "Customize" or "Initialize" (0 = Off, 1 = On, 2 = Custom, 3 = Initial)
0x80000000 -
0x20000000 - Max Equip at Job Change
0x08000000 - Target Flashing
0x02000000 - Display Gained Exp/JP
0x800000 - Show Unequipable Items
0x400000 - Sound = Wide
0x200000 - Sound = Stereo (both off = Mono)
0x080000 - Show Effect Message
0x020000 - Show Ability Name
0x8000 - Navigation Message
0x2000 - Message Speed = Slow (both off = Fast)
0x1000 - Message Speed = Regular
0x0c00 - Finger Cursor Repeat Speed = Slowest
0x0a00 - Finger Cursor Repeat Speed = Slower
0x0800 - Finger Cursor Repeat Speed = Slow
0x0600 - Finger Cursor Repeat Speed = Regular
0x0400 - Finger Cursor Repeat Speed = Fast
0x0200 - Finger Cursor Repeat Speed = Faster
0x0000 - Finger Cursor Repeat Speed = Fastest
0x01c0 - (8 total CS on MH speeds?)
0xZ0 - Cursor speed on multiple heights
0xc0 - Cursor Speed on Multiple Heights = Stop
0x80 - Cursor Speed on Multiple Heights = Slow
0x40 - Cursor Speed on Multiple Heights = Regular
0x00 - Fast
0x0Z
0x38 - (8 total cursor reset speeds?)
0x10 - Cursor Repeat Speed = Slow
0x08 - Cursor Repeat Speed = Regular (both off = Fast)
0x07 - (8 total cursor movement types?)
0x01 - Cursor Movement Type = B (off = A)

800473b0 - Default Options


My guess is you change the default options.  I assume they use the same structure as the customized options above them.
Title: Re: ASM Requests
Post by: Emmy on October 01, 2016, 01:09:36 am
So I tried turning this "off" by changing the default settings.  It doesn't say "off" though but "customize" and no idea why. :(

Any idea where the code that this setting enables is actually?  If I can't disable this way, maybe the actual code can be disabled.

**EDIT**  Figured out this, also put in my asm topic:


  <Patch name="Disables equip at job change">
    <Description>Option 12 (Equip at Job Change) does nothing. Code is disabled, so game behaves as if permanently off.</Description>
    <Location file="WORLD_WORLD_BIN" offset="448a8">
      32000010
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="3ee28">
      00000000
    </Location>
  </Patch>


Also updated Wiki in relevant routines.
Title: Re: ASM Requests
Post by: gatebuster202 on October 07, 2016, 12:21:13 am
Hi guys, been a bit, since I posted anywhere but Arena. Working on my mechanics portion of my patches. Anyway, I was wondering if anyone had or could whip up a Random Fire Formula that either A) Used Weapon Damage and was PE, or B) was PA*Y Based?
Preferable to override any Formula between 5E-60 in Patcher.

A might look like Dmg_Weapon #Hit(1,X)
B might be                PA*Y #Hit (1,X)

Was looking for a less overpowered form of Barrage from WotL (Yuk...) And a way to keep crossbows relevant later in the game. Also, could use the Formula for a few other skills, but those reasons are the immediate concern.
Title: Re: ASM Requests
Post by: Timbo on November 19, 2016, 04:23:07 pm
I want to include a couple of conflicting ASMs in the text + mechanical changes version of my patch. Would anyone be willing to adjust these?

1. Choto's Alternate Permadeath Hack
  <Patch name="Alternate Permadeath Hack">
    <Description>
      Instead of crystallizing or treasuring, at the end of the death countdown units will become "knocked out" like guests normally

do. The unit will not be lost after, but will be inaccessible until the proposition "Destiny of the Company is done. See

http://ffhacktics.com/smf/index.php?topic=8507.0 for more info.

   Locations:
   $00   Lesalia Imperial Capital
   $01   Riovanes Castle
   $02   Igros Castle
   $03   Lionel Castle
   $04   Limberry Castle
   $05   Zeltennia Castle
   $06   Gariland Magic City
   $07   Yardow Fort City
   $08   Goland Coal City
   $09   Dorter Trade City
   $0A   Zaland Fort City
   $0B   Goug Machine City
   $0C   Warjilis Trade City
   $0D   Bervenia Free City
   $0E   Zarghidas Trade City
   $0F   Fort Zeakden
   $10   Murond Holy Place
   $11   Thieves Fort
   $12   Orbonne Monastery
   $13   Golgorand Execution Site
   $14   Murond Death City
   $15   Bethla Garrison
   $16   Deep Dungeon
   $17   Nelveska Temple
   $18   Mandalia Plain
   $19   Fovoham Plain
   $1A   Sweegy Wood
   $1B   Bervenia Volcano
   $1C   Zeklaus Desert
   $1D   Lenalia Plateau
   $1E   Zigolis Swamp
   $1F   Yuguo Wood
   $20   Araguay Wood
   $21   Grog Hill
   $22   Bed Desert
   $23   Zirekile Fall
   $24   Dolbodar Swamp
   $25   Bariaus Hill
   $26   Doguola Pas
   $27   Bariaus Valley
   $28   Finath River
   $29   Poeskas Lake
   $2A   Germinas Peak
   $2B   -blank-

   Undead try to revive each turn after KO:
   0x07: Yes
   0x09: No

   Undead try to revive each turn:
   0x01: Yes
   0x03: No

   Undead Chance to Revive:
        0x00 - 100%
   0x01 - 50% (vanilla)
   0x03 - 25%
   0x07 - 12%
   0x0F - 6%

    </Description>
    <Location offset="37f90" file="WORLD_WORLD_BIN">
      <!--Set Injured Display-->
      00F50408
      03000534
      00000000
    </Location>
    <Location offset="5d400" file="WORLD_WORLD_BIN">
      <!--Set Injured Display -->
      0400A310
      0C000534
      02004314
      0B000534
      09000534
      E65F0408
      00000000
    </Location>
    <Location offset="38Ab4" file="WORLD_WORLD_BIN">
      <!--Injured Location display? -->
      C0F40408
      0C006132
      00000000
      00000000
      00000000
      00000000
      00000000
      28002226
      020002A6
      21200000
    </Location>
    <Location offset="5d300" file="WORLD_WORLD_BIN">
      <!--Injured Location Display? -->
      16000012
      00000000
      1980103C
      CCC71026
      09003314
      0B006132
      1200A226
      000002A2
      1C002226
      020002A2
      C0000234
      080002A2
      B6620408
      00000000
      06003314
      0F00A226
      000002A2
      28002226
      020002A2
      80000234
      080002A2
      B6620408
      00000000
      C2620408
      00000000
    </Location>
  <Location offset="11C128" file="BATTLE_BIN">
      <!--Death Counter Manipulation -->
      03000392
      2C00013C
      121C2134
      FF002230
      06006210
      020A0100
      FF002230
      03006210
      020A0100
      FF002230
      03006214
      FF000134
      AD0C0608
      070001A2
      07000492
      FF000234
      C0500508
      00000000
      1000A230
      4F004010
      0100C230
      4D004010
    </Location>
    <Location offset="ED300" file="BATTLE_BIN">
      <!--Death Counter Manipulation  -->
      09008210
      21100000
      FFFF8424
      FF008330
      FF000234
      070003A2
      03004314
      25100000
      5C0C0608
      00000000
      AD0C0608
      25100000
    </Location>
    <Location file="EVENT_REQUIRE_OUT" offset="5a90">
      <!--Set units injured in party data  -->
      00480508
      00000000
    </Location>
    <Location file="BATTLE_BIN" offset="EB000">
      <!-- Set units injured in party data -->
      00001224
      BF02060C
      21204002
      07005190
      02005090
      FF001334
      07003316
      0580013C
      05001312
      747F2124
      00821000
      21080102
      03001034
      D00030A0
      01005226
      08000234
      1500422E
      EFFF4014
      01005226
      2C00BF8F
      A6120708
      2800B48F
    </Location>
    <Location file="BATTLE_BIN" offset="11C1c0">
      <!-- Set units injured in party data -->
      AD0C0608
      21100000
    </Location>

<Variable file="BATTLE_BIN" offset="ED300" default="09" name="Undead revive each turn after KO"/>
<Variable file="BATTLE_BIN" offset="ED318" default="01" name="Undead revive each turn"/>
<Variable file="BATTLE_BIN" offset="11C178" default="01" name="Undead Chance to Revive"/>


   <Location offset="1249dc" file="BATTLE_BIN">
      <!--disable revival -->
      40510508
      1980013C
    </Location>
    <Location offset="ED500" file="BATTLE_BIN">
      <!--disable revival -->
      982D238C
      FF000434
      07006190
      00000000
      07008114
      05000134
      B60160A0
      AC0160A0
      8C0160A0
      B10160A0
      8E0161A0
      900160AC
      3400BF8F
      792E0608
      3000B28F
    </Location>
<Location offset="ABBB0" file="WORLD_WORLD_BIN">
      <!--"Injured" Display -->
      11 01 00 11 01 00 00 00 00 00 00 11 01
    </Location>
  <Location offset="ABC30" file="WORLD_WORLD_BIN">
      21 01 00 21 01 00 00 00 00 00 00 21 01
    </Location>
    <Location offset="ABCB0" file="WORLD_WORLD_BIN">
      21 11 11 11 11 11 11 11 11 11 11 21 01
    </Location>
    <Location offset="ABD30" file="WORLD_WORLD_BIN">
      21 21 52 21 21 21 21 52 51 52 51 22 01
    </Location>
    <Location offset="ABDB0" file="WORLD_WORLD_BIN">
      21 21 23 21 21 21 21 21 21 21 21 21 01
    </Location>
   <Location offset="ABE30" file="WORLD_WORLD_BIN">
      21 21 21 21 21 21 21 11 21 46 21 21 01
    </Location>
    <Location offset="ABEB0" file="WORLD_WORLD_BIN">
      21 21 21 21 61 62 21 11 51 22 51 22 01
    </Location>
    <Location offset="ABF30" file="WORLD_WORLD_BIN">
      11 11 11 23 11 11 11 11 11 11 11 11 01
    </Location>
    <Location offset="ABFB0" file="WORLD_WORLD_BIN">
      00 00 41 52 01 00 00 00 00 00 00 00 00
    </Location>
    <Location offset="AC030" file="WORLD_WORLD_BIN">
      00 00 11 11 00 00 00 00 00 00 00 00 00
    </Location>
<Location offset="5D4FC" file="WORLD_WORLD_BIN"><!--Allows 0xd0 = 3 units available for Inn -->
00000000
1480013C
FCD4228C
00000134
06002214
D000C290
03000134
07004114
00000000
2AD60108
00000000
03004014
00000000
01D60108
00000000
41D60108
00000000
</Location>
<Location offset="E7FC " file="WORLD_WLDCORE_BIN"><!--Allows 0xd0 = 3 units available for Inn -->
40F50408
00000000
</Location>
<Location offset="C2c0" file="WORLD_WLDCORE_BIN"><!--Allows 0xd0 = 3 units available for Inn -->
28F50408
21888000
</Location>
<Location offset="5d4a0 " file="WORLD_WORLD_BIN"><!--Allows 0xd0 = 3 units available for Inn -->
3000BFAF
1580013C
D83124AC
1480013C
B2CC0108
FCD424AC
</Location>
<Location offset="CD60" file="WORLD_WLDCORE_BIN"><!--Allows 0xd0 = 3 units available for Inn -->
54F50408
1480013C
</Location>
<Location offset="5d550 " file="WORLD_WORLD_BIN"><!--Allows 0xd0 = 3 units available for Inn -->
FCD4228C
00000134
08002214
D0006290
03000134
03004110
00000000
6BCF0108
00000000
6ACF0108
00000000
5ACF0108
00000000
</Location>
<Location file="WORLD_WLDCORE_BIN" offset="12078"><!--Allow Inn to be repeated -->
80F50408
00000000
</Location>
<Location file="WORLD_WORLD_BIN" offset="5d600"><!--Allow Inn to be repeated -->
02006014
00000000
00000234
000022A0
20E40108
0580023C
</Location>
  <Location file="BATTLE_BIN" offset="4e39c">
      <!--Guests get death counter-->
      00000000
    </Location>
<Location file="WORLD_WLDCORE_BIN" offset="2a14"><!--Inn Locations -->
94F50408
00000000
</Location>
<Location file="WORLD_WORLD_BIN" offset="5d650"><!--Inn Locations -->
07002016
00000000
</Location>
<Variable file="WORLD_WORLD_BIN" offset="5d658" default="0A" name="Inn Location 1"/>
<Variable file="WORLD_WORLD_BIN" offset="5d659" default="0D" name="Inn Location 2"/>
<Location file="WORLD_WORLD_BIN" offset="5d66a"><!--Inn Locations -->
013C
</Location>
<Variable file="WORLD_WORLD_BIN" offset="5d65C" default="0F" name="Inn Location 3"/>
<Variable file="WORLD_WORLD_BIN" offset="5d65D" default="01" name="Inn Location 4"/>
<Location file="WORLD_WORLD_BIN" offset="5d66E"><!--Inn Locations -->
2134
FF002430
06002416
020C0100
FCFF2014
00000000
03000216
21100000
87A60108
00000000
B2A60108
00000000
</Location>
<Location file="WORLD_WLDCORE_BIN" offset="12c5c"><!--Inn always "fails" -->
ACF50408
4000B08F
</Location>
<Location file="WORLD_WORLD_BIN" offset="5d6B0"><!--Inn always "fails"  -->
00000134
05003014
02000334
0A80013C
FCF123AC
19E70108
6800BD27
</Location>
</Patch>


2. Emmy's 2 Swords Penalty
  <Patch name="2 Swords Penalty">
    <Description>3/4 damage per hit on units with 2 swords.  Affects all abilities with Formulas 01-07, no effect on other physical formulas.</Description>
    <Location file="BATTLE_BIN" offset="11EF80">
      30420508
      00000000
    </Location>
    <Location file="BATTLE_BIN" offset="E98C0">
1980023C
942D428C
00000000
91004290
00000000
01004230
0B004010
00000000
1980023C
CE384284
00000000
40180200
21186200
C2170300
21186200
83180300
1980013C
CE3823A4
1980023C
E2170608
CE384224
    </Location>
  </Patch>


3. FFMaster's Enable Sound Test
  <Patch name="Enable Sound Test">
    <Description>Sound Test</Description>
    <Location file="OPEN_OPEN_BIN" offset="0441c">
      00001724
    </Location>
    <Location file="OPEN_OPEN_BIN" offset="04434">
      94cb0108
      00000000
    </Location>
    <Location file="OPEN_OPEN_BIN" offset="05C88">
      d4
    </Location>
    <Location file="OPEN_OPEN_BIN" offset="05CBC">
      02
    </Location>
    <Location file="OPEN_OPEN_BIN" offset="0BE50">
      1000038e
      03001714
      05000234
      0fad0108
      00000000
      10ad0108
      00000000
    </Location>
    <Location file="OPEN_OPEN_BIN" offset="0CFAC">
      19322F2E
      2419322F
      2E24
    </Location>
    <Location file="OPEN_OPEN_BIN" offset="04580">
      7CF50408
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="05D5F0">
      00000536
      0000A390
      0780013C
      AC3F2134
      21082400
      00002290
      00000000
      06006214
      0a000234
      01008424
      0a008228
      F5FFA014
      0100A524
      0a000234
      09008214
      05000234
      100002AE
      00000434
      FA0E010C
      60000534
      A49F010C
      20000434
      89AD0108
      01001724
      BC66010C
      00000434
      62AD0108
      00000000
    </Location>
  </Patch>
Title: Re: ASM Requests
Post by: Timbo on November 27, 2016, 04:50:57 pm
I'm not fond of all of the gender stereotyping in this game. If men want to wear female equipment I say let them. If women want to steal one another's hearts, good on them. With that in mind I propose eliminating the gender stereotyping from Zodiac Compatibility. I propose that Best Compatibility should include females and males and worst compatibility should be eliminated all together.
Title: Re: ASM Requests
Post by: nitwit on November 29, 2016, 04:21:54 pm
Quote from: Jack of All Trades on November 27, 2016, 04:50:57 pm
I'm not fond of all of the gender stereotyping in this game. If men want to wear female equipment I say let them. If women want to steal one another's hearts, good on them. With that in mind I propose eliminating the gender stereotyping from Zodiac Compatibility. I propose that Best Compatibility should include females and males and worst compatibility should be eliminated all together.

It's pretty bigoted of you to assume their gender based on what they wear.
Title: Re: ASM Requests
Post by: Timbo on November 29, 2016, 08:06:58 pm
Quote from: nitwit on November 29, 2016, 04:21:54 pm
It's pretty bigoted of you to assume their gender based on what they wear.
I can't tell if you are joking or not. Because of the absurdity of your statement, my guess is that you are but without any emojis, there is no way to know. If so, good on you mate.  If you aren't joking then let me respond in kind.

I don't have to assume the gender of any of the characters in this game because the game outright tells you their gender. Secondly, I made absolutely no statements regarding my assumptions. I firmly believe that so long as their behavior brings no harm to anyone else people should be free to be whoever they want to be, especially if it's who they really are, and that we as a community owe it to ourselves to respect one another's identity.

Again, I am still assuming that you were joking but if you wish to fight with me on this PM me because this is not the place for it.
Title: Re: ASM Requests
Post by: 3lric on November 30, 2016, 11:23:13 am
(http://new2.fjcdn.com/comments/My+god+_969700e6145432158d6a29999248eb47.jpg)
Title: Re: ASM Requests
Post by: Dokurider on December 24, 2016, 09:20:08 pm
Hey guys, can any of you do me a quick little favor? It's super easy.


Crack open FFTPatcher
Go to Attack (0000) under Abilities
Go to the AI Behavior and select "Stop at Obstacle"
Give yourself a reliable way of Berserking yourself
Give yourself a ranged weapon
Patch it
See if the AI acts retarded anymore

...It can't have been that easy, right? Right?
Title: Re: ASM Requests
Post by: Neophyte Ronin on February 25, 2017, 03:54:42 am
I'm nervous to ask.  I'm talking, really, really nervous.  Having researched the BMG, I believe the proposed work-around isn't going to run into anything hard-coded.  It might, though.  Feel free to counter-argue.

Request #1: An ASM which multiplies Experience gains by 0, including rounding down to zero in case a formula delivers a minimum of 1.  Either way, ZERO EXP GAIN!  (The remaining EXP, randomly generated at run-time, can remain.  It may be useful somewhere else).  Maybe a second ASM if the Killing Blow EXP causes screw-ups.

Request #2: Another ASM which removes LV from Growth calculations (original formula: bonus = [current_RX/(C+LV)]).

Ergo, Current Raw Stat only--Character Level does not influence adjustable Stats, making Growth numbers irrelevant.  Level and Exp affect Job Point accrual and Calculator Math Skills.  Ramza at LV01, assuming no adjustments in Class data or starting growth rates as expressed in the BMG, gets between 37..39 HP.  For life.  End of story.  Everyone is dealt likewise.

Vanilla Tactics' Level System has issues like a Level-Up-and-Down trick.  With these two theoretical ASMs, parameters associated with LV & EXP (Steal EXP, Level Blast, Degenerator, Gained EXP Up, Move EXP Up, Please Eat) are freed for editing, like that Weapon Guard hack that lets Classes gain Weapon Evasion without needing the ability--what happens to the ability is up to the patch's author.

The implications reach further.

Level and Experience are not just the Calculator's domain, though being rendered immutable means they are more reliable than CT and Height.  See, for JP ([(8+(JobLV*2)+[LV / 4])*M] (M = 3/2, i.e. Gained JP Up), a non-level system may call LV "INT" instead, like D&D3.X--affecting Skill accrual and Calculator susceptibility.  High Levels learn quicker (nice if high-INT Humans appear near end-game to play catch-up if Invited), while Ramza and like company with LV 01 EXP 00 eternally duck two Calculator Abilities.

The second implication might warrant another request, because getting the AI to equip things based on a "progression" besides Story Progress or Shop Availability is another step in my envisioned patch.

Request #3: ASM which has game consider all available equipment options when outfitting AI humans.

The engine chooses equipment based on one of two things: pre-set (like Agrias and Gafgarion always getting their respective fare) or a linear numerical progression which never looks back; once Gold Armor is on the menu, it ditches Mithril and Plate Mail.  This is standard practice for a leveled system, not a non-leveled one seeking to make everything incomparable in some fashion.  Consequently, Leather Armor never gets used because it technically sucks, although most of the medieval fare that fuels a war economy is rejected after ten character levels and not even halfway through the Chapters themselves.  See the problem, right?

Adjustable stats being made static allows for greater equipment options and flavor without worrying about climbing a ladder as a hermit-crab.  The extremes of 1 & 99 still an issue?  Xifanie's min/max hack stabilizes adjustable stats further, so Speed Break doesn't need to add Slow.  Converting the economy from hermit-crab to snowflake-tonguing while maintaining balance is a chore.  Characters might get weird equipment combinations like Leather Armor and Cross Helmet, but each item has perks (Leather is cheap, flexible, and non-conductive, so no issues with Lightning, unlike metal armor), so each is stress-tested for long-term use.

Maybe the deciding factor is Character EXP instead of LV, so someone with Low EXP get stuff like Chain Mail and the upper echelons get Carabineer Plate, turning EXP into a "Prestige/Lineage" Stat that tells us they're loaded or connected.  Hell, I might even ask if this gets remade into the source of end-battle money and see if a Gil-Taking "Attack" can add EXP to the Target and thus make them cough up more cash after the battle is over!

But I'm getting ahead of myself (wouldn't adding EXP make the Enemy Level Up?  Maybe if the Money Bonus was based on 100 - EXP then Gil Taking would be remade into Steal EXP with coins flying around; Negotiate/Beg too....)

Plenty of Patches might benefit from these hacks.  Take Celdia's.  Her equipment does all kinds of things, but they must be replaced over time like every Final Fantasy Game ever, simply due to Leveling up.  Getting Equipment to upgrade with players might solve some of the problem, but not all of it.  Applying this theoretical hack and reworking every item means Celdia can turn them into snowflakes that don't melt in players' hands.  Celdia's patch is already centered on exploration, which is best when optional and never mandatory.

"TOO LONG I DIDN'T READ": two ASM hacks to nix Level and Level-Ups from stat-adjustment equations, rendering first level stats the definitive static levels for all classes and creatures and freeing several Level-associated Abilities.  It would allow a non-Leveling (i.e. "incomparable") campaign, which would necessitate revisions in the game economy and a possible third to let the AI perform extreme mix-and-match with equipment from the beginning to the end-game.

I only assume these ASMs can, in fact, happen.  I'm ready for rebuttals and public outcry.
Title: Re: ASM Requests
Post by: Emmy on February 25, 2017, 09:07:48 am
1 has already been made:


  <Patch name="EXP Gain = 0.">
    <Location file="BATTLE_BIN" offset="1178A4">
      E73860A0
      22005192
      00000000
      00000000
      00000000
      00000000
      00000000
      210042A2
    </Location>
  </Patch>


2 - Why do you need to make that ASM when you're not gaining XP?  Also there are ways to deal with getting rid of level up and down trick without getting rid of leveling and without requiring asm in general.  You can remove degenerators and level blast, you can make every class have the same growths in every category, etc.  I have *tons* of custom formulas and r/s/m if the goal is to find something to replace steal xp, level blast, etc.  If your goal is balance, calculator should just be nuked for anything else anyway.  I don't see why you need to get rid of leveling, especially since you seem to still want some stat progression...

3.  It kinda already does consider all equipment when randomly equipping things.  Ever come across a knight with a Linen Robe in ch 4?  Well there you go...  Speed break is even more broken with static stats, so you might want to do something else with that ability (who says you need to keep vanilla's theme here?)  However I am looking into solving the problem of equipment that directly outclasses each other.  My weapons currently do that, but I need a better solution for hats/armors/shields.

Quote from: Neophyte Ronin on February 25, 2017, 03:54:42 am
I only assume these ASMs can, in fact, happen.  I'm ready for rebuttals and public outcry.


Best way for these to happen is if you start learning asm yourself. :)  No one made requests for me until I knew enough asm to be able to work through most of the problem myself.
Title: Re: ASM Requests
Post by: Neophyte Ronin on February 25, 2017, 03:30:54 pm
Thanks for replying Emmy!  I wasn't aware they got the XP = 0.

Calculators are broken, but I don't necessarily care.  Their abilities aren't really the problem--their spell selection is.

Okay, so making the ASM might be dumb if every single Growth Rate was changed to zero itself, but I had this in mind: turn LV into INT (since LV is a determinant for JP accrual).  Then, turn XP into "Prestige".  It's basically what the game would use to determine A) what equipment is in use, as if the low, low "XP" guys have the great gear as if they had a high Level, and B) determine cash yields.

Probably write a code, where we can say 100 minus XP equals the "Level" the game uses to determine how much cash is gleaned from the enemy.  This means the guys with high XP with 90 or 85 are like 100 - 90 and 100 - 85 (10 or 15), which means 100*10 and 100*15 (1000 and 1500).  The ability for Thieves that let you swipe gil or the Negotiate/Beg trick reduces XP, thereby heightening the cash yield (theoretically--unless it only decides it before the battle and not after it).

I'll have to look up a guide on all the functions and the locations of everything in the code.  That'll be painful, but maybe it's for the best....
Title: Re: ASM Requests
Post by: Ansehelm on June 06, 2017, 03:53:10 pm
Hey y'all,
I'm looking at dealing with the relationship between spell ct and character speed by having spell ct decrease dynamically throughout the game as character speed increases. Does anyone have any insight on how to accomplish this, or where to begin?
Thanks
Title: Re: ASM Requests
Post by: Xifanie on June 06, 2017, 04:27:13 pm
Well, if you can't figure that out yourself, explaining this to you would be a LOT more trouble than just doing it ourselves... and you can see yourself how many requests in this topic have been fulfilled.

See: http://ffhacktics.com/smf/index.php?topic=11561.0

But I'm sure Emmy would be happy to help you with that.
Title: Re: ASM Requests
Post by: Emmy on June 06, 2017, 06:34:21 pm
I might be able to do it but there's no guarantees. :(

**Edit** I can't test this easily because it's incompatible with MT, but you can try this out and if it works, you're in luck! :)


  <Patch name="Charge CT = CT - Speed">
    <Description>Charge speed scales with unit speed. Original code Made by TFM, modified by Emmy.</Description>
    <Location file="BATTLE_BIN" offset="e937c">
      0C004390
      05004290
      38007292 <!-- Change stat used here -->
      40005730
      0500E012
      00000000
      22187200
      02006104
      00000000
      21180000
      14F20508
      00000000
    </Location>
    <Location file="BATTLE_BIN" offset="e93d0">
      05008390
      0C008290
      40006430
      0E008010
      00000000
      B000A48F
      C0011034
      18009000
      12200000
      1980103C
      CC081036
      21209000
      38008490 <!-- Change stat used here -->
      00000000
      22104400
      02004104
      00000000
      21100000
      94060608
      00000000
    </Location>
    <Location file="BATTLE_BIN" offset="115848">
      df400508
      00000000
    </Location>
    <Location file="BATTLE_BIN" offset="11aa48">
      f4400508
      00000000
    </Location>
  </Patch>
Title: Re: ASM Requests
Post by: Ansehelm on June 07, 2017, 03:41:57 pm
Hey, thanks for giving me something to start with.  I'm a little uncertain what you mean by "change stat used here" though.
Anyway, I applied this hack as it is and here's what happened: I didn't notice any change in ct for my units, although I noticed that enemy generic priests could instantly cast full life. I used a savegame, so I don't know if that would have stopped it from affecting my units vs randomly generated enemies.  It's interesting.
Title: Re: ASM Requests
Post by: Glain on June 10, 2017, 09:25:57 pm
I also created a hack for this when I was playing around with the same concept.  This one uses a curve where CT is affected more at lower speeds, and the effect depends on the CT factor you choose (default 5).  With CT Factor = 5, it begins taking effect at Speed = 5 and ability CT halves by Speed = 10, and would quarter by Speed = 20. 

Basically, for any ability, the CT is affected by a multiplier where ((CT Multiplier) = (CT Factor) / Speed).


  <Patch name="Speed shortens Ability CT">
    <Description>
        (New CT) = ((CT * (CT Factor))) + (Speed - 1)) / Speed    (For Speed >= (CT Factor))
        ((CT Multiplier) = (CT Factor) / Speed)
        Default (CT Factor) = 5
    </Description>
    <Location file="BATTLE_BIN" offset="15D290" mode="ASM" offsetMode="RAM">
        #   HOOK: Attack Preparation (Ability CT)
        #   Parameters:
        #       v0 = Ability data pointer
        #       s2 = Ability CT
        #       s3 = Unit (in-battle) data pointer
        #   Returns:
        #       v0 = Ability data flags 3 ( *(v0 + 5), byte )
        #       s2 = New CT value
        @attack_preparation_ability_ct_hook:
                addiu   sp, sp, -16
                sw      ra, 4(sp)
                sw      s0, 8(sp)
       
                lbu     s0, 5(v0)
               
                lbu     a1, 0x38(s3)        #   Load unit's Speed
                jal     @find_ability_ct
                move    a0, s2
               
                move    s2, v0
                move    v0, s0              #   (Requirement for calling routine)
           
                lw      s0, 8(sp)
                lw      ra, 4(sp)
                addiu   sp, sp, 16
                jr      ra
                nop
       
        #   HOOK: Load skillset ability data (Ability CT)
        #   Parameters:
        #       a0 = Current ability data block 2 pointer (Pointer into array starting at 0x8005fbf0)
        #       *(sp + 12) = Unit (in-battle) data pointer
        #   Returns:
        #       v0 = New CT value
        #       v1 = Current ability Flags 3 value (= *(a0 + 5), byte)
        @load_skillset_ability_data_ct_hook:
                lw      t2, 12(sp)          #   Unit (in-battle) data pointer
       
                addiu   sp, sp, -16
                sw      ra, 4(sp)
                sw      s1, 8(sp)
       
                lbu     t0, 12(a0)         
                lbu     s1, 5(a0)           #   (Required for calling routine)
               
                lbu     a1, 0x38(t2)        #   Load unit's Speed
                jal     @find_ability_ct
                andi    a0, t0, 0x7f        #   Ability CT
               
                move    v1, s1
               
                lw      s1, 8(sp)
                lw      ra, 4(sp)
                addiu   sp, sp, 16
                jr      ra
                nop
       
        #   ROUTINE: Find ability CT
        #   Parameters:
        #       a0 = Ability CT
        #       a1 = Speed
        #   Returns:
        #       v0 = New CT value
        @find_ability_ct:
                lbu     t1, 0x8015d28f
                move    v0, a0              #   Default: Keep CT the same
       
                sltu    t0, a1, t1          #   If (Speed is less than (CT Factor)), return with no change
                bne     t0, zero, find_ability_ct_end
                nop

                # ((CT Multiplier) = (CT Factor) / Speed)
                # CT = ((CT * (CT Factor)) + (Speed - 1)) / Speed
               
                multu   a0, t1
                mflo    t0                  #   (CT * (CT Factor))
               
                addiu   t1, a1, -1          #   (Speed - 1)
                addu    t0, t0, t1          #   (CT * (CT Factor)) + (Speed - 1)
                divu    t0, a1
                mflo    v0                  #   ((CT * (CT Factor)) + (Speed - 1)) / Speed
           
            find_ability_ct_end:
                jr      ra
                nop
    </Location>
    <Location file="BATTLE_BIN" offset="17C84C" mode="ASM" offsetMode="RAM">
        jal     @attack_preparation_ability_ct_hook
    </Location>
    <Location file="BATTLE_BIN" offset="181838" mode="ASM" offsetMode="RAM">
        sw      s0, 12(sp)
    </Location>
    <Location file="BATTLE_BIN" offset="181A48" mode="ASM" offsetMode="RAM">
        jal     @load_skillset_ability_data_ct_hook
    </Location>
    <Variable name="CT Factor" file="BATTLE_BIN" offset="F628F" bytes="1" default="05" />
  </Patch>
Title: Re: ASM Requests
Post by: Verdeni on July 02, 2017, 03:56:25 am
So I'm using Emmy's ASM to change Wall to MP Regen and the blank status to MP Poison. I'm hoping to get an ASM That makes the blank status use Poison's effect icon, and Wall use Oil's effect icon. The icons from the FRAME.BIN. :p.
And maybe even use their pops for when the status is applied?

Is that possible at all?
Title: Re: ASM Requests
Post by: Lloyd2k4 on July 19, 2017, 07:28:11 am
I don't expect any of these to be done, nor do I know if they're possible, but I figured if someone wanted to take a crack at these, they may be useful for people making hacks:

Oil becomes Trouble - Afflicted target takes x% more damage from any damage source on the next attack.  Consumed when attacked like Oil, but doesn't require a Fire-elemental attack.

Blood Suck becomes Fear - Afflicted target deals x% less damage with all attacks/magic.  No more loss of control.  Would need a settable CT.

Dark/Evil Looking becomes Bloom - Target gets a countdown timer similar to Death Sentence, but when it reaches 0, the target is healed by x% of their max HP.  Needs CT mechanic equivalent to Death Sentence (# of CT = # of turns to activate effect).

Transparent becomes Focus - Damaging attacks become 100% accuracy.  No more invisibility/AI ignore.  Needs a settable CT and not removed upon attacking.

Berserk becomes Valor - Afflicted does x% more damage with damaging attacks/magic.  No more loss of control.  Needs a settable CT.

Chicken becomes Panic - Afflicted has an x% chance of their 'Act' and/or 'Move' command failing upon execution.  Could probably keep the "Less than 10(?) Brave automatically gains this status" code as it makes sense.  I don't remember the specifics of the Chicken status, but if it causes loss of control, then no more loss of control.

Innocent reduces Faith by x% instead of hard coded to 0.  Would require some patcher work on Worker 7/8 to return them to their normal status of magic immune if desired.


Basic Formula requests (Forgive me if they've already been done... there's a lot of formula requests and work done all over this forum)

Formula 13 becomes AbsorbMP MA * (WP+Y) ME Status

Formula 18 becomes DmgMP MA * (WP+Y) ME Status

Change Formula OE to Dmg(Y%) Hit F(MA+X%) 100% Status Hide Status to Dmg(Y%) Hit(X%) 100% Status Hide Status (Remove Faith and MA from Hit%)

Change Formula 12 and 15 (Quick and CT00, respectively) to no longer use Faith in the Hit% calculation.
Title: Re: ASM Requests
Post by: Emmy on July 19, 2017, 12:26:05 pm
Any of those status effect ones that need a settable CT, you will need to use Wall's slot for it if it's currently on a slot that doesn't use a CT.  The reason is that only the slots from Poison through Death sentence accept a CT, and changing this is a trickier problem than what I can currently do.  (anyone who can do this who wants to, feel free to figure it out)

Oil -> trouble can probably be done by modifying the elemental routines to no longer remove oil, and coded similarly to my "Tying it all Together 2" group (affects XA * YA routine).  Innocent reduces faith by a % could be done by rewriting my Faith/Innocent handling routine to set it to a % instead of to 0.  Neither of these particularly interests me enough to do myself, but if you know basic asm I could help you with these if you have any questions.  The rest of these look either impossible or outside of what I know how to do.

Quick/Ct 0 no longer use faith are both covered by this formula I wrote.  No reason to write multiple formulas for these, or any other stat affecting formulas that aren't using faith.


  <Patch name="Formula 18 = universal stat change at MA+X%">
    <Description>Directions for use: MA+X% is accuracy. Y is the stat that you want to affect.  Use Y= 16 for level up, 17 for level down, 18 for speed, 19 for CT, 20 for PA, 21 for MA, 22 for Brave, 23 for Faith. DO NOT USE OTHER VALUES FOR Y OR BAD THINGS WILL HAPPEN!  Use the status effect field as what you want for the bonus/penalty amount in hex.  Add +0x80 for bonus amounts (example: 81 = +1), otherwise numbers up to 0x7f are penalty amounts.  If changing CT, you can use FF for Quick and 7F for CT = 0.  Level up requires 80, and level down requires 1.  Do not use other values in combination with 16/17 for the status byte or bad things will happen!</Description>
    <Location file="BATTLE_BIN" offset="12229c">
59770508
00000000
    </Location>
    <Location file="BATTLE_BIN" offset="f6d64">
E8FFBD27
1000BFAF
A122060C
00000000
0A004014
00000000
1980083C
FA380291
902D038D
FB380491
21084300
000024A0
01000534
000065A0
250065A0
1000BF8F
1800BD27
0800E003
00000000
    </Location>
  </Patch> 
Title: Re: ASM Requests
Post by: Lloyd2k4 on July 19, 2017, 09:36:45 pm
The customization of that formula is great.  Thanks, Emmy.
Title: Re: ASM Requests
Post by: Lionheart537 on July 21, 2017, 06:18:01 pm
I second the modified oil; although I'd call it curse or mark rather than trouble. I saw a hack that allowed oil to strengthen damage for any or all elements, but one that added the extra 20or25% for physical too would be lovely.

For my own inquiry how possible is it to change faith and innocent (or wall if easier) statuses to behave like faith and brave in future ff games i.e. a temp buff to pa and ma. Put them along with haste. I saw a hack that makes vanilla stat change moves (like ruin power) degrade back to neutral gradually. This is close enough but changing the faitha nd innocent stats (which i never liked) would be much preferred. This seems doable but what do the wizards here think?

EDIT: In the Razele xml hacks that comes with the hack "status effect bonus damage" so making oil take extra damage from both physical and magical attacks is already available (my bad!) I'll need to test to make sure it works with oil on all damage types and that oil disapears after any attack, not just fire. Or i could always assign extra damage to dark/evil looking (although i believe the hack refers to it as cursed status) and use rfh's "xx status use wall ct" to assign it a ct.
Title: Re: ASM Requests
Post by: Koruten on August 07, 2017, 11:54:47 pm
I was wondering if anyone has made an ASM to make selected abilities monster-targetable only?
Title: Re: ASM Requests
Post by: Xifanie on August 08, 2017, 12:07:16 am
Why not just 0% hit if not monster? That sounds like it would be a simple formula hack to make... in your case it sounds like you want more of a flag though. That would be way harder to implement.
Title: Re: ASM Requests
Post by: Koruten on August 08, 2017, 12:12:18 am
Quote from: Xifanie on August 08, 2017, 12:07:16 am
Why not just 0% hit if not monster? That sounds like it would be a simple formula hack to make... in your case it sounds like you want more of a flag though. That would be way harder to implement.


0% if not a monster would work well I think actually. Was more looking for a formula hack of some kind.

EDIT : Could be even easier maybe by changing 5A Dragon: Hit(100)% to 5A Monster: Hit(100%)
Title: Re: ASM Requests
Post by: Lionheart537 on August 08, 2017, 12:23:26 am
Actually FFMaster already has a hack that should edit Reis abilities.
http://ffhacktics.com/smf/index.php?topic=5658.msg118891#msg118891
Last one in the "other hacks" section. Unless I'm misunderstanding the hack, can't say I've tested it either.
Title: Re: ASM Requests
Post by: Koruten on August 08, 2017, 12:45:24 am
Quote from: Lionheart537 on August 08, 2017, 12:23:26 am
Actually FFMaster already has a hack that should edit Reis abilities.
http://ffhacktics.com/smf/index.php?topic=5658.msg118891#msg118891
Last one in the "other hacks" section. Unless I'm misunderstanding the hack, can't say I've tested it either.


Ah I searched for a while but didnt come across that. Thanks. Works great.
Title: Re: ASM Requests
Post by: layerP on August 15, 2017, 12:25:28 pm
I'm looking for an asm that makes all calculated skills "unmimicable", and something that makes single target spells repeat its animations on every affected unit, when used by a calculator. nvm
Thanks in advance!
Title: Re: ASM Requests
Post by: Lionheart537 on August 19, 2017, 03:51:47 pm
Completely hypothetical as I'm sure it's not worth the work, but for curiosity's sake can Tactics possibly support voice lines?
Title: Re: ASM Requests
Post by: 3lric on August 19, 2017, 05:22:47 pm
Quote from: Lionheart537 on August 19, 2017, 03:51:47 pm
it's not worth the work
Title: Re: ASM Requests
Post by: Nyzer on August 19, 2017, 08:12:53 pm
Even if the ability to freely add in voice lines already existed, with no flaws or space limitations whatsoever, it still probably wouldn't be worth the work. Not only would the lines sound bad if they weren't voiced well, they'd sound bad if they weren't recorded well.
Title: Re: ASM Requests
Post by: Lionheart537 on August 19, 2017, 10:24:14 pm
Oh i can imagine. Not expecting it at all, just couldn't shake the question from my head so I figured to ask if it's theoretically possible. It didn't need its own topic so i posted here  :P
Title: Re: ASM Requests
Post by: Randombartz on November 22, 2017, 06:37:56 pm
Is it possible to make an ASM to change some unused formula to a White Wind like effect (Heal HP = Curr_CasterHP)? I'm currently trying to make a Blue Mage for my patch and I think it would be really cool to have White Wind as an ability. I was also thinking if it is possible to have a formula which both does damage and inflicts an status with 100% chance (without overwriting the standard 25% chance). Thanks for your attention!
Title: Re: ASM Requests
Post by: Pride on November 22, 2017, 07:23:14 pm
This formula (White Wind) almost certainly exists already in fftorgasm. You just might have to look a bit through each users .xml to find it.
Title: Re: ASM Requests
Post by: Randombartz on November 22, 2017, 07:56:22 pm
Where can I find these files? Are they stored somewhere in the forum? If you mean the hacks which already come with the latest releases of the FFTorgASM, it does not contain such a formula as far as I know. Not sure if I am asking a stupid question, sorry for that.
Title: Re: ASM Requests
Post by: Emmy on November 24, 2017, 02:07:02 am
If those do not exist in the regular xml's, they most certainly exist here:

http://ngplus.net/index.php?/files/file/33-monster-tactics-asm-pack/
Title: Re: ASM Requests
Post by: Randombartz on November 24, 2017, 08:20:22 pm
Thanks, Emmy! The ASMs I was looking for did indeed exist in the link you shared, however, they do not seem to work properly when I apply them with FFTorgASM. Maybe its because of the "requires inner routine" part? The formulas which were supposed to be replaced just do the exact same thing as they did before, while the formulas replaced with the XML files that are already present in FFTorgASM actually acquire their new effects.
Title: Re: ASM Requests
Post by: RavenOfRazgriz on November 25, 2017, 02:02:53 pm
Quote from: Randombartz on November 22, 2017, 06:37:56 pm
Is it possible to make an ASM to change some unused formula to a White Wind like effect (Heal HP = Curr_CasterHP)? I'm currently trying to make a Blue Mage for my patch and I think it would be really cool to have White Wind as an ability. I was also thinking if it is possible to have a formula which both does damage and inflicts an status with 100% chance (without overwriting the standard 25% chance). Thanks for your attention!


Use the search function next time.  You can simply search "White Wind" (with the quotations to restrict search to only the full phrase) and Pride's older ASM Thread will come up:

http://ffhacktics.com/smf/index.php?topic=6999.0

You'll find the two things you're looking for (Proc Rate Rewrite + White Wind) there, among others.

E: Apparently the proc hack in this thread is only for weapons.  I'm trying to remember where the version that also does abilities is, because it exists and I have a modified copy of it but not the original.
Title: Re: ASM Requests
Post by: Emmy on November 25, 2017, 02:28:57 pm
I have no idea what you did, but just use Pride's White Wind formula unless you want a version that could also affect MP. 

As for a "damage and 100% proc" use this for physical attacks. This uses Punch Art's base formula unless you change what punch art does.  You must apply BOTH patches for the formula to work, because the first code depends on the 2nd code to work.  If you want to affect a formula other than 12, you must learn basic asm to change the offset affected.


  <Patch name="Formula 12 - Physical damage, Status proc 100%">
    <Description>Takes elements, evasion, status proc as indexed by status byte.  Requires inner routine - physical elemental damage.</Description>
    <Location file="BATTLE_BIN" offset="12212c">
E8FFBD27
1000BFAF
4421060C
00000000
05004014
00000000
1B79050C
00000000
AD1F060C
00000000
1000BF8F
1800BD27
0800E003
00000000
    </Location>
  </Patch>

  <Patch name="Inner routine - physical elemental damage">
    <Description>Returns r2 = 0 if conditional 19% roll hits.  Calculates critical hit, element, physical damage using punch art formula.  A requirement for several formulas, as listed in description.</Description>
    <Location file="BATTLE_BIN" offset="f746c">
E8FFBD27
1000BFAF
4017060C
00000000
3E19060C
00000000
FF17060C
00000000
7E21060C
00000000
DF21060C
00000000
05004014
00000000
3F1C060C
00000000
3021060C
00000000
1000BF8F
1800BD27
0800E003
00000000
    </Location>
  </Patch>
Title: Re: ASM Requests
Post by: Randombartz on November 27, 2017, 04:03:20 pm
Pride's formulas are working perfectly. Thanks for the help everyone!
Title: Re: ASM Requests
Post by: Randombartz on December 03, 2017, 09:16:41 pm
I really liked the "apply defense" patch by Glain. I was thinking, however, if it would be possible to actually show the values of damage reduction in-game. One possible solution I thought would be to substitute S-Evasion for Equipment-Evasion (I.E. I have a shield with 50% evasion and a mantle with 50% evasion, so the E-Evasion displayed would be 75% (50% x 50%), that would leave the A-Evasion space free to show the damage reduction %. Would it be possible to do so by ASM?
Title: Re: ASM Requests
Post by: Heisho on December 10, 2017, 10:20:41 pm
Hello everyone.

I was wondering if somebody knows a way to change the Formula 44 that instead of using the target's MP use the caster's MP, or better yet, the caster's HP.

Thanks to anybody who can help
Title: Re: ASM Requests
Post by: Rfh on December 19, 2017, 10:32:58 pm
Quote from: Heisho on December 10, 2017, 10:20:41 pm
Hello everyone.

I was wondering if somebody knows a way to change the Formula 44 that instead of using the target's MP use the caster's MP, or better yet, the caster's HP.

Thanks to anybody who can help


With a hex editor, in BATTLE.BIN change at 0x11FE58 98 by 94

If you also want use caster's HP instead of caster's MP also change at 0x11FE64 2c by 28
Title: Re: ASM Requests
Post by: DeNarr on January 08, 2018, 03:39:25 pm
I had an idea for a way to make sticking as various jobs more interesting / appealing, just not sure if it's possible. Basically, I'd want for any class to automatically have any support/movement skill it learns, without having to equip it. You'd only need to equip support/movement skills of classes that are different.
Title: Re: ASM Requests
Post by: Nyzer on January 08, 2018, 08:21:31 pm
You can already set that in the Patcher. Up to four Innate Support or Movement skills per Job. And it's better to do so anyway considering some skills cause issues when stacked.
Title: Re: ASM Requests
Post by: DeNarr on January 09, 2018, 10:30:52 am
Hmm, that is close, but not quite. Because I wanted classes to still have to learn the ability, not just get it for free. Just once they learn it, they don't have to worry about using up a slot for it.
Title: Re: ASM Requests
Post by: Quillbeatssword on January 23, 2018, 10:22:17 am
I need help making a formula that rewards high
Faith with increased magical damage AND defense
And high brave with increased damage AND Physical defense


Ex- Fire 1 damage (Ma*y)
So if MA is 5 and Y is 6 you'd normally take around 30 damage. If your faith is 70 then your total damage would be 30+70%. 70% of 30 is 21 so now your damage total is 51. If your targets faith is 74 they would take -74% of that damage around 13.2. but if their faith is 45 they would take -45% so 28.5

Longsword damage 8 (PA*Y)
PA 6 total damage 48
Caster brave 61 48+61%=77.2
Target Brave= 34 77-34%=50.8 or 51

Overall I think this mod would involve two things. Changing the attack formulas for magical to use +Caster faith%
Physical to use +Caster Brave %

Then changing the effects of brave and faith according
Or just eliminate the effects of brave and faith and add the -Target B/F to all the equations
Could also somehow be added to Poison and Regen etc +Cast faith % which would make Poison really hurt depending on who put it on you
IDK if % can be used to calculate the damage but I'd prefer it over a flat +caster -Target because it would scale better I think because it's a % of total damage instead of a flat amount.
The idea overall is to help scale the damage spikes in this game while making characters have clear advantages and disadvantages due to brave and faith With flat amounts
Longsword damage 8 (PA*Y)
PA 6 total damage 48
Caster brave 61 48+61%=77.2
Target Brave= 34 77-34%=50.8 or 51
Would become 48+61=109-34= 75 which wouldn't be bad either but when you start factoring in more PA and Stronger weapons or even attacks like sword skills and Monk attack you would still be doing rediculous damage at higher levels compared to the HP cap.
I want my mod to have truly strategic battles not quick battles with people being killed in a single hit.

Here's an example of the scaling at Max AP
Longsword damage 8 (PA*Y)
PA 99 total damage 792
Caster brave 61 792+61%=1275
Target Brave= 34 1275-34%= 842
842 against someone with 34 brave
383 against someone with 70 brave
819 regardless of brave using vanilla formulas
You can actually have a tank without having to
Rely purely on high Evasion

Please and thank you I've been modding games in general for years. FFT in particular for around the last year. Haven't messed with formulas though.

I'm in the process of putting the finishing touches on my new rebalance and this is "fingers crossed" a necessity if it can be done.

I have used the asm mod FURY but Its the opposite of what I'm looking for i want low F/B punished and high F/B rewarded
This will make talk skill invaluable
Title: Re: ASM Requests
Post by: Nyzer on January 23, 2018, 11:10:50 pm
First, that's not really making a formula, that's reworking the entire mechanics of Faith and Bravery. Granted, I know nothing at all about either process, but offhand, the latter sounds considerably more complicated.

Second, you're missing the entire point of the Fury mechanic. By assigning "high defense" to the low value, both high and low Bravery are useful, the same way Faith works. This keeps those stats balanced.
If you're just going to make 100 the best number for both offense and defense, I'd have to ask why you even bother including the stats at all.
Title: Re: ASM Requests
Post by: Quillbeatssword on January 24, 2018, 02:13:02 am
Same way that Fury reinvents brave.
Only difference is I want brave to be a reflection of combat skill and faith would be talent with magic. Someone with high Brave will be better at attacking AND defending themselves. People with high Faith would have more knowledge on the use of magic and do more damage therefore understand how to protect themselves against it as well. Just something I feel would be fun and want to use in my patch if possible. Something different from the other mods.
Instead of brave and faith consider them Combat and Magical Aptitude

Side note. On the subject of Fury. That mechanic makes a little more sense to me after you put it how you did.
In other words it becomes a meeter of how aggressive you are vs how defensive? So high brave is high damage output and high damage received and vice versa? Exactly like faith?
I was confused. The bit of time I used it the mechanic seemed broken.
As an example I didn't fully understand it and dropped an enemy down to 0 brave using a mediator that was set to save fading life. Next thing I know my a.i stopped attacking him and just spammed yell and defend. I took direct control and seen that no matter who I hit home with my damage was 0 and he was hitting for roughly 2x the damage of my nights. So.. maybe I discovered a bug then.

Either way. It's an alright mechanic. I'm just curious how well mine would work.
Title: Re: ASM Requests
Post by: Guru on January 24, 2018, 12:24:27 pm
I've always really liked the concept of fury, and that would probably be a great reference for making a similar asm. Personally I think you would be forced to rely on the talk skill a little too much in the scenario you mention though. I think having one end of the spectrum be dedicated to defense and one to damage balances out the system a lot. When you think about it low faith/brave having higher defense makes sense actually, fear is good sometimes.

For high brave... they are reckless but show no fear in the face of danger, so they would be able to attack recklessly and without fear of harm, therefor doing more damage. They would also be less likely to worry about attacks harming them, thus end up taking more damage. Kind of like when people say you are either brave or incredibly stupid.

For low brave... they are cowardly in a sense, so they would be afraid to attack and would attack cautiously while fearing for their safety, so less damage. Not being as reckless and having constant fear in battle, they would most likely be completely focused on defense and would therefor concentrate on taking less damage.

Faith would work the same, except the faithful rely on their faith to god(s) or whatever their faith entails. Those who have little faith in a deity protecting them would probably be more defensive. I know I won't be walking into a flaming building without some kind of protection, because I don't think there is some greater power that will shield me from the flames lol. 
Title: Re: ASM Requests
Post by: Quillbeatssword on January 24, 2018, 02:48:29 pm
I get how it works and it is a good system. But I did figure out that dropping someone's brave to zero makes them take no damage period. Which is way lame.
Like I said. Everyone has a preference though and it's not quite what I'm looking for that's why I made the request for a different system. Doesn't mean it'll happen.
Title: Re: ASM Requests
Post by: Guru on January 24, 2018, 07:28:34 pm
Quote from: Quillbeatssword on January 24, 2018, 02:48:29 pm
I get how it works and it is a good system. But I did figure out that dropping someone's brave to zero makes them take no damage period. Which is way lame.
Like I said. Everyone has a preference though and it's not quite what I'm looking for that's why I made the request for a different system. Doesn't mean it'll happen.


I would assume no damage on zero brave is a bug, I can't imagine her making that intentional. 

I was explaining why it makes more sense, in my opinion anyways, not how it works. I don't even know how it works, it's xif magic. I just can't see this being viable in terms of balance. The player would just max out all their character's brave/faith and the battles would consist of spam brave/faith lowering. The only way I could see this working if you offset brave/faith with eachother, so 70/30 brave/faith and when one is increased, the other is decreased. Just my two cents anyways.

The fury hack would probably make a good base for whatever you do though, at least with the brave portion, just need to modify it to your needs.

Title: Re: ASM Requests
Post by: Nyzer on January 24, 2018, 08:21:59 pm
Yeah, if Br/Fa had a combined cap of 100 the mechanic would be amazing for balance.

But like Guru said, your method just seems horribly imba. And not in a fun way IMO.

Another potential workaround for your idea would be to set everyone to 50/50 (or some other "combined cap of 100" mix) by default, disable permanent alteration, and have a larger number & more variety of combat Br/Fa alteration. That way you're never sending in pre-maxed units, it's all about combat buffs. It seems like it'd make those buffs too crucial, but it's MUCH more viable than your plan just as is.
Title: Re: ASM Requests
Post by: Quillbeatssword on January 25, 2018, 12:17:10 am
Is there a spreadsheet for adding in new formulas or is it all done through hex?
Title: Re: ASM Requests
Post by: Pride on January 25, 2018, 12:28:09 pm
You'd have code new stuff in asm if you can't find what you need already created in FFTorgASM
Title: Re: ASM Requests
Post by: Quillbeatssword on January 28, 2018, 12:10:38 pm
Is it possible to make items innate? I know you can use the asm make skillset x innate but does it work? Maybe reducing all the item skills JP costs to 0?
I'm considering making items usable by everyone and just eliminating throw item and maybe adding a low CT to item usage somehow. Anyone ever tried this?
Title: Re: ASM Requests
Post by: Quillbeatssword on January 29, 2018, 07:22:09 am
Has anyone tried to make oil proc like Poison? Call it burn damage or something but keep oil coloration.
Title: Re: ASM Requests
Post by: Quillbeatssword on February 01, 2018, 07:43:34 am
Has anyone used the Unknown 1 and Unknown 2 Damage reduction ASM? I tried using it and got a bug where nobody could do damage to anyone wearing modified equipment :/ does it have a cap or something? How is this % calculated?
Title: Re: ASM Requests
Post by: Quillbeatssword on February 04, 2018, 10:54:55 am
PA*(BRAVE/100)*PA
and
PA*(BRAVE/100)*WP
Already exist but has anyone made some to match that for magic?
MA*(FAITH/100)*MA
and
MA*(FAITH/100)*WP

?? If so could you direct me to the location of that hack if you know of it.
Thanks.
Title: Re: ASM Requests
Post by: C1REX on March 16, 2018, 11:37:52 am
Is there a hack that can eliminate speed growth from the game? Speed growth cause so much problems for scaling it feels almost like a bug to me.
Title: Re: ASM Requests
Post by: Pride on March 16, 2018, 12:01:49 pm
I thought this already existed but i can only find the 0 growths hack which affects all the other stats. Poke around some more and it might be available
Title: Re: ASM Requests
Post by: C1REX on March 17, 2018, 06:20:52 pm
At this point a just reduced SP growth from 100 to 200 globally. At least I reduced the problem a bit.


Is there as hack that gives generics and monsters specific value for Brave and Faith?
I would like all generics to start with 70 Brave unless specified otherwise in ENDT. Ramzas pre raw stat can be edited here but I can't find anything for others unless I manually adjust all enemies in ENDT to make sure they won't start with too low Brave.
Title: Re: ASM Requests
Post by: Tony75 on March 21, 2018, 08:51:19 pm
Can someone make a working Knight ability to break the Accessory ?
Also a Mighty Sword Skill to break the Shield .
But with out losing something else Example I want to make Magic Break into accessory break .
Title: Re: ASM Requests
Post by: RavenCurow on April 10, 2018, 06:14:36 am
I would like to request a patch that would fix the problem of the multi hit formula's resetting the weapon strike animation after the first hit.
Title: Re: ASM Requests
Post by: Timbo on May 19, 2018, 11:35:42 am
This one's for Xifanie. As a compliment to your Guests in Randoms and Ramza can join as a guest hacks, I would like to request for a hack to change guest slots from 17, 18, 19, and 20 to 1, 2, 3, and 4. I like the aesthetic of Ramza being up front and I think others would as well.

Btw I like this hack more than the Party Roster hack. The party Roster hack takes your guest units away from the formation screen entirely. The player experiences loses out on being able to customize units they can never keep in exchange for extra party slots.

Your hack lets you keep them in the formation which allows the player to hypothetically modify a guest character that is integral to the story throughout the adventure. Essentially, it creates up to four or five main characters and expands the roster size.
Title: Re: ASM Requests
Post by: Nyzer on May 19, 2018, 01:19:09 pm
There's already a way to make units vital the same way Ramza is - game over if they die, can't be dismissed - and it's used in Jot5. You can't get rid of any of the Five.

Having the game's main characters stuck with the "Guest" label throughout the game would just look incredibly weird.

I do agree that it kinda sucks to lose out on the Guest customization in order to expand the roster, but I don't think your solution is a real improvement.
Title: Re: ASM Requests
Post by: Timbo on May 19, 2018, 07:43:40 pm
You can black out the "Guest" text by editing the graphics with no problem. I would love to see the documentation for that code. Is it or even the code itself published somewhere?
Title: Re: ASM Requests
Post by: Davarian on May 20, 2018, 08:08:22 pm
I've been trying to use Raven's spreadsheet to turn my axe damage formula into PA*WP, but noticed it also changed the random damage formula for flails into something I don't want.  Is there any way to get just the lines to change the axe damage formula without any of the extra stuff (including XA rewrite I guess).
Title: Re: ASM Requests
Post by: Nyzer on May 21, 2018, 03:43:51 pm
QuoteI would love to see the documentation for that code. Is it or even the code itself published somewhere?


Choto set up the Unit Dismissal Hack, which is in my copy of FFTOrgASM right now (and so probably yours too). There's also a "Jot5 Game Over Hack" in the staff board that is probably the one that causes a game over if they crystallize (though I can't guarantee it).

<Patch name="JoT5 Game Over hack">
  <Location file="BATTLE_BIN" offset="EB048">
FDFF1424
01000434
CB02060C
21800400
17005410
00000000
04000434
CB02060C
21800400
12005410
00000000
07000434
CB02060C
21800400
0D005410
00000000
0C000434
CB02060C
21800400
08005410
00000000
32000434
CB02060C
21800400
03005410
00000000
12070508
21900000
12070508
01001224

</Location>
<Location file="BATTLE_BIN" offset="DAc1c">
12480508
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000

</Location>

</Patch>
Title: Re: ASM Requests
Post by: Heisho on May 30, 2018, 10:27:21 pm
Greetings everyone!

I've been messing around with ASM and learning little by little about formulas and very simple hacks. In my quest to learn more I have stumbled on something. My question is the following:
What does the following code mean, what are their use and could it be bad if I skip it for space sake?

addiu r29,r29,0xffe8      
sw r31,0x0010(r29)
.......
.......
.......
lw r31,0x0010(r29)
addiu r29,r29,0x0018

I apologize in advance for my ignorance, I hope someone can shed some light on this.
Title: Re: ASM Requests
Post by: Xifanie on May 30, 2018, 11:50:33 pm
A jal opcode jumps to a certain address and overwrites r31 with the return address, and usually returns to that address with jr r31. That means, inside that routine, any other jal calls will overwrite r31... thus it needs to be temporarily stored somewhere, and reloaded before the routine ends, so it can return where it was meant to. That's where the stack (r29) comes into play. You push it by several bytes to have some space to store variables temporarily, so the routine can feel free to use those registers (as you can just reload them before the routine ends), since there are only 31 regular usable registers. So no, you absolutely can't get rid of them.
Title: Re: ASM Requests
Post by: Heisho on May 31, 2018, 10:50:37 am
Quote from: Xifanie on May 30, 2018, 11:50:33 pm
A jal opcode jumps to a certain address and overwrites r31 with the return address, and usually returns to that address with jr r31. That means, inside that routine, any other jal calls will overwrite r31... thus it needs to be temporarily stored somewhere, and reloaded before the routine ends, so it can return where it was meant to. That's where the stack (r29) comes into play. You push it by several bytes to have some space to store variables temporarily, so the routine can feel free to use those registers (as you can just reload them before the routine ends), since there are only 31 regular usable registers. So no, you absolutely can't get rid of them.



Thank you very much Xif. Now a lot of formulas and routines make sense. Time to get back to work.
Title: Re: ASM Requests
Post by: Heisho on August 11, 2018, 04:15:52 pm
Hello there!

I've been trying to develop a routine that allow you to either break or steal all equipment of the target, however I've hit a wall and do not know how to complete it.
At first it was a rutine that will jump if an item wasn't present and the formula that calls the routine had multihit but the game crashed after stealing the helmet (the first item to remove in the routine). Now with this new one I attempt to break/steal on one single hit by creating a loop, although I don't know if trying to send a routine to go back to the beginning using a jump is valid.

Can someone shed some light on this?

This is the code so far:

lui r3,0x8019   
lw r3,0x2d90(r3)   Current Action Data Pointer
ori r2,r0,0x00fe   
sb r2,0x0019(r3)   Store as 0x00FE
lui r4,0x8019   
lw r4,0x2d98(r4)   Load Defender's Stats
nop   
lbu r2,0x0006(r4)   Load Defender's Gender
nop   
andi r2,r2,0x0020   
bne r2,r0,0x000002bc   Branch to end if Gender is a Monster
nop   
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
nop   
lbu r3,0x001a(r2)   Load Defender's Headgear
ori r2,r0,0x00ff   
beq r3,r2,0x0000007c   Branch if Headgear ID is FF  (Doesn't exist?)
nop   
ori r2,r0,0x0080   R2 = 80
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
nop   
sb r2,0x0019(r3)   Store as remove helmet
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
lui r4,0x8019   
lw r4,0x2d90(r4)   Load Current Action Data Pointer
lbu r3,0x001a(r2)   Load Defender's Headgear
j 0x0000025c           Jump to store item
nop   
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
nop   
lbu r3,0x001b(r2)   Load Defender's Armor
ori r2,r0,0x00ff   
beq r3,r2,0x000000c8   Branch if Armor doesn't exist
nop   
ori r2,r0,0x0040   R2=40
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
nop   
sb r2,0x0019(r3)   Store as remove helmet?
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
lui r4,0x8019   
lw r4,0x2d90(r4)   Load Current Action Data Pointer
lbu r3,0x001b(r2)   Load Defender's Armor
j 0x0000025c           Jump to store item
nop   
lbu r3,0x001e(r4)   Load Defender's Right Hand Shield
ori r2,r0,0x00ff   
beq r3,r2,0x00000110   Branch if Right Hand Shield  doesn't exist?
nop   
ori r2,r0,0x0008   R2 = 8
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
nop   
sb r2,0x0019(r3)   Store as Remove Right Hand Shield
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
lui r4,0x8019   
lw r4,0x2d90(r4)   Load Current Action Data Pointer
lbu r3,0x001e(r2)   Load Defender's Shield
j 0x0000025c           Jump to store item
nop
lbu r2,0x0020(r4)   Load Left Hand Shield
nop   
beq r2,r3,0x00000148   Branch if Left Hand Shield doesn't  exist
nop   
ori r2,r0,0x0002   R2=2
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
nop   
sb r2,0x0019(r3)   Store as remove Left Hand Shield
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
lui r4,0x8019   
lw r4,0x2d90(r4)   Load Current Action Data Pointer
lbu r3,0x0020(r2)   Load Left Hand Shield
j 0x0000025c           Jump to store item
nop   
lbu r3,0x001c(r4)   Load Defender's Accessory
ori r2,r0,0x00ff   
beq r3,r2,0x00000188   Branch if Accessory doesn't exist?
nop   
ori r2,r0,0x0020   R2=20
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
nop   
sb r2,0x0019(r3)   Store as remove accessory
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
lui r4,0x8019   
lw r4,0x2d90(r4)   Load Current Action Data Pointer
lbu r3,0x001c(r2)   Load Defender's Accessory
j 0x0000025c       Jump to store item
nop   
lui r6,0x8019   
lw r6,0x2d98(r6)   Load Defender's Stats
nop   
lbu r3,0x001d(r6)   Load Right Hand Weapon
ori r7,r0,0x00ff   
beq r3,r7,0x000001c8   Branch if Right Hand Weapon  doesn't exist
nop   
addiu r4,r0,0xffff   R4 = FFFF
sll r2,r3,0x01           Right Hand Weapon * 2
addu r2,r2,r3           Right Hand Weapon * 3
sll r2,r2,0x02      Right Hand Weapon * 12
lui r1,0x8006   
addu r1,r1,r2   
lbu r4,0x2eba(r1)   
lbu r3,0x001f(r6)   Load Left Hand Weapon
nop   
beq r3,r7,0x000001e8   Branch if Left Hand Weapon doesn't  exist
nop   
sll r2,r3,0x01           Left Hand Weapon * 2
addu r2,r2,r3           Left Hand Weapon * 3
sll r2,r2,0x02           Left Hand Weapon * 12
lui r1,0x8006   
addu r1,r1,r2   
lbu r5,0x2eba(r1)   
addiu r2,r0,0xffff   R2 = 0xFFFF
bne r4,r2,0x000001fc   
nop   
beq r5,r4,0x0000024a   
nop   
slt r2,r4,r5   
bne r2,r0,0x00000234   
ori r2,r0,0x0004   R2=4
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
ori r2,r0,0x0010   R2=10
sb r2,0x0019(r3)   Store as remove right hand weapon
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
lui r4,0x8019   
lw r4,0x2d90(r4)   Load Current Action Data Pointer
lbu r3,0x001d(r2)   Load Right Hand Weapon
j 0x0000025c           Jump to store item
nop   
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
nop   
sb r2,0x0019(r3)   Store as remove left hand weapon
lui r2,0x8019   
lw r2,0x2d98(r2)   Load Defender's Stats
lui r4,0x8019   
lw r4,0x2d90(r4)   Load Current Action Data Pointer
lbu r3,0x001f(r2)   Load Left Hand Weapon
nop   
ori r2,r0,0x0073   
lui r3,0x8019   
lhu r3,0x38d6(r3)   Load ability used
nop   
beq r3,r2,0x0000028c   Branch if not Great Heist (Thief)
nop   
lui r3,0x8019   
lw r3,0x2d90(r3)   Target current action data pointer
ori r2,r0,0x0010   Special flag -Steal-
sh r2,0x0010(r3)   Store as steal item
j 0x00000000   
nop   
lui r3,0x8019   
lw r3,0x2d90(r3)   
ori r2,r0,0x0004   Special flag -Break-
sh r2,0x0010(r3)   Store as break item
j 0x00000000           return to beginning
nop   
lui r3,0x8019   
lw r3,0x2d90(r3)   Load Current Action Data Pointer
addiu r2,r0,0xffff   R2 = 0xFFFF
sb r0,0x0019(r3)   Store equipment as 0 ?
ori r2,r0,0x0007   
sb r2,0x0002(r3)   
jr r31   
nop   


Thanks in advance to anyone that can help.

Regards.

EDIT: Could someone remove this post. I made a new thread in Help section for this. Thanks
Title: Re: ASM Requests
Post by: 3lric on September 01, 2018, 04:15:42 pm
Request for someone to look into the Roster Hack, found HERE (http://ffhacktics.com/smf/index.php?topic=7629.0) or to make a new Hack to allow full, normal use of the 4 extra slots normally reserved for guest, specifically for mods that have guests forced only via ENTD.

The current issues with the existing Roster Hack, from my testing, are as follows:

- While it doesn't show 'GUEST' on people in standard formation, it DOES still show this in Battle Formation, as well as in Battle, which it should only show on ENTD forced Guests.

- When used in battle, units from those last 4 slots act as guests and cannot be controlled.

- When tested with Generics in the last 4 slots, after battle, 3 of the 4 were removed.

- When tested using Rafa and Malak in the first 2 of the last 4 slots, they had prompt to invite them again after each battle.

- Units in these last 4 slots cannot be removed (they don't show up in the list) if you have a full roster upon a join up and are prompted to remove a unit.

I'm requesting this, because in TLW, due to the extra 2 units you can acquire, you would be short of being able to have all possible special units, let alone any generics.

Thank you to any who consider looking into this or possibly making a new hack for it
Title: Re: ASM Requests
Post by: Timbo on September 02, 2018, 10:43:48 am
I'm looking for an old asm from a few years ago that I can't seem to find. It made it so that the berserker units could use skills from a specific skillset if it was equipped while under AI.  I have an idea to combine it with glain's new geomancy hack to create an earth themed berserker job.

The AI uses Geomancy well enough that I think such a marriage work well together.

Does anyone have a copy of this lying around?
Title: Re: ASM Requests
Post by: xjamxx on September 11, 2018, 08:08:10 pm
I search through 492 xml's and read all post here (yes the 11 pages), but still i didn't found anything about battle camera...

So it is possible to have a asm camera patch? like the starting default camera to be the far and with the higher angle...

Thank you for reading. ;)
Title: Re: ASM Requests
Post by: Nyzer on September 11, 2018, 10:30:50 pm
Pretty sure that's set in events. Possibly even for random battles. Camera angle and zoom are set with every Camera command.
Title: Re: ASM Requests
Post by: xjamxx on September 12, 2018, 12:11:34 am
you mean i need to edit events with EasyVent Editor? but the folder has like 500 files of events, i need to check all?

and what about the user input r2 and l2? those are in event too?
Title: Re: ASM Requests
Post by: 3lric on September 12, 2018, 12:17:04 am
The starting camera for battles is controlled by events. Controller input is not.

Yes there is about 500 files. Welcome to FFT modding
Title: Re: ASM Requests
Post by: Glain on September 12, 2018, 01:26:46 am
...A camera hack would be interesting... hmm...
Title: Re: ASM Requests
Post by: Xifanie on September 12, 2018, 08:20:08 am
I personally haven't tested the camera instruction theory, but I think it wouldn't be enough and it would get reset after an ability's effect plays. You probably need to also toggle the flag controlling the angle state, otherwise "I'm at 30 degrees, but this flag says I'm not, so I better switch to 30 degrees".

My take would be a bit silly, scanning all the event instructions until EventEnd(), and overriding the very last camera instruction. Whoever, this would be far from perfect and you would need to somehow detect if an event is a battle. DarkScreen() is usually a good indicator of battles, but it's also used to make characters join. Thus, I think that DisplayConditions() in an event is the best indicator of a battle... either that or March(), but if you're going to force the camera to adjust, it's probably better to do it during a DarkScreen().

...and you'd also have to somehow make it compatible with your event skip hack.
Title: Re: ASM Requests
Post by: xjamxx on September 12, 2018, 09:27:24 am
Thanks xifanie (elric and nyzer too) ;), i was trying to find a good way to know when an event was or not a battle (nice tips).
DarkScreen and DisplayConditions --> 129 files have that
March --> 119 files


QuoteYou probably need to also toggle the flag controlling the angle state, otherwise "I'm at 30 degrees, but this flag says I'm not, so I better switch to 30 degrees".

Well that kills, at least for now, my idea to change to a higher angle (60 or so)

old, an issue with the editor i solved somehow:

I am stuck now, i know this has nothing to do with ASM requests but, i am using the event editor. I extracted the test.evt from original iso ('97 file), decompile and recompile the .evt file, but guess what ... the files differ...
certutil -hashfile test.evt md5 = d9ca0f79ee00c1398f02e45ff70b8673 (original)
certutil -hashfile test-1.evt md5 = 171544e48786030d5191ea450fa8af7f (rebuilt)

And checking with binary comparison there are a lot of blocks that differ, but my guess is that the evt editor is trashing "useless" event data. Each block in the original start with "D9 C1 36 FA 37" but the rebuilt "93 36 FA 37" (one byte less), plus fills with a lot of zeros at the end of each block.

I only want to to mod the camera instruction, not the entire structure of the event data, is this possible with that tool?

Sorry for being out of topic, if u think this should go here: http://ffhacktics.com/smf/index.php?topic=11675.0
Then just say it, and i will post it there, so this thread keeps clean.
Title: Re: ASM Requests
Post by: Glain on September 12, 2018, 10:14:47 am
Yeah, what interests me about this is more the idea of having free rotation/zoom with the L and R buttons.  I think what is to be done with the camera at the start of the battle (if anything) would depend on where that leads me.

Ability effects do reset the camera zoom, but I think we can change the value it resets back to.  I ran into this when I was figuring out how to skip ability effects...  if you skip Galaxy Stop, for example, the camera would stay zoomed really far out, so I had to figure out how to reset the zoom.  That in turn led me to find some of the values controlling zoom and rotation, and through the debugger I was doing some pretty crazy things (zooming in ridiculously far, zooming out so far you could barely see the map), so allowing the player more control over zoom and rotation mid-battle could be interesting... and might finally provide an out for the scenario where you can't quite get the view you want in the middle of a battle.

I've also seen that a weird camera can cause ability effects to get messed up though, doing huge rotations that look really weird... so in theory we would want to avoid that as well.  Not sure how this would all pan out but it does at least seem interesting.

Title: Re: ASM Requests
Post by: xjamxx on September 12, 2018, 10:46:09 am
i began modding by differential file comparison, it will take some time.

The idea of free rotation (we have some sort of step rotation around z axis, but not for x or y axis) and zoom, would be awesome, but i aim lower. The game has two states for zoom and angle, i was willing to have a asm patch that allow me to change those values, ex: close would be 100% and 30º, far would be 50% (33?) and (60º) plus setting initial values, cuz after 30 fights, is a pain to adjust camera manually in every battle...

OLD (i can delete it but if any want to see whole process):

UPDATE:
mmm ... i modded the first battle with Delita still camera reset....
Offset(x00014000)
//Remove the previous line if you wish not to override the offset in CONFIG.INI.
Text(x000000D3)
//Remove the previous line if you wish text to compile directly after instructions.

{7C}()
ColorUnit(x00,x00,x04,-031,-031,+000,000)
ColorField(x04,-031,-031,+000,000)
Wait(00002)
UnitAnim(x80,x00,x0002,x00)
Camera(+00728,-00237,+01560,+00446,+04608,+00000,+04096,+00001)
WaitForInstruction(x04,x00)
{63}(rC9)
Reveal(060)
Camera(+00728,+00019,+00616,+00302,+04608,+00000,+04096,+00196)
Wait(00030)
ColorUnit(x00,x00,x04,+000,+000,+000,008)
ColorField(x04,+000,+000,+000,008)
WaitForInstruction(x04,x00)
{66}()
Wait(00030)
DisplayMessage(x10,x70,x0001,x80,x00,x00,+00000,-00014,-00004,x01)
WaitForInstruction(x01,x00)
Wait(00016)
March(x80,x00,000)
Wait(00016)
EventSpeed(x02)
CameraFusionStart()
Camera(+00504,+00019,+00840,+00510,+05120,+00000,+04096,+00064)
Camera(+00504,+00019,+00841,+00341,+05637,+00000,+02048,+00128)
CameraFusionEnd()
DarkScreen(x00,x01,012,064,x00,004)
WaitForInstruction(x36,x00)
DisplayConditions(x08,090)
WaitForInstruction(x38,x00)
WaitForInstruction(x04,x00)
Camera(+00504,+00019,+00840,+00341,+05632,+00000,+02048,+00004)
WaitForInstruction(x04,x00)
DisplayConditions(x00,060)
WaitForInstruction(x38,x00)
RemoveDarkScreen()
WaitForInstruction(x36,x00)
EventSpeed(x01)
EventEnd()



UPDATE 2:
It seems that one map has more than one event file, cuz in Delita turn there is another event for the camera...


UPDATE 3:
Well, i edited all event files (EVT_ 010 to 012) in test.evt for the first battle with Delita still camera reset in combat mode, so its clear that battle events are not there or at least they aren't sorted with text events. Now i don't have any clue where to look...
Video:

Title: Re: ASM Requests
Post by: Glain on September 12, 2018, 04:14:32 pm
This patch changes what the camera zoom values are when you press L and R.

The values for both zoom-in and zoom-out are hardcoded in two places (each).  One place is for how far in/out the camera goes while zooming, and the other is where the camera stays after zooming.  That's for both zoom-out and zoom-in, so there are four variables total in this patch.  You'll probably want to make the zooming and fixed values for each set the same but you don't have to.


  <Patch name="Change camera zoom values">
    <Description>Change camera zoom values.  Lower is more zoomed out, higher is more zoomed in.  Recommended to use same values for zooming and fixed.</Description>
    <Variable name="Zoom-in value (zooming)" file="BATTLE_BIN" offset="86C0" bytes="2" default="1000" />
    <Variable name="Zoom-in value (fixed)" file="BATTLE_BIN" offset="86F8" bytes="2" default="1000" />
    <Variable name="Zoom-out value (zooming)" file="BATTLE_BIN" offset="8744" bytes="2" default="0C01" />
    <Variable name="Zoom-out value (fixed)" file="BATTLE_BIN" offset="8774" bytes="2" default="0C00" />
  </Patch>
Title: Re: ASM Requests
Post by: xjamxx on September 12, 2018, 04:16:42 pm
Thanks Glain,  ;)  i will test it asap.

A silly question if u recommend same values why zoom out have c00 and c01?
Title: Re: ASM Requests
Post by: 3lric on September 12, 2018, 04:28:09 pm
Quote from: xjamxx on September 12, 2018, 10:46:09 am
i began modding by differential file comparison, it will take some time.

The idea of free rotation (we have some sort of step rotation around z axis, but not for x or y axis) and zoom, would be awesome, but i aim lower. The game has two states for zoom and angle, i was willing to have a asm patch that allow me to change those values, ex: close would be 100% and 30º, far would be 50% (33?) and (60º) plus setting initial values, cuz after 30 fights, is a pain to adjust camera manually in every battle...

OLD (i can delete it but if any want to see whole process):

UPDATE:
mmm ... i modded the first battle with Delita still camera reset....
Offset(x00014000)
//Remove the previous line if you wish not to override the offset in CONFIG.INI.
Text(x000000D3)
//Remove the previous line if you wish text to compile directly after instructions.

{7C}()
ColorUnit(x00,x00,x04,-031,-031,+000,000)
ColorField(x04,-031,-031,+000,000)
Wait(00002)
UnitAnim(x80,x00,x0002,x00)
Camera(+00728,-00237,+01560,+00446,+04608,+00000,+04096,+00001)
WaitForInstruction(x04,x00)
{63}(rC9)
Reveal(060)
Camera(+00728,+00019,+00616,+00302,+04608,+00000,+04096,+00196)
Wait(00030)
ColorUnit(x00,x00,x04,+000,+000,+000,008)
ColorField(x04,+000,+000,+000,008)
WaitForInstruction(x04,x00)
{66}()
Wait(00030)
DisplayMessage(x10,x70,x0001,x80,x00,x00,+00000,-00014,-00004,x01)
WaitForInstruction(x01,x00)
Wait(00016)
March(x80,x00,000)
Wait(00016)
EventSpeed(x02)
CameraFusionStart()
Camera(+00504,+00019,+00840,+00510,+05120,+00000,+04096,+00064)
Camera(+00504,+00019,+00841,+00341,+05637,+00000,+02048,+00128)
CameraFusionEnd()
DarkScreen(x00,x01,012,064,x00,004)
WaitForInstruction(x36,x00)
DisplayConditions(x08,090)
WaitForInstruction(x38,x00)
WaitForInstruction(x04,x00)
Camera(+00504,+00019,+00840,+00341,+05632,+00000,+02048,+00004)
WaitForInstruction(x04,x00)
DisplayConditions(x00,060)
WaitForInstruction(x38,x00)
RemoveDarkScreen()
WaitForInstruction(x36,x00)
EventSpeed(x01)
EventEnd()



UPDATE 2:
It seems that one map has more than one event file, cuz in Delita turn there is another event for the camera...


UPDATE 3:
Well, i edited all event files (EVT_ 010 to 012) in test.evt for the first battle with Delita still camera reset in combat mode, so its clear that battle events are not there or at least they aren't sorted with text events. Now i don't have any clue where to look...
Video:



Each event condition, like when someone talks mid battle, would have its own camera, yes. And yes, battles are in with the text only events. I've made over 250 custom events, and the camera is present in all of them, but you'd need to edit it in every battle event as well as their conditional events
Title: Re: ASM Requests
Post by: xjamxx on September 12, 2018, 04:48:24 pm
First, Glain I tried. a)flip values, and the zoom in and zoom out went anti-smooth b) try with 00F0 in zoom-out, and i could barely see the map.

Second, I don't think i am getting you Elric, all events are in test.evt or the are more files? cuz lets put the second video as an example:
a) 0- 15 sec it is controlled by EVT_010
b) 16- 57 sec i dont know what controls it...
c) 58- 72 sec it is controlled by EVT_011
d) 73- end sec controlled by player... (yet it still resets)
Title: Re: ASM Requests
Post by: 3lric on September 12, 2018, 04:52:16 pm
Every single event in the game is in test.evt.

Title: Re: ASM Requests
Post by: Glain on September 12, 2018, 04:57:59 pm
Quote from: xjamxx on September 12, 2018, 04:16:42 pm
Thanks Glain,  ;)  i will test it asap.

A silly question if u recommend same values why zoom out have c00 and c01?


The comparison it's doing is whether the current zooming value is >= 0x0c01.  By contrast it checks for zooming value < 0x1000 when going the other way.  I guess it's so that the zooming will stop in the case of the value being exactly equal.  It's probably not a big deal either way.

EDIT:

Quote from: xjamxx on September 12, 2018, 04:16:42 pm
a) 0- 15 sec it is controlled by EVT_010
b) 16- 57 sec i dont know what controls it...
c) 58- 72 sec it is controlled by EVT_011
d) 73- end sec controlled by player... (yet it still resets)


For scenarios (b) and (d) it's the battle engine controlling the camera since the event has already played.
Title: Re: ASM Requests
Post by: xjamxx on September 14, 2018, 10:34:01 am
I was sorting stuff, still not much progress, but remade your patch (though it uses weird syntax so current ASM wont read)
  <Patch name="Change camera zoom values">
    <Description>Change camera zoom and angle values.</Description>   
    <Variable name="Zoom-in value" file="BATTLE_BIN" bytes="2" default="1000" value="0C00" offset="84DC:1,84E4,86C0,86F8"/>
    <Variable name="Zoom-out value" file="BATTLE_BIN" bytes="2" default="0C00" value="0700" offset="854C:1,8554,8744:1,8774"/>
    <Variable name="Angle-in value" file="BATTLE_BIN" bytes="2" default="012E" value="0130" offset="87F4:1,87FC,8A54:1,8A5C,8AFC,8B04"/>
    <Variable name="Angle-out value" file="BATTLE_BIN" bytes="2" default="01C0" value="0400" offset="8860:1,8868,89FC,8A04,8A98:1,8AA0" />
  </Patch>

PatchXmlReader.cs from line 220
                    //PsxIso.Sectors varSec = (PsxIso.Sectors)Enum.Parse( typeof( PsxIso.Sectors ), varNode.Attributes["file"].InnerText );
                   
                    XmlAttribute defaultAttr = varNode.Attributes["value"];
                    if ( defaultAttr == null ) defaultAttr = varNode.Attributes["default"];
                   
                    foreach ( string varNodeOffset in varNode.Attributes["offset"].InnerText.Split(',') )
                    {
                    string[] varNodeOffsetPart = varNodeOffset.Split(':');
                    UInt32 varOffset = UInt32.Parse( varNodeOffsetPart[0], System.Globalization.NumberStyles.HexNumber );
                    UInt32 def = 0;
                    Byte[] byteArray = new Byte[bytes];
                   
                    if ( varNodeOffsetPart.GetLength(0) > 1 )
                    def = def + UInt32.Parse( varNodeOffsetPart[1], System.Globalization.NumberStyles.HexNumber );
                    if ( defaultAttr != null )
                    {
                    def = def + UInt32.Parse( defaultAttr.InnerText, System.Globalization.NumberStyles.HexNumber );
                    for (int i=0; i < bytes; i++)
                    {
                    byteArray[i] = (Byte)((def >> (i * 8)) & 0xff);
                    }
                    }
                    KeyValuePair<string, PatchedByteArray> kvp = new KeyValuePair<string, PatchedByteArray>( varName, new PatchedByteArray( varSec, varOffset, byteArray ) );
                    VariableType vType = new VariableType();
                    vType.content = kvp;
                    vType.bytes = bytes;
                   
                    variables.Add( vType );
                    }

Still the initial values are not there so every time i enter a battle it resets...

Also there is a weird behaviour with the angle, bird view is only for map and not toons, plus some squares are not getting drawn...
Title: Re: ASM Requests
Post by: 3lric on September 14, 2018, 11:41:51 am
Quote from: xjamxx on September 14, 2018, 10:34:01 am
Also there is a weird behaviour with the angle, bird view is only for map and not toons...



If you looked at a spritesheet for FFT, you'd see why this angle wont work
Title: Re: ASM Requests
Post by: Glain on September 15, 2018, 01:17:38 pm
Interesting routines/code:

Routine 0x8008e468 might be initializing the battle camera.  Particularly interesting:

8008e488: 3c04800c lui r4,0x800c
8008e48c: 24847ca0 addiu r4,r4,0x7ca0
8008e490: 34051000 ori r5,r0,0x1000
8008e494: 34061000 ori r6,r0,0x1000
8008e498: 0c010acb jal 0x80042b2c
8008e49c: 34071000 ori r7,r0,0x1000


Sets the camera zoom values to default zoomed-in value 0x1000.

Further in the same routine:

8008e4a0: 3c04800a lui r4,0x800a
8008e4a4: 24847784 addiu r4,r4,0x7784
8008e4a8: 3405012e ori r5,r0,0x012e
8008e4ac: 34060e00 ori r6,r0,0x0e00
8008e4b0: 0c010ac7 jal 0x80042b1c
8008e4b4: 00003821 addu r7,r0,r0


Copying some more values, including 0x12e which is what you listed as the default angle-in value.

Routine 0x8012dde8 is also playing with some camera values, including here:

8012dee4: 34021000 ori r2,r0,0x1000
8012dee8: ac620080 sw r2,0x0080(r3)
Title: Re: ASM Requests
Post by: xjamxx on September 15, 2018, 05:26:19 pm
Thanks, you are awesome  ;).

The routine at 0x8008e468, is not initializing the battle camera at least for the zoom. Haven't try the angle.

But this code:34021000 ac620080
which can be found twice in the iso, the first occurrence is the one for initializing the battle camera (zoom only tested)

You really are top  :oops:

In the iso the zone is:
003229E8h   D0 60 22 AC 00 10 02 34
003229F0h   80 00 62 AC 20 00 BF 8F

I changed to:
003229E8h   D0 60 22 AC 00 0C 02 34
003229F0h   80 00 62 AC 20 00 BF 8F

I also tried 07 and it work like a charm.

UPDATE:
Added to patch both angle (3 places not sure which is the key, all are near) and zoom:
  <Patch name="Change camera zoom values">
    <Description>Change camera zoom and angle values. Edit through xml.</Description>
    <Variable name="Zoom initial value" file="BATTLE_BIN" bytes="2" default="1000" value="0C00" offset="C6EE4"/>
    <Variable name="Zoom-in value" file="BATTLE_BIN" bytes="2" default="1000" value="1000" offset="84DC:1,84E4,86C0,86F8"/>
    <Variable name="Zoom-out value" file="BATTLE_BIN" bytes="2" default="0C00" value="0C00" offset="854C:1,8554,8744:1,8774"/>
    <Variable name="Angle initial value" file="BATTLE_BIN" bytes="2" default="012E" value="01C0" offset="C6E10,C6E24,C6E38"/>
    <Variable name="Angle-in value" file="BATTLE_BIN" bytes="2" default="012E" value="012E" offset="87F4:1,87FC,8A54:1,8A5C,8AFC,8B04"/>
    <Variable name="Angle-out value" file="BATTLE_BIN" bytes="2" default="01C0" value="01C0" offset="8860:1,8868,89FC,8A04,8A98:1,8AA0"/>
  </Patch>

Still there is an issue with r2 and l2, cuz a flag or smt like that make the game believe that the starting camera is always zoom in, so if u start with zoom out values, the first time u press r2 or l2 u won't notice anything.

Again, thanks for everything to Nyzer, Elric, Xifanie, special thanks to Glain (you really did it). I won't post anything else, at least about this camera hack, all credit goes to Glain (you found it plus you wrote the initial xml structure).

Now back to play my custom modded FFT, cya!
Title: Re: ASM Requests
Post by: TheAvelon on October 01, 2018, 10:43:58 am
I have a request. After messing around in FFTP I think this is an ASM quandary.

I'd like for Teleport's 100% success range to be MA/2 rounding down. A character with 15 MA can teleport 7 tiles and has a 90% success rate for teleporting 8 tiles.

It may be best to make it MA/2.5 or 3; but if this gets made I can tinker with the exact number from there. My hack's base is a TO style job growth change so pure mages will have higher base MA growth and I'm not sure yet what they're going to look like at level 99.

Then again a level 99 mage SHOULD be able to teleport halfway across the map.
Title: Re: ASM Requests
Post by: xjamxx on October 01, 2018, 12:16:14 pm

Try this:
  <Patch name="Teleport Failure MA Hack">
    <Description>It changes the base for failure in teleport, MA div ma_factor instead of Move. No variables, so edit through xml only. Edit this eqv if needed:
   ma_factor   Amount to divide MA.</Description>
    <Location file="BATTLE_BIN" offset="176C58" mode="ASM" offsetMode="RAM">
    .eqv  %ma_factor, 0x0003
      lbu v0,0x0037(a2)            #Load MA
      subu a0,zero,a0            #Make Y Distance positive
      addu v1,v1,a0               #X Distance + Y Distance
      ori t1,zero,%ma_factor
      divu v0,t1
      mflo v0                  #v0 = MA div ma_factor
      ori a0,zero,0x0050         #a0 = 100% = 80 = 50h
      subu v1,v1,v0               #Distance -  MA div ma_factor
      jal 0x0005e0cc             #Check if Random is greater/equal to Chance
      sll a1,v1,0x03            #Extra Distance * 8 (10% chance of failure for tile 8-80)
   </Location>
  </Patch>

As always my patches need testing, this one is no exception. Big issue could be that it is not getting MA, but something else...
If you just want MA/2, then the patch is smaller:
  <Patch name="Teleport Failure MA Hack v2">
    <Description>It changes the base for failure in teleport, MA/2 instead of Move.</Description>
    <Location file="BATTLE_BIN" offset="176C58" mode="ASM" offsetMode="RAM">
      lbu v0,0x0037(a2)            #Load MA
      subu a0,zero,a0               #Make Y Distance positive
      addu v1,v1,a0               #X Distance + Y Distance
      srl v0,v0,0x01            #v0 = MA/2
   </Location>
  </Patch>


Read following post.
Title: Re: ASM Requests
Post by: Glain on October 01, 2018, 07:03:31 pm
Instead of, or in addition to, using MA Factor as a label (and actually i'd use .eqv if you want a constant... labels are for addresses), you could set it up as a variable at RAM 0x176C64 = BATTLE.BIN 0x10FC64.  Clever using 8/80 instead of 10/100 to gain space in the code, but then why not just do 1/10 and not shift at all?

It also might make sense to multiply by the variable then divide by 128 so you could effectively divide by something like 2.5...
Title: Re: ASM Requests
Post by: xjamxx on October 01, 2018, 07:19:14 pm
Quote from: Glain on October 01, 2018, 07:03:31 pm
use .eqv if you want a constant... labels are for addresses)
thanks didn't knew it
Quote from: Glain on October 01, 2018, 07:03:31 pm
you could set it up as a variable at RAM 0x176C64 = BATTLE.BIN 0x10FC64
I don't like using variable cuz i usually forget to change them at the .exe, yeah i know its not an excuse but i like asm entire block
Quote from: Glain on October 01, 2018, 07:03:31 pmbut then why not just do 1/10 and not shift at all?
I thought the same, but may be that would fk the RNG calculation? not sure, still haven't check RNG.
Quote from: Glain on October 01, 2018, 07:03:31 pmIt also might make sense to multiply by the variable then divide by 128 so you could effectively divide by something like 2.5...
Yeah but since the one who asked for this didn't tested I went back to another thing and stop this optimization.

UPDATE: here it goes if any1 wants it as Glain:
  <Patch name="Teleport Failure MA Hack v3">
    <Description>It changes the base for failure in teleport, MA * ma_factor/128 instead of Move. No variables, so edit through xml only. Changes suggested by Glain. Edit this eqv if needed:
   ma_factor   Amount to multiply MA/128, 64=MA/2, 51=MA/2.5, 42(43)=MA/3.</Description>
    <Location file="BATTLE_BIN" offset="176C58" mode="ASM" offsetMode="RAM">
    .eqv %ma_factor, 64
      lbu v0,0x0037(a2)            #Load MA
      subu a0,zero,a0            #Make Y Distance positive
      ori t1,zero,%ma_factor
      multu v0,t1
      mflo v0                  #v0 = MA * ma_factor
      addu v1,v1,a0               #X Distance + Y Distance
      srl v0,v0,0x07            #v0 = MA * ma_factor/128
      subu a1,v1,v0               #Extra Distance = Distance -  MA * ma_factor/128
      jal 0x0005e0cc             #Check if Random is greater/equal to Chance
      ori a0,zero,0x000a         #a0 = 100% = 10 = ah (10% chance of failure for tile 1-10)
   </Location>
  </Patch>

UPDATE 2: tested, as i fear it doesn't read MA, so it needs :more: hacking, with this should suffice for definitive version:
  <Patch name="Teleport Failure MA Hack">
    <Description>It changes the base for failure in teleport, MA * ma_factor/128 instead of Move. No variables, so edit through xml only. Changes suggested by Glain. Edit this eqv if needed:
   ma_factor   Amount to multiply MA/128, 64=MA/2, 51=MA/2.5, 42(43)=MA/3.</Description>
    <Location file="BATTLE_BIN" offset="1744C0" mode="ASM" offsetMode="RAM">
      lui t0,0x8019
      sb v0,0x0007(s3)
      lbu v0,0x0048(s1)
      sw s1,0x2d98(t0)            #Store unit data pointer in attacker slot.
    </Location>
    <Location file="BATTLE_BIN" offset="176C10" mode="ASM" offsetMode="RAM">
      lui t0,0x8019
      lw a2,-0x0b20(t0)
      addiu sp,sp,0xffe8
      sw ra,0x0010(sp)
      lbu v0,0x0024(a2)
      lw t0,0x2d98(t0)            #Read unit data from attacker slot.
    </Location>
    <Location file="BATTLE_BIN" offset="176C58" mode="ASM" offsetMode="RAM">
    .eqv %ma_factor, 64
      lbu v0,0x0037(t0)            #Load MA
      subu a0,zero,a0            #Make Y Distance positive
      ori t1,zero,%ma_factor
      multu v0,t1
      mflo v0                  #v0 = MA * ma_factor
      addu v1,v1,a0               #X Distance + Y Distance
      srl v0,v0,0x07            #v0 = MA * ma_factor/128
      subu a1,v1,v0               #Extra Distance = Distance -  MA * ma_factor/128
      jal 0x0005e0cc             #Check if Random is greater/equal to Chance
      ori a0,zero,0x000a         #a0 = 100% = 10 = ah (10% chance of failure for tile 1-10)
   </Location>
  </Patch>
Title: Re: ASM Requests
Post by: TheAvelon on October 02, 2018, 12:10:14 am
Awesome! This is exactly what I was hoping for! Thanks muchly, I will figure out how to implement this and test it tomorrow. Been consumed all evening with another area of the patch I'm working on and didn't check the forums


You rock.
Title: Re: ASM Requests
Post by: xjamxx on October 05, 2018, 03:12:05 pm
Quote from: Elric on September 01, 2018, 04:15:42 pm
Request for someone to look into the Roster Hack, found HERE (http://ffhacktics.com/smf/index.php?topic=7629.0) or to make a new Hack to allow full, normal use of the 4 extra slots normally reserved for guest, specifically for mods that have guests forced only via ENTD.

The current issues with the existing Roster Hack, from my testing, are as follows:.....

Thank you to any who consider looking into this or possibly making a new hack for it


Every time I spent my time reading FTT hacks or FFT wiki, I found  Glain's and Xifanie's work outstanding. I feel like like a baby playing with 2 bricks and thinking that if i assemble them i am a master builder, while they just built the Eiffel tower and say me: "hey, good job assembling those bricks". :cry:

Sorry about that, anyway your hack is already done by Glain. It may be not the best roster hack but it's amazing, though dangerous to use as it is, with Vanilla. You can train all msq guests in random battles, you can control them in those battles (you need to remember to put them back on their guest slot before next main event to avoid f***ing it) and after the game finish you putting guests on those space you can fill it with 4 units that you won't be using in the next battle, but can be switched if needed.. what more can we ask Glain.

All you need to do is chance 16 to 20 in this hack "Switch unit number with L1 and R1 buttons (formation)" and done. It will look like this:
  <Patch name="Switch unit number with L1 and R1 buttons (formation)">
    <Description>
        Switch unit number with L1 and R1 buttons in the formation screen.  Changes unit order as appropriate.  L1 and R1 still work normally (switching the selected unit) in menus.
    </Description>
    <Location file="WORLD_WORLD_BIN" offset="1481FF" mode="DATA" offsetMode="RAM">
        00
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="148200" mode="ASM" offsetMode="RAM">
        .label  @address_skip_portrait_transition, 0x801481ff

        @swap_formation_unit_hook:
                addiu   sp, sp, -24
                sw      ra, 4(sp)
                sw      a3, 8(sp)

                move    a1, a0
                jal     @swap_formation_unit
                move    a0, t0
                sw      v0, 12(sp)
               
                sb      zero, 0x8018bad4
                jal     0x801140bc
                nop
               
                jal     0x80108920
                nop
               
                lw      v0, 12(sp)
                lw      a3, 8(sp)
                lw      ra, 4(sp)
                addiu   sp, sp, 24
                j       0x8012bcf8
                move    t0, v0

        @portrait_transition_hook:
                lui     t2, %hi(@address_skip_portrait_transition)
                lbu     t1, %lo(@address_skip_portrait_transition) (t2)
                nop
               
                beq     t1, zero, portrait_transition_hook_default
                addiu   t1, t1, -1
               
                sw      v1, 0x0058(sp)
                j       portrait_transition_hook_end
                sb      t1, %lo(@address_skip_portrait_transition) (t2)
               
            portrait_transition_hook_default:   
                sw      v0, 0x0050(sp)
               
            portrait_transition_hook_end:
                jr      ra
                nop
               
        #   swap_formation_unit (formationIndex, offset)
        @swap_formation_unit:
                addiu   sp, sp, -16
                sw      ra, 4(sp)
               
                move    v0, a0                  #   formationIndex
                sll     t0, a0, 2
                lw      t0, 0x801cd5ec(t0)
                addu    t1, a0, a1              #   offsetFormationIndex
                lhu     a0, 0x2c(t0)            #   unitIndex
                move    t2, a1                  #   offset
                addu    a1, a0, a1              #   offsetUnitIndex
               
                #   Skip if either unit index = 0 or either unit index >= 20
                beq     a0, zero, swap_formation_unit_end
                nop
                beq     a1, zero, swap_formation_unit_end
                sltiu   t0, a0, 20 
                beq     t0, zero, swap_formation_unit_end
                sltiu   t0, a1, 20
                beq     t0, zero, swap_formation_unit_end
                nop
               
                #   Find unit index of offset formation unit
                sll     t0, t1, 2
                lw      t0, 0x801cd5ec(t0)
                nop
                lhu     t0, 0x2c(t0)
                nop
               
                #   If it's the same as the offset unit index...
                bne     t0, a1, swap_formation_unit_swap
                li      t0, 1
                #   ...move the selected formation unit index.
                addu    v0, v0, t2
               
            swap_formation_unit_swap:
                sb      t0, @address_skip_portrait_transition
                sw      v0, 8(sp)
                jal     @swap_unit_data
                nop
                lw      v0, 8(sp)
               
            swap_formation_unit_end:
                lw      ra, 4(sp)
                addiu   sp, sp, 16
                jr      ra
                nop

        #   swap_unit_data (index1, index2)
        @swap_unit_data:
                addiu   sp, sp, -32
                sw      ra, 4(sp)
                sw      s0, 8(sp)
                sw      s1, 12(sp)
                sw      s2, 16(sp)
                sw      s3, 20(sp)
               
                move    s0, a0
                move    s1, a1
               
                sll     s2, a0, 8
                sll     s3, a1, 8
                la      t0, 0x80057f74
                addu    s2, s2, t0
                addu    s3, s3, t0
               
                move    a0, s2
                move    a1, s3
                jal     @swap_data
                li      a2, 256
               
            swap_unit_data_first_index:
                lbu     t1, 1(s2)
                li      t0, 0xff
                beq     t1, t0, swap_unit_data_second_index
                nop
                sb      s0, 1(s2)
           
            swap_unit_data_second_index:   
                lbu     t1, 1(s3)
                nop
                beq     t1, t0, swap_unit_data_end
                nop
                sb      s1, 1(s3)
           
            swap_unit_data_end:   
                lw      s3, 20(sp)
                lw      s2, 16(sp)
                lw      s1, 12(sp)
                lw      s0, 8(sp)
                lw      ra, 4(sp)
                addiu   sp, sp, 32
                jr      ra
                nop
               
        #   swap_data (ptr1, ptr2, size) size must be greater than zero
        @swap_data:
                addiu   a2, a2, -1
                lbu     t0, 0(a0)
                lbu     t1, 0(a1)
                sb      t0, 0(a1)
                sb      t1, 0(a0)
                addiu   a0, a0, 1
                bgtz    a2,@swap_data
                addiu   a1, a1, 1
                jr      ra
                nop
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="10DB28" mode="ASM" offsetMode="RAM">
        jal     @portrait_transition_hook
        li      v0, 2
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="12BCC8" mode="ASM" offsetMode="RAM">
        j       @swap_formation_unit_hook
        li      a0, 1
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="12BCE8" mode="ASM" offsetMode="RAM">
        j       @swap_formation_unit_hook
        li      a0, -1
    </Location>
  </Patch>
Title: Re: ASM Requests
Post by: Nyzer on October 05, 2018, 09:38:50 pm
The key words there are "full, normal use". A workaround that can potentially fuck your game over isn't one that's desired.

Elric won't even let me get away with making a slightly substandard non-battle event; there's no way he'd willingly use an ASM with such a glaring flaw.
Title: Re: ASM Requests
Post by: xjamxx on October 05, 2018, 09:57:51 pm
It can only f*** the game if the event requires an specific unit in that slot, and from what i read TLW will not put real guest in party roster, until they fully join.

So the 4 slot are like a storage for units you put them there and take them out if you need them, they wont appear on battle formation, but to that case you can change jobs nor equipment in battle formation either. yet its a limitation of 16 units to choose in battle formation while having 4 in cold storage.   
Title: Re: ASM Requests
Post by: 3lric on October 06, 2018, 12:07:30 am
Quote from: xjamxx on October 05, 2018, 09:57:51 pm
It can only f*** the game if the event requires an specific unit in that slot, and from what i read TLW will not put real guest in party roster, until they fully join.

So the 4 slot are like a storage for units you put them there and take them out if you need them, they wont appear on battle formation, but to that case you can change jobs nor equipment in battle formation either. yet its a limitation of 16 units to choose in battle formation while having 4 in cold storage.   


TLW doesnt have formation guests, this is correct, but it does use hacks that allow guests to be used in normal battle, since its tied to the unit restriction hack.

Being that this is a base patch for others to build their mods upon, Id rather not do anything that would potentially mess anything up.

As Nyzer said (and knows far too well with the years we've worked together) I couldnt be okay substituting one hack with another that required work arounds and planning to have it act as intended.

I'd prefer to wait until a dedicated Roster Hack is made
Title: Re: ASM Requests
Post by: xjamxx on October 07, 2018, 01:49:32 pm
I won't say anything about that to avoid wasting time. Still i am committed to help you.
Let's go back to the draw board again:
Quote- While it doesn't show 'GUEST' on people in standard formation, it DOES still show this in Battle Formation, as well as in Battle, which it should only show on ENTD forced Guests.
- When used in battle, units from those last 4 slots act as guests and cannot be controlled.

This doesn't happen to me, there is no 'GUEST' in battle nor battle formation, plus they can be controlled. Are you sure you are not overwriting the roster patch or using an old version?
Quote- When tested with Generics in the last 4 slots, after battle, 3 of the 4 were removed.
- When tested using Rafa and Malak in the first 2 of the last 4 slots, they had prompt to invite them again after each battle.

This issue was discussed by Glain, Pokeytax, and Raven. You need to tweak END flags. I just used what they said to fix that (still it need more testing).
Quote
- Units in these last 4 slots cannot be removed (they don't show up in the list) if you have a full roster upon a join up and are prompted to remove a unit.

I believe it is fixed, still haven't tested, I would need a psx savestate to test this.
  <Patch name="Roster hack v2">
    <Description>Extends roster limit to 20. It removes guest formation AFAIK, so it is not recommended to use with vanilla, some units could get duplicated.</Description>
    <Location file="SCUS_942_21" offset="59BF4" mode="ASM" offsetMode="RAM">
      j 0x00059c38
    </Location>
    <Location file="SCUS_942_21" offset="59C7C" mode="DATA" offsetMode="RAM">
      14
    </Location>
    <Location file="SCUS_942_21" offset="59DA0" mode="DATA" offsetMode="RAM">
      00
    </Location>
    <Location file="SCUS_942_21" offset="59DB0" mode="DATA" offsetMode="RAM">
      14
    </Location>
    <Location file="SCUS_942_21" offset="59F64" mode="DATA" offsetMode="RAM">
      14
    </Location>
    <Location file="SCUS_942_21" offset="5B134" mode="DATA" offsetMode="RAM">
      14
    </Location>
    <Location file="EVENT_ATTACK_OUT" offset="4110">
      14
    </Location>
    <Location file="EVENT_ATTACK_OUT" offset="9BCC">
      14
    </Location>
    <Location file="EVENT_REQUIRE_OUT" offset="50F0">
      14
    </Location>
    <Location file="EVENT_REQUIRE_OUT" offset="546C">
      14
    </Location>
    <Location file="EVENT_REQUIRE_OUT" offset="58A8">
      14
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="40C08">
      14
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="40924">
      14
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="582F8">
      14
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="B5ABF">
      14
    </Location>
  </Patch>
  <Patch name="Beowulf fix">
    <Description>This is to fix Beowulf guest requirement with vanilla. Probably needed if roster hack is used.</Description>
    <Location file="WORLD_WLDCORE_BIN" offset="3087A">
      03
    </Location>
  </Patch>
Title: Re: ASM Requests
Post by: Greenhorn on October 07, 2018, 08:26:42 pm
Zodiac causing instant crystal kill?
Title: Re: ASM Requests
Post by: Xifanie on October 07, 2018, 08:49:16 pm
FFTPatcher
Set Zodiac's formula to 100% hit or whatever you want, just make sure it's not NS (No Status)
Set the inflicted status to crystal.

You should probably play around more with the tools, you should be inspired by all the possibilities instead of asking an ASM about one of the most simple things that can be accomplish with FFTPatcher alone.
Title: Re: ASM Requests
Post by: xjamxx on October 08, 2018, 01:24:39 pm
Fearing that Elric would never reply, i will try to clear some issues with the unknown TLW project, plus this way i can be near to one of her posts :roll:, sorry that was unnecessary.

Quote from: Elric on October 06, 2018, 12:07:30 am
TLW ... does use hacks that allow guests to be used in normal battle, since its tied to the unit restriction hack.

If that hack refers to this: http://ffhacktics.com/smf/index.php?topic=953.msg208303#msg208303 (http://ffhacktics.com/smf/index.php?topic=953.msg208303#msg208303), then as Xifanie already wrote: there "is an option to make them uncontrollable in said random battles", plus the "hack is (hopefully) bug-free in vanilla, as I already configured all guest restrictions".
To put it simple the original roster hack or the v2 are not 100% compatible with Xifanie's hack, cuz while roster hack tries to erase guest features at all, Xifanie's tries to save them (or smt like that).

What now then?, i suppose that you (Elric) didn't use the .xml version, but the spreadsheet instead to insert your additions, am i right?
What i need? some sort of explanation of what are you trying to do or achieve with Xifanie's hack and the .xml file generated (you can pm them) to adapt it or the roster hack so you can use both...

With the information provided that's all i can do.  ;)

UPDATE: ok, good to know i already did. Since my mobo died 5 months ago (new one doesnt boot well with 7), i haven't reinstall most of the apps windows use (yeah its quite lazy), which includes the entire office, so i haven't tried a single spreadsheet, just only view their contents (so i was unsure what they did). ;)
Title: Re: ASM Requests
Post by: Xifanie on October 08, 2018, 02:34:24 pm
The .xml is generated from the spreadsheet. The code doesn't change no matter what is changed in the table... I don't know where you would get that idea. Nothing is hardcoded. You can just download the .xml in the topic itself.
Title: Re: ASM Requests
Post by: xjamxx on October 08, 2018, 06:02:27 pm
Ok, that really went long. I found some bugs in another of my patches i was breeding 19 chocos with lvl cap 35 but with maxed stats.

Anyway, you can try both patches (it doesn't matter which is first), but remove from xifanie's hack the scus section:
    <Location file="SCUS_942_21" offset="4B8F0">
      1000622E
      02004010
      84000334
      08000334
    </Location>
Cuz it goes over control flags and since you want full control just don't use it.

UPDATE:
I made some more patches to be able to use the roster hack with vanilla (full set attached), It may look long, but it is just ENTD touches (with comments to easy edit) Check glain's asm thread, my last post.
Title: Re: ASM Requests
Post by: Reikan on November 01, 2018, 12:21:08 am
Hello.

I want a formula to build a Faith-based melee spellcaster (Kinda like Beowulf except with some damaging skills instead of pure CC). My suggestion is to take slot 18 and make a formula like:

DMG_F(PA*(WP+Y))  Hit_F(PA+X)%

(This way, both the DMG and chance of hit would be dependant on Faith, a thing that no PA/WP formulas have as far as I know)


I know nothing about ASM but I have free time to learn, if anyone wants to give me some light.

Thanks in advance.  :mrgreen:
Title: Re: ASM Requests
Post by: xjamxx on November 01, 2018, 09:22:42 am
  <Patch name="Formula 18: melee spellcaster">
    <Description>Redirects empty formula 18 to F6400 (the same as Glain's Formula 3B), so it becomes DMG_F(PA*(WP+Y))  Hit_F(PA+X)%. Uses 28 instructions.</Description>
    <Location file="BATTLE_BIN" offset="F6400" mode="ASM">
@melee_spellcaster:
      addiu sp,sp,0xffe8
      sw ra,0x0010(sp)
      jal 0x001885b8            #Magic Evade.
      nop
      bne v0,zero,NFED
      nop
      jal @acc_mag_melee           #Calculate (PA + X)*Faith% acc, based on 0x001889cc.
      nop
      bne v0,zero,NFED
      nop
      jal @dmg_f_melee            #DMG_F(PA*(WP+Y)), based on 0x00188d84.
      nop
NFED: lw ra,0x0010(sp)
      addiu sp,sp,0x0018
      jr ra
      nop
@acc_mag_melee:
      addiu sp,sp,0xffe8
      sw ra,0x0010(sp)
      jal 0x00185dac            #Store PA+X.
      nop
      j 0x001889d8            #It is 0x001889cc but first part is patched.
      nop
@dmg_f_melee:
      addiu sp,sp,0xffe8
      sw ra,0x0010(sp)
      jal 0x00185e5c            #Store PA and WP + Y.
      nop
      j 0x00188da0            #It is 0x00188d84 but first part is patched.
      nop
    </Location>
    <Location file="BATTLE_BIN" offset="18929C" mode="ASM" offsetMode="RAM">
      j @melee_spellcaster
    </Location>
  </Patch>

I didn't tested it. Also you should find another code cave to put the "main code" of your formula since it uses the same as other Glain's hack.
EDIT:
Did one test, it seems to work..., minor touches:
  <Patch name="Formula 18: melee spellcaster">
    <Description>Redirects empty formula 18 to F6400 (the same as Glain's Formula 3B), so it becomes DMG_F(PA*(WP+Y))  Hit_F(PA+X)%. Uses 26 instructions.</Description>
    <Location file="BATTLE_BIN" offset="F6400" mode="ASM">
@melee_spellcaster:
      addiu sp,sp,0xffe8
      sw ra,0x0010(sp)
      jal 0x001885b8            #Magic Evade.
      nop
      bne v0,zero,MSED
      nop
      jal @acc_mag_melee           #Calculate (PA + X)*Faith% acc, based on 0x001889cc.
      nop
      bne v0,zero,MSED
      nop
      jal @dmg_f_melee            #DMG_F(PA*(WP+Y)), based on 0x00188d84.
      nop
MSED: lw ra,0x0010(sp)
      addiu sp,sp,0x0018
      jr ra
      nop
@acc_mag_melee:
      addiu sp,sp,0xffe8
      sw ra,0x0010(sp)
      lui v0,0x8018
      j 0x00185dac            #Store PA+X.
      ori ra,v0,0x89d8         #It is 0x001889cc but first part is patched.
@dmg_f_melee:
      addiu sp,sp,0xffe8
      sw ra,0x0010(sp)
      lui v0,0x8018
      j 0x00185e5c            #Store PA and WP + Y.
      ori ra,v0,0x8da0         #It is 0x00188d84 but first part is patched.
    </Location>
    <Location file="BATTLE_BIN" offset="18929C" mode="ASM" offsetMode="RAM">
      j @melee_spellcaster
    </Location>
  </Patch>

EDIT 2:
  <Patch name="Formula 18: melee spellcaster">
    <Description>Redirects empty formula 18 to F6400 (the same as Glain's Formula 3B), so it becomes DMG_F(PA*(WP+Y))  Hit_F(PA+X)%. Uses 22 instructions.</Description>
    <Location file="BATTLE_BIN" offset="F6400" mode="ASM">
@melee_spellcaster:
      addiu sp,sp,0xffe8
      sw ra,0x0010(sp)
      jal 0x801885b8            #Magic Evade. If Physical use 0x80188510.
      nop
      bne v0,zero,MSED
      lui v0,0x8018
      jal @acc_mag_melee           #Calculate (PA + X)*Faith% acc, based on 0x001889cc.
      addiu sp,sp,0xffe8
      bne v0,zero,MSED
      lui v0,0x8018
      jal @dmg_f_melee         #DMG_F(PA*(WP+Y)), based on 0x00188d84.
      addiu sp,sp,0xffe8
MSED: lw ra,0x0010(sp)
      addiu sp,sp,0x0018
      jr ra
      nop
@acc_mag_melee:
      sw ra,0x0010(sp)
      j 0x80185dac            #Store PA+X.
      ori ra,v0,0x89d8            #It is 0x001889cc but first part is patched.
@dmg_f_melee:
      sw ra,0x0010(sp)
      j 0x80185e5c            #Store PA and WP + Y.
      ori ra,v0,0x8da0            #It is 0x00188d84 but first part is patched.
    </Location>
    <Location file="BATTLE_BIN" offset="18929C" mode="ASM" offsetMode="RAM">
      j @melee_spellcaster
    </Location>
  </Patch>
Title: Re: ASM Requests
Post by: yamish on February 20, 2019, 02:51:59 pm
Not sure if it's been done, but has anybody done any work with tying things to the proposition ranks.

While currently eventing is beyond me, the ability to set an event to trigger at a location after reaching treasure hunter 3 etc could open up some side story arcs.

Trying to outwit a rival treasure hunter comes to mind, or a battle map that opens up after a max rank adventurer discovers its location under Goug with some good stealing or move/find item prospects.

Just an idea to add something to the props
Title: Re: ASM Requests
Post by: Tony75 on February 26, 2019, 08:27:14 pm
Can someone make a working Accessory break for the knight ? I would like to change break MP to Break Accessory .
Also a +1 MA like the Squire skill (forgot the name of it )
Title: Re: ASM Requests
Post by: Ashiel on April 10, 2019, 10:45:27 pm
I searched "MA" with the forum search tool and didn't see anything like this, so I thought I'd propose a few that hopefully others might find useful if someone could help me out with 'em (admittedly, ASM hacking is a bit intimidating at the moment).

New Formula Requests
All of the following formulas would ideally be unused or blank formulas in FFT Patcher, so as not to lose options.

Scaling Formulas
To reduce the need for having lots of different tier abilities (e.g cure 1, cure 2, cure 3, etc) and/or to scale more smoothly. I estimate them to work almost identically to Formula 5E with a few changes? For ease of viewing, I've color-coded the stats for the formulas to make them stand out a bit better.

Legend Heal, Dmg, CasterFaith, TargetFaith, PA, MA

MA Based Formulas
There's no scaling faith or healing formulas that I could find in FFTPatcher.


PA/MA Based Formulas
There's not a lot of formulas for hybrid characters. To alleviate this I'd like to propose the following formulas.
Title: Re: ASM Requests
Post by: xjamxx on April 18, 2019, 07:49:28 pm
Quote from: Tony75 on February 26, 2019, 08:27:14 pm
Can someone make a working Accessory break for the knight ? I would like to change break MP to Break Accessory .

  <Patch name="Magic Break can break accessory">
    <Description>With FFTPatcher or similar program change ability 'Magic Break' formula from 2c to 25, change x and y values, uncheck Affect MP and check Unequip. If need change offset F6400 to whatever you want (as long as it is a safe spot).</Description>
    <Location file="BATTLE_BIN" offset="F6400" mode="ASM">
@my_code_cave:
      beq r3,r2,SKP #Branch if used ability is 'Icewolf  Bite'
      ori r2,r0,0x008e
      beq r3,r2,SKP #Branch if used ability is 'Acc Break'=='MP Break'
      ori r2,r0,0x0072
      j 0x00187b54
      nop
SKP:  j 0x00187b5c
      nop
    </Location>
    <Location file="BATTLE_BIN" offset="187b4c" mode="ASM" offsetMode="RAM">
      j @my_code_cave
      nop
    </Location>
  </Patch>
Title: Re: ASM Requests
Post by: hitokiro on April 18, 2019, 08:05:29 pm
Hello everyone~

I was wondering if there was a straightforward way to transform a gameshark code into an ASM hack? Specifically I'd like to patch "JP Never Decreases" into my game. The code I found for this is:

D004760C 0001
8011FAD4 0000

Or I suppose if there's already an ASM hack for this, that would also be super. I looked through as many lists as I could but didn't see it.
Title: Re: ASM Requests
Post by: Nyzer on April 18, 2019, 08:40:51 pm
What, like when you buy a skill you keep the JP?

That would actually be a vaguely interesting concept, just making JP thresholds for every skill.

Otherwise I'd just suggest patching all JP costs to 0
Title: Re: ASM Requests
Post by: hitokiro on April 18, 2019, 09:12:22 pm
Exactly! It's less about making it easier to buy skills, and more about avoiding the grind with jobs that have multiple 600+ JP skills. I like to think of it more like "well this black mage is pretty experienced...why couldn't he/she just buy all the *aga spells at once?" Having all the jobs cost nothing would mean there'd be no progression, but having the JP just be sort of a flat bar to raise means you're gaining experience and unlocking skills, not buying them with expendable currency.
Title: Re: ASM Requests
Post by: Nyzer on April 18, 2019, 09:43:38 pm
Hm. There would still be some flaws with the idea, though. JP costs would probably have to be raised across the board to balance out the grind time, and then you'd have absolutely no choice when it comes to your job's progression. To each their own, of course, but now that I think about it, it would probably be less appealing to the typical FFT audience.
Title: Re: ASM Requests
Post by: Glain on April 19, 2019, 11:56:37 am
Quote from: hitokiro on April 18, 2019, 08:05:29 pm
Hello everyone~

I was wondering if there was a straightforward way to transform a gameshark code into an ASM hack? Specifically I'd like to patch "JP Never Decreases" into my game. The code I found for this is:

D004760C 0001
8011FAD4 0000

Or I suppose if there's already an ASM hack for this, that would also be super. I looked through as many lists as I could but didn't see it.


...Does this gameshark code actually work? It looks like it should crash the game...

But anyway, yes, this one would be:

<Patch name="Crashes game when learning ability">
  <Location file="WORLD_WORLD_BIN" offset="11FAD4" offsetMode="RAM">
    00 00
  </Location>
</Patch>


However, if you want one that doesn't crash the game:

<Patch name="JP Never Decreases">
  <Location file="WORLD_WORLD_BIN" offset="11FAD6" offsetMode="RAM">
    40
  </Location>
</Patch>
Title: Re: ASM Requests
Post by: hitokiro on April 20, 2019, 10:26:06 pm
Quote from: Glain on April 19, 2019, 11:56:37 am
...Does this gameshark code actually work? It looks like it should crash the game...

But anyway, yes, this one would be:

<Patch name="Crashes game when learning ability">
  <Location file="WORLD_WORLD_BIN" offset="11FAD4" offsetMode="RAM">
    00 00
  </Location>
</Patch>


However, if you want one that doesn't crash the game:

<Patch name="JP Never Decreases">
  <Location file="WORLD_WORLD_BIN" offset="11FAD6" offsetMode="RAM">
    40
  </Location>
</Patch>



LOL I had not tested the code myself, so I appreciate you giving me both the busted version and the real one. I'll test this out tonight (the good one that is). Thank you!
Title: Re: ASM Requests
Post by: hitokiro on April 21, 2019, 02:47:19 am
Quote from: Glain on April 19, 2019, 11:56:37 am

<Patch name="JP Never Decreases">
  <Location file="WORLD_WORLD_BIN" offset="11FAD6" offsetMode="RAM">
    40
  </Location>
</Patch>



Works like a charm! Thanks so much for the response.
Title: Re: ASM Requests
Post by: ekaiser on June 14, 2019, 06:42:18 pm
Sup tatics bros and sis!! I'm not good creating ASM but i can manage to modify and use created ones , it seems to be simple for you to create this magic beauties?
can someone do these ASMs? i search for them in FFTorgASM and in this forum but have not luck
1-Reaction->Summon, cast spell on self,activate upon critical
Like HP restore but summon Salamander in critical (have plan to use with my Phoenix summon after implement the Phoenix formula)
2-Reaction->Same as the above but summon , cast spell after dead and make it only one time per battle (perfectly for Phoenix summon)
Title: Re: ASM Requests
Post by: 3lric on June 15, 2019, 03:16:34 pm
We already have a phoenix ASM, complete with a new summon graphic for phoenix... it will come with Jot5 Chapter 2
Title: Re: ASM Requests
Post by: ekaiser on June 15, 2019, 05:17:00 pm
Yes i know and i see in action you Phoenix summon in the youtube link you post in other threat, omg i like it so much 0.0 i want that phoenix animation too, but i will express myself well this time about what i need:
-Need one ASM that let me modify the HP Restore formula(reaction ability), so, when my unit is in critical, it will cast a spell (like float, or Fire 4), OR instead of that perform a summon (like Fairy or Golem)
-And may be if were near posible, modify the MP Restore formula (reaction), if the unit dies, activate a spell (like raise or Thunder 4) OR activate a summon or other ability referenced to this asm formula before patch.
Title: Re: ASM Requests
Post by: Nyzer on June 15, 2019, 07:22:07 pm
Spells and summons are functionally the same. IDK how hard it would be to duplicate Counter Tackle and change the reaction trigger to Critical instead of Counter though.
Title: Re: ASM Requests
Post by: ekaiser on June 17, 2019, 01:07:37 pm
Nyzer hive a idea but still dont work, I try the Reaction Rewrite 1.2 ASM that let modify Counter Tackle and the Trigger to it, but can't manage to work properly ingame, the Reaction just not activate at all , also it seem that ASM contains some code errors (Unaligned offset AND Possible load delay Warnings) that not let the game work on console.
Title: Re: ASM Requests
Post by: Hyppocritamus on July 04, 2019, 09:57:02 pm
how high is your Brave?

Skills like Critical Quick (using it as an example) need the critical status on, and to take a certain type of hit (like HP damage), and then need enough Brave to actually trigger it.

How do the rest of your requirements, and the unit trying to use your skill, look?
Title: Re: ASM Requests
Post by: Heisho on July 30, 2019, 11:29:24 pm
Quote from: Glain on April 19, 2019, 11:56:37 am
However, if you want one that doesn't crash the game:

<Patch name="JP Never Decreases">
  <Location file="WORLD_WORLD_BIN" offset="11FAD6" offsetMode="RAM">
    40
  </Location>
</Patch>



@Glain:  Do you know if this also applies to IA? I mean if Jp from IA doesn't decreases when battling against them?
Sorry if I'm talking gibberish, I don't know how to put this in English.
Title: Re: ASM Requests
Post by: Glain on July 31, 2019, 12:16:02 am
It only applies when learning an ability from the formation screen.

Are you asking if AI units would still spend JP to learn their skills?  They would.  Perhaps the title of the patch could be a bit more specific.
Title: Re: ASM Requests
Post by: Heisho on July 31, 2019, 12:21:04 am
Quote from: Glain on July 31, 2019, 12:16:02 am
It only applies when learning an ability from the formation screen.

Are you asking if AI units would still spend JP to learn their skills?  They would.  Perhaps the title of the patch could be a bit more specific.


Well that solves a question that I had, I suppose there is a way for AI to also not spent JP. Is there something in the wiki where I can check regarding this subject?

Thanks in advance.
Title: Re: ASM Requests
Post by: Glain on July 31, 2019, 11:26:59 am
Yep.  This (http://ffhacktics.com/wiki/Routine_Locations) is a handy reference.  At first glance, the appropriate routine seems to be this one (http://ffhacktics.com/wiki/Calculate_Learned_Abilities).

To get the AI to not spend JP, you could probably nop out the instruction at either 0x5d010 or 0x5d018.
Title: Re: ASM Requests
Post by: Heisho on July 31, 2019, 01:21:18 pm
Quote from: Glain on July 31, 2019, 11:26:59 am
Yep.  This (http://ffhacktics.com/wiki/Routine_Locations) is a handy reference.  At first glance, the appropriate routine seems to be this one (http://ffhacktics.com/wiki/Calculate_Learned_Abilities).

To get the AI to not spend JP, you could probably nop out the instruction at either 0x5d010 or 0x5d018.

Most excellent!
Has always thanks for taking your time for the help Glain!

Regards.
Title: Re: ASM Requests
Post by: Zantetsuken on August 14, 2019, 10:24:34 am
Can someone make an ASM hack to change concentrate to just reduce target evasion by half or nullify class evasion?

I found one posted by Rfh long ago, but it does not seem to work.
Title: Re: ASM Requests
Post by: Zenn on August 14, 2019, 11:33:33 am
Quote from: Zantetsuken on August 14, 2019, 10:24:34 am
Can someone make an ASM hack to change concentrate to just reduce target evasion by half or nullify class evasion?

I found one posted by Rfh long ago, but it does not seem to work.

Try this one (not tested):
  <Patch name="Concentrate div by 2 all evades instead of null them - ASM version">
    <Description>Concentrate divides by 2 all target evade types instead of nulling them.</Description>
    <Location file="BATTLE_BIN" offset="1852E4" mode="ASM" offsetMode="RAM">
      lui a0,0x8019
      lw v0,0x2d94(a0) #Load Attacker Data Pointer
      ori a1,zero,0x0004 #All four evades.
      lbu v0,0x0090(v0) #Load Attacker's 2nd set of Support
      addu a0,a0,a1
      andi v0,v0,0x0001
      beq v0,zero,EXIT #Branch if Attacker Doesn't have Concentrate
LOOP: addiu a0,a0,0xffff
      lbu v1,0x38de(a0)
      addiu a1,a1,0xffff
      srl v1,v1,0x01 #Amount to shift 1 equals div2, 2 equals div4
      bgtz a1,LOOP
      sb v1,0x38de(a0)
EXIT: jr ra
      nop
      nop
      nop
    </Location>
  </Patch>
  <Patch name="Concentrate div by 2 all evades instead of null them - HEX version">
    <Description>Concentrate divides by 2 all target evade types instead of nulling them.</Description>
    <Location file="BATTLE_BIN" offset="11E2E4">
      1980043C
      942D828C
      04000534
      90004290
      21208500
      01004230
      06004010
      FFFF8424
      DE388390
      FFFFA524
      42180300
      FBFFA01C
      DE3883A0
      0800E003
      00000000
      00000000
      00000000
    </Location>
  </Patch>
Title: Re: ASM Requests
Post by: Nyzer on August 14, 2019, 12:56:31 pm
There is a support ability in Jot5, Bandit's Eye, that improves accuracy without making it 100%. Unsure what the formula is though. But as it's part of the Ch. 1 release, I'd expect it's publicly available; most of that stuff is.
Title: Re: ASM Requests
Post by: Zantetsuken on August 14, 2019, 03:46:41 pm
Quote from: Zenn on August 14, 2019, 11:33:33 am
Try this one (not tested):
  <Patch name="Concentrate div by 2 all evades instead of null them - ASM version">
    <Description>Concentrate divides by 2 all target evade types instead of nulling them.</Description>
    <Location file="BATTLE_BIN" offset="1852E4" mode="ASM" offsetMode="RAM">
      lui a0,0x8019
      lw v0,0x2d94(a0) #Load Attacker Data Pointer
      ori a1,zero,0x0004 #All four evades.
      lbu v0,0x0090(v0) #Load Attacker's 2nd set of Support
      addu a0,a0,a1
      andi v0,v0,0x0001
      beq v0,zero,EXIT #Branch if Attacker Doesn't have Concentrate
LOOP: addiu a0,a0,0xffff
      lbu v1,0x38de(a0)
      addiu a1,a1,0xffff
      srl v1,v1,0x01 #Amount to shift 1 equals div2, 2 equals div4
      bgtz a1,LOOP
      sb v1,0x38de(a0)
EXIT: jr ra
      nop
      nop
      nop
    </Location>
  </Patch>
  <Patch name="Concentrate div by 2 all evades instead of null them - HEX version">
    <Description>Concentrate divides by 2 all target evade types instead of nulling them.</Description>
    <Location file="BATTLE_BIN" offset="11E2E4">
      1980043C
      942D828C
      04000534
      90004290
      21208500
      01004230
      06004010
      FFFF8424
      DE388390
      FFFFA524
      42180300
      FBFFA01C
      DE3883A0
      0800E003
      00000000
      00000000
      00000000
    </Location>
  </Patch>



Ty very much, it worked  :D

Quote from: Nyzer on August 14, 2019, 12:56:31 pm
There is a support ability in Jot5, Bandit's Eye, that improves accuracy without making it 100%. Unsure what the formula is though. But as it's part of the Ch. 1 release, I'd expect it's publicly available; most of that stuff is.


Looks interesting, it is something i could use on my mod, since i made all skills avoidable.
Title: Re: ASM Requests
Post by: aacroke on August 27, 2019, 10:22:10 am
I'm hoping someone can help me change the decision for which attacking animation is used.

Specifically, when a unit attacks with a rug-type weapon, I'd like you see the (unarmed) punching animation instead of the rug attack animation.

Once this nagging ASM issue is resolved, I have a fully ready mod for the community (as in all other edits are done)!
Title: Re: ASM Requests
Post by: Hyppocritamus on September 02, 2019, 12:50:48 am
Quote from: aacroke on August 27, 2019, 10:22:10 am
I'm hoping someone can help me change the decision for which attacking animation is used.

Specifically, when a unit attacks with a rug-type weapon, I'd like you see the (unarmed) punching animation instead of the rug attack animation.

Once this nagging ASM issue is resolved, I have a fully ready mod for the community (as in all other edits are done)!


Why not just export the weapon sheet in shishi, erase the rugs, and import it again?  Same basic result, no ASM needed
Title: Re: ASM Requests
Post by: aacroke on September 02, 2019, 02:42:43 am
Quote from: Hyppocritamus on September 02, 2019, 12:50:48 am
Why not just export the weapon sheet in shishi, erase the rugs, and import it again?  Same basic result, no ASM needed


Using Shishi included with v0.492, there is no "weapon sheet". If you're referring to replacing the rug graphic within ITEM.BIN, this has already been done, and only affects the menus.

I'm looking to replace the actual attack animation, and I think ASM editing is far more appropriate than editing graphics for this situation. I might not know how to pore through the ASM or modify it, but I am logical enough to know that, somewhere, there's a case selection where the attacking weapon type is considered, and the appropriate animation is selected based on it; I also imagine that changing one byte somewhere (and possibly a checksum or two as a result) would be the only requirement in achieving my goal.

The rugs have been replaced with fists, much like Tifa uses. I've hijacked the vanilla gauntlets for the task, and replaced the rugs - but instead of my Brawlers punching Algus in the face, they whip out a silly carpet and lash him - and we all know his face deserves to be punched.
Title: Re: ASM Requests
Post by: CONMAN on September 10, 2019, 04:16:13 pm
I'm using .491 shishi and maybe I missed something but not the item sheet but the weapon sheet.  I'm sure editing this will change it.
Title: Re: ASM Requests
Post by: aacroke on September 10, 2019, 11:41:52 pm
Alrighty, so firstly, this is also present in 492, and I missed it completely. Thank you CONMAN, I did find it and modified WEP sufficiently. The yellow attacking effect is left behind when these weapons are attacked with - but this differentiates it from an unarmed attack, and probably other attacks share the effect (so I don't need to remove it).

Problem solved! I now have a completed mod. Time to read some important info on whether my mod qualifies and how to share it!
Title: Re: ASM Requests
Post by: bizenboat on November 07, 2019, 01:41:35 am
Hi!

I'm new here and trying a little FF7 project to learn more about ASM and events. I've made some progress but could use some guidance if anyone has the time.

Right now I'm trying to modify Absorb Used MP to absorb MP based on the amount of damage done. I was hoping to use MP as a proxy for the limit bar. Ideally it could absorb (dmg/max hp*20) MP, but anything related to the damage would be nice. I don't know what math can be done with ASM.

I'm using the documentation here http://ffhacktics.com/wiki/Face_Up_and_Absorb_Used_MP_usability and comparing to http://ffhacktics.com/wiki/Damage_Split_Usability since that uses damage.

I haven't been successful in understanding the debugger and hex yet but here is what I have right now in ASM mode.

<Patch name="Absorb Used MP -> Limit Bar">
    <Location file="BATTLE_BIN" offset="125F74" mode="ASM">
   lui r3,0x8019
   lw r3,0x2d90(r3)
   addiu r29,r29,0xffe0
   sw r31,0x0018(r29)
   sw r16,0x0010(r29)
   sw r17,0x0014(r29)
   lhu r17,0x0004(r3)
        nop
   nop
   </Location>
</Patch>


This does absorb some MP when hit by some abilities, but it's not an amount that makes sense to me. One ability absorbs 2 MP, another absorbs 255 MP... doesn't seem tied to damage or mp used so I don't know what I did wrong. Any pointers would be appreciated!

Thanks
Title: Re: ASM Requests
Post by: Glain on November 08, 2019, 01:22:36 am
Just eyeballing it, you also need to copy the HP damage into r2.  Also, why remove the branch?

   (...)
   lhu r17, 4(r3)
   (...)                                        # <-- Would need intermediate instruction here to avoid load delay
   move r2, r17
   beq r2, r0, 0x0018cfd0         # Branch to end if No HP damage was dealt


Then look at what's happening at 0x18cfc4.  In the current modification, it's taking the HP damage, interpreting it as a RAM address and loading from it.
Instead, once again, just copy the HP damage into r2:

   move r2, r17


This would just try to absorb the full HP damage.  If you want to do a calculation like (dmg * 20 / maxHP) then you would need some more code space, and may need to use some free/kanji space.
Title: Re: ASM Requests
Post by: bizenboat on November 08, 2019, 10:06:18 am
Thank you Glain!! I didn't know that "move" was an option, I thought lhu/lbu were the same as move. Awesome! I mostly just removed the branch for debugging purposes and to clear up more room while I was testing things. If I need more room I might remove the chance to react branch because I want this to happen all the time anyway.

OK, this is absorbing the full damage and now I can just play around with calculations.... Thanks again!
Title: Re: ASM Requests
Post by: Glain on November 11, 2019, 07:13:27 pm
Actually, looking at this again, there would be a load delay issue with trying to copy the r17 value into r2 here.  While that could be avoided by loading r17's value earlier, there's no need to copy the value into r2 at all.  Just use r17 in the relevant locations.


   (...)
   lhu r17, 4(r3)
   nop
   beq r17, r0, 0x0018cfd0      # Branch to end if No HP damage was dealt


0x18cfcc:

   sh  r17, 0x0026(r3)


0x18cfc4 becomes free and could just be replaced with a nop (or a call to a routine in free space for a calculation?).
Title: Re: ASM Requests
Post by: bizenboat on November 12, 2019, 01:27:04 am
That's true, but it's good to know about the move command. I haven't seen that command documented anywhere for r3000 or psx codes, but it works, so that's cool!

I ended up getting rid of the reaction % check so this will happen every time, and I moved the "skip if 0" to after the math. Not sure if this would be of use to anyone else but here's the patch I'm using anyway. Thanks again for the help!

<Patch name="Absorb Used MP -> Limit Bar">
    <Location file="BATTLE_BIN" offset="125F74" mode="ASM">
lui r3,0x8019
lw r3,0x2d90(r3) <!-- action -->
addiu r29,r29,0xffe0
sw r31,0x0018(r29)
sw r16,0x0010(r29)
sw r17,0x0014(r29)
lhu r17,0x0004(r3) <!-- hp damage -->
        nop
addu r16,r4,r0
lui r4,0x8019
lw r4,0x2d98(r4) <!-- defender -->
nop
lhu r2,0x002a(r4) <!-- max hp -->
nop
sll r17,r17,0x04 <!-- dmg*16 -->
div r17,r2 <!-- dmg*16/max hp -->
mflo r17
beq r17,r0,0x0018cfd0 <!-- skip if =0 -->
    </Location>
    <Location file="BATTLE_BIN" offset="125FC4" mode="ASM">
move r2,r17
    </Location>
</Patch>
Title: Re: ASM Requests
Post by: TheKillerNacho on December 10, 2019, 09:59:51 am
Has anyone created an ASM to fix the AI such that they can Charge Guns? Apparently, even though charging Guns works in the base game, an AI glitch (or perhaps intended, idk) prevents the AI from doing so like they can every other weapon type. However, after searching, I haven't seen any ASM fix for this.
Title: Re: ASM Requests
Post by: TheKillerNacho on December 20, 2019, 02:28:07 pm
Also, just making sure, but no one's found a way to have an item grant a passive skill, right (for example, having the Monster Dict grant Monster Skill or an armor that grants Magic Defense Up)?
Title: Re: ASM Requests
Post by: yamish on December 20, 2019, 06:18:21 pm
Quote from: TheKillerNacho on December 20, 2019, 02:28:07 pm
Also, just making sure, but no one's found a way to have an item grant a passive skill, right (for example, having the Monster Dict grant Monster Skill or an armor that grants Magic Defense Up)?


Yes. The ALMA spreadsheet does this. I'm using it in the overhaul I'm working on. It can cause issues if you aren't aware of certain conflicts inherentin fft. But it works beautifully in my experience after testing.

Edit: http://ffhacktics.com/smf/index.php?topic=6664.0
Title: Re: ASM Requests
Post by: TheKillerNacho on December 20, 2019, 08:22:37 pm
Quote from: yamish on December 20, 2019, 06:18:21 pm
Yes. The ALMA spreadsheet does this. I'm using it in the overhaul I'm working on. It can cause issues if you aren't aware of certain conflicts inherentin fft. But it works beautifully in my experience after testing.

Edit: http://ffhacktics.com/smf/index.php?topic=6664.0

Thanks!
Title: Re: ASM Requests
Post by: TheKillerNacho on December 24, 2019, 01:17:03 pm
Quote from: TheKillerNacho on December 10, 2019, 09:59:51 am
Has anyone created an ASM to fix the AI such that they can Charge Guns? Apparently, even though charging Guns works in the base game, an AI glitch (or perhaps intended, idk) prevents the AI from doing so like they can every other weapon type. However, after searching, I haven't seen any ASM fix for this.


So after doing a little digging on my own I found where abilities are loaded by the AI: http://ffhacktics.com/wiki/Ability_Loading

These lines seem to be the culprit, unless it's also elsewhere:
Quote0019a804: 2602ffb9 addiu r2,r16,0xffb9      Weapon ID - 0x47 (Romanda Gun)
0019a808: 2c420006 sltiu r2,r2,0x0006
0019a80c: 14400083 bne r2,r0,0x 0019aa1c      Branch if Weapon is a Gun


I tried doing this to fix it and it seemed to work after a simple test (removing the branch to a nop):

<Patch name="AI Can Charge Guns">
<Location file="BATTLE_BIN" offset="0013380C">
00000000
</Location>
  </Patch>


Does anyone with more experience with ASM coding know if this will have any unintended side effects or I should not do it this way for whatever reason?
Title: Re: ASM Requests
Post by: TheKillerNacho on January 09, 2020, 10:16:45 am
Hey guys. Me again.

I found an ASM hack that claimed to use Wall CT for another status: http://ffhacktics.com/smf/index.php?topic=9050.0.

In this case, I want Confusion to have a CT.

  <Patch name="XX-Confusion uses Wall CT">
<Description>Wall CT is always 0. The CT of the new status is adjustable in Wall CT in FFTPatcher

Status number:

00 Blank Status
01 Crystal
02 Dead
03 Undead
04 Charging
05 Jump
06 Defending
07 Performing
08 Petrify
09 Invite
0A Darkness
0B Confusion
0C Silence
0D Blood Suck
0E Dark / Evil Loocking
0F Treasure

</Description>
<Location file="BATTLE_BIN" offset="12693c">
BC770508
00000000
00000000
00000000


</Location>
<Location file="BATTLE_BIN" offset="f6ef0">
07000234
07004410
21100000
02008104
21108000
07008224
C3100200
53360608
00000000
0B000534 </This is the line I inserted 0B>
01000834
1980073C
982DE78C
0700A330
2128E800
BB01A290
07306900
5A360608
00000000


</Location>
</Patch>


Except it doesn't seem to work... units still don't seem to have a CT limit on Confusion. In FFTPatcher, I have Wall set to the default CT of 24, which from what I understand, should apply to Confusion.

What am I doing wrong? Is there another way to accomplish this?
Title: Re: ASM Requests
Post by: Xifanie on January 09, 2020, 11:37:27 am
You're probably not doing anything wrong and the hack was just not thoroughly tested
Title: Re: ASM Requests
Post by: TheKillerNacho on January 10, 2020, 01:17:36 pm
Ah, crap. Thanks anyway.
Title: Re: ASM Requests
Post by: saw2th on January 17, 2020, 11:51:34 pm
It works!
Title: Re: ASM Requests
Post by: 3lric on January 18, 2020, 02:31:13 am
Quote from: saw2th on January 17, 2020, 11:51:34 pm
It works!


Elaborate more. If it didnt work for one person, what did you do to make it work. Don't just say 'it works' after another person tested it and found it not working >.<
Title: Re: ASM Requests
Post by: saw2th on January 21, 2020, 10:01:40 am
Ah, my bad :) **Pride's CT hack works when adding a ct to confuse - just add the asm and set the ct in patcher!

I had another question.

Sorry if this is the wrong place to ask,
But does there already exist a hack that grants all Monsters the ability to use basic Attack? thus freeing up a slot on their monster skills while still giving them access to regular physical damage. I have noticed monsters call regular attack or possibly frog attack while under berserk (this might call to the same attack slot?) so maybe the asm just gives monsters that option ? i am not sure.
Title: Re: ASM Requests
Post by: saw2th on January 22, 2020, 01:48:30 am
I also have another request. Not sure if this already exists either, but please link me if it does  :v/:

-ASM Hack that tells the AI to stop using brave/faith-raising skills after the unit hits 0 or 100? Have noticed that the AI will raise a unit's brave to 100 and just keep using their skill afterwards.

Title: Re: ASM Requests
Post by: TheKillerNacho on January 30, 2020, 10:43:14 am
Quote from: saw2th on January 21, 2020, 10:01:40 am
Ah, my bad :) **Pride's CT hack works when adding a ct to confuse - just add the asm and set the ct in patcher!

I had another question.

Sorry if this is the wrong place to ask,
But does there already exist a hack that grants all Monsters the ability to use basic Attack? thus freeing up a slot on their monster skills while still giving them access to regular physical damage. I have noticed monsters call regular attack or possibly frog attack while under berserk (this might call to the same attack slot?) so maybe the asm just gives monsters that option ? i am not sure.


Yeah I got it to work after talking to some people on the FFT Arena discord. Turns out I was just being a massive derp and miscounted, setting Silence to have the CT instead.
Title: Re: ASM Requests
Post by: Tony75 on February 04, 2020, 10:31:20 pm
How would I go about changing the Gather skill to increase the MA stat instead of PA .
Title: Re: ASM Requests
Post by: Zantetsuken on February 08, 2020, 03:30:21 pm
Hi!

I know i can enable evasion while charging, using the status evadability hack, but i wonder if it would be possible to also cancel charging when you dodge, parry or block attacks.
Title: Re: ASM Requests
Post by: ekaiser on April 01, 2020, 01:07:01 pm
Hi! I want to use a modified version of Bisenboat "Absorb Mp:Limit Break" posted in page 15

<Patch name="Absorb Used MP -> Limit Bar">

In less words "Obtain MP:half of all Hp damage"
But for the entire game, make all have Limit Bar, without use the skill Absorb Used MP.
I use the ASM "Start with 0 MP" so the metod to obtain Mp in my mod is by recharge with one Skill in each Job, but also it will be great to gained Mp when received all type of damage (Hp Damage/2 to Mp).
Title: Re: ASM Requests
Post by: PrometheusBR on April 22, 2020, 05:56:21 am
Main request: Nullify EXP gain hack.

Hi guys,  I'm a bit desperate, cause my patch, the way I envisioned it, really need a hack that nullifies EXP Gain. I want the characters to stay stuck on the level that I set for them on the FFT Patcher.


Extra challenge: Job multipliers scale with Job levels hack.

And MUCH more complicated, is it possible, a hack where class stats multipliers, scale with job level?
Ex:
job level 1 = 100% multiplier (stays the same)
job level 2 = 105% multiplier
Job level 3 = 110% muktiplier
job level 4 = 115% multiplier
job level 5 = 120% multiplier
job level 6 = 125% multiplier
job level 7 = 130% multiplier
job level 8 = 135% multiplier
Mastered = 150% multiplier

I dont know if I really would use this, if this is indeed possible, but I find this much more interesting than leveling up to level 99 through EXP.
...
Title: Re: ASM Requests
Post by: PrometheusBR on April 22, 2020, 06:40:05 pm
Request ARH (ability requirement hach?)for Charge abilities.

I need Charge abilities to be integrated with the ARH spreadsheet, to make some abilities only available to bow users and some only to crossbow users.

This is specially to crossbows to give them a mechanic where they need to be reloaded, so this is why the CT requirement. O want to make crossbows powerful but slow, more close to the way they really were. This way I would nerf their normal attack, and they need Charge to function properly.

If you have other ideas to how I can make a "crossbow needs to be reloaded mechanic" Im all ears.


Title: Re: ASM Requests
Post by: PrometheusBR on April 22, 2020, 07:05:09 pm
Request: Draw Out Redesign Hacks

This comes in two ways, the first more simple and useful, the second is a really big push, but could be nice.


1) Draw Out considers the equipped weapon in its inventory.

This is for lets say, theres only one Masamune in the game, and you want to use the Masamune Draw Out while having it equipped, so it needs to show up in the inventory to be selected.

2)Assign each Draw Out skill to a.weapon type instead of individual Katana:

Why this? Hear me out.

Combining this with the first hack and Xifanie's Skillset X Innate All hack, we could have an specific skill locked to each characters equiped weapon type. This innate  wouldn't mess the game because monsters would have no weapon to acess it.

This could be a really cool way to give the game limits/finisher moves.

I particularly only need the first hack, but I guess I'm tripping a little.




Title: Re: ASM Requests
Post by: Nyzer on April 22, 2020, 08:58:14 pm
Unless you are willing to learn how to write the ASMs yourself, do NOT plan your hack around them.

A lot of the time, on the rare occasions requests here ARE fulfilled, they're quick ASMs that the writers haven't tested.

That said, at least some of what you want could probably be done by the hack that attaches extra skills to weapons. Not sure how public that is though
Title: Re: ASM Requests
Post by: ibostyle11 on April 23, 2020, 08:30:13 pm
I had a question about the 2 swords penalty ASM.
I've seen a few versions of it on the board.

1. Let's you put in the XX and YY to have reduced damage on each hit.
But it seems to cause crashes.

2. Has it attached to ATK UP, but is talking about dividing 2 different things by 128 (which I don't get)

3. Has a working hack that said it was 75% damage, but is actually 67%. Would anyone happen to know what part of the code (pasted below) is changeable to affect the damage formula?

<Patch name="2 Swords Penalty">
    <Description>2/3 damage per hit by units with 2 swords.  Affects all abilities with Formulas 01-07, no effect on other physical formulas.</Description>
    <Location file="BATTLE_BIN" offset="11EF80">
      30420508
      00000000
    </Location>
    <Location file="BATTLE_BIN" offset="E98C0">
1980023C
942D428C
00000000
91004290
00000000
01004230
0B004010
00000000
1980023C
CE384284
00000000
40180200
21186200
C2170300
21186200
83180300
1980013C
CE3823A4
1980023C
E2170608
CE384224
    </Location>
  </Patch>
Title: Re: ASM Requests
Post by: PrometheusBR on April 24, 2020, 04:28:03 pm
Quote from: Nyzer on April 22, 2020, 08:58:14 pmUnless you are willing to learn how to write the ASMs yourself, do NOT plan your hack around them.

A lot of the time, on the rare occasions requests here ARE fulfilled, they're quick ASMs that the writers haven't tested.

That said, at least some of what you want could probably be done by the hack that attaches extra skills to weapons. Not sure how public that is though

Hi Nyzer. I've known this forum, played its hacks watched its youtube videos for a few years now, but only now I've decided to try and make my own mod.

I need to read a lot of stuff to catalog all you guys developed, there's a lot of hacks and tips lost in old topics, that is not in the FFT Patcher or the tools section. I consider myself smart, but I'm smart to also recognize what i don't know, and I'm not a data programmer, I have ideas of how ASM Hacks works, but I can't write my own right now. Once I've tested and done all I can with what is available, then I'll proceed to try and learn some ASMhacking to do wat I still need.

Right now, yes, the nullify EXP request for example. If no one develop one, for now I'll minimize stat growth to the minimum (255 C values rates in all stats).

The reason I'm launching ideas is: if someone find them interesting enough to develop, win for them and win for me, right?

Right now all i can do is that, try to inpire people.

Title: Re: ASM Requests
Post by: Nyzer on April 24, 2020, 07:03:14 pm
I've got no problem with trying to inspire ideas for mutual benefit, I'm just saying that if you're going in with the expectation that you'll need certain hacks to make your mod work, you'd better be prepared from the start to have to make those hacks yourself. Maybe you'll be pleasantly surprised, but just don't plan on it.
Title: Re: ASM Requests
Post by: nitwit on April 25, 2020, 10:38:10 am
Quote from: ZeroX on April 22, 2020, 05:56:21 amMain request: Nullify EXP gain hack.

Hi guys,  I'm a bit desperate, cause my patch, the way I envisioned it, really need a hack that nullifies EXP Gain. I want the characters to stay stuck on the level that I set for them on the FFT Patcher.


Extra challenge: Job multipliers scale with Job levels hack.

And MUCH more complicated, is it possible, a hack where class stats multipliers, scale with job level?
Ex:
job level 1 = 100% multiplier (stays the same)
job level 2 = 105% multiplier
Job level 3 = 110% muktiplier
job level 4 = 115% multiplier
job level 5 = 120% multiplier
job level 6 = 125% multiplier
job level 7 = 130% multiplier
job level 8 = 135% multiplier
Mastered = 150% multiplier

I dont know if I really would use this, if this is indeed possible, but I find this much more interesting than leveling up to level 99 through EXP.
...
You will usually get a better response if you attempt some research on the subject and ask more specific questions on what to modify. The adage that the best way to get a correct answer is to post the wrong one holds true.

Start by searching for "experience" on the wiki.

https://ffhacktics.com/w/index.php?search=experience&title=Special%3ASearch&go=Go

Since you're just nullifying experience you could try to look for comments that tell you what is happening where, and set the gains to zero.

If you want to learn how to write ASM hacks you could start by watching any of the tutorials in the tutorials section.
Title: Re: ASM Requests
Post by: Timbo on April 26, 2020, 12:39:57 pm
This is more of a suggestion than a request. I was just thinking about how equipment breaking sucks and often results in a full reset. What if, instead of breaking, gear just became unequipped instead? To give this more value Equip Change would have to be modified to a single item and to take a full turn if it doesn't all ready.

If I could do this hack I would've but it's more than just swapping a few bytes around. I definitely don't need this hack for anything but as a quality of life hack I think it's more than a good enough idea to put out there for others who may be interested in toying with idea.
Title: Re: ASM Requests
Post by: Nyzer on April 26, 2020, 05:01:31 pm
I know there's a hack to make broken equipment reappear at the Fur Shop, but I don't know how feasible it might be to make that work for the regular inventory.
Title: Re: ASM Requests
Post by: Timbo on April 26, 2020, 05:24:29 pm
Quote from: Nyzer on April 26, 2020, 05:01:31 pmI know there's a hack to make broken equipment reappear at the Fur Shop, but I don't know how feasible it might be to make that work for the regular inventory.

Thanks Nyzer, I am aware of this hack. I've messed with it in the past. It's buggy. Iirc, pretty much everything that gets broken appears in the Fur Shop, enemy and ally gear alike and it might even make duplicates.

Again, this isn't really a problem that I'm looking to get solved. I'm just putting ideas out there.
Title: Re: ASM Requests
Post by: FFMaster on May 24, 2020, 12:58:48 am
Ask and ye shall receive

Broken/Stolen Equipment reappear in inventory(these will reappear right away, so I suspect Equip Change will be able to requip them right away)


0x18D46c
j 0x00153888            -- jump to location
lw r4,0x2d98(r2)         -- load target pointer

0x153888
lui r2,0x8005
lbu r4,0x01ba(r4)         -- load the byte that stores team flag
ori r2,r2,0x96e0
srl r4,r4,0x0004         -- check for team flag = blue
bne r4,r0,0x(END)         -- go to end if not team blue
addu r2,r2,r5
lbu r4,0x0000(r2)         -- load the corresponding item inventory count
nop
addiu r4,r4,0x0001         -- add 1 to item stock
sb r4,0x0000(r2)         -- save new value
lui r2,0x8019            -- code from original routine (END)
lw r2,0x2d90(r2)         -- code from original routine
j 0x0018d474            -- go back to main routine
nop

BATTLE.BIN

0x12646C
224E0508
982D448C

0xEC888
0580023C
BA018490
E0964234
02210400
05008014
21104500
00004490
00000000
01008424
000044A0
1980023C
902D428C
1D350608
00000000
Title: Re: ASM Requests
Post by: Timbo on May 24, 2020, 01:43:18 am
Well, this certainly was unexpected. Thank you. I really like the idea of knights disarming their foes instead of breaking their stuff.

Does this really make it so stolen items do the same thing? Because that doesn't make a lot sense to me.
Title: Re: ASM Requests
Post by: FFMaster on May 24, 2020, 02:02:51 am
Yeah, I based this off Razele's hack, which runs during the routine where it sets the targeted equipment to FF(nothing). So for now, it affects both broken and stolen equipment.
Title: Re: ASM Requests
Post by: cadence on May 24, 2020, 08:35:07 am
Quote from: Timbo on May 24, 2020, 01:43:18 amBecause that doesn't make a lot sense to me.

Think of it as being fenced?
Title: Re: ASM Requests
Post by: FFMaster on May 25, 2020, 06:29:56 am
Broken Equipment reappear in inventory, stolen equipment ignored
0x12646C
224E0508
902D448C

0xEC888
982D428C
10008494
BA014290
04008430
09008010
02110200
07004014
0580033C
E0966334
21186500
00006490
00000000
01008424
000064A0
1980023C
902D428C
1D350608
00000000

0x18D46c
j 0x00153888            -- jump to location
lw r4,0x2d90(r2)         -- load attack type pointer

0x153888
lw r2,0x2d98(r2)      -- load the target pointer
lhu r4,0x0010(r4)      -- load attack type
lbu r2,0x1ba(r2)      -- load team flag
andi r4,r4,0x0004      -- check if attack type is BATTLE SKILL
beq r4,r0, (END)      -- jump to END if not BATTLE SKILL
srl r2,r2,0x0004
bne r2,r0, (END)      -- jump to END if not team blue
lui r3,0x8005   
ori r3,r3,0x96e0
addu r3,r3,r5
lbu r4,0x0000(r3)      -- load corresponding item inventory
nop
addiu r4,r4,0x0001      -- add 1 to item stock
sb r4,0x0000(r3)      -- save new value
lui r2,0x8019            -- code from original routine (END)
lw r2,0x2d90(r2)         -- code from original routine
j 0x0018d474            -- go back to main routine
nop
Title: Re: ASM Requests
Post by: 3lric on June 28, 2020, 10:05:59 pm
Request: ASM to bring the original Zodiac Calendar over to the NTSC-U version, from the Japanese and PSP versions of the game

As some of you already know, I'm working on a WotL version of FFT - The Lion War. This will add more content, such as the rendezvous missions, as well as the WotL translation of the game. I've covered quite a bit already that never made it into FFT: Complete, due to when it was created and what we had available at the time.

However one thing we still haven't gotten working yet is the proper Zodiac calendar as displayed here:
(https://www.dropbox.com/s/4a1ewfdff4llcem/Ivalician%20Calender.png?raw=1)

This was most commonly seen in English format, on the PSP version of the game, however this data is also from the Japanese version of the PS1 game.

There are a few pieces to this puzzle, the former being less important than the latter.

1. The Japanese PS1 game, and the PSP game, both show the Solar and Zodiac Calendar dates when selecting your birthday, where as the English PS1 version does not. As seen below:
(https://www.dropbox.com/s/xbuowshd1uadzsn/SCUS_942.21_28062020_185404_0169.png?raw=1) vs (https://www.dropbox.com/s/qboeynj460jg970/SLPS_007.70_21062020_140154_0527.png?raw=1)
As we can see here. Line 1 is January 1st for both the Japanese and English release of the game, but the Japanese release also shows that January 1, is Capricorn 10, on the Zodiac calendar.

So ideally, we would have the same thing here. I can tell you, thanks to Glain that the date data for this in the English version is located at 0xCF33 in OPEN.BIN, but I've been able to find the same data in another location in the Japanese version of the game's OPEN.BIN. and the portion with the second box does not seem to be controlled here...

This part is not 100% essential, as long as even via the solar calendar, the world map displays correctly and compat is unaffected.

2. The most important part. The onscreen display for the date on the world map. In the PS1 English version of the game, you start on January 1st. In the Japanese version and the PSP version of the game, you start on Aries 1, which is actually March 21st. The days would need to be the correct amount of days as well...

As far as I can find, i see no differences in the data for these between the Japanese and English versions of the game. However, while I do a lot around here, ASM is not, and likely never will be something I know much about, due to time constraints and the projects I'm working on...  Also, thanks to Glain, we know that the world map date location is 569CE in SCUS.

If someone find the time to figure out this mess and possibly even bring over the routines used for this from the Japanese or PSP version of the game, I would be eternally grateful.

If this request is at all unclear, please PM me or contact me on our discord channel for clarification, as I'm well aware that articulating my thoughts and requests is not always my strongest attribute.

I do have a modified version of the town names thanks to some help from one of Xifanie's sheets, as well as some of the old image from FFT: Complete. I've personally also added the Zodiac names to this to replace the months, which I'm fairly certain I can work out with some other locations that Glain supplied us with. But getting it working as intended is paramount to even worrying about the images/month names themselves.

From what I can gather, all the info for the Zodiac calendar is still in the English version, I'm just not sure how they call that on the world map, instead of the Solar calendar like we have in the English version

Thank you for your time.
Title: Re: ASM Requests
Post by: FFMaster on August 18, 2020, 09:04:00 am
Done.

ASM to change the initial starting date of a new file:

0x44b0c
ori r2,r0,0x0001(month 01 = january, 0a = oct, 0b = nov, 0c = dec, [don't go outside range, game will hang])
lui r1,0x8005
sw r2,0x77d4(r1)
lui r1,0x8005 ---> change to ori r2,r0,0x0015 (day - 01 = 1st, 10 = 16th)
sw r2,0x77d8(r1)

This routine actually loads right before the crystals fmv, and doesn't seem to ever be used again.

Attached is an xml version.
Title: Re: ASM Requests
Post by: Arimala on September 25, 2020, 06:51:59 pm
I was hoping to edit formula 2D Dmg_(PA*(WP+Y)) PE  to  Dmg_(PA*(WP+Y))/X

Sorry if this already exists, I thought for sure it did, but I cannot seem to find it anywhere now.
Any help would be much appreciated.
Title: Re: ASM Requests
Post by: EnderC on October 05, 2020, 08:34:30 am
Request: Fur Shop free pickup

I'm not sure to what extent this is feasible but the idea here is that any items in the Fur Shop can be "purchased" for free.

Items purchased from the fur shop must sell for the normal price when sold to any other vendor.
Title: Re: ASM Requests
Post by: Atroe on October 09, 2020, 02:53:56 am
Request: Formula 58 change.

Unit becomes class set to variable Y, instead of Morbol
Title: Re: ASM Requests
Post by: zoiwillxx on November 24, 2020, 07:56:52 am
All I want is to replace original damage formulas for basic formulas listed below:

WEAPON
> Physical damage (can be dodge): (WP + PA + X) * Y
> Magic damage (can be dodge): (WP + MA + X) * Y

SKILL
> Physical damage (can be dodge): (PA * X) + (MA * Y)
> Magic damage (can be dodge): (PA * X) + (MA * Y)

*If possible to be able to select the element of the damage for all the formulas above, I would appreciate.

The idea behind the formulas is to create flexible formulas that would allow me and others to change how combat is played and how damage scales in the game.

Thank you in advance!
Title: Re: ASM Requests
Post by: dl26045 on December 04, 2020, 12:02:05 am
So idk if im posting in the right area of this site or not lol but i was wondering has anyone created a hack/mod for the psx version that enables jobs to be unlocked for all available units like in tactics advance instead of individually?
Title: Re: ASM Requests
Post by: Nyzer on December 04, 2020, 08:52:09 am
What? TA unlocks jobs on an individual level, too.
Title: Re: ASM Requests
Post by: CONMAN on January 09, 2021, 03:08:06 pm
Not a hundred percent that this fits here, but what the heck.

Could a fix be made so that the Kanzen sprite sheet can be pulled up properly from different sprite slots.  Outside of the Altima2 slot, the sprites are only pulled up partially in game.  Only the top third of a sheet like this will load on the map.  It would be pretty awesome if alternate giant sprites could be used for boss battles.

Edit: After some messing around, i found that I can use the arute (altima1) in different slots, but kanzen (altima2) will function in the altima1 sprite slot along with it's own.  This solves my issue.  Still a bit strange.  I'm assume some check for sprite id is used when the kanzen sprite attempts to be loaded.  Sort of unlikely that someone would need more than 2 spots for a Kanzen sprite.
Title: Re: ASM Requests
Post by: EnderC on January 11, 2021, 02:45:57 pm
Quote from: zoiwillxx on November 24, 2020, 07:56:52 amAll I want is to replace original damage formulas...

I've been playing around with the base damage formula and it's important to understand how tricky this would be exactly as you've requested.

If you're going to do this it's important to understand that the damage formulas (weapons and skills) don't actually calculate the final damage themselves. They set two variables referred to as XA and YA. Another chunk of code (ie. routine) multiplies whatever values are stored in these variables together to get the damage.

So it's one thing to change how XA and YA are calculated, and that's what different weapons do:

(Knight Sword)
XA := PA(Br/100)
YA := WP

(Guns)
XA := WP
YA := WP

It's another thing entirely to change the multiplication of XA and YA, because this will have an impact on every damage formula that relies on it.

Don't get me wrong, it's not impossible, but realistically you'd have better luck learning assembly (which I encourage you to do!) and doing it yourself.
Title: Re: ASM Requests
Post by: Squaresoft on January 23, 2021, 09:19:43 pm
1) !!
2) !!

3) An ASM to set X-Job have Y-Skill greyed out for selection.
(Just like Chemist has Throw Item greyed out)
Title: Re: ASM Requests
Post by: nitwit on January 24, 2021, 08:00:07 am
Quote from: Squaresoft on January 23, 2021, 09:19:43 pm3) An ASM to set X-Job have Y-Skill greyed out for selection.
(Just like Chemist has Throw Item greyed out)
I can't find it, but I think Glain or maybe pokeytax wrote a hack that makes inherent skills (the 4 reaction, support, or movement skills any job class can have permanently equipped in hidden slots) unequippable by players and generated AI characters.
Title: Re: ASM Requests
Post by: Squaresoft on February 05, 2021, 05:12:24 pm
Quote from: nitwit on January 24, 2021, 08:00:07 amI can't find it, but I think Glain or maybe pokeytax wrote a hack that makes inherent skills (the 4 reaction, support, or movement skills any job class can have permanently equipped in hidden slots) unequippable by players and generated AI characters.

Oh my, Glain did it and it WORKS LIKE A CHARM, even in TLW 1.06, thank you!.
Title: Re: ASM Requests
Post by: nitwit on February 06, 2021, 11:28:28 am
Quote from: Squaresoft on February 05, 2021, 05:12:24 pmOh my, Glain did it and it WORKS LIKE A CHARM, even in TLW 1.06, thank you!.
This? (https://ffhacktics.com/smf/index.php?topic=6505.msg135259;topicseen#msg135259)
WORLD_WORLD_BIN
0x42D6C
40100700
2010E200
00210200
0680023C
20204400
B8108424
01008290
FF00C330
06006210
0F008330
0E006328
FAFF0314
02008424
02000010
00000000
0040C634
01001026
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
0x44B08
0680013C
0x44B28
0680013C
40280300
20286500
00290500
20082500
B8102124
01002294
62008594
00000000
0200A214
02002124
620080A4
0F002530
F8FF0514
00000000
F8FF2120
01002294
64008594
00000000
0200A214
02002124
640080A4
0F002530
F8FF0514
00000000
F8FF2120
01002294
66008594
00000000
0200A214
02002124
660080A4
0F002530
F8FF0514
00000000
F8FF2120
62008194
64008294
00000000
02004114
00000000
620080A4
66008294
00000000
02004114
00000000
620080A4
64008194
00000000
02004114
80101400
640080A4

Instead of preventing Chemist & Throw Item / Mediator & Monster Talk / Ninja & Two Swords / Monk & Martial Arts, this hack prevents all inherent abilities from being equipped. So in vanilla it alters nothing, but it will adjust to whatever you do in FFTPatcher. If you're feeling silly, you can do things like giving Knights innate Equip Armor / Equip Sword / Equip Shield to prevent the player from equipping junk. It does not stack with the previous hack; you can't ban specific combos.

It also prevents equipping multiple copies of a single R/S/M ability, which again has no effect in vanilla, but is probably desirable if you're using a "merge Support/Movement" hack.
Title: Re: ASM Requests
Post by: ---HattoriIga--- on February 20, 2021, 11:24:35 pm
 :)  Hello, I would like if I could change the Moldball set of formula 58 to be able to choose any ID, whether human or monster, or change to human ID, if there is no way to put the choice of ID
Title: Re: ASM Requests
Post by: Squaresoft on February 21, 2021, 08:35:15 pm
Pokeytax did an amazing "First four armors become headgear when flagged in FFTPatcher".

Is it possible to do a "First four SHIELDS become ACCESORIES when flagged in FFTPatcher"?.
Title: Re: ASM Requests
Post by: CloudsOverFF on March 03, 2021, 09:35:17 pm
asm request for changing gun dmg formula to Speed times Weapon power, and unarmed formula to be physical attack times 3. I tried to get this to work through ravens workbook/xml generator and fftorgASM, but I haven't had any luck. I used "STAT1*STAT2" for guns, whereby stat1 was "38" and stat2 was "WP" and vice versa, but neither worked, and it still just does WP^2. As for fists, I used "STAT1*CONST" with STAT1 being 36, and CONST being 03. This again just made the characters do PA^2 instead. I got the other formulas to work including the "STAT1*STAT2/CONST*STAT3", which I used for staves and rods to make them do (MA*Faith)/100*WP. This one worked flawlessly.

I am using PSX version ISO, FFTorgASM, and FFTpatcher.
Title: Re: ASM Requests
Post by: Atroe on March 19, 2021, 12:32:20 am
Request:

Change command 02 Defend to inflict Transparent instead of Defending

Change Death Sentence to inflict Petrify after countdown ends

Low brave kicks in at 20Br, inflicts Critical instead of Chicken
Title: Re: ASM Requests
Post by: Rads24 on March 26, 2021, 04:22:29 am
Can I request for a sword with magic gun formula? I saw that there's no magic gun formula in raven's workbook. Or is there an asm for this already?

I tried to change a cloth weapon into something like a magic sword (sword with magic gun formula), but I heard that by only changing the weapon formula in patcher won't let the attack to do secret hunt. I tried to change the item type into sword with magic gun formula too but the animation when I attack is not weapon strike instead it became like casting magic.
Title: Re: ASM Requests
Post by: Rads24 on March 26, 2021, 04:38:23 am
Quote from: CloudsOverFF on March 03, 2021, 09:35:17 pmasm request for changing gun dmg formula to Speed times Weapon power, and unarmed formula to be physical attack times 3. I tried to get this to work through ravens workbook/xml generator and fftorgASM, but I haven't had any luck. I used "STAT1*STAT2" for guns, whereby stat1 was "38" and stat2 was "WP" and vice versa, but neither worked, and it still just does WP^2. As for fists, I used "STAT1*CONST" with STAT1 being 36, and CONST being 03. This again just made the characters do PA^2 instead. I got the other formulas to work including the "STAT1*STAT2/CONST*STAT3", which I used for staves and rods to make them do (MA*Faith)/100*WP. This one worked flawlessly.

I am using PSX version ISO, FFTorgASM, and FFTpatcher.
Did you change the gun formula to "01 Dmg_[Weapon] PE" in FFTPatcher??
Iirc the asm will work when the formula in FFTPatcher is set to "01 Dmg_[Weapon] PE" and in patcher the gun formula is set to "WP^2" while staff and rod are already set to "01 Dmg_[Weapon] PE"
Title: Re: ASM Requests
Post by: JadeKnightblazer on May 24, 2021, 05:54:17 am
Looking for flexibility with Dark/Evil Looking.

To my limited knowledge this status is not used in game besides a Color shader on the unit.

Would like to be able to attach other effects or formulas to the unit while under this effect.

Such as, dealing damage to another target, they gain %MP(10%) back.

Or is there a way via FFTPatcher or the like to edit what status affects do and customize from there?
Title: Re: ASM Requests
Post by: Gregory on May 24, 2021, 09:07:45 pm
Requesting a Meliadoul buff for TLW.

All Mighty Sword skills to have vertical range of 3, area of effect of 2, inflict damage like WotL, as well as the following:

Shellbust Stab: chance to inflict slow.
Blastar Punch: chance to inflict confuse.
Hellcry Punch: chance to inflict disable.
Icewolf Bite: chance to inflict immobilize.

Anyone willing to help a dude out? ^__^
Title: Re: ASM Requests
Post by: JadeKnightblazer on May 25, 2021, 11:06:29 pm
Edited:

Change Distribute (Cup of Life) to. If a unit equipped with this ability is healed beyond their maximum MP, the unit is inflicted with Curse.

2. Give Pyscho Shift a damage to target:
<Patch name="Formula 58 = Psycho Shift">
    <Description>Hit F(Ma+x)%.  On a successful hit, user will transfer all active status effects to target, and cancel them on self.  Affects all statuses (positive or negative).  Will not cancel innate status, or inflict statuses to invalid targets (such as inflicting poison to a unit immune to it). </Description>
    <Location file="BATTLE_BIN" offset="123824">
E8FFBD27
1000BFAF
8922060C
00000000
25004014
00000000
1980013C
942D228C
902D238C
8C2D2A8C
21200000
58004590
59004690
5A004790
5B004890
5C004990
1B0065A0
1C0066A0
1D0067A0
1E0068A0
1F0069A0
200045A1
210046A1
220047A1
230048A1
240049A1
C912060C
00000000
1980013C
8C2D258C
902D238C
09004010
00000000
01000434
0000A4A0
000064A0
08000434
2500A4A0
250064A0
02000010
00000000
000062A0
1000BF8F
1800BD27
0800E003
00000000
    </Location>
  </Patch>

3. A formula. Deal target HP damage, restore Y%  caster MP
Title: Re: ASM Requests
Post by: 3lric on June 02, 2021, 06:21:43 pm
Quote from: Gregory on May 24, 2021, 09:07:45 pmRequesting a Meliadoul buff for TLW.

All Mighty Sword skills to have vertical range of 3, area of effect of 2, inflict damage like WotL, as well as the following:

Shellbust Stab: chance to inflict slow.
Blastar Punch: chance to inflict confuse.
Hellcry Punch: chance to inflict disable.
Icewolf Bite: chance to inflict immobilize.

Anyone willing to help a dude out? ^__^

This isn't ASM. You can do all of this yourself in FFTP
Title: Re: ASM Requests
Post by: Nyzer on June 02, 2021, 08:31:37 pm
Unless the status chances are in addition to the existing effect, but yeah, it didn't seem like that was the intent.
Title: Re: ASM Requests
Post by: Gregory on June 05, 2021, 12:06:53 am
Oh nice, thank you. Gonna look into FFTP. But yeah hoping to get (or learn how to make) those status effects in addition to damage and existing gear break effects.
Title: Re: ASM Requests
Post by: JadeKnightblazer on June 07, 2021, 08:57:50 am
Replace Move +3 or Jump + 3, with an ASM that forces the unit to start a battle with MP at 0.
Title: Re: ASM Requests
Post by: nitwit on June 30, 2021, 09:37:13 pm
Hack Idea: Disable crytalization and treasure chest effects, and when a non-essential character's KO countdown expires they instead become unusable for a number of days equal to their character level. Essential characters still produce a game over when they are made unusable.

I think I remember seeing a piece of text for the "unusable" effect - or maybe "unavailable" - similar to the text for characters that are on errands.
Title: Re: ASM Requests
Post by: RetroTypes on July 01, 2021, 01:48:34 am
Quote from: nitwit on June 30, 2021, 09:37:13 pmHack Idea: Disable crytalization and treasure chest effects, and when a non-essential character's KO countdown expires they instead become unusable for a number of days equal to their character level. Essential characters still produce a game over when they are made unusable.

I think I remember seeing a piece of text for the "unusable" effect - or maybe "unavailable" - similar to the text for characters that are on errands.

Xif already made something kinda similar, the "Permadeath Terminator" spreadsheet/hack. Even allows Ramza to not die, but that's a toggle I believe. Although they just get stars like guests do when KO'd, they return to normal as soon as the battle is over.
Title: Re: ASM Requests
Post by: JadeKnightblazer on July 09, 2021, 11:19:57 am
Request: Formulas 0F and 10 (AbsMP/AbsHP) allow Status infliction.
Title: Re: ASM Requests
Post by: Nyzer on July 09, 2021, 07:52:54 pm
There's an ASM hack to make Geomancy trigger absorption of either type.

There might also be a general purpose status infliction hack, but I'm only guessing offhand, I couldn't say for certain.
Title: Re: ASM Requests
Post by: JadeKnightblazer on July 10, 2021, 10:19:59 pm
Ty Nyzer, i'll take a closer looking into the collective ASMs. Luckily since I am aiming to use 100% max MP abs on self, I should be able to just blast the target with a crazy variable to meet my needs.

Trying to figure out how to bring Dart from LOD to life XD So looking for a way to create a dragoon transformation toggle. Active a status, then let status naturally fade off to restore normal form.
Title: Re: ASM Requests
Post by: nitwit on July 20, 2021, 04:48:02 pm
Quote from: JadeKnightblazer on July 09, 2021, 11:19:57 amRequest: Formulas 0F and 10 (AbsMP/AbsHP) allow Status infliction.

https://ffhacktics.com/wiki/0F_AbsMP_(Y)%25_Hit_F(MA%2BX)%25
https://ffhacktics.com/wiki/10_AbsHP_(Y)%25_Hit_F(MA%2BX)%25

Looking at them on the wiki, they share between 1/3 and 1/2 of the same assembly code, and they are sequential (one right after the other). Look at the RAM addresses (the 8 digit hexadecimal numbers before the colons) in the code tags below to see what I mean.

[0f]
00189084: 27bdffe8 addiu r29,r29,0xffe8         //start of formula 0F
00189088: afbf0010 sw r31,0x0010(r29)
0018908c: 0c06216e jal 0x 001885b8            Magic Evade
00189090: 00000000 nop
00189094: 1440000d bne r2,r0,0x 001890cc
00189098: 00000000 nop
0018909c: 0c062273 jal 0x 001889cc            Calculate_Accuracy_for_Magical_Spells - Calculate (MA + X)*Faith% This is essentially the same routine as 0x188a24 except without elemental boosting.
001890a0: 00000000 nop
001890a4: 14400009 bne r2,r0,0x 001890cc
001890a8: 00000000 nop
001890ac: 0c0619a3 jal 0x 0018668c            MP Damage
001890b0: 00000000 nop
001890b4: 3c038019 lui r3,0x8019
001890b8: 8c632d90 lw r3,0x2d90(r3)
001890bc: 00000000 nop
001890c0: 94620008 lhu r2,0x0008(r3)           r2 = MP Dmg
001890c4: 0c061d1b jal 0x 0018746c            MP_Recovery_Routine
001890c8: a4620004 sh r2,0x0004(r3)            Store r2 as HP Dmg (used in MP recovery routine - HP Dmg set to 0x00 in MP recovery routine)     
001890cc: 8fbf0010 lw r31,0x0010(r29)
001890d0: 27bd 0018 addiu r29,r29,0x 0018
001890d4: 03e00008 jr r31
001890d8: 00000000 nop                         //end of formula 0F

[10]
001890dc: 27bdffe8 addiu r29,r29,0xffe8        //start of formula 10... and just after the end of the previous formula.
001890e0: afbf0010 sw r31,0x0010(r29)
001890e4: 0c06216e jal 0x001885b8            Magical_Evade_Calculation
001890e8: 00000000 nop
001890ec: 14400009 bne r2,r0,0x 00189114
001890f0: 00000000 nop
001890f4: 0c062273 jal 0x 001889cc            Calculate Accuracy for Magical Spells
001890f8: 00000000 nop
001890fc: 14400005 bne r2,r0,0x 00189114
00189100: 00000000 nop
00189104: 0c061989 jal 0x 00186624      Calculate HP% damage 
00189108: 00000000 nop
0018910c: 0c061c92 jal 0x 00187248      HP Absorption
00189110: 00000000 nop
00189114: 8fbf0010 lw r31,0x0010(r29)
00189118: 27bd 0018 addiu r29,r29,0x 0018
0018911c: 03e00008 jr r31
00189120: 00000000 nop                          //end of formula 10

You might be able to make them into one formula, with conditional branches (assembly version of if-elseif-else) for the parts that differ. I haven't thought about how you would do that, but it's probably interesting enough that someone will help you on the discord if you put in the effort.

I just now thought about it, and you need to check the formula byte for the skill that used it. I'm sure someone documented where this data is and how to get it.

There is probably a lot of hardcoded stuff that uses the formula IDs, so you'll need to if possible make sure that whatever formula pointer table exists has both formulas point to the same code block. If it won't let you point to the same block of code and each sequential pointer must point to a part of ram that is after the previous pointer's value, then add a nop (00 00 00 00) at the beginning, have formula 0F point to that, then have formula 10 point to the actual start of the code. That's the easiest (read: most half-assed) way to do it until we someday understand all the hardcoding and have a fully commented and assemble-able disassembly.

I think this is the formula pointer table:
https://ffhacktics.com/wiki/Formula_Table

No idea what you have to change in that table to get it to behave, probably the starting address (in RAM) of the first line of code in each formula.

As for adding status procs, I think you need to add some routines from formula 08 Dmg_F(MA*Y).
https://ffhacktics.com/wiki/08_Dmg_F(MA*Y)

Specifically these:
00188dcc: 0c0621c7 jal 0x 0018871c        ; Elemental Absorb and status roll
00188dd0: 00000000 nop                   
00188dd4: 14400003 bne r2,r0,0x 00188de4 ; Branch if status effect roll fails
00188dd8: 00000000 nop                   
00188ddc: 0c061fad jal 0x 00187eb4        ; Apply status (to action) - (Preserve hit status, evade type, hit %)

Though if you go that far and you have room left, you may as well add full elemental modification to formulas 0F and 10 - elemental strengthen and elemental XA * YA.

edit

On further thought, mixing an absorb formula, undead reversal, and elemental affinities (especially weak, halve, and absorb) will have unforeseen consequences and probably won't work out how you want it to.

I instead recommend you use the status proc code in formula 0A.
https://ffhacktics.com/wiki/0A_Hit_F(MA%2BX)%25
https://ffhacktics.com/wiki/Apply_status_(to_action)
Title: Re: ASM Requests
Post by: JadeKnightblazer on July 20, 2021, 06:33:03 pm
Ty for all the information!! Much to toy around with.
Title: Re: ASM Requests
Post by: Ansehelm on July 21, 2021, 11:57:27 pm
Are there any ASMs that improve the utility of being mounted?  Mounting is such a cool mechanic in theory, but the increase in move and status immunity are rarely enough to make it worth turning 2 units into 1. Something like +4 Speed and PA and +20% Evade while mounted would be a dream come true
Title: Re: ASM Requests
Post by: RetroTypes on July 22, 2021, 09:23:57 pm
Quote from: Ansehelm on July 21, 2021, 11:57:27 pmAre there any ASMs that improve the utility of being mounted?  Mounting is such a cool mechanic in theory, but the increase in move and status immunity are rarely enough to make it worth turning 2 units into 1. Something like +4 Speed and PA and +20% Evade while mounted would be a dream come true

Choto has a (buggy? incomplete?) hack HERE (https://ffhacktics.com/smf/index.php?topic=8507.0) that allows both the mounted unit and the rider to take separate movements or something like that, but other than that I dont recall seeing much. I'm sure a hack like you requested is possible, but I dont think anyone's done something like that yet (dont quote me tho! lol)
Title: Re: ASM Requests
Post by: JadeKnightblazer on August 04, 2021, 12:44:52 am
LF an ASM that allows Death Sentence (Doom), to apply a status along with or in replacement of Dead.

Mainly I would like it to apply wall at the end of the duration, and can make the job immune to dead.

Unless Death Sentence uses an inflict status ID? in which would love to know :3


Sometimes Manual input is better than automagicly.
Worked with status canceling each other out and a manual toggle.
Title: Re: ASM Requests
Post by: JadeKnightblazer on September 01, 2021, 06:45:58 pm
Looking to make one of the multi hit (random + x) formulas into physical

Much like:
Formula 5E becomes (PA + Y) / 2 * PA Hit_(1+X) ASM by Pride.
<Patch name="Formula 5E = (PA + Y) / 2 * PA Hit_(1+X)">
    <Description>Replaces Formula 5E.</Description>
    <Location file="BATTLE_BIN" offset="000f6e20">
E8FFBD27
1000BFAF
4421060C
00000000
FBFF4014
00000000
4017060C
00000000
FF17060C
00000000
5318060C
00000000
B722060C
00000000
3E15060C
00000000
5A19060C
00000000
B41B060C
00000000
FE1B060C
00000000
1980023C
902D428C
00000000
00004290
00000000
E4FF4010
00000000
3F1C060C
00000000
3021060C
00000000
AD1F060C
00000000
1000BF8F
1800BD27
0800E003
00000000
    </Location>
    <Location file="BATTLE_BIN" offset="00123AB0">
8877050C
    </Location>
  </Patch>

I tried to use FFmaster's
Formula 1E, 1F, 5E, 5F, 60 ((MA+Y)*MA/2) becomes ((PA+Y)*PA/2) : THIS AFFECTS ALL THE FORMULAS

But boy was I in a world of hurt when I needed ((MA+Y)*MA/2) for scaling with a few spells. T_T


Possible to change this ASM: OR Pride's above formula

<Patch name="Formula 1E (Truth Skillset) becomes Dmg_(MA*Y) #Hit(Rdm{1,X})">
<Description>Formula 1E - Dmg_((MA+Y)*MA/2) #Hit(Rdm(1,X)) becomes Formula 1E - Dmg_(MA*Y) #Hit(Rdm{1,X})
</Description>
<Location file="BATTLE_BIN" offset="11ECE8">
21106000
00000000
</Location>
</Patch>

into Dmg_((PA+Y)*PA/2) #Hit(Rdm(1,X))  ?
Title: Re: ASM Requests
Post by: stuminator on September 23, 2021, 04:34:51 pm
This one has probably been asked for before, but I haven't seen a good solution for it:

Alter formula 40 (Seal Evil) to require any status on the target of your choosing

I have a good idea for what the hack should be, but don't know how to actually code this myself.  Utilize the Y and element fields in FFTpatcher.  At the point in the routine when it pulls up status group 0x58, instead pull up the value in Y, and when it checks for status 0x10 (Undead), instead check the value in the element field.

This would allow quite a bit of customization without having to overwrite any other existing formulas.

Also, it would be very appreciated if anyone could show me how to code this myself.  My knowledge of ASM is pretty basic.
Title: Re: ASM Requests
Post by: nitwit on September 23, 2021, 04:59:37 pm
Quote from: stuminator on September 23, 2021, 04:34:51 pmThis one has probably been asked for before, but I haven't seen a good solution for it:

Alter formula 40 (Seal Evil) to require any status on the target of your choosing

I have a good idea for what the hack should be, but don't know how to actually code this myself.  Utilize the Y and element fields in FFTpatcher.  At the point in the routine when it pulls up status group 0x58, instead pull up the value in Y, and when it checks for status 0x10 (Undead), instead check the value in the element field.

This would allow quite a bit of customization without having to overwrite any other existing formulas.

Also, it would be very appreciated if anyone could show me how to code this myself.  My knowledge of ASM is pretty basic.
https://ffhacktics.com/smf/index.php?topic=12720.0

The hack here is almost what you want. You need to add some stuff to select the status byte loaded and bit tested for.
Title: Re: ASM Requests
Post by: stuminator on September 23, 2021, 06:06:21 pm
This is pretty much it, but how would I adjust the offsets to have multiple copies of the formula each checking for a different status?

<Location file="BATTLE_BIN" offset="128674">B89F1580<!--Formula 19--></Location>
<Location file="BATTLE_BIN" offset="F2FB8">

I know how to change the first part, the offset 128674, by looking it up from the formula table, but I'm not sure how I'd need to adjust the F2FB8. 
Title: Re: ASM Requests
Post by: nitwit on September 23, 2021, 06:48:53 pm
Quote from: stuminator on September 23, 2021, 06:06:21 pmThis is pretty much it, but how would I adjust the offsets to have multiple copies of the formula each checking for a different status?

<Location file="BATTLE_BIN" offset="128674">B89F1580<!--Formula 19--></Location>
<Location file="BATTLE_BIN" offset="F2FB8">

I know how to change the first part, the offset 128674, by looking it up from the formula table, but I'm not sure how I'd need to adjust the F2FB8. 
You understand that you need two bytes to select the status group and a specific status, and you found two free bytes in existing data. That's very good.

You should get in the discord and get help there, but basically you need to either:
The latter method could allow a lot more flexibility if the adjacent formulas have much in common with it.

You need to do this because you need some space to write the code to check the byte and bit selected. I'm not sure if the ideal way to do that is with the assembly equivalent of a for or while loop, or if it will Just Work™ if you copy the bytes over. I guess look at what parameters the status proc subroutine call used in 40 uses, or how it works. I'm probably wrong about one or more parts of actually implementing the checks and branches.

If the formulas pointer table requires that sequential formulas have addresses that are also sequential, add a nop in front of the formula and have the earlier one point to it, and the later one point to the actual first line of code. Do the same for any formula calls made elsewhere for the ones you consolidate.

My reasoning for this is that it keeps hardcoding based on formula ID done elsewhere intact.

Looking at Routine Locations (https://ffhacktics.com/wiki/Routine_Locations), here are the adjacent formulas:
0018a02c - 0018a084: 3F Hit (SP+X)% (https://ffhacktics.com/wiki/3F_Hit_(SP%2BX)%25)
0018a088 - 0018a110: 40 Undead: Hit (SP+X)% (https://ffhacktics.com/wiki/40_Undead:_Hit_(SP%2BX)%25)
0018a114 - 0018a178: 41 Hit (MA+X)% (https://ffhacktics.com/wiki/41_Hit_(MA%2BX)%25)

3F and 40 are the same formula, 40 has the Undead conditional. By incorporating them you'd free up a lot of space for anything else you want to do.

You could incorporate 41 as well, just be aware that anything you do to these three formulas will affect everything that calls them, and you'd have to manually adjust every instance of where they are called. 41 is called in a few places, but I don't think 40 is called ever and I think 3F is only called in 40. By that I mean that every jal 0x0018a114 would need to be replaced with jal 0x0018a02c if you consolidate 41 with 40 and 3F.

Might be a good idea to contact the author of that hack and show him my two posts in reply to you, since he may be interested in something that is an improvement to what he made.
Title: Re: ASM Requests
Post by: stuminator on September 30, 2021, 06:04:36 pm
I've been working on my own request I made earlier and believe I've figured it out. 

<Patch name="Formula 3F Hit (SP+X)%, can require target to have certain status">
  <Description>
    Overwrites the space of the existing 3F and 40 formula routines.  Also adds physical evasion if evadable is checked.
    Allows you to require an already present status on the target as follows:
    Fill in the Y value in FFTPatcher with 88, 89, 90, 91, or 92 depending on which group the status is in, and check the element field in FFTPatcher corresponding to the status's position in the group.
    If you want the ability to work on any target without requiring an existing status, leave Y=0.  Don't use values for Y other than the ones listed here!
    Remember that the existing Seal Evil ability will need to be updated to the new format to work (Formula 3F, Y=88, element=Wind), and don't assign formula 40 to anything.
    Group 88
      0x80
      0x40 Crystal
      0x20 Dead
      0x10 Undead
      0x08 Charging
      0x04 Jump
      0x02 Defending
      0x01 Performing
    Group 89
      0x80 Petrify
      0x40 Invite
      0x20 Darkness
      0x10 Confusion
      0x08 Silence
      0x04 Blood Suck
      0x02 Cursed
      0x01 Treasure
    Group 90
      0x80 Oil
      0x40 Float
      0x20 Reraise
      0x10 Transparent
      0x08 Berserk
      0x04 Chicken
      0x02 Frog
      0x01 Critical
    Group 91
      0x80 Poison
      0x40 Regen
      0x20 Protect
      0x10 Shell
      0x08 Haste
      0x04 Slow
      0x02 Stop
      0x01 Wall
    Group 92
      0x80 Faith
      0x40 Innocent
      0x20 Charm
      0x10 Sleep
      0x08 Don't Move
      0x04 Don't Act
      0x02 Reflect
      0x01 Death Sentence
    Elements:
      0x80 Fire
      0x40 Lightning
      0x20 Ice
      0x10 Wind
      0x08 Earth
      0x04 Water
      0x02 Holy
      0x01 Dark
    For example, to require that the target be in critical, Y=90 and check the Dark element.
  </Description>
    <Location file="BATTLE_BIN" offset="12302C">
      E8FFBD27
      1000BFAF
      4421060C
      00000000
      23004014
      00000000
      8C17060C
      00000000
      7E21060C
      00000000
      6719060C
      00000000
      441D060C
      00000000
      1980023C
      902D428C
      00000000
      00004290
      00000000
      14004010
      00000000
      19800A3C
      982D4B8D
      FA384991
      F7384D91
      0C002011
      00000000
      21086901
      00002590
      00000000
      2418AD00
      00000000
      05006014
      00000000
      C310060C
      00000000
      33280608
      00000000
      C91F060C
      00000000
      1000BF8F
      1800BD27
      0800E003
      00000000
    </Location>
  </Patch>

All my tests with this have worked, hopefully others will find this useful and not have any problems implementing it.  A big thanks to Emmy for this formula that I used as a template to help me figure out how to code my own formula:

<Patch name="Formula 31 - Physical elemental damage, 2x damage + status inflict if unit is affected by indexed status">
    <Description>Requires physical elemental inner routine. Use x = 88, 89, 90, 91, 92 for status effect group 1, 2, 3, 4, 5 respectively.  Ability status effect byte is the status you want the ability to check for and inflict (on the group indexed by x)</Description>
    <Location file="BATTLE_BIN" offset="122cd0">
E8FFBD27
1000BFAF
4421060C
00000000
1A004014
00000000
1B79050C
00000000
19800A3C
942D4B8D
F9384991
902D4C8D
FB384D91
21086901
00002290
04008395
24284D00
0D00A010
00000000
06008495
40180300
40200400
040083A5
060084A5
3D000534
25008491
23182501
21088301
000022A0
08008434
250084A1
1000BF8F
1800BD27
0800E003
00000000
    </Location>
  </Patch>
Title: Re: ASM Requests
Post by: nitwit on September 30, 2021, 11:51:11 pm
@stuminator very nice!

You could probably do something similiar with Reis's* Dragon specific formulas. I remember seeing a hack that lets you choose the two sprites it would work with, maybe if you're so inclined you could de-hardcode that as you did this?

*Peanut Butter Cups?
Title: Re: ASM Requests
Post by: stuminator on October 01, 2021, 01:34:47 pm
Making the dragon formulas work on any monster would be a really quick fix I think - could probably just change the 2 lines of code at 001875d4 and 001875d8 in the dragon check to nops and it should work on anything with a monster graphic.

Setting any 2 sprites with patcher seems a bit more daunting.  Since the x and y fields are already used in some of Reis's abilities, maybe the element field could be used to specify the monster types.  There are 16 monster types, so the first 4 elements could be a bitwise representation of the first sprite, the next 4 elements the second sprite.  This wouldn't be too user friendly, having to convert the monster graphic index # into the appropriate elements checked but it should work.

This would also use lots more lines of code than are normally in the dragon check routine.  How is everyone determining what free space to use and making sure that nobody's hacks conflict with one another?
Title: Re: ASM Requests
Post by: nitwit on October 01, 2021, 05:41:51 pm
I'm not sure if it's up to date, but here's the allocated space listing.
https://ffhacktics.com/wiki/Allocated_space

This seems related.
https://ffhacktics.com/wiki/Static_Free_Space_Allocation

After thinking about it, I'm not sure if dehardcoding the dragon formulas is worth your time. There's only a few of them and they have very niche and OP effects. A more flexible and useful feature would be a flag somewhere that dictates to the formula set-up and AI routines that this skill is monster specific, and have it grab the monster portrait or portraits from an unused byte or two provided by the modder.

That would be more useful for a Monster Hunter class or something similar.

Unfortunately it's beyond the scope of a single person's efforts, though I do remember someone is working on a formula rewrite around here.

I apologize if I made an inadvertent request.
Title: Re: ASM Requests
Post by: stuminator on October 02, 2021, 07:01:33 pm
Actually, this wasn't anywhere near as tough as I thought it would be.  I came up with a monster type check routine that utilizes the element flags and the Y field of an ability to let you mix and match all 16 monster classes so the ability can only target any combination you want.  Only 1 of the existing vanilla Dragon formulas actually uses the X and Y values anyway, 5C, and I was able to create a workaround here by moving the Y value to the status effect field (not a problem since this particular formula doesn't have status effects anyway.)

It uses 32 lines of code so I'd just need some free space to put this.  From looking at the Allocated Space on the wiki, it appears that maybe this could go at 0x000F929C, just after Pride's last formula.  Is this OK, or is there somewhere else this should go?
Title: Re: ASM Requests
Post by: nitwit on October 03, 2021, 01:06:12 am
Quote from: stuminator on October 02, 2021, 07:01:33 pmActually, this wasn't anywhere near as tough as I thought it would be.  I came up with a monster type check routine that utilizes the element flags and the Y field of an ability to let you mix and match all 16 monster classes so the ability can only target any combination you want.  Only 1 of the existing vanilla Dragon formulas actually uses the X and Y values anyway, 5C, and I was able to create a workaround here by moving the Y value to the status effect field (not a problem since this particular formula doesn't have status effects anyway.)

It uses 32 lines of code so I'd just need some free space to put this.  From looking at the Allocated Space on the wiki, it appears that maybe this could go at 0x000F929C, just after Pride's last formula.  Is this OK, or is there somewhere else this should go?
That should be fine. Ask on the discord if there's a hack conflict checker or some other means of checking.
Title: Re: ASM Requests
Post by: 3lric on October 03, 2021, 03:46:00 am
FFTorgASM has shown conflicts for years now. It can even move hacks that conflict, properly
Title: Re: ASM Requests
Post by: stuminator on October 04, 2021, 03:51:51 pm
Here are the monster type check codes:

<Patch name="Monster type check routine">
    <Description>
      This creates a monster type check routine that uses the element fields and Y value to allow any formula calling it to only work on whatever monster types you want.
      Monster types are divided into an element group and Y group as follows:
      Element Group:
        Fire=Eyeball
        Lightning=Ghoul
        Ice=Skeleton
        Wind=Squid
        Earth=Panther
        Water=Bomb
        Holy=Goblin
        Dark=Chocobo
      For this group, simply check the element box if you want the ability to be able to target this monster type.
      Y Group:
        128=Hydra
        64=Dragon
        32=Behemoth
        16=Morbol
        8=Minotaur
        4=Woodman
        2=Pig
        1=Bird
      For this group, add up all the values you want the ability to target, and put the sum into the ability Y value.  These values are in decimal.
    </Description>
    <Location file="BATTLE_BIN" offset="FA180">
      19800A3C
      982D428D
      E8FFBD27
      1000BFAF
      5E014390
      01000434
      13006010
      00000000
      22186400
      0800652C
      0800A010
      00000000
      F7384591
      04186400
      24186500
      0A006010
      00000000
      7C840508
      00000000
      FA384591
      08000634
      22186600
      04186400
      24186500
      03006014
      00000000
      C310060C
      00000000
      1000BF8F
      1800BD27
      0800E003
      00000000
    </Location>
  </Patch>

<Patch name="Dragon formulas use monster type check routine">
    <Description>
      This replaces the Dragon check in abilities 5A,5B,5C,5D with a monster type check allowing you specify the types of monsters these abilities work on.
      Note on formulas 5C and 3B:  In order to work with the monster check routine, this makes the status effect field the SP/PA/MA+ value instead of the Y field.
      Both Scream and Dragon Power Up use the same routine, so remember this adjustment if you plan on using either formula.
    </Description>
    <Location file="BATTLE_BIN" offset="123988">
      6084050C
    </Location>
    <Location file="BATTLE_BIN" offset="1239CC">
      6084050C
    </Location>
    <Location file="BATTLE_BIN" offset="123A18">
      6084050C
    </Location>
    <Location file="BATTLE_BIN" offset="123A5C">
      6084050C
    </Location>
    <Location file="BATTLE_BIN" offset="11FD74">
      FB
    </Location>
  </Patch>

Make sure to see in the description of assigning the Dragon formulas to use the new routine that I needed to make a slight change to both the Dragon Power up and Scream formulas.

Title: Re: ASM Requests
Post by: Ansehelm on October 07, 2021, 08:24:33 pm
Quote from: stuminator on October 04, 2021, 03:51:51 pmHere are the monster type check codes:
Yo, this looks super dope.  Nice work!
Title: Re: ASM Requests
Post by: stuminator on October 08, 2021, 03:15:19 pm
Quote from: JadeKnightblazer on July 09, 2021, 11:19:57 amRequest: Formulas 0F and 10 (AbsMP/AbsHP) allow Status infliction.

I've been playing around with this and have something that's mostly working:


<Patch name="Formula 0F = Absorb HP or MP_Y% Hit_F(MA+X)% accepts procs">
    <Description>
      Uses the space for both formulas 0F and 10.
      Formula 0F now accepts procs.  HP asborb is the default.  To absorb MP, check the box between Hit Allies and Follow Target.
    </Description>
    <Location file="BATTLE_BIN" offset="122084">
      E8FFBD27
      1000BFAF
      6E21060C
      19800A3C
      1A004014
      F4384B91
      7322060C
      20006B31
      16004014
      00000000
      07006015
      00000000
      8919060C
      00000000
      921C060C
      00000000
      3A240608
      00000000
      A319060C
      00000000
      902D438D
      00000000
      08006494
      1B1D060C
      040062A4
      3021060C
      00000000
      03004014
      00000000
      AD1F060C
      00000000
      1000BF8F
      1800BD27
      0800E003
      00000000
    </Location>
  </Patch>

This is working most of the time, but sometimes absorbs 0 MP, even at 100% and the target having plenty of MP.  Maybe someone could figure out what the deal is on this?

Here is the code in ASM format with comments:

[0x00189084]   addiu r29,r29,-0x0018         
[0x00189088]   sw r31,0x0010(r29)         
[0x0018908c]   jal 0x001885b8         Magic evade
[0x00189090]   lui r10,0x8019         
[0x00189094]   bne r2,r0,0x00189100         Jump to end if evaded
[0x00189098]   lbu r11,0x38f4(r10)         
[0x0018909c]   jal 0x001889cc         magic accuracy check
[0x001890a0]   andi r11,r11,0x0020         Check for unknown flag
[0x001890a4]   bne r2,r0,0x00189100         Jump to end if accuracy fails
[0x001890a8]   nop         
[0x001890ac]   bne r11,r0,0x001890cc         Jump ahead to MP section if unknown flag checked
[0x001890b0]   nop         
[0x001890b4]   jal 0x00186624         calculate HP% damage
[0x001890b8]   nop         
[0x001890bc]   jal 0x00187248         HP absorption
[0x001890c0]   nop         
[0x001890c4]   j 0x001890e8         jump to proc roll
[0x001890c8]   nop         
[0x001890cc]   jal 0x0018668c         mp damage
[0x001890d0]   nop         
[0x001890d4]   lw r3,0x2d90(r10)         
[0x001890d8]   nop         
[0x001890dc]   lhu r4,0x0008(r3)         
[0x001890e0]   jal 0x0018746c         mp recovery routine
[0x001890e4]   sh r2,0x0004(r3)         
[0x001890e8]   jal 0x001884c0         conditional proc roll
[0x001890ec]   nop         
[0x001890f0]   bne r2,r0,0x00189100         branch if status effect fails
[0x001890f4]   nop         
[0x001890f8]   jal 0x00187eb4         apply status to action
[0x001890fc]   nop         
[0x00189100]   lw r31,0x0010(r29)         
[0x00189104]   addiu r29,r29,0x0018         
[0x00189108]   jr r31         
[0x0018910c]   nop      


Title: Re: ASM Requests
Post by: Glain on October 08, 2021, 05:42:14 pm
There is a logic error here:

[0x0018908c]   jal 0x001885b8           #   Magic evade
[0x00189090]   lui r10,0x8019         

r10 is being set to the value 0x80190000... but then will be overwritten when the routine at 0x1885b8 is run.  You can't assume the value of r10 won't be changed by the routine.  (In this case, the call to rand() should actually change it to 0xa0, with the trace: https://ffhacktics.com/wiki/Rand -> https://ffhacktics.com/wiki/Pass/Fail_Roll -> https://ffhacktics.com/wiki/Attack_Evaded_Calculations -> https://ffhacktics.com/wiki/Calculate_Final_Hit_%25 -> https://ffhacktics.com/wiki/Calculate_Hit_%25 -> https://ffhacktics.com/wiki/Magical_Evade_Calculation)

[0x00189094]   bne r2,r0,0x00189100     #   Jump to end if evaded
[0x00189098]   lbu r11,0x38f4(r10)         
[0x0018909c]   jal 0x001889cc           #   magic accuracy check
[0x001890a0]   andi r11,r11,0x0020      #   Check for unknown flag
[0x001890a4]   bne r2,r0,0x00189100     #   Jump to end if accuracy fails
[0x001890a8]   nop         
[0x001890ac]   bne r11,r0,0x001890cc    #   Jump ahead to MP section if unknown flag checked

Same problem with r11.  You're assuming the value won't change, but it very well might.  Either use saved registers, with appropriate loading and storing on the stack, or use unsaved registers in a way that they load and use their values without a routine call being inbetween them.
Title: Re: ASM Requests
Post by: stuminator on October 08, 2021, 10:09:24 pm
Thanks for the help Glain.  I was trying to save some space by checking for the unknown flag while the evade/accuracy checks were running, but I guess this is a big no-no.

I redid this and just barely had enough room to fit everything in, seems to be working fine now:

<Patch name="Formula 0F = Absorb HP or MP_Y% Hit_F(MA+X)% accepts procs">
    <Description>
      Uses the space for both formulas 0F and 10.
      Formula 0F now accepts procs.  HP absorb is the default.  To absorb MP, check the box between Hit Allies and Follow Target.
    </Description>
    <Location file="BATTLE_BIN" offset="122084">
      E8FFBD27
      1000BFAF
      6E21060C
      00000000
      1F004014
      00000000
      7322060C
      00000000
      1B004014
      00000000
      19800A3C
      F4384B91
      00000000
      20006B31
      07006015
      00000000
      8919060C
      00000000
      921C060C
      00000000
      3F240608
      00000000
      A319060C
      00000000
      19800A3C
      902D438D
      00000000
      08006494
      1B1D060C
      040062A4
      3021060C
      00000000
      03004014
      00000000
      AD1F060C
      00000000
      1000BF8F
      1800BD27
      0800E003
      00000000
    </Location>
  </Patch>

And everything with comments:

[0x00189084] addiu r29,r29,-0x0018
[0x00189088] sw r31,0x0010(r29)
[0x0018908c] jal 0x001885b8 # Magic evade
[0x00189090] nop
[0x00189094] bne r2,r0,0x00189114 # Branch to end if evaded
[0x00189098] nop
[0x0018909c] jal 0x001889cc # magic accuracy check
[0x001890a0] nop
[0x001890a4] bne r2,r0,0x00189114 # Branch to end if accuracy check fails
[0x001890a8] nop
[0x001890ac] lui r10,0x8019
[0x001890b0] lbu r11,0x38f4(r10)
[0x001890b4] nop
[0x001890b8] andi r11,r11,0x0020 # Checks for unknown flag above Follow Target
[0x001890bc] bne r11,r0,0x001890dc # Branch ahead to MP section if unknown flag checked
[0x001890c0] nop
[0x001890c4] jal 0x00186624 # calculate HP% damage
[0x001890c8] nop
[0x001890cc] jal 0x00187248 # HP absorption
[0x001890d0] nop
[0x001890d4] j 0x001890fc # jump to proc roll
[0x001890d8] nop
[0x001890dc] jal 0x0018668c # mp damage
[0x001890e0] nop
[0x001890e4] lui r10,0x8019
[0x001890e8] lw r3,0x2d90(r10)
[0x001890ec] nop
[0x001890f0] lhu r4,0x0008(r3)
[0x001890f4] jal 0x0018746c # mp recovery routine
[0x001890f8] sh r2,0x0004(r3)
[0x001890fc] jal 0x001884c0 # conditional proc roll
[0x00189100] nop
[0x00189104] bne r2,r0,0x00189114 # branch if status effect fails
[0x00189108] nop
[0x0018910c] jal 0x00187eb4 # apply status to action
[0x00189110] nop
[0x00189114] lw r31,0x0010(r29)
[0x00189118] addiu r29,r29,0x0018
[0x0018911c] jr r31
[0x00189120] nop

Title: Re: ASM Requests
Post by: LV99 Vivi on October 10, 2021, 01:59:21 pm
idk if its found or requested or made yet but i would love to mod in more options for math skill targets or the multiples. Targets in general or keeping the same theme as og game like targeting based on faith or brave values or even weird stats like:

gender / zodiac /unit #

or the other obvious ones like: spd / PA / MA / HP / MP / wpn pwr / evasion %

or make it weirder with using a mixture of base 16 or base 2 instead of 10.  using multiple of 0x4 could target a person with 10 value since 10 = 16 in hex and there could also be normal 4 for og method of targeting in the same menu or a new job that has these weird ones but it has access to literally all abilities.

Could call it ASM Math Skill or Hex magic or just 0x0FF70101 for the lols.

could also add a third menu instead of the usual 2 for calc. why not a forth.

sorry just thinking aloud, one can dream.
Title: Re: ASM Requests
Post by: Timbo on October 30, 2021, 12:40:03 am
Not sure if this one is out there or not but has anyone ever thought to make the percentage based damage formulas check for and fail on targets that are immune to Death Status?

I've seen some ASM in the past that make the formulas accept elemental which can be used to similar effect. But I got to thinking about it and since those formulas pretty much only cause problems against bosses, having those formulas fail against Death status immunity is probably better since pretty much every boss needs to have Death status immunity anyway and maybe someone wants them to be vulnerable to Dark damage.

Relevant Formulas are 09, 0F, 10, 16, 17, 1B, 2C, 4D. Possibly 47 but since players can give themself death immunity death immunity would also effectively render then immune to Vampire so I'm not sure that protect bosses from Vampire Cats is really necessary.
Title: Re: ASM Requests
Post by: stuminator on October 30, 2021, 10:51:35 am
I know Emmy has made an Immortal Immune routine which checks if the target is flagged as Immortal and causes the ability to fail if so.  May want to check out Emmy's ASM thread for details on it.
Title: Re: ASM Requests
Post by: KenoattX on March 03, 2022, 02:37:22 pm
I am looking to made a new mod based on The Lion War mod.

I primarily am asking to combine support and movement abilities

#1) I would like Move and Jump movement abilities combined. E.x. Move +2 & Jump +2 are activated when you select Move +2.

#2) Combine Equip Heavy Armor + Equip Shields -> Equip Armor

#3) Combine Equip Swords + Equip Polearms + Equip Knight Swords -> Equip Swords

#4) Combine Equip Crossbows + Equip Bows + Equip Guns -> Equip Crossbows

#5) Combine Equip Katana + Equip Ninja Blade -> Equip Katana

Also would it be possible to add innate move-find item to jobs and have other selected movement abilities work as well?
Title: Re: ASM Requests
Post by: nitwit on March 03, 2022, 07:33:11 pm
@KenoattX

1) I think there's a small spreadsheet (probably by RavenOfRazgriz) that deals with the bonuses for Move/Jump +X skills. If not there then it's in FFTOrgASM.

2...5) I know there's either an ASM hack in FFTOrgASM or again Raven's spreadsheet that deals with Equip X skills.
Title: Re: ASM Requests
Post by: Ansehelm on March 04, 2022, 12:15:15 pm
Quote from: KenoattX on March 03, 2022, 02:37:22 pmI am looking to made a new mod based on The Lion War mod.

I primarily am asking to combine support and movement abilities...
In addition to what Nitwit said, you can also do all this and a lot more with Pride's Attribute Rewrite hack, found at the end of his thread:
https://ffhacktics.com/smf/index.php?topic=11708.40

Incidentally I'm also making a TLW mod (albeit with 1.06, an older version of TLW), and Pride's hack is central to how mine works.  In addition to making items far more unique, it allows you a great deal of flexibility with combining Support/Movement abilities.  For example, a special character in my mod can learn Beastmastery, which is Tame/Secret Hunt/Monster Talk all rolled into 1 ability. Furthermore, you can add stat increases, statuses, or elemental attributes to R/S/Ms to make some very interesting abilities.

The one thing I can't guarantee is compatibility with any ASMs that TLW has added since 1.06, so you'd have to check this for yourself.  It may not be compatible with the extra job hack, although I'd have to double check with the new version.
Title: Re: ASM Requests
Post by: darkskyx on April 09, 2022, 08:42:06 am
If that's not possible:
If all of that is possible:

Title: Re: ASM Requests
Post by: Talcall on April 29, 2022, 06:42:48 am
Possible to add a new (I'm assuming generic) job? theoretically with a little bit of fuckery
Possible to change the code to give mimes or onion knights skills? ot even remotely in the realm of reasonability. it would take a restructure of every instruction in the game's assembly.
Possible to make it for PSP? even less so.
Title: Re: ASM Requests
Post by: stardragoon9 on May 12, 2022, 11:01:39 am
Request an ASM hack to give Accumulation both PA and MA boost simutanously

Needed a separate ability from Scream

Thanks
Title: Re: ASM Requests
Post by: Orkney on May 13, 2022, 08:18:22 am
Hi,

Here. Tested only by patching a save state. It should work the same patched to an ISO.

Update 22/11/2023.
Initial Hack alters all abilities. I rename it and post a fixed one (yhanks to Sardek to point the mistake)
Title: Re: ASM Requests
Post by: stardragoon9 on May 13, 2022, 01:43:29 pm
Quote from: Orkney on May 13, 2022, 08:18:22 amHi,

Here. Tested only by patching a save state. It should work the same patched to an ISO.

Thank you so much, I shall report to you if I've encounter any problem!
Title: Re: ASM Requests
Post by: stardragoon9 on May 23, 2022, 11:13:42 pm
I don't know if this is possible with our current knowledge, but I wish to make a character within the player formation (not limited to ENTD) to permanently immune to certain status effect, not tied to job, meaning the character is free to change job but still maintain the immunities.

If this is not possible, I wish to request an ASM, that allow a blank R/S/M ability (specifically ability ID 01FE or 01FF) to be able to grant status immunity of choice, the reason for this instead of using equipment is because I wish to give uniqueness for that character, which only he/she could learn that ability

My thanks
Title: Re: ASM Requests
Post by: nitwit on August 01, 2022, 08:33:54 pm
Quote from: stardragoon9 on May 23, 2022, 11:13:42 pmI don't know if this is possible with our current knowledge, but I wish to make a character within the player formation (not limited to ENTD) to permanently immune to certain status effect, not tied to job, meaning the character is free to change job but still maintain the immunities.

If this is not possible, I wish to request an ASM, that allow a blank R/S/M ability (specifically ability ID 01FE or 01FF) to be able to grant status immunity of choice, the reason for this instead of using equipment is because I wish to give uniqueness for that character, which only he/she could learn that ability

My thanks
Emmy has an asm hack in Emmy.xml, usable with FFTOrgASM, that says:
QuoteSlot 0x1c8 = Immunity to all negative stat changes

Requires Tying it all together 1.  Requires Disable Equip X/Female equips (if you want to keep this ability on the same slot I used and not stack with vanilla's effect, otherwise move its slot).  Purpose of this routine is to make stat change formulas stack properly with other abilities.  This must go last in Tying it all together 1.

FYI all XML files are just text files, you can "right click -> properties -> opens with" to make them open with notepad instead of Microsoft Edge. Makes searching for text like "immunity" much easier.

As for making an asm hack that makes a specific R/S/M ability grant immunity to a status, I'm sure if it were easy we'd already have it. I assume you need to find everything that checks for status immunities when inflicting a status, as well as permanent status via classes and gear, and add checks to have them always fail or be overridden by your chosen R/S/M. Seems like a tall order to me, but I can always be wrong.

You also need at least 5 free bytes somewhere for all the status effects.
Title: Re: ASM Requests
Post by: Super Saiyan Eevee on September 05, 2022, 11:54:18 am
Hi all,

Is it possible to change a support ability to a skillset? Very similar to how the Dualcast Red Mage mod works but rather than 2 skills, just one. I would like to get rid of Catch (since I literally removed any reason for this ability) but Defend (stupid ability but usable still)  might be easier since it already has a menu action and skillset associated with it.  Im actually looking to get rid of the Chemist class but would still like to use items basically for free without having to learn the Item abilities if that makes sense.

Or even better, being able to replace Catch with Celdia's Dualcasting and Defend with Items.

Maybe one ASM that allows you to pick what Support ability you want to replace with Dualcasting (choose from one drop down) and another that lets you pick what ability you want to replace with what skillset (choose from two drop downs).

If it makes any difference, I am using the Lion War + QoL mod as a base.
Title: Re: ASM Requests
Post by: Zanbamon on February 20, 2023, 11:37:23 am
Nevermind
Title: Re: ASM Requests
Post by: Grond on April 18, 2023, 10:01:07 pm
Maybe some of these belong more in the ASM Hack Proposals thread, but it hasn't been posted in for years and I don't want to bump it.

•Halve X & Y values (i.e. power & hit rate) of abilities when using them through Math Skill
•Make 'Move-etc Up' abilities up work when stacked (& work properly with Cancel Movement QoL patch)
•Stop your units from getting free CT at unit changeover in 2-part battles (e.g. Velius, Altima fights)
•Stop Throw being affected by Blade Grasp
•Make Float status negate fall damage
•Make Counter Magic not use MP
•Restrict Teleport vertical range by Move (or Jump), like horizontal range is

Bugfixes & similar:
•Prevent units from going 'Missing' on propositions at chapter change (call back automatically)
•Prevent AI from pointlessly re-selecting performances (Although I think the 'Save CT' checkbox in FFTPatcher may reduce this)
•Fix 'poaching doesn't remove corpse in deep water' bug
•Fix game hang when using Jump while mounted in deep water
•Fix getting stuck in air if jumping with magic gun equipped on a Blade Grasp-user
•Bow animation glitch fix (hide arrow/bolt & don't show damage twice if using an animation other than FFFF)
•Cancel out of menu for 'prompted' battles like Lionel/Riovanes/Bethla

Lower priority:
•Allow AI to choose to mount chocobos
•Implement Class M-Evade
•Unlearn abilities & get (0-100%, configurable) of JP cost back
•Remove redundant movement ability column when using 'Combine Support and Movement' patch
•Allow multiple units to learn ability 'Blue Mage style' when hit all at once
•Enable custom palettes for monsters only for palettes 03-07
•Hide date & war funds displays when panning world map with square button
•Create an ability (active or passive?) that highlights tiles containing Move-Find items/traps
•Invisibly(?) increase success %s of actions by 1% if between 1-99%
Title: Re: ASM Requests
Post by: Sharp on October 21, 2023, 09:46:19 pm
1. Change the amount of HP/MP bonus granted by head and body slot armors from fixed values between 0 and 255 to percentages of base HP between -128 to 127.

Purposes: improve scaling of armor HP/MP bonuses, improve long term viability of niche armors, allow for greater armor differentiation, and allow extreme (and extremely cursed) variation in HP/MP bonuses and penalties.

2. Merge the Equip Gun effect with the Throw Item effect.

Purpose: make both effects more useful for other job.

3. Link the various basic effects of pseudo-action skillsets (Item, Charge, Jump, Geomancy, Throw, and Calculate) to an arbitrary skill slot, so these skillsets can instead be included as a single skill in a normal skillset. YMMV as to what "basic" means for each skillset.

Purpose: retain these skillsets while integrating them with more useful and FF lore friendly skills suitable for their respective jobs.

4. Link the advanced effects of the above skillsets to an arbitrary Support skill slot. YMMV as to what "advanced" means for each skillset.

Purpose: replace many of the less useful Support skills or supplement them if linked with the Equip [item] skills, give the player a reason to use any class with these Supports inherent to them.

5. Create a table of bonuses or penalties to class stat multipliers whose effects can be linked to (or referenced by, depending on how it's implemented) arbitrary Support skills.

Purpose: link these effects to the the Supports in #4 and maybe the Equip [item] skills too to give the player a reason to use these Supports and those skillsets.
Title: Re: ASM Requests
Post by: Cleiton Santos on October 31, 2023, 11:53:32 am
 
 Hello friends from Ivalice,
 Does anyone happen to know how I can increase the Fury and Magick Boost skills to +2 instead of +1?

 I would also like to improve Faith Boost and Bravery Boost

 In the Wotl version of psp

Title: Re: ASM Requests
Post by: JEETKUNJO on December 31, 2023, 10:19:39 pm
Hello, first of all : I must thanks a lot this community, you made the modding accessible to everyone with all thoses tools !
I'm actually making the game the way i always wanted to : having some npcs playable and  rebalancing some overpowered classes,
but I'm stuck at a point, I'd like to add a " transform" skill, i used the base of the " moldball virus" that transform you into a morbol, i swapped the morbol sprite with the desired character , if the character is loaded in the map it works, but i have two problems and i think i need to modify the formula of the molball virus spell to fix that , it's not possible with FFTpatcher so i have to , i suppose go into the " battle.bin" file and find the offset of the molball virus spell and modify the hex value right?

If this is the way to go I'd like to know if anyone know the actual location of molball virus spell, and if there is a way to modify it, because there is 3 problems with the actual skill:

1/ it make the character go back to lvl 1
2/ its not usable on heroes, only generic
3/ it doesnt seems to work with autocast

So I'd like to know if anyone have an idea about this, is this possible to make the spell so i can AUTOcast it with a hero character, and not going down to lvl 1?

I'm not asking for anyone to do it for me, but since i never modified the game data directly with hex editor for FFT, I'm kinda lost when i try to localize the spell im looking for and the needed values,

Thanks in advance
Title: Re: ASM Requests
Post by: RetroTypes on January 01, 2024, 10:42:56 pm
Quote from: JEETKUNJO on December 31, 2023, 10:19:39 pmHello, first of all : I must thanks a lot this community, you made the modding accessible to everyone with all thoses tools !
I'm actually making the game the way i always wanted to : having some npcs playable and  rebalancing some overpowered classes,
but I'm stuck at a point, I'd like to add a " transform" skill, i used the base of the " moldball virus" that transform you into a morbol, i swapped the morbol sprite with the desired character , if the character is loaded in the map it works, but i have two problems and i think i need to modify the formula of the molball virus spell to fix that , it's not possible with FFTpatcher so i have to , i suppose go into the " battle.bin" file and find the offset of the molball virus spell and modify the hex value right?

If this is the way to go I'd like to know if anyone know the actual location of molball virus spell, and if there is a way to modify it, because there is 3 problems with the actual skill:

1/ it make the character go back to lvl 1
2/ its not usable on heroes, only generic
3/ it doesnt seems to work with autocast

So I'd like to know if anyone have an idea about this, is this possible to make the spell so i can AUTOcast it with a hero character, and not going down to lvl 1?

I'm not asking for anyone to do it for me, but since i never modified the game data directly with hex editor for FFT, I'm kinda lost when i try to localize the spell im looking for and the needed values,

Thanks in advance

Welcome to FFH!

For the Morbol Virus, you'll need to edit the damage formula associated with that skill, formula 58, found HERE (https://ffhacktics.com/wiki/58_Generic:_Set_Morbol:_Hit(MA%2BX)%25).

You'll see in the routine that this is designed to always miss on non-generic targets, so removing that check would allow it to be cast on unique units.

As for why the target is getting their level reset, I'm not aware of where the game would be doing that, perhaps someone else can speak to that.

And not sure what you mean by "autocast"? Are you trying to make it a reaction ability?

Feel free to reach out in our Discord (https://discord.gg/xpXa8VEV2k) as well!
Title: Re: ASM Requests
Post by: JEETKUNJO on January 02, 2024, 10:41:35 am
Thanks a lot ! Thats make me save so much time , about the " autocast " i mean that use it on caster, like "accumulate" or "scream" thoses abilities do not let you choose a target, it work only on the caster, but when i cast the morboll virus on the caster, the animation works, the % of hitting is displayed , but the caster is not transformed ( no "missed" or " guarded" , just no special message like if the abilities worked, but the sprite is unmodified, it works only when i'm targetting someone else than the caster )

edit : I have simply replaced the missed routine with zero and it works with unique character, and about my level, its not changed (i think i simply made a mystake for this statement)

Now i noticed a bigger issue, when the fight is done, the character dont go back to his normal sprite, he stay with the "morbol" sprite forever, any idea to make the sprite change temporary? making it reset when the fight is over
Title: Re: ASM Requests
Post by: JediWyrm on March 23, 2024, 01:39:17 pm
Can a toggle be added to the options for a no exp setting? That way you can level up jobs without the random encounters getting overpowered quickly or having to do the level down tricks.