Next up is Gird/Endure/Bear - Yang Casting Protect on Himself for free.
Gird Routine -
$03/E696 A9 05 LDA #$05 A:0003 X:001E Y:0000 P:envMxdizc - Load 05 into A. (Protect)
$03/E698 8D D2 26 STA $26D2 [$7E:26D2] A:0005 X:001E Y:0000 P:envMxdizc - Store A in Next Action (Protect)
$03/E69B 9C C4 33 STZ $33C4 [$7E:33C4] A:0005 X:001E Y:0000 P:envMxdizc - Store Zero in 7E33C4.
$03/E69E 20 3E CD JSR $CD3E [$03:CD3E] A:0005 X:001E Y:0000 P:envMxdizc - Jump to Subroutine (Magic Call... Look at Salve Routine for more detail)
$03/E6A1 20 B1 85 JSR $85B1 [$03:85B1] A:0080 X:0680 Y:001A P:eNvMxdizC - Jump to Subroutine (Nothing of great value as far as I can tell.)
$03/E6A4 A9 3A LDA #$3A A:0003 X:0680 Y:001A P:envMxdizC - Load 3A into A. (D)
$03/E6A6 8D CA 34 STA $34CA [$7E:34CA] A:003A X:0680 Y:001A P:envMxdizC - Store A in 7E34CA (Battle Message Area)
$03/E6A9 A9 0F LDA #$0F A:003A X:0680 Y:001A P:envMxdizC - Load 0F into A.
$03/E6AB 8D C8 34 STA $34C8 [$7E:34C8] A:000F X:0680 Y:001A P:envMxdizC - Store A in 7E34C8.
$03/E6AE A9 10 LDA #$10 A:000F X:0680 Y:001A P:envMxdizC - Load 10 into A.
$03/E6B0 8D C7 34 STA $34C7 [$7E:34C7] A:0010 X:0680 Y:001A P:envMxdizC - Store A in 7E34C7.
$03/E6B3 60 RTS A:0010 X:0680 Y:001A P:envMxdizC - Return
That was a routine? Much shorter than I expected for a literal Spell Casting routine, but this is actually Very good news. Look at how short it is to Actually make a Command cast a given spell? It seems much shorter than Peep. So in reality you could virtually copy this data, paste it into Peep, change 05 to Peep's spell number and there you go. You would probably even save yourself quite a few bytes in doing so.
Interestingly, while Gird clearly shows the character taking a defensive stance it doesn't actually give the user Defensive Status.
Next up is Kick Routine, that we already know is linked to directly to Dark Wave, unfortunately. Change the stat determination in one and you change the stats in the other.
So let's see what the Routine has to show us.
Kick Routine -
$03/E6B4 64 C1 STZ $C1 [$00:00C1] A:0003 X:001C Y:0000 P:envMxdizc - Store Zero in C1.
$03/E6B6 4C B9 E6 JMP $E6B9 [$03:E6B9] A:0003 X:001C Y:0000 P:envMxdizc - Jump to... 0 bytes away. Sure, alright.
$03/E6B9 A5 CD LDA $CD [$00:00CD] A:0003 X:001C Y:0000 P:envMxdizc - Load CD into A. (Character ID?)
$03/E6BB 10 4A BPL $4A [$E707] A:0000 X:001C Y:0000 P:envMxdiZc - Branch if Plus to 03E707. (If a player is not using it (and is for Enemy Yang)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/E6BD 8D C7 34 STA $34C7 [$7E:34C7] A:0080 X:001C Y:0000 P:eNvMxdizc - Store A in 7E34C7.
$03/E6C0 A9 F8 LDA #$F8 A:0080 X:001C Y:0000 P:eNvMxdizc - Load F8 into A
$03/E6C2 8D C5 34 STA $34C5 [$7E:34C5] A:00F8 X:001C Y:0000 P:eNvMxdizc - Store A in 7E34C5.
$03/E6C5 7B TDC A:00F8 X:001C Y:0000 P:eNvMxdizc - Transfer Direct Page.
$03/E6C6 AA TAX A:0000 X:001C Y:0000 P:envMxdiZc - Transfer A to X.
$03/E6C7 A8 TAY A:0000 X:0000 Y:0000 P:envMxdiZc - Transfer A to Y.
------------------------------------------------------------------(Looping Point)------------------------------------------------------------------------------
$03/E6C8 BD C2 33 LDA $33C2,x[$7E:33C2] A:0000 X:0000 Y:0000 P:envMxdiZc - Load 7E33C2 into A. (Graphics of some kind?)
$03/E6CB 99 9C 28 STA $289C,y[$7E:289C] A:00F2 X:0000 Y:0000 P:eNvMxdizc - Store A in 7E289C.
$03/E6CE C9 CE CMP #$CE A:00F2 X:0000 Y:0000 P:eNvMxdizc - Is it CE?
$03/E6D0 F0 08 BEQ $08 [$E6DA] A:00F2 X:0000 Y:0000 P:envMxdizC - If so branch to 03E6DA.
$03/E6D2 C9 C5 CMP #$C5 A:00F2 X:0000 Y:0000 P:envMxdizC - Is it C5?
$03/E6D4 F0 04 BEQ $04 [$E6DA] A:00F2 X:0000 Y:0000 P:envMxdizC - If so branch to 03E6DA.
$03/E6D6 E8 INX A:00F2 X:0000 Y:0000 P:envMxdizC - +1 X.
$03/E6D7 C8 INY A:00F2 X:0001 Y:0000 P:envMxdizC - +1 Y.
$03/E6D8 80 EE BRA $EE [$E6C8] A:00F2 X:0001 Y:0001 P:envMxdizC - Loop back to 03E6C8.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/E6DA C8 INY A:00CE X:0002 Y:0002 P:envMxdiZC - +1 to Y.
$03/E6DB A9 F8 LDA #$F8 A:00CE X:0002 Y:0003 P:envMxdizC - Load F8 into A.
$03/E6DD 99 9C 28 STA $289C,y[$7E:289F] A:00F8 X:0002 Y:0003 P:eNvMxdizC - Store A in 7E289F.
$03/E6E0 C8 INY A:00F8 X:0002 Y:0003 P:eNvMxdizC - +1 to Y.
$03/E6E1 A9 04 LDA #$04 A:00F8 X:0002 Y:0004 P:envMxdizC + Load 04 into A.
$03/E6E3 99 9C 28 STA $289C,y[$7E:28A0] A:0004 X:0002 Y:0004 P:envMxdizC - Store A in 7E28A0.
$03/E6E6 C8 INY A:0004 X:0002 Y:0004 P:envMxdizC - +1 to Y.
$03/E6E7 E8 INX A:0004 X:0002 Y:0005 P:envMxdizC +1 to X.
$03/E6E8 BD C2 33 LDA $33C2,x[$7E:33C5] A:0004 X:0003 Y:0005 P:envMxdizC - Load A from 7E33C5 (Graphics of some kind?)
$03/E6EB 99 9C 28 STA $289C,y[$7E:28A1] A:00FE X:0003 Y:0005 P:eNvMxdizC - Store A in 7E28A1.
$03/E6EE C9 FF CMP #$FF A:00FE X:0003 Y:0005 P:eNvMxdizC - Is it FF?
$03/E6F0 F0 04 BEQ $04 [$E6F6] A:00FE X:0003 Y:0005 P:eNvMxdizc - If it is branch to 03E6F6.
$03/E6F2 E8 INX A:00FE X:0003 Y:0005 P:eNvMxdizc - +1 to X.
$03/E6F3 C8 INY A:00FE X:0004 Y:0005 P:envMxdizc - +1 to Y.
$03/E6F4 80 F2 BRA $F2 [$E6E8] A:00FE X:0004 Y:0006 P:envMxdizc - Loop back to 03E6E8.
--------------------------------------------------------------------------------------------------------------------------------------
$03/E6F6 7B TDC A:00FF X:0004 Y:0006 P:envMxdiZC - Transfer Direct Page.
$03/E6F7 AA TAX A:0000 X:0004 Y:0006 P:envMxdiZC - Transfer A to X.
$03/E6F8 BD 9C 28 LDA $289C,x[$7E:289C] A:0000 X:0000 Y:0006 P:envMxdiZC - Load 7E289C.
$03/E6FB 9D C2 33 STA $33C2,x[$7E:33C2] A:00F2 X:0000 Y:0006 P:eNvMxdizC - Store A in 7E33C2.
$03/E6FE C9 FF CMP #$FF A:00F2 X:0000 Y:0006 P:eNvMxdizC - Is it FF?
$03/E700 F0 03 BEQ $03 [$E705] A:00F2 X:0000 Y:0006 P:eNvMxdizc -If so branch to 03E705.
$03/E702 E8 INX A:00F2 X:0000 Y:0006 P:eNvMxdizc - +1 to X.
$03/E703 80 F3 BRA $F3 [$E6F8] A:00F2 X:0001 Y:0006 P:envMxdizc - Loop back to 03E6F8.
$03/E705 80 0A BRA $0A [$E711] A:00FF X:0006 Y:0006 P:envMxdiZC - Branch to 03E711
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/E707 A9 F8 LDA #$F8 A:0000 X:001C Y:0000 P:envMxdiZc - Load F8 into A. (Possibly Graphics Data of sorts)
$03/E709 8D C6 33 STA $33C6 [$7E:33C6] A:00F8 X:001C Y:0000 P:eNvMxdizc - Store A in 7E33C6.
$03/E70C A9 04 LDA #$04 A:00F8 X:001C Y:0000 P:eNvMxdizc - Load 04 into A.
$03/E70E 8D C7 33 STA $33C7 [$7E:33C7] A:0004 X:001C Y:0000 P:envMxdizc - Store A in 7E33C7.
$03/E711 AD 81 38 LDA $3881 [$7E:3881] A:0004 X:001C Y:0000 P:envMxdizc - Load A from 7E3881.
$03/E714 F0 03 BEQ $03 [$E719] A:0000 X:001C Y:0000 P:envMxdiZc - If 00 branch to 03E719.
----------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------
$03/E719 A6 A6 LDX $A6 [$00:00A6] A:0000 X:001C Y:0000 P:envMxdiZc - Load X from A6 (Must be to see who is using Kick)
$03/E71B BD 1B 20 LDA $201B,x[$7E:201B] A:0000 X:0000 Y:0000 P:envMxdiZc - Load User's Physical Attack Multiplier.
$03/E71E 85 DF STA $DF [$00:00DF] A:0003 X:0000 Y:0000 P:envMxdizc - Store A in DF.
$03/E720 A5 C1 LDA $C1 [$00:00C1] A:0003 X:0000 Y:0000 P:envMxdizc - Load A from C1.
$03/E722 D0 08 BNE $08 [$E72C] A:0000 X:0000 Y:0000 P:envMxdiZc - Branch if not 00 to 03E72C. (Skipped by Dark Wave)
$03/E724 46 DF LSR $DF [$00:00DF] A:0000 X:0000 Y:0000 P:envMxdiZc - Divide Physical Attack Multiplier by 2.
$03/E726 A5 DF LDA $DF [$00:00DF] A:0000 X:0000 Y:0000 P:envMxdizC - Load DF into A.
$03/E728 D0 02 BNE $02 [$E72C] A:0001 X:0000 Y:0000 P:envMxdizC - If not 00 branch to 03E72C.
$03/E72C A5 DF LDA $DF [$00:00DF] A:0001 X:0000 Y:0000 P:envMxdizC - Load DF into A (In case it came from an earlier branch)
$03/E72E 85 84 STA $84 [$00:0084] A:0001 X:0000 Y:0000 P:envMxdizC - Store A in 84.
$03/E730 BD 1D 20 LDA $201D,x[$7E:201D] A:0001 X:0000 Y:0000 P:envMxdizC - Load User's Physical Attack Base.
$03/E733 85 C5 STA $C5 [$00:00C5] A:0027 X:0000 Y:0000 P:envMxdizC - Store A in C5.
$03/E735 85 E1 STA $E1 [$00:00E1] A:0027 X:0000 Y:0000 P:envMxdizC - Store A in E1.
$03/E737 20 E0 83 JSR $83E0 [$03:83E0] A:0027 X:0000 Y:0000 P:envMxdizC - Jump to Subroutine (HP Dealing?)
$03/E73A 46 E4 LSR $E4 [$00:00E4] A:0000 X:0000 Y:0000 P:envMxdiZc - E4 /2.
$03/E73C 66 E3 ROR $E3 [$00:00E3] A:0000 X:0000 Y:0000 P:envMxdiZc - E3 /2.
$03/E73E A6 E3 LDX $E3 [$00:00E3] A:0000 X:0000 Y:0000 P:envMxdizC - Load X from E3.
$03/E740 86 CB STX $CB [$00:00CB] A:0000 X:0013 Y:0000 P:envMxdizC - Store X in CB.
$03/E742 A5 CD LDA $CD [$00:00CD] A:0000 X:0013 Y:0000 P:envMxdizC - Load A from CD. (Character ID)
$03/E744 30 0C BMI $0C [$E752] A:0000 X:0013 Y:0000 P:envMxdiZC - Branch if Negative to 03E752. (Enemy Yang using it)
$03/E746 A2 05 00 LDX #$0005 A:0000 X:0013 Y:0000 P:envMxdiZC - Load 0005 into X. (Starting points of Targets -1)
$03/E749 86 C7 STX $C7 [$00:00C7] A:0000 X:0005 Y:0000 P:envMxdizC - Store X in C7.
$03/E74B A2 0D 00 LDX #$000D A:0000 X:0005 Y:0000 P:envMxdizC - Load 0000D into X (Number of Targets)
$03/E74E 86 C3 STX $C3 [$00:00C3] A:0000 X:000D Y:0000 P:envMxdizC - Store X in C3.
$03/E750 80 09 BRA $09 [$E75B] A:0000 X:000D Y:0000 P:envMxdizC -Branch to 03E75B.
----------------------------------------------------------------------------------------------------------------------------------------
$03/E752 7B TDC A:0080 X:0081 Y:0006 P:eNvMxdizc - Transfer Direct Page.
$03/E753 AA TAX A:0000 X:0081 Y:0006 P:envMxdiZc - Transfer A to X.
$03/E754 86 C7 STX $C7 [$00:00C7] A:0000 X:0000 Y:0006 P:envMxdiZc - Store X in C7.
$03/E756 A2 05 00 LDX #$0005 A:0000 X:0000 Y:0006 P:envMxdiZc - Load 0005 into X.
$03/E759 86 C3 STX $C3 [$00:00C3] A:0000 X:0005 Y:0006 P:envMxdizc - Store X in C3 (Possibly enemy targeting works differently inwardly)
----------------------------------------------------------------------------------------------------------------------------------------
$03/E75B 7B TDC A:0000 X:000D Y:0000 P:envMxdizC - Transfer Direct Page.
$03/E75C AA TAX A:0000 X:000D Y:0000 P:envMxdiZC - Transfer A to X.
$03/E75D A5 C5 LDA $C5 [$00:00C5] A:0000 X:0000 Y:0000 P:envMxdiZC - Load Physical Attack Base into A.
$03/E75F 20 79 83 JSR $8379 [$03:8379] A:0027 X:0000 Y:0000 P:envMxdizC - Jump to Subroutine (Generated Random Number, likely between 0-Physical Attack Base)
$03/E762 85 C9 STA $C9 [$00:00C9] A:001E X:0000 Y:0000 P:envMxdizc - Store A in C9.
$03/E764 18 CLC A:001E X:0000 Y:0000 P:envMxdizc - Clear Carry Flag.
$03/E765 A5 CB LDA $CB [$00:00CB] A:001E X:0000 Y:0000 P:envMxdizc - Load A from CB.
$03/E767 65 C9 ADC $C9 [$00:00C9] A:0013 X:0000 Y:0000 P:envMxdizc - Add A to C9.
$03/E769 85 C9 STA $C9 [$00:00C9] A:0031 X:0000 Y:0000 P:envMxdizc - Store A in C9.
$03/E76B A5 CC LDA $CC [$00:00CC] A:0031 X:0000 Y:0000 P:envMxdizc - Load A from CC.
$03/E76D 69 00 ADC #$00 A:0000 X:0000 Y:0000 P:envMxdiZc - Add 00 to A.
$03/E76F 85 CA STA $CA [$00:00CA] A:0000 X:0000 Y:0000 P:envMxdiZc - Store A in CA.
$03/E771 A5 C7 LDA $C7 [$00:00C7] A:0000 X:0000 Y:0000 P:envMxdiZc - Load C7 into A.
$03/E773 AA TAX A:0005 X:0000 Y:0000 P:envMxdizc - Transfer A to X.
$03/E774 BD 40 35 LDA $3540,x[$7E:3545] A:0005 X:0005 Y:0000 P:envMxdizc - Load A from 7E3545.
$03/E777 D0 68 BNE $68 [$E7E1] A:0000 X:0005 Y:0000 P:envMxdiZc - If not 00 branch to 03E7E1.
-----------------------------------------------------------------------------------------------------------------------------------------------
$03/E779 A5 C7 LDA $C7 [$00:00C7] A:0000 X:0005 Y:0000 P:envMxdiZc - Load A from C7.
$03/E77B 20 89 84 JSR $8489 [$03:8489] A:0005 X:0005 Y:0000 P:envMxdizc - Jump to Subroutine (Preparation?)
$03/E77E A6 A6 LDX $A6 [$00:00A6] A:0000 X:05A0 Y:0000 P:envMxdizc - Load X from A6 (Tells the game what is being targetted)
$03/E780 BD 03 20 LDA $2003,x[$7E:2283] A:0000 X:0280 Y:0000 P:envMxdizc - Load Status Byte 1 of Monster Slot X into A.
$03/E783 29 C0 AND #$C0 A:0000 X:0280 Y:0000 P:envMxdiZc - Are they Petrified or Dead?
$03/E785 D0 5A BNE $5A [$E7E1] A:0000 X:0280 Y:0000 P:envMxdiZc - If so branch to 03E7E1.
----------------------------------------------------------------------------------------------------------------------------------------------------
$03/E787 BD 05 20 LDA $2005,x[$7E:2285] A:0000 X:0280 Y:0000 P:envMxdiZc - Load Status Byte 3 of Monster Slot X into A.
$03/E78A 29 02 AND #$02 A:0000 X:0280 Y:0000 P:envMxdiZc - Is it Jumping?
$03/E78C D0 53 BNE $53 [$E7E1] A:0000 X:0280 Y:0000 P:envMxdiZc - If so branch to 03E7E1.
---------------------------------------------------------------------------------------------------------------------------------------------------------
$03/E78E BD 06 20 LDA $2006,x[$7E:2286] A:0000 X:0280 Y:0000 P:envMxdiZc - Load Status Byte 4 of Monster Slot X into A.
$03/E791 30 4E BMI $4E [$E7E1] A:0000 X:0280 Y:0000 P:envMxdiZc - Is it Hiding?, if so branch to 03E7E1.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/E793 BD 40 20 LDA $2040,x[$7E:22C0] A:0000 X:0280 Y:0000 P:envMxdiZc - Load Creature Type of Monster Slot X into A.
$03/E796 29 20 AND #$20 A:0000 X:0280 Y:0000 P:envMxdiZc - Is it Slime?
$03/E798 D0 47 BNE $47 [$E7E1] A:0000 X:0280 Y:0000 P:envMxdiZc - If so branch to 03E7E1.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/E79A A5 C1 LDA $C1 [$00:00C1] A:0000 X:0280 Y:0000 P:envMxdiZc - Load A from C1.
$03/E79C F0 0D BEQ $0D [$E7AB] A:0000 X:0280 Y:0000 P:envMxdiZc - If it is 00 branch to 03E7AB
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(Special Part of Code, Used by Dark Wave)!!!!!!!!!!!!!!!!!!!!!!!!!!
$03/E79E BD 40 20 LDA $2040,x[$7E:22C0] A:002E X:0280 Y:0000 P:envMxdizc - Load Creature Type of Monster Slot X into A.
$03/E7A1 10 08 BPL $08 [$E7AB] A:0000 X:0280 Y:0000 P:envMxdiZc - If it not Zombie, branch to 03E7AB.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/E7A3 46 CA LSR $CA [$00:00CA] A:0080 X:0280 Y:0000 P:eNvMxdizc - /2 CA.
$03/E7A5 66 C9 ROR $C9 [$00:00C9] A:0080 X:0280 Y:0000 P:envMxdiZc /2 C9
$03/E7A7 46 CA LSR $CA [$00:00CA] A:0080 X:0280 Y:0000 P:envMxdizC /2 CA
$03/E7A9 66 C9 ROR $C9 [$00:00C9] A:0080 X:0280 Y:0000 P:envMxdiZc /2 C9 9 (Divide Damage by 4)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/E7AB A5 C1 LDA $C1 [$00:00C1] A:0000 X:0280 Y:0000 P:envMxdiZc - Load A from C1.
$03/E7AD D0 20 BNE $20 [$E7CF] A:0000 X:0280 Y:0000 P:envMxdiZc - If it is not 00 branch to 03E7CF.
-------------------------------------------------------------------------------------------------------------------------------------------------------
$03/E7AF A5 84 LDA $84 [$00:0084] A:0000 X:0280 Y:0000 P:envMxdiZc - Load A from 84.
$03/E7B1 85 DF STA $DF [$00:00DF] A:0001 X:0280 Y:0000 P:envMxdizc - Store A in DF (same as normal?)
$03/E7B3 BD 2A 20 LDA $202A,x[$7E:22AA] A:0001 X:0280 Y:0000 P:envMxdizc - Load Monster Slot X's Physical Defense Base.
$03/E7B6 85 E1 STA $E1 [$00:00E1] A:0000 X:0280 Y:0000 P:envMxdiZc - Store A in E1.
$03/E7B8 20 E0 83 JSR $83E0 [$03:83E0] A:0000 X:0280 Y:0000 P:envMxdiZc - Jump to Subroutine (HP Dealing?)
$03/E7BB 38 SEC A:0000 X:0000 Y:0000 P:envMxdiZc - Set Carry Flag
$03/E7BC A5 C9 LDA $C9 [$00:00C9] A:0000 X:0000 Y:0000 P:envMxdiZC - Load A from C9. (Where Random Number +Attack Base seemed to be stored)
$03/E7BE E5 E3 SBC $E3 [$00:00E3] A:0031 X:0000 Y:0000 P:envMxdizC - A from E3. (-Random Number +Attack Base from E3.)
$03/E7C0 85 C9 STA $C9 [$00:00C9] A:0031 X:0000 Y:0000 P:envMxdizC - Store A in C9.
$03/E7C2 A5 CA LDA $CA [$00:00CA] A:0031 X:0000 Y:0000 P:envMxdizC - Load A from CA.
$03/E7C4 E5 E4 SBC $E4 [$00:00E4] A:0000 X:0000 Y:0000 P:envMxdiZC - A from E4.
$03/E7C6 85 CA STA $CA [$00:00CA] A:0000 X:0000 Y:0000 P:envMxdiZC - Store A in CA.
$03/E7C8 B0 05 BCS $05 [$E7CF] A:0000 X:0000 Y:0000 P:envMxdiZC - ?Branch if 00 or less than.?
------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------
$03/E7CF A6 C9 LDX $C9 [$00:00C9] A:0000 X:0000 Y:0000 P:envMxdiZC - Load X from C9 (Random Number +Attack Base)
$03/E7D1 F0 F7 BEQ $F7 [$E7CA] A:0000 X:0031 Y:0000 P:envMxdizC - Loop if equal to ?00? to 03E7CA.
$03/E7D3 A5 C7 LDA $C7 [$00:00C7] A:0000 X:0031 Y:0000 P:envMxdizC - Load C7 into A. (5 static, it seems)
$03/E7D5 0A ASL A A:0005 X:0031 Y:0000 P:envMxdizC - x2 A.
$03/E7D6 AA TAX A:000A X:0031 Y:0000 P:envMxdizc - Transfer A to X.
$03/E7D7 A5 C9 LDA $C9 [$00:00C9] A:000A X:000A Y:0000 P:envMxdizc - Load A from C9 (Random Number +Attack Base)
$03/E7D9 9D D4 34 STA $34D4,x[$7E:34DE] A:0031 X:000A Y:0000 P:envMxdizc - Store A in Damage Slot X.
$03/E7DC A5 CA LDA $CA [$00:00CA] A:0031 X:000A Y:0000 P:envMxdizc - Load A from CA (Second byte of damage, no doubt)
$03/E7DE 9D D5 34 STA $34D5,x[$7E:34DF] A:0000 X:000A Y:0000 P:envMxdiZc - Store A in in Damage Slot X Byte 2.
$03/E7E1 E6 C7 INC $C7 [$00:00C7] A:0000 X:000A Y:0000 P:envMxdiZc - +1 to C7.
$03/E7E3 A5 C7 LDA $C7 [$00:00C7] A:0000 X:000A Y:0000 P:envMxdizc Load C7 into A.
$03/E7E5 C5 C3 CMP $C3 [$00:00C3] A:0006 X:000A Y:0000 P:envMxdizc - Is it the same value that is in C3? (Number of Targets)
$03/E7E7 F0 03 BEQ $03 [$E7EC] A:0006 X:000A Y:0000 P:eNvMxdizc - if so branch to 03E7EC.
$03/E7E9 4C 5B E7 JMP $E75B [$03:E75B] A:0006 X:000A Y:0000 P:eNvMxdizc - Jump Back to 03E75B and recalculate everything for all targets.
------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/E7EC 20 7E CA JSR $CA7E [$03:CA7E] A:000D X:000C Y:0000 P:envMxdiZC - Jump to Subroutine (Damage Dealing Routine)
------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/E7EF 60 RTS A:0000 X:0680 Y:001A P:envMxdiZC - Return
Now this is extremely informative!
Keep the addresses below in mind because this appears to be near universal....
C5 - Where Attack Base is Stored
DF - Where Attack Multiplier is Stored
E1 - Enemies Physical Defense Base.
What is even more curious is that it seems that the programmers may have planned a way for Kick's damage not to be decremented under some special circumstance. A value stored at C1 that if it does not read 00 (which it seems it Must because of the STZ at the start of the routine) it will branch past the Decrementing Routine. I thought at first it may be something special for Enemy Yang, but C1 in his portion of the routine never changes. Turns out that it is used by Dark Wave, which likely jumps into the Kick routine fairly early on and keeps on going with it. We'll know more when we get to the Dark Wave routine. I never noticed that Dark Wave dealt more damage than Kick, that is quite curious...
Now, some more targeting news, what we're looking at here is something that we've never really seen before and its the way the game puts damage into the individual slots. Kick and Dark Wave are stupidly special in that the normal Caster/Target damage is never used. It uses a different targeting system....
Because it does not look into the section of RAM that Yousei labeled Caster/Target and only looks at their basic battle slots, I will call it "User". Dark Wave/Kick both look at the User's stats. In that same respect there is no Target as there ordinarily is considered to be, but the enemy's stats are looked at directly. Now this was puzzling, until I came across this...
$03/E746 A2 05 00 LDX #$0005 A:0000 X:0013 Y:0000 P:envMxdiZC - Load 0005 into X. (Starting points of Targets -1)
$03/E749 86 C7 STX $C7 [$00:00C7] A:0000 X:0005 Y:0000 P:envMxdizC - Store X in C7.
$03/E74B A2 0D 00 LDX #$000D A:0000 X:0005 Y:0000 P:envMxdizC - Load 0000D into X (Number of Targets)
$03/E74E 86 C3 STX $C3 [$00:00C3] A:0000 X:000D Y:0000 P:envMxdizC - Store X in C3.
When I first saw these I had just the normal instructions for what the system was doing and moved on without another thought until I saw this as well...
$03/E7D5 0A ASL A A:0005 X:0031 Y:0000 P:envMxdizC - x2 A.
$03/E7D6 AA TAX A:000A X:0031 Y:0000 P:envMxdizc - Transfer A to X.
$03/E7D7 A5 C9 LDA $C9 [$00:00C9] A:000A X:000A Y:0000 P:envMxdizc - Load A from C9 (Random Number +Attack Base)
$03/E7D9 9D D4 34 STA $34D4,x[$7E:34DE] A:0031 X:000A Y:0000 P:envMxdizc - Store A in Damage Slot X.
$03/E7DC A5 CA LDA $CA [$00:00CA] A:0031 X:000A Y:0000 P:envMxdizc - Load A from CA (Second byte of damage, no doubt)
$03/E7DE 9D D5 34 STA $34D5,x[$7E:34DF] A:0000 X:000A Y:0000 P:envMxdiZc - Store A in in Damage Slot X Byte 2.
$03/E7E1 E6 C7 INC $C7 [$00:00C7] A:0000 X:000A Y:0000 P:envMxdiZc - +1 to C7.
$03/E7E3 A5 C7 LDA $C7 [$00:00C7] A:0000 X:000A Y:0000 P:envMxdizc Load C7 into A.
$03/E7E5 C5 C3 CMP $C3 [$00:00C3] A:0006 X:000A Y:0000 P:envMxdizc - Is it the same value that is in C3? (Number of Targets)
$03/E7E7 F0 03 BEQ $03 [$E7EC] A:0006 X:000A Y:0000 P:eNvMxdizc - if so branch to 03E7EC.
$03/E7E9 4C 5B E7 JMP $E75B [$03:E75B] A:0006 X:000A Y:0000 P:eNvMxdizc - Jump Back to 03E75B and recalculate everything for all targets.
Then it made sense, what I was looking at earlier was "range of targets" 05+1 places it just outside the range of Allies. 0D is the final amount of times it should add data into the data slots and the x2 portion was assuring that it was giving two bytes to each slot in terms of damage. I verified this by setting the 05 to 00 and watching as Kick hurt everything on the field. Now this is a bit difficult to deal with. While you can make Kick/Dark Wave only hit one enemy, you could only make it hit a Specific Enemy Placement on the field, and that would be a difficult thing to make use of.
As of now we do not know how stats are written in and out of 2780-2800, but without that we can't change these two routines to look at anything on a Target by Target basis.