Alright, this would ordinarily go in my Note thread, but it seems more pertinent to this discussion here, I've finally started to make real headway into the way the game decides and calculates out-of-battle spells, including a full disassembly of Curing Magic.
[Cure1 Code
$01/B753 AF F5 97 0F LDA $0F97F5[$0F:97F5] A:B753 X:B737 Y:0320 P:eNvMxdIzc - Load A from Cure1's Power.
$01/B757 8D 91 1B STA $1B91 [$7E:1B91] A:B704 X:B737 Y:0320 P:envMxdIzc - Store A in 7E1B91
$01/B75A 80 4A BRA $4A [$B7A6] A:B704 X:B737 Y:0320 P:envMxdIzc - Branch to 01B7A6
--------------------------------------------------------------------------------
Cure2 Code
$01/B75C AF FB 97 0F LDA $0F97FB[$0F:97FB] A:B75C X:B737 Y:0320 P:eNvMxdIzc - Load A from Cure2's Power.
$01/B760 8D 91 1B STA $1B91 [$7E:1B91] A:B70C X:B737 Y:0320 P:envMxdIzc - Store A in 7E1B91
$01/B763 80 41 BRA $41 [$B7A6] A:B70C X:B737 Y:0320 P:envMxdIzc - Branch to 01B7A6
----------------------------------------------------------------------------------------------------------
Cure3 Code
$01/B765 AF 01 98 0F LDA $0F9801[$0F:9801] A:B765 X:B737 Y:0320 P:eNvMxdIzc - Load A from Cure3's Power.
$01/B769 8D 91 1B STA $1B91 [$7E:1B91] A:B724 X:B737 Y:0320 P:envMxdIzc - Store A in 7E1B91.
$01/B76C 80 38 BRA $38 [$B7A6] A:B724 X:B737 Y:0320 P:envMxdIzc - Branch to 01B7A6.
Cure4 Code
$01/B76E AD BB 1B LDA $1BBB [$7E:1BBB] A:B76E X:B737 Y:0320 P:eNvMxdIzc - Load A from 7E1BBB. (Is it being Multi-targeted)
$01/B771 F0 09 BEQ $09 [$B77C] A:B700 X:B737 Y:0320 P:envMxdIZc - If 00 branch to 01B77C
-------------------------------------------------------------------------------------
$01/B773 AF 07 98 0F LDA $0F9807[$0F:9807] A:B7FF X:B737 Y:0320 P:eNvMxdIzc - Load Cure 4's Power into A.
$01/B777 8D 91 1B STA $1B91 [$7E:1B91] A:B748 X:B737 Y:0320 P:envMxdIzc - Store A in 7E1B91.
$01/B77A 80 2A BRA $2A [$B7A6] A:B748 X:B737 Y:0320 P:envMxdIzc - Branch to 01B7A6
--------------------------------------------------------------------------------------
$01/B77C A9 00 LDA #$00 A:B700 X:B737 Y:0320 P:envMxdIZc - Load 00 into A.
$01/B77E 20 87 B7 JSR $B787 [$01:B787] A:B700 X:B737 Y:0320 P:envMxdIZc - Jump to Subroutine.
-------------------------------------------------------------------------------------------
(Accessed at end of Routine)
$01/B781 1A INC A A:0700 X:1040 Y:0320 P:envMxdIZc +1 to A.
$01/B782 C9 05 CMP #$05 A:0701 X:1040 Y:0320 P:envMxdIzc - Has it gone through 5 Times for every character? (Which it can't because of the specific coding requirements...)
$01/B784 D0 F8 BNE $F8 [$B77E] A:0701 X:1040 Y:0320 P:eNvMxdIzc - If not branch back to 01B77E.
-------------------------------------------------------------------------------------------------------
$01/B786 60 RTS A:0705 X:0004 Y:0320 P:envMxdIZC - Return
-------------------------------------------------------------------------------------------
$01/B787 48 PHA A:B700 X:B737 Y:0320 P:envMxdIZc - Push A onto Stack.
$01/B788 20 B4 87 JSR $87B4 [$01:87B4] A:B700 X:B737 Y:0320 P:envMxdIZc - Jump to subroutine (??)
$01/B78B BD 8B 1B LDA $1B8B,x[$7E:1B8B] A:B700 X:0000 Y:0320 P:envMxdIZc - Load A from 7E1B8B.
$01/B78E F0 14 BEQ $14 [$B7A4] A:B7FF X:0000 Y:0320 P:eNvMxdIzc - If 00 branch to 0187B4.
$01/B790 A5 43 LDA $43 [$00:0143] A:B7FF X:0000 Y:0320 P:eNvMxdIzc - Load A from 143.
$01/B792 20 77 B9 JSR $B977 [$01:B977] A:B700 X:0000 Y:0320 P:envMxdIZc - Jump to Subroutine (Determining who it is being cast upon)
$01/B795 BD 03 00 LDA $0003,x[$7E:1043] A:1001 X:1040 Y:0320 P:envMxdIzc - Load Target's Status Byte 1.
$01/B798 30 0A BMI $0A [$B7A4] A:1000 X:1040 Y:0320 P:envMxdIZc - If dead, skip.
$01/B79A C2 20 REP #$20 A:1000 X:1040 Y:0320 P:envMxdIZc - Reset Processor Status.
$01/B79C BD 09 00 LDA $0009,x[$7E:1049] A:1000 X:1040 Y:0320 P:envmxdIZc - Load A from Character's Max HP.
$01/B79F 9D 07 00 STA $0007,x[$7E:1047] A:076C X:1040 Y:0320 P:envmxdIzc - Store A in Character's Current HP.
$01/B7A2 E2 20 SEP #$20 A:076C X:1040 Y:0320 P:envmxdIzc - Set Processor Status
$01/B7A4 68 PLA A:076C X:1040 Y:0320 P:envMxdIzc - Pull A.
$01/B7A5 60 RTS A:0700 X:1040 Y:0320 P:envMxdIZc - Return
------------------------------------------------------------------------------------------------
General Spell Healing Code
$01/B7A6 A9 00 LDA #$00 A:B704 X:B737 Y:0320 P:envMxdIzc - Load 00 into A.
$01/B7A8 EB XBA A:B700 X:B737 Y:0320 P:envMxdIZc - Exchange B and A 8-bit Accumulators. (That is quite useful, I'll need to keep that in mind)
$01/B7A9 AD 91 1B LDA $1B91 [$7E:1B91] A:00B7 X:B737 Y:0320 P:eNvMxdIzc - Load A from 7E1B91.
$01/B7AC C2 20 REP #$20 A:0004 X:B737 Y:0320 P:envMxdIzc - Reset Processor Status.
$01/B7AE 0A ASL A A:0004 X:B737 Y:0320 P:envmxdIzc - x2 to A.
$01/B7AF 0A ASL A A:0008 X:B737 Y:0320 P:envmxdIzc - x2 to A
$01/B7B0 8D 91 1B STA $1B91 [$7E:1B91] A:0010 X:B737 Y:0320 P:envmxdIzc - Store A in 7E1B91.
$01/B7B3 E2 20 SEP #$20 A:0010 X:B737 Y:0320 P:envmxdIzc - Set Processor Status
$01/B7B5 A5 E8 LDA $E8 [$00:01E8] A:0010 X:B737 Y:0320 P:envMxdIzc - Load the value 01E8 into A.
$01/B7B7 20 07 90 JSR $9007 [$01:9007] A:0001 X:B737 Y:0320 P:envMxdIzc - Jump to Subroutine (Gets Targeting Info.)
$01/B7BA BD 18 00 LDA $0018,x[$7E:1058] A:1001 X:1040 Y:0320 P:envMxdIzc - Load Caster's Modified Will into A.
$01/B7BD 4A LSR A A:103C X:1040 Y:0320 P:envMxdIzc - /2
$01/B7BE 4A LSR A A:101E X:1040 Y:0320 P:envMxdIzc - /2
$01/B7BF 4A LSR A A:100F X:1040 Y:0320 P:envMxdIzc - /2
$01/B7C0 1A INC A A:1007 X:1040 Y:0320 P:envMxdIzC - /2
$01/B7C1 85 54 STA $54 [$00:0154] A:1008 X:1040 Y:0320 P:envMxdIzC - Store A in 0154
$01/B7C3 64 55 STZ $55 [$00:0155] A:1008 X:1040 Y:0320 P:envMxdIzC - Store Zero in 0155.
$01/B7C5 A9 00 LDA #$00 A:1008 X:1040 Y:0320 P:envMxdIzC - Load 00 into A.
$01/B7C7 EB XBA A:1000 X:1040 Y:0320 P:envMxdIZC Exchange B and A 8-Bit Accumulators
$01/B7C8 BD 18 00 LDA $0018,x[$7E:1058] A:0010 X:1040 Y:0320 P:envMxdIzC - Load Caster's Modified Will into A.
$01/B7CB 4A LSR A A:003C X:1040 Y:0320 P:envMxdIzC - /2.
$01/B7CC C2 20 REP #$20 A:001E X:1040 Y:0320 P:envMxdIzc - Reset Processor Status
$01/B7CE 18 CLC A:001E X:1040 Y:0320 P:envmxdIzc - Clear Carry Flag.
$01/B7CF 6D 91 1B ADC $1B91 [$7E:1B91] A:001E X:1040 Y:0320 P:envmxdIzc - Add Modified Will /2 onto the base power of the Cure.
$01/B7D2 85 57 STA $57 [$00:0157] A:002E X:1040 Y:0320 P:envmxdIzc - Store A in 57.
$01/B7D4 18 CLC A:002E X:1040 Y:0320 P:envmxdIzc - Clear Carry Flag.
$01/B7D5 65 57 ADC $57 [$00:0157] A:002E X:1040 Y:0320 P:envmxdIzc - Add the value of 57 onto A.
$01/B7D7 C6 54 DEC $54 [$00:0154] A:005C X:1040 Y:0320 P:envmxdIzc - -1 from a ticker of Modified Will/8
$01/B7D9 D0 F9 BNE $F9 [$B7D4] A:005C X:1040 Y:0320 P:envmxdIzc - Repeat this until the ticker reads 0.
(Thereby the formula for healing HP with spells outside of battle is...)
(Base x 4 + (Will /2 x Will/8)
The rest of the routine is just cleaning matters and safeguards. They aren't too important to record. It does end at 01B849 which might be important for me later.
In addition to this is Float dealings...
Float Code
$01/B9CD BD 04 00 LDA $0004,x[$7E:1044] A:1001 X:1040 Y:0320 P:envMxdIzc - Load Target's Status Byte 2 into A.
$01/B9D0 09 40 ORA #$40 A:1000 X:1040 Y:0320 P:envMxdIZc - Add 40 if Applicable.
$01/B9D2 9D 04 00 STA $0004,x[$7E:1044] A:1040 X:1040 Y:0320 P:envMxdIzc - Store A in Target's Status Byte 2.
I can't see its functionality though if it were changed however, considering how few beneficial statuses are in FFIV in the first place. I feel I am close now. I can already make Sight look at a character basis. It may not be too difficult to exchange its event code for something more useful.