Users browsing this thread: 1 Guest(s)
Revert Waits for Action

#1
Posts: 614
Threads: 49
Thanks Received: 0
Thanks Given: 4
Joined: Feb 2017
Reputation: 25
Status
None
I am working on a small hack to Terra's Morph command. Basically, in order for Morph not to be grayed out, the "Morph Bank" needs to be at at least 16 (Hex $10). Now, a value of 16 is gone in the blink of an eye... 1-2 turns on average in the WoB, 2-3 in the WoR. In the World of Balance, it can take 8-10 battles to fill it up. My fix is a bit simpler than the "Resilient Morph" patch. I'm making it so that at the end of the battle, the game checks to see if Terra's morph bank has fallen below 16. If so, it will start her at 16 and THEN add double the ability points you gained during the battle. That way, you will always be able to use Morph once per battle.

One MORE thing I would like to address is the Revert command. Right now, Revert will take priority over any other action. So if Terra is queued up to attack or cast a spell in Esper form, she will revert to human form before taking her action. This is unfair, since a lot of times, you're just waiting on the enemy animations to finish. Does anyone know how to put revert in queue so that it doesn't interrupt other actions? I've tried changing C2/067F (the time delay from entering the Revert command to performing it) from 00 to 10, and it did add the delay, but still interrupted other actions.

EDIT: I found it. The block of code in question is as follows, with the key line marked with an asterix:
Code:
C2/122C: A9 04        LDA #$04
C2/122E: 8D 7A 3A     STA $3A7A      (Store Revert as command)
*C2/1231: 20 B2 4E     JSR $4EB2      (queue it, in entity's counterattack and periodic
                                     damage/healing queue)
