Author Topic: Regen/Spirit Wave Command  (Read 6623 times)

Deathlike2

  • Moderator
  • *
  • Posts: 3,538
  • I'm looking at you, bitch!
    • View Profile
Regen/Spirit Wave Command
« on: February 18, 2008, 01:33:37 AM »
Healing done is 10... but I will look into see if that can be tweaked (and see if it based on something else).

Command is supposed to heal 8 times (I'll double check just to be sure).

In the SNES version, FuSoYa is "held up" while this command is executed. In the GBA version, FuSoYa is free to execute another turn while the command is in effect.

The command effect is not reflectable... AFAIK.
« Last Edit: March 17, 2008, 07:04:42 PM by Deathlike2 »
Working on the next Yet To Be Named FF4 "Hardtype" Hack Download Latest: v1.48

Video Demos: #1 #2 #3

Deathlike2

  • Moderator
  • *
  • Posts: 3,538
  • I'm looking at you, bitch!
    • View Profile
Re: Regen/Spirit (Wave) Command
« Reply #1 on: March 17, 2008, 08:29:34 AM »
The number of times of healing is not fixed. In fact, it is simply tied to the Agility, relative to the group.

Regen healing normally under my group: 10
Regen healing when FuSoYa under Haste: ~8
Regen healing when FuSoYa under Slow: 20
Regen healing when FuSoYa under Slowx2: 26
Regen healing when FuSoYa under Slowx3: 27

Slow has a greater impact on healing. If this suggests anything insane, give FuSoYa a Cursed Ring so he's stuck doing healing for longer periods of times.

I suspect this behavior is similar to FF4A.

This suggests Slow being very stackable.. Haste is relatively inconclusive at best.
Working on the next Yet To Be Named FF4 "Hardtype" Hack Download Latest: v1.48

Video Demos: #1 #2 #3

Deathlike2

  • Moderator
  • *
  • Posts: 3,538
  • I'm looking at you, bitch!
    • View Profile
Re: Regen/Spirit (Wave) Command
« Reply #2 on: March 17, 2008, 09:16:33 AM »
Regen healing can last forever if Stop has been casted on FuSoYa while on Regen Status. Regen's timer seems to be messed up under this, and FuSoYa then is allowed to input other commands under this instance.

Executing Regen again resets the timer.
Working on the next Yet To Be Named FF4 "Hardtype" Hack Download Latest: v1.48

Video Demos: #1 #2 #3

Phoenix

  • FF4 Hacker
  • *
  • Posts: 456
    • View Profile
    • Phoenix Hacks
Re: Regen/Spirit (Wave) Command
« Reply #3 on: March 17, 2008, 05:11:56 PM »
This corresponds with the speed modifier. Quote taken from the Tower of Bab-il documents:

Quote
starts at 10. slow adds +08 (upper bound 20), haste adds -3 (lower bound 0C)

Deathlike2

  • Moderator
  • *
  • Posts: 3,538
  • I'm looking at you, bitch!
    • View Profile
Re: Regen/Spirit (Wave) Command
« Reply #4 on: March 17, 2008, 07:03:02 PM »
This corresponds with the speed modifier. Quote taken from the Tower of Bab-il documents:

Quote
starts at 10. slow adds +08 (upper bound 20), haste adds -3 (lower bound 0C)

Well, Haste doesn't seem to have any impact.

Hermes Shoes and Haste are wierd though...

Haste has a value of 253, Hermes Shoes has a value of 248. It's still relatively inconclusive at best.
Working on the next Yet To Be Named FF4 "Hardtype" Hack Download Latest: v1.48

Video Demos: #1 #2 #3

Deathlike2

  • Moderator
  • *
  • Posts: 3,538
  • I'm looking at you, bitch!
    • View Profile
Re: Regen/Spirit (Wave) Command
« Reply #5 on: March 17, 2008, 07:32:06 PM »
Now that I think about it...

3 is the result of 256-253...

Which implies Hermes Shoes has a power of 256-248.. which implies it has a power of 8.
Working on the next Yet To Be Named FF4 "Hardtype" Hack Download Latest: v1.48

Video Demos: #1 #2 #3

Deathlike2

  • Moderator
  • *
  • Posts: 3,538
  • I'm looking at you, bitch!
    • View Profile
Re: Regen/Spirit Wave Command
« Reply #6 on: March 17, 2008, 10:15:14 PM »
Linking old thread: http://slickproductions.org/forum/index.php?topic=118.0
Different related thread: http://slickproductions.org/forum/index.php?topic=425.0

I'm trying to avoid discussing the ATB too much, but I'm working on updating some of the info.
Working on the next Yet To Be Named FF4 "Hardtype" Hack Download Latest: v1.48

Video Demos: #1 #2 #3

Phoenix

  • FF4 Hacker
  • *
  • Posts: 456
    • View Profile
    • Phoenix Hacks
Re: Regen/Spirit Wave Command
« Reply #7 on: March 17, 2008, 10:43:27 PM »
The most significant bit on the speed is the sign of the number. So values above 0x80 are negative, hence the -3 and -8 of Haste and Hermes Shoes.
« Last Edit: March 17, 2008, 10:48:45 PM by Phoenix »

Deathlike2

  • Moderator
  • *
  • Posts: 3,538
  • I'm looking at you, bitch!
    • View Profile
Re: Regen/Spirit Wave Command
« Reply #8 on: March 17, 2008, 10:51:41 PM »
Yay signed numbers.

Only causes more confusion at times...
Working on the next Yet To Be Named FF4 "Hardtype" Hack Download Latest: v1.48

Video Demos: #1 #2 #3

Phoenix

  • FF4 Hacker
  • *
  • Posts: 456
    • View Profile
    • Phoenix Hacks
Re: Regen/Spirit Wave Command
« Reply #9 on: March 29, 2008, 08:03:26 PM »
I've finished looking into this subroutine, and have discovered the calculation for how long Regen lasts. It seems very complicated considering how little the command is used, and how little variation it results in. I believe the calculation is:

Code: [Select]
Timer = (value at A0089 - 0x80) x relative speed x speed modifier / 0x10
This timer counts down about two or three times every character (ally and enemy) turn. HP is restored every 6 clicks of the timer. Stop probably uses the same timer, which is why it restores FuSoYa's movements after it's used.

I've also found two ways to make this command more useful. The first is simply increasing the HP recovery. The data to change is at 1E5E9 (FF2us ROM with header) or 1E601 (FF4j ROM with header). This byte is 0x0A = 10 HP, so changing this to 0xFF = 255 HP. Unfortunately, you can't make it any higher than this, at least not that I could discover. The second way I thought would be useful is to let FuSoYa input commands again immediately (i.e. have no delay) and just restore 10 HP for the entire battle. To do this, change the data at 1E601 (FF4j: 1E619) to 01, and change the data at 1E60F (FF4j: 1E627) to 00. Naturally, you can combine these two fixes, but I think that makes it too powerful.

I'll be creating these patches later to put on Romhacking.net if you don't want to change the data yourself and can wait for the patch.

Deathlike2

  • Moderator
  • *
  • Posts: 3,538
  • I'm looking at you, bitch!
    • View Profile
Re: Regen/Spirit Wave Command
« Reply #10 on: March 29, 2008, 08:20:09 PM »
I'd say doing both would be worthwhile.

My guess is that you can do both, but to a more limited extent.

Regen should heal (12?, 15?, 16?, 18?) 20 to 25 and not lock FuSoYa into a near-useless state. That's the best I can come up with w/o making it imbalanced.

Think of the healing in terms of the Medicine command and Pray command. It would be a far better than Medicine, but be at-par with the Pray command when Rosa has a maxed Will stat (and factor in that Pray is unreliable and a multitargeted Cure1 doesn't heal much late game). It's pretty solid a change IMO.

After seeing the command "lockup timer" change in FF4A, the command is just a "might as well waste FuSoYa's turn for free healing" (but that's because FuSoYa sucks). Increasing the healing without wasting too much time is a bad idea...
« Last Edit: March 29, 2008, 08:29:08 PM by Deathlike2 »
Working on the next Yet To Be Named FF4 "Hardtype" Hack Download Latest: v1.48

Video Demos: #1 #2 #3

Deathlike2

  • Moderator
  • *
  • Posts: 3,538
  • I'm looking at you, bitch!
    • View Profile
Re: Regen/Spirit Wave Command
« Reply #11 on: September 30, 2008, 11:30:13 PM »
Mega :bump:

The Stop timer bug is fixed in FF4A. It's great for FF4 though.
Working on the next Yet To Be Named FF4 "Hardtype" Hack Download Latest: v1.48

Video Demos: #1 #2 #3

Deathlike2

  • Moderator
  • *
  • Posts: 3,538
  • I'm looking at you, bitch!
    • View Profile
Re: Regen/Spirit Wave Command
« Reply #12 on: November 19, 2012, 06:20:51 PM »
 :bump:
The WSC port doesn't do the FF4A niceness of not locking FuSoYa into a coma-ish state... so it's more like the original.
Working on the next Yet To Be Named FF4 "Hardtype" Hack Download Latest: v1.48

Video Demos: #1 #2 #3

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Re: Regen/Spirit Wave Command
« Reply #13 on: September 11, 2013, 02:05:09 PM »
Phoenix mentioned the Regen Subroutine a while back, but I thought toperhaps  show it in full...

Regen Routine
Code: [Select]
$03/E3FA 9C 7C 35 STZ $357C  [$7E:357C] A:0003 X:0032 Y:0000 P:envMxdizc - Store Zero in 7E357C.
$03/E3FD A2 0A 00 LDX #$000A A:0003 X:0032 Y:0000 P:envMxdizc - Load 0A into X
$03/E400 8E 7D 35 STX $357D  [$7E:357D] A:0003 X:000A Y:0000 P:envMxdizc - Store X in 7E357D (Healing Field)
$03/E403 EE 0A 39 INC $390A  [$7E:390A] A:0003 X:000A Y:0000 P:envMxdizc - Add 1 to 7E390A
$03/E406 A9 19 LDA #$19 A:0003 X:000A Y:0000 P:envMxdizc - Load 19 into A. (Command Name)
$03/E408 8D C8 34 STA $34C8  [$7E:34C8] A:0019 X:000A Y:0000 P:envMxdizc - Store A into 7E34C8
$03/E40B A9 10 LDA #$10 A:0019 X:000A Y:0000 P:envMxdizc - Load 10 into A. (Message Bank)
$03/E40D 8D C7 34 STA $34C7  [$7E:34C7] A:0010 X:000A Y:0000 P:envMxdizc - Store A into 7E34C7.
$03/E410 A9 22 LDA #$22 A:0010 X:000A Y:0000 P:envMxdizc - Load 22 into A. (Appears to be partially necessary for the actual continuation of routine.)
$03/E412 8D 7B 39 STA $397B  [$7E:397B] A:0022 X:000A Y:0000 P:envMxdizc - Store A into 7E397B.
$03/E415 A9 0C LDA #$0C A:0022 X:000A Y:0000 P:envMxdizc - Load 0C into A. (As above.)
$03/E417 85 D6 STA $D6    [$00:00D6] A:000C X:000A Y:0000 P:envMxdizc - Store A into D6.
$03/E419 A5 CD LDA $CD    [$00:00CD] A:000C X:000A Y:0000 P:envMxdizc - Load xCD into A.
$03/E41B 20 36 9E JSR $9E36  [$03:9E36] A:0000 X:000A Y:0000 P:envMxdiZc - Jump to Subroutine.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
$03/9E36 9C 58 35 STZ $3558  [$7E:3558] A:0000 X:000A Y:0000 P:envMxdiZc - Store Zero in 7E3558
$03/9E39 C9 05 CMP #$05 A:0000 X:000A Y:0000 P:envMxdiZc - Does A read 05?
$03/9E3B 90 03 BCC $03    [$9E40] A:0000 X:000A Y:0000 P:eNvMxdizc - If not branch to 039E40.
$03/9E40 20 89 84 JSR $8489  [$03:8489] A:0000 X:000A Y:0000 P:eNvMxdizc - Jump to Cleaning/Timing Subroutine.
$03/9E43 A6 A6 LDX $A6    [$00:00A6] A:0000 X:0000 Y:0000 P:envMxdiZc - Load X from A6.
$03/9E45 BD 60 20 LDA $2060,x[$7E:2060] A:0000 X:0000 Y:0000 P:envMxdiZc - Load A from User's Relative Speed.
$03/9E48 85 A9 STA $A9    [$00:00A9] A:0005 X:0000 Y:0000 P:envMxdizc - Store Relative Speed in A9.
$03/9E4A BD 61 20 LDA $2061,x[$7E:2061] A:0005 X:0000 Y:0000 P:envMxdizc - Load A from User's Relative Speed 2.
$03/9E4D 85 AA STA $AA    [$00:00AA] A:0000 X:0000 Y:0000 P:envMxdiZc - Store A in AA.
$03/9E4F BD 3B 20 LDA $203B,x[$7E:203B] A:0000 X:0000 Y:0000 P:envMxdiZc - Load User's Speed Modifier into A.
$03/9E52 A8 TAY A:0010 X:0000 Y:0000 P:envMxdizc  - Transfer A to Y.
$03/9E53 8C 79 39 STY $3979  [$7E:3979] A:0010 X:0000 Y:0010 P:envMxdizc - Store Y in 7E3979.
$03/9E56 DA PHX A:0010 X:0000 Y:0010 P:envMxdizc - Push Index Register X?
$03/9E57 A5 D6 LDA $D6    [$00:00D6] A:0010 X:0000 Y:0010 P:envMxdizc - Load A from D6.
$03/9E59 0A ASL A A:000C X:0000 Y:0010 P:envMxdizc - Multiply A by 2.
$03/9E5A AA TAX A:0018 X:0000 Y:0010 P:envMxdizc - Transfer A to X.
$03/9E5B BF 05 A0 03 LDA $03A005,x[$03:A01D] A:0018 X:0018 Y:0010 P:envMxdizc - Load A from 03A01D?
$03/9E5F 85 80 STA $80    [$00:0080] A:0095 X:0018 Y:0010 P:eNvMxdizc - Store A in 80.
$03/9E61 BF 06 A0 03 LDA $03A006,x[$03:A01E] A:0095 X:0018 Y:0010 P:eNvMxdizc - Load A from 03A01E?
$03/9E65 85 81 STA $81    [$00:0081] A:009F X:0018 Y:0010 P:eNvMxdizc - Store A in 81.
$03/9E67 A9 03 LDA #$03 A:009F X:0018 Y:0010 P:eNvMxdizc - Load 03 into A.
$03/9E69 85 82 STA $82    [$00:0082] A:0003 X:0018 Y:0010 P:envMxdizc - Store A in 82.
$03/9E6B FA PLX A:0003 X:0018 Y:0010 P:envMxdizc - Pull Index Register X?
$03/9E6C DC 80 00 JML [$0080][$03:9F95] A:0003 X:0000 Y:0010 P:envMxdiZc - Jump Long to 039F95
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$03/E41E A9 03 LDA #$03 A:0000 X:0032 Y:0032 P:envMxdizc - Load 03 into A.
$03/E420 20 C8 85 JSR $85C8  [$03:85C8] A:0003 X:0032 Y:0032 P:envMxdizc - Jump to Subroutine.
$03/E423 A9 08 LDA #$08 A:0000 X:0003 Y:0032 P:envMxdiZc - Load 08 into A.
$03/E425 9D 06 2A STA $2A06,x[$7E:2A09] A:0008 X:0003 Y:0032 P:envMxdizc - Store A into 7E2A09.
$03/E428 A6 A6 LDX $A6    [$00:00A6] A:0008 X:0003 Y:0032 P:envMxdizc - Load X from A6.
$03/E42A A9 22 LDA #$22 A:0008 X:0000 Y:0032 P:envMxdiZc - Load 22 into A. (Changing this will change the action they take once Regen completes)
$03/E42C 9D 51 20 STA $2051,x[$7E:2051] A:0022 X:0000 Y:0032 P:envMxdizc - Store A in Character's next command.
$03/E42F 20 A6 85 JSR $85A6  [$03:85A6] A:0022 X:0000 Y:0032 P:envMxdizc - Jump to Subroutine.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$03/85A6 A9 F8 LDA #$F8 A:0022 X:0000 Y:0032 P:envMxdizc - Load F8 into A.
$03/85A8 8D C6 33 STA $33C6  [$7E:33C6] A:00F8 X:0000 Y:0032 P:eNvMxdizc - Store A in 7E33C6.
$03/85AB A9 03 LDA #$03 A:00F8 X:0000 Y:0032 P:eNvMxdizc - Load 03 into A.
$03/85AD 8D C7 33 STA $33C7  [$7E:33C7] A:0003 X:0000 Y:0032 P:envMxdizc - Store A in 7E33C7.
$03/85B0 60 RTS A:0003 X:0000 Y:0032 P:envMxdizc - Return
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$03/E432 A9 36 LDA #$36 A:0003 X:0000 Y:0032 P:envMxdizc - Load 36 into A.
$03/E434 8D CA 34 STA $34CA  [$7E:34CA] A:0036 X:0000 Y:0032 P:envMxdizc - Store A in 7E34CA.
$03/E437 60 RTS A:0036 X:0000 Y:0032 P:envMxdizc - Return.

Hmm, there is clearly something missing here, likely alot...

There is no explanation within how the game puts the 10 HP into well... HP, and if there 's a way to possibly modify that to say MP like TAY did.





Deathlike2

  • Moderator
  • *
  • Posts: 3,538
  • I'm looking at you, bitch!
    • View Profile
Re: Regen/Spirit Wave Command
« Reply #14 on: September 11, 2013, 03:29:46 PM »
Phoenix IIRC wrote a hack for this command to change the healing value. I suggest you look into that @ RHDN.
Working on the next Yet To Be Named FF4 "Hardtype" Hack Download Latest: v1.48

Video Demos: #1 #2 #3