C2/1234: AD 31 3F     LDA $3F31      (Load the remaining amount of morph time DIV 256, if any)
C2/1237: 9D 04 3B     STA $3B04,X    (Store it to the character's Morph gauge)
(Why do we bother zeroing all these timers and variables here when the forthcoming
Revert can handle it?  Presumably to avoid gauge screwiness and a bunch of pointless
calls to this function should Terra's Morph timer run down in the middle of an attack
animation..)
C2/123A: 60           RTS

So the Revert action gets stored in the priority queue. If you change C2/1231 to JSR $4ECB, this stores it in the normal action queue. It allows Terra to take her final action before Reverting. However, I will need to look into this more tomorrow, as it introduces a graphical bug where Terra steps forward to do her final action, then steps forward AGAIN to revert, but only steps back once. It's not as simple as removing the step forward/step back in the Revert animation, as there's still a step back that's missing from her first action. If anyone has any ideas, please share. Might save me an hour or two of looking into it.
EDIT: Found it. Added a branch to the animation script to check to see if the character had already stepped forward.

Also, I've written some optional code for the Final Battle tier transitions that replenishes some of the Morph Supply for the next tier. However, I don't understand the Final Battle tier transitions that well, so I'm not sure if if I can DO a "CMP $#00, BNE" to check to see if Terra is one of the surviving characters and only add to the Morph Supply if she's there. If anyone is willing to do a code review on it, please let me know and I'll PM you with the details.


Projects:
FFVI: Divergent Paths (Completed) - a complete storyline and gameplay hack of FF6 that adds Leo as a playable character
  Find
Quote  

#2
Posts: 208
Threads: 3
Thanks Received: 0
Thanks Given: 8
Joined: May 2013
Reputation: 0
Status
None
That's an interesting fix to Morph, I'm not a fan of the Resilient Morph patch either so I came up with something else in my hack but I like your idea to those that I want to use Morph at any time.

I'm still figuring out how to make Morph balanced, it's so overpowered that I prefer to increase the minimum AP to 96-128 before Morph is available to use, that way it feels like a Limit Break (only usable once in a while) and will also always last a decent amount of time. But even then it was still overpowered so I reduced the damage increase to +50% instead of +100%. I'm still testing all of this but so far it's pretty balanced (my hack focus a lot on balancing the game while making the game challenging).

I'm very interested in your Revert hack, indeed the priority on Revert can be very annoying sometimes so I would definitely use your Revert hack.

Excellent idea on replenish AP between fights during Final Battle, I would definitely use that as well! However, what would happen if Terra is already morphed during the AP replenish? I can imagine the gauge filling up a little but implementing that could end up with complications.



  Find
Quote  

#3
Posts: 614
Threads: 49
Thanks Received: 0
Thanks Given: 4
Joined: Feb 2017
Reputation: 25
Status
None
The morph gauge and the morph supply have no real-time interaction. The morph command dumps the supply value into a denominator for the time gauge, and the revert command converts remaining time back into a morph supply value.

I'm interested in your +50 percent hack. Can you post here or pm me? Maybe we can combine forces into an awesome improvement hack.


Projects:
FFVI: Divergent Paths (Completed) - a complete storyline and gameplay hack of FF6 that adds Leo as a playable character
  Find
Quote  

#4
Posts: 208
Threads: 3
Thanks Received: 0
Thanks Given: 8
Joined: May 2013
Reputation: 0
Status
None
Sure! It's a really simple modification:

Code:
C2/3369: F0 04        BEQ $336F      (Branch if attacker not morphed)
C2/336B: E6 BC        INC $BC
C2/336D: E6 BC        INC $BC        (Double damage if morphed)

At C2/336D, change E6 BC to EA EA



  Find
Quote  

#5
Posts: 614
Threads: 49
Thanks Received: 0
Thanks Given: 4
Joined: Feb 2017
Reputation: 25
Status
None
Thanks for sharing. It's possible that Morph could be "powered up", either by relics or by events. For example, in the Vanilla rom, Terra's Morph Gauge decreases at half the rate (permanently) after she has a solo fight with Phunbaba. We could add that same check here to say, "50% increase in power normally, 100% increase after the Phunbaba fight".

We could code either or both of those effects onto a relic. For example, a relic could check for Item effect "Special 2, Bit 2" (currently a ? in FF3usME), and if it finds that bit, increase the power of Morphed Terra. Thoughts?


Projects:
FFVI: Divergent Paths (Completed) - a complete storyline and gameplay hack of FF6 that adds Leo as a playable character
  Find
Quote  

#6
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
(09-03-2018, 05:37 PM)PowerPanda Wrote: We could code either or both of those effects onto a relic. For example, a relic could check for Item effect "Special 2, Bit 2" (currently a ? in FF3usME), and if it finds that bit, increase the power of Morphed Terra. Thoughts?

This sound like a reasonable power up that wouldn't differ that much from vanilla. Anyway to keep it simple, it's either 50%, 100%, 150%, etc..
  Find
Quote  

#7
Posts: 208
Threads: 3
Thanks Received: 0
Thanks Given: 8
Joined: May 2013
Reputation: 0
Status
None
It's a pretty good idea but I don't consider myself a coder. I can read some Assembly, I can mess with Hex and adapt patches but that's about it, all I can do is offer limited support.



  Find
Quote  

#8
Posts: 614
Threads: 49
Thanks Received: 0
Thanks Given: 4
Joined: Feb 2017
Reputation: 25
Status
None
Hmm... so the bit I was hoping to use for this is a little complicated. It's free for use in the field, but in battle, it gets co-opted as the "double earring" effect bit. There are a whole bunch of other bits I could push the double earring effect onto (for example, any of the bits that raise HP and MP are only used during battle initialization), but that's a lot of code re-arrangement and work for an effect that I don't actually plan to use in my hack. I think I'm going to abandon the idea. I am also going to hold off on the Final Battle tier Morph Supply replenishment for now, and save it for version 2 of the patch if I make it. I just have too many half-finished patches out there right now, and I need to not get bogged down in the minutia.

So for now, I'll work on bug testing this patch and getting it released. It will have 3 parts:
1. Morph Supply Replenishment (my patch)
2. Polite Revert (my patch)
3. Morph Nerf (Warrax's patch)


Projects:
FFVI: Divergent Paths (Completed) - a complete storyline and gameplay hack of FF6 that adds Leo as a playable character
  Find
Quote  

#9
Posts: 208
Threads: 3
Thanks Received: 0
Thanks Given: 8
Joined: May 2013
Reputation: 0
Status
None
I just implemented the Revert hack, the game freeze when Morph deplete itself (when Revert happens automatically) but works just fine if you actually use the Revert command manually. I'm at work atm so I won't be able to investigate for now.



  Find
Quote  

#10
Posts: 614
Threads: 49
Thanks Received: 0
Thanks Given: 4
Joined: Feb 2017
Reputation: 25
Status
None
Here is the patch that is completed, unless someone finds a bug. I will wait a few days before posting it to Romhacking.Net, and will create a separate post under the Patches board on this website. I have separated the changes into 3 patches. 

1. Reliable Morph - Changes the way the Morph Supply is replenished.
2. Polite Revert - Changes Revert to a non-priority action.
3. Balanced Boost - Changes the Morph damage boost to 150%.

I have tested all of these while viewing the RAM in SNES9X debugger. They seem to work just fine. I have tested the following scenarios as well:
1. Morph runs out while Terra is asleep. Result: When Terra wakes up, she reverts.
2. Terra is KOed while morphed. Result: She unmorphs when falling unconscious.

I have yet to test for Stop, Frozen, Petrify, and Zombie statuses, but I do not see how they would be any different from the vanilla Rom. The Revert action is still being taken; it's just in another queue.


Attached Files
.zip  Morphenomenal.zip (4.63 KB, 13 downloads)


Projects:
FFVI: Divergent Paths (Completed) - a complete storyline and gameplay hack of FF6 that adds Leo as a playable character
  Find
Quote  
[-] The following 2 users say Thank You to PowerPanda for this post:
  • madsiur (09-04-2018), ZackNAttack (06-26-2020)



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite