(Mostly) Full Fight Routine -
$03/C499 9C C7 34 STZ $34C7 [$7E:34C7] A:0003 X:0000 Y:0000 P:envMxdizc - Store Zero in 7E34C7
$03/C49C 9C E1 38 STZ $38E1 [$7E:38E1] A:0003 X:0000 Y:0000 P:envMxdizc - Store Zero in 7E38E1.
$03/C49F 7B TDC A:0003 X:0000 Y:0000 P:envMxdizc - Transfer Direct Page.
$03/C4A0 AA TAX A:0000 X:0000 Y:0000 P:envMxdiZc - Transfer A to X.
$03/C4A1 8E 96 28 STX $2896 [$7E:2896] A:0000 X:0000 Y:0000 P:envMxdiZc - Store X in 7E2896
$03/C4A4 A5 CD LDA $CD [$00:00CD] A:0000 X:0000 Y:0000 P:envMxdiZc - Load A from CD (Unit ID when a monster it appears)
$03/C4A6 30 0F BMI $0F [$C4B7] A:0080 X:0000 Y:0000 P:eNvMxdizc - Branch if Minus to 03C4B7 (Which it seems it will be if a Monster attacks)
------------------------------------------------------------------------------------------------------------------------------------------------
$03/C4A8 A9 F8 LDA #$F8 A:0000 X:0000 Y:0000 P:envMxdiZc - Load F8 into A.
$03/C4AA 8D C6 33 STA $33C6 [$7E:33C6] A:00F8 X:0000 Y:0000 P:eNvMxdizc - Store A in 7E33C6.
$03/C4AD A9 04 LDA #$04 A:00F8 X:0000 Y:0000 P:eNvMxdizc - Load 04 into A.
$03/C4AF 8D C7 33 STA $33C7 [$7E:33C7] A:0004 X:0000 Y:0000 P:envMxdizc - Store A in 7E33C7.
$03/C4B2 20 24 C9 JSR $C924 [$03:C924] A:0004 X:0000 Y:0000 P:envMxdizc - Jump to Subroutine
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$03/C924 AD 83 26 LDA $2683 [$7E:2683] A:0004 X:0000 Y:0000 P:envMxdizc - Load Caster's Status Byte 1.
$03/C927 29 30 AND #$30 A:0000 X:0000 Y:0000 P:envMxdiZc - Are they inflicted with Small or Toad?
$03/C929 D0 6B BNE $6B [$C996] A:0000 X:0000 Y:0000 P:envMxdiZc - If so branch to 03C996.
$03/C92B A5 CD LDA $CD [$00:00CD] A:0000 X:0000 Y:0000 P:envMxdiZc - Load A from CD.
$03/C92D 20 89 84 JSR $8489 [$03:8489] A:0000 X:0000 Y:0000 P:envMxdiZc - Jump to Subroutine (Preparation? Subroutine)
$03/C930 18 CLC A:0000 X:0000 Y:0000 P:envMxdiZc - Clear Carry Flag
$03/C931 AD 32 35 LDA $3532 [$7E:3532] A:0000 X:0000 Y:0000 P:envMxdiZc - Load A from 7E3532
$03/C934 69 21 ADC #$21 A:0000 X:0000 Y:0000 P:envMxdiZc - Add 21 to A.
$03/C936 85 A9 STA $A9 [$00:00A9] A:0021 X:0000 Y:0000 P:envMxdizc - Store A in A9.
$03/C938 AD 33 35 LDA $3533 [$7E:3533] A:0021 X:0000 Y:0000 P:envMxdizc - Load A from 7E3553.
$03/C93B 69 00 ADC #$00 A:0000 X:0000 Y:0000 P:envMxdiZc - Add 00 into A.
$03/C93D 85 AA STA $AA [$00:00AA] A:0000 X:0000 Y:0000 P:envMxdiZc - Store A in AA.
$03/C93F 7B TDC A:0000 X:0000 Y:0000 P:envMxdiZc - Transfer Direct Page.
$03/C940 A8 TAY A:0000 X:0000 Y:0000 P:envMxdiZc - Transfer A to Y.
$03/C941 84 AB STY $AB [$00:00AB] A:0000 X:0000 Y:0000 P:envMxdiZc - Store Y in a AB.
$03/C943 8D E3 38 STA $38E3 [$7E:38E3] A:0000 X:0000 Y:0000 P:envMxdiZc - Store A in 7E38E3.
$03/C946 A6 A9 LDX $A9 [$00:00A9] A:0000 X:0000 Y:0000 P:envMxdiZc - Load X from A9.
$03/C948 BD 86 27 LDA $2786,x[$7E:27A7] A:0000 X:0021 Y:0000 P:envMxdizc - Load A from 7E27A7. (Equip Index?)
$03/C94B 29 40 AND #$40 A:0015 X:0021 Y:0000 P:envMxdizc - If not 40 or none of the bits align change to lowered number
$03/C94D F0 03 BEQ $03 [$C952] A:0000 X:0021 Y:0000 P:envMxdiZc - If 00 branch to 03C952.
--------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
$03/C952 BD 91 27 LDA $2791,x[$7E:27B2] A:0000 X:0021 Y:0000 P:envMxdiZc - Load A from 7E27B2. (Equip Index?)
$03/C955 29 40 AND #$40 A:0015 X:0021 Y:0000 P:envMxdizc - If not 40 (as above)
$03/C957 F0 09 BEQ $09 [$C962] A:0000 X:0021 Y:0000 P:envMxdiZc - Branch if 00 to 03C962.
---------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------
$03/C962 A5 CD LDA $CD [$00:00CD] A:0000 X:0021 Y:0000 P:envMxdiZc - Load A from CD.
$03/C964 20 7E 84 JSR $847E [$03:847E] A:0000 X:0021 Y:0000 P:envMxdiZc - Jump to Subroutine (Multiplying x6 Subroutine)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$03/847E 0A ASL A A:0000 X:0021 Y:0000 P:envMxdiZc - x2 to A.
$03/847F 0A ASL A A:0000 X:0021 Y:0000 P:envMxdiZc - x2 to A
$03/8480 0A ASL A A:0000 X:0021 Y:0000 P:envMxdiZc - x2 to A
$03/8481 60 RTS A:0000 X:0021 Y:0000 P:envMxdiZc - Return
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$03/C967 AA TAX A:0000 X:0021 Y:0000 P:envMxdiZc - Transfer A to X.
$03/C968 98 TYA A:0000 X:0000 Y:0000 P:envMxdiZc - Transfer Y to A.
$03/C969 F0 2B BEQ $2B [$C996] A:0000 X:0000 Y:0000 P:envMxdiZc - If 00 branch to 03C996.
------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
$03/C996 60 RTS A:0000 X:0000 Y:0000 P:envMxdiZc - Return
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$03/C4B5 80 54 BRA $54 [$C50B] A:0000 X:0000 Y:0000 P:envMxdiZc - Branch to 03C50B.
---------------------------------------------------------------------------------------------------------------------------------------------------
$03/C4B7 AD 01 36 LDA $3601 [$7E:3601] A:0080 X:0000 Y:0000 P:eNvMxdizc - Load A from 7E3601
$03/C4BA C9 FF CMP #$FF A:00FF X:0000 Y:0000 P:eNvMxdizc - Is it FF?
$03/C4BC F0 10 BEQ $10 [$C4CE] A:00FF X:0000 Y:0000 P:envMxdiZC - If so branch to 03C4BC,
----------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------
$03/C4CE 7B TDC A:00FF X:0000 Y:0000 P:envMxdiZC - Transfer Direct Page
$03/C4CF AA TAX A:0000 X:0000 Y:0000 P:envMxdiZC - Transfer A to X.
$03/C4D0 A8 TAY A:0000 X:0000 Y:0000 P:envMxdiZC - Transfer A to Y.
-------------------------------------------------------------(Looping Point) ---------------------------------------------
$03/C4D1 BD C2 33 LDA $33C2,x[$7E:33C2] A:0000 X:0000 Y:0000 P:envMxdiZC - Load A from 7E33C2.
$03/C4D4 99 9C 28 STA $289C,y[$7E:289C] A:00C0 X:0000 Y:0000 P:eNvMxdizC - Store A in 7E289C.
$03/C4D7 C9 FF CMP #$FF A:00C0 X:0000 Y:0000 P:eNvMxdizC - Is it FF?
$03/C4D9 F0 04 BEQ $04 [$C4DF] A:00C0 X:0000 Y:0000 P:eNvMxdizc - If not branch to 03C4DF
-------------------------------------------------------------------------------------------------------------------------------
$03/C4DB E8 INX A:00C0 X:0000 Y:0000 P:eNvMxdizc - +1 to X.
$03/C4DC C8 INY A:00C0 X:0001 Y:0000 P:envMxdizc - +1 to Y.
$03/C4DD 80 F2 BRA $F2 [$C4D1] A:00C0 X:0001 Y:0001 P:envMxdizc - Loop back to 03C4D1.
$03/C4DF 7B TDC A:00FF X:0001 Y:0001 P:envMxdiZC - Transfer Direct Page
$03/C4E0 AA TAX A:0000 X:0001 Y:0001 P:envMxdiZC - Transfer A to X.
$03/C4E1 A8 TAY A:0000 X:0000 Y:0001 P:envMxdiZC - Transfer A to Y.
$03/C4E2 BD 9C 28 LDA $289C,x[$7E:289C] A:0000 X:0000 Y:0000 P:envMxdiZC - Load A from 7E289C.
$03/C4E5 99 C2 33 STA $33C2,y[$7E:33C2] A:00C0 X:0000 Y:0000 P:eNvMxdizC - Store A in 7E33C2.
$03/C4E8 C9 FF CMP #$FF A:00C0 X:0000 Y:0000 P:eNvMxdizC - Is it FF?
$03/C4EA F0 1F BEQ $1F [$C50B] A:00C0 X:0000 Y:0000 P:eNvMxdizc - If so, branch to 03C50B.
$03/C4EC C9 C0 CMP #$C0 A:00C0 X:0000 Y:0000 P:eNvMxdizc - Is it C0?
$03/C4EE F0 08 BEQ $08 [$C4F8] A:00C0 X:0000 Y:0000 P:envMxdiZC - If so branch to C4F8.
-------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
$03/C4F8 C8 INY A:00C0 X:0000 Y:0000 P:envMxdiZC - +1 to Y
$03/C4F9 8C 96 28 STY $2896 [$7E:2896] A:00C0 X:0000 Y:0001 P:envMxdizC - Store Y in 7E2896.
$03/C4FC A9 F8 LDA #$F8 A:00C0 X:0000 Y:0001 P:envMxdizC - Load A from F8
$03/C50B 64 C7 STZ $C7 [$00:00C7] A:00FF X:0001 Y:0003 P:envMxdiZC
$03/C4FE 99 C2 33 STA $33C2,y[$7E:33C3] A:00F8 X:0000 Y:0001 P:eNvMxdizC - Store A in 7E33C3 (Audiovisual Code?)
$03/C501 C8 INY A:00F8 X:0000 Y:0001 P:eNvMxdizC - Increase Y by 1.
$03/C502 A9 04 LDA #$04 A:00F8 X:0000 Y:0002 P:envMxdizC - Load 04 into A.
$03/C504 99 C2 33 STA $33C2,y[$7E:33C4] A:0004 X:0000 Y:0002 P:envMxdizC - Store A in 7E33C4
$03/C507 E8 INX A:0004 X:0000 Y:0002 P:envMxdizC - Increment X
$03/C508 C8 INY A:0004 X:0001 Y:0002 P:envMxdizC - Increment Y
$03/C509 80 D7 BRA $D7 [$C4E2] A:0004 X:0001 Y:0003 P:envMxdizC - Branch Always to 03C4E2
-------------------------------------------------------------------------------------------------------------------------------------------------------
$03/C50B 64 C7 STZ $C7 [$00:00C7] A:00FF X:0001 Y:0003 P:envMxdiZC - Store Zero in C7.
$03/C50D 9C FC 38 STZ $38FC [$7E:38FC] A:00FF X:0001 Y:0003 P:envMxdiZC - Store Zero in 7E38FC.
$03/C510 AD 9C 26 LDA $269C [$7E:269C] A:00FF X:0001 Y:0003 P:envMxdiZC - Load A from Caster's Physical Attack Percentage (Chance to Hit)
$03/C513 8D F8 38 STA $38F8 [$7E:38F8] A:004B X:0001 Y:0003 P:envMxdizC - Store A in 7E38F8 (Apparently used to store accuracy.)
$03/C516 AD 83 26 LDA $2683 [$7E:2683] A:004B X:0001 Y:0003 P:envMxdizC - Load A from Caster's Status Byte 1.
$03/C519 29 02 AND #$02 A:0000 X:0001 Y:0003 P:envMxdiZC - Is it Darkness?
$03/C51B F0 03 BEQ $03 [$C520] A:0000 X:0001 Y:0003 P:envMxdiZC - If not branch to 03C520.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/C51D 4E F8 38 LSR $38F8 [$7E:38F8] A:0002 X:0000 Y:0000 P:envMxdizc - Divide Accuracy by 2.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/C520 AD 81 26 LDA $2681 [$7E:2681] A:0002 X:0000 Y:0000 P:envMxdizc - Load Caster's Class and Row (specifically Row)
$03/C523 10 11 BPL $11 [$C536] A:0000 X:0000 Y:0000 P:envMxdiZc - If the number is positive branch to 03C536 (This will only happen if they are in the front row.)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/C525 AD 81 26 LDA $2681 [$7E:2681] A:0080 X:0000 Y:0000 P:eNvMxdizc - Load Caster's Class and Row
$03/C528 29 20 AND #$20 A:0080 X:0000 Y:0000 P:eNvMxdizc - Is it Long Ranged?
$03/C52A D0 0A BNE $0A [$C536] A:0000 X:0000 Y:0000 P:envMxdiZc - Long Range Check - If successful branch to 03C536
$03/C52C AD 85 26 LDA $2685 [$7E:2685] A:0000 X:0000 Y:0000 P:envMxdiZc - Load Status Byte 3.
$03/C52F 29 02 AND #$02 A:0000 X:0000 Y:0000 P:envMxdiZc - Is it Jump?
$03/C531 D0 03 BNE $03 [$C536] A:0000 X:0000 Y:0000 P:envMxdiZc - If so branch to 03C536
$03/C533 4E F8 38 LSR $38F8 [$7E:38F8] A:0000 X:0000 Y:0000 P:envMxdiZc - Divide Accuracy by 2.
--------------------------------------------------------------------------------------------------------------------------------------------------
$03/C536 A5 CD LDA $CD [$00:00CD] A:0000 X:0000 Y:0000 P:envMxdiZc - Load CD into A.
$03/C538 29 7F AND #$7F A:0000 X:0000 Y:0000 P:envMxdiZc - ??
$03/C53A D0 19 BNE $19 [$C555] A:0000 X:0000 Y:0000 P:envMxdiZc - If so branch 03C555
$03/C53C AD F8 38 LDA $38F8 [$7E:38F8] A:0000 X:0000 Y:0000 P:envMxdiZc - Load Accuracy.
$03/C53F 85 DF STA $DF [$00:00DF] A:004D X:0000 Y:0000 P:envMxdizc - Store Accuracy in DF.
$03/C541 A9 05 LDA #$05 A:004D X:0000 Y:0000 P:envMxdizc - Load 05 into A.
$03/C543 85 E1 STA $E1 [$00:00E1] A:0005 X:0000 Y:0000 P:envMxdizc - Store A in E1.
$03/C545 20 E0 83 JSR $83E0 [$03:83E0] A:0005 X:0000 Y:0000 P:envMxdizc - Cleaning Routine.
$03/C548 46 E4 LSR $E4 [$00:00E4] A:0000 X:0000 Y:0000 P:envMxdiZc - Reduce Accuracy Copy by 1/2
$03/C54A 66 E3 ROR $E3 [$00:00E3] A:0000 X:0000 Y:0000 P:envMxdiZC - ??
$03/C54C 46 E4 LSR $E4 [$00:00E4] A:0000 X:0000 Y:0000 P:eNvMxdizC - Reduce Accuracy Copy by 1/2
$03/C54E 66 E3 ROR $E3 [$00:00E3] A:0000 X:0000 Y:0000 P:envMxdiZc - ??
$03/C550 A5 E3 LDA $E3 [$00:00E3] A:0000 X:0000 Y:0000 P:envMxdizc -?Load New Accuracy, now with +1/4 of its base accuracy?
$03/C552 8D F8 38 STA $38F8 [$7E:38F8] A:0060 X:0000 Y:0000 P:envMxdizc - Store the new Accuracy in the Accuracy slot of data altering fields.
$03/C555 AD 01 27 LDA $2701 [$7E:2701] A:0060 X:0000 Y:0000 P:envMxdizc - Load Target's Class and Row
$03/C558 10 11 BPL $11 [$C56B] A:0000 X:0000 Y:0000 P:envMxdiZc - If it is less than 80 (If you are in the Front Row) branch to 03C56B.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/C55A AD 81 26 LDA $2681 [$7E:2681] A:0080 X:0000 Y:0003 P:eNvMxdizc - Load Caster's class/row/Long Range
$03/C55D 29 20 AND #$20 A:0080 X:0000 Y:0003 P:eNvMxdizc - Is it Long Range?
$03/C55F D0 0A BNE $0A [$C56B] A:0000 X:0000 Y:0003 P:envMxdiZc - If so branch to 03C56B.
$03/C561 AD 85 26 LDA $2685 [$7E:2685] A:0000 X:0000 Y:0003 P:envMxdiZc - Load Caster's Status Byte 3.
$03/C564 29 02 AND #$02 A:0000 X:0000 Y:0003 P:envMxdiZc - Is it Jump?
$03/C566 D0 03 BNE $03 [$C56B] A:0000 X:0000 Y:0003 P:envMxdiZc - If so branch to 03C56B.
$03/C568 4E F8 38 LSR $38F8 [$7E:38F8] A:0000 X:0000 Y:0003 P:envMxdiZc - Divide Accuracy by 2.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/C56B AD F8 38 LDA $38F8 [$7E:38F8] A:0000 X:0000 Y:0003 P:envMxdizc - Load Accuracy from Accuracy slot of data altering fields.
$03/C56E 8D FA 38 STA $38FA [$7E:38FA] A:0019 X:0000 Y:0003 P:envMxdizc - Store Accuracy in another slot.
$03/C571 AD 9B 26 LDA $269B [$7E:269B] A:0019 X:0000 Y:0003 P:envMxdizc - Load Caster's Physical Attack Multiplier
$03/C574 8D FB 38 STA $38FB [$7E:38FB] A:0001 X:0000 Y:0003 P:envMxdizc - Store A in 7E38FB (Data altering field)
$03/C577 20 97 C9 JSR $C997 [$03:C997] A:0001 X:0000 Y:0003 P:envMxdizc - Jump out of Routine. (Not sure what this one is doing.)
$03/C57A AD FD 38 LDA $38FD [$7E:38FD] A:0039 X:0000 Y:0000 P:envMxdiZC - Load A from 7E38FD
$03/C57D 8D F8 38 STA $38F8 [$7E:38F8] A:0000 X:0000 Y:0000 P:envMxdiZC - Store A in Accuracy Altering Field?
$03/C580 A5 CE LDA $CE [$00:00CE] A:0000 X:0000 Y:0000 P:envMxdiZC - Load A from CE (Appears to be Target's Class... or something)
$03/C582 10 05 BPL $05 [$C589] A:0000 X:0000 Y:0000 P:envMxdiZC - Branch if Plus to 03C589
--------------------------------------------
$03/C584 29 7F AND #$7F A:0081 X:0000 Y:0000 P:eNvMxdizC - ??
$03/C586 18 CLC A:0001 X:0000 Y:0000 P:envMxdizC - Clear the Carry Flag
$03/C587 69 05 ADC #$05 A:0001 X:0000 Y:0000 P:envMxdizc - Add 5 to A.
----------------------------------------------
$03/C589 20 89 84 JSR $8489 [$03:8489] A:0000 X:0000 Y:0000 P:envMxdiZC - Jump to a Cleaning or Time Routine.
$03/C58C AD 06 27 LDA $2706 [$7E:2706] A:0000 X:0900 Y:0000 P:envMxdizc - Load Target's Status Anomalies (Byte 4) into A from Data Copy.
$03/C58F 29 10 AND #$10 A:0000 X:0900 Y:0000 P:envMxdiZc - Is it Barrier or Covered?
$03/C591 D0 18 BNE $18 [$C5AB] A:0000 X:0900 Y:0000 P:envMxdiZc - If so Branch to 03C5AB.
$03/C593 AD 06 27 LDA $2706 [$7E:2706] A:0000 X:0900 Y:0000 P:envMxdiZc - Load Target's Status Anomalies (Byte 4) into A from Data Copy.
$03/C596 29 0C AND #$0C A:0000 X:0900 Y:0000 P:envMxdiZc - Does it have Image 1 or 2?
$03/C598 F0 15 BEQ $15 [$C5AF] A:0000 X:0900 Y:0000 P:envMxdiZc - If not Branch to 03C5AF.
---------------------------------------------------------------------------------------------------------------------------------------
$03/C59A 4A LSR A A:000C X:0000 Y:0000 P:envMxdizc - Divide the value in A by 2.
$03/C59B 29 04 AND #$04 A:0006 X:0000 Y:0000 P:envMxdizc - Load 04 into A?
$03/C59D 85 A9 STA $A9 [$00:00A9] A:0004 X:0000 Y:0000 P:envMxdizc - Store A in A9
$03/C59F A6 A6 LDX $A6 [$00:00A6] A:0004 X:0000 Y:0000 P:envMxdizc - Load X from A6.
$03/C5A1 BD 06 20 LDA $2006,x[$7E:2006] A:0004 X:0000 Y:0000 P:envMxdiZc - Load A into Character/Monster Status Byte 3 (thereby decrementing Image)
$03/C5A4 29 F3 AND #$F3 A:000C X:0000 Y:0000 P:envMxdizc - ??
$03/C5A6 05 A9 ORA $A9 [$00:00A9] A:0000 X:0000 Y:0000 P:envMxdiZc - Load the value in A9 into A?
$03/C5A8 9D 06 20 STA $2006,x[$7E:2006] A:0004 X:0000 Y:0000 P:envMxdizc - Store A in Character/Monster Status Byte 3 (Isn't that done above? Why repeat it here?)
$03/C5AB A9 FF LDA #$FF A:0004 X:0000 Y:0000 P:envMxdizc - Load FF into A.
$03/C5AD 80 4B BRA $4B [$C5FA] A:00FF X:0000 Y:0000 P:eNvMxdizc - Branch Always to 03C5FA.
-----------------------------------------------------------------------------------------------------------------------------------------------
$03/C5AF AD 29 27 LDA $2729 [$7E:2729] A:0000 X:0900 Y:0000 P:envMxdiZc - Load Target's Evasion "Defense Percentage" from Copy Data.
$03/C5B2 8D F9 38 STA $38F9 [$7E:38F9] A:0016 X:0000 Y:0000 P:envMxdizc - Store it in 7E38F9 (Altering field)
$03/C5B5 AD 03 27 LDA $2703 [$7E:2703] A:0016 X:0000 Y:0000 P:envMxdizc - Load Target's Status Byte 1 from Copy Data
$03/C5B8 29 02 AND #$02 A:0000 X:0000 Y:0000 P:envMxdiZc - Is it Darkness?
$03/C5BA F0 03 BEQ $03 [$C5BF] A:0000 X:0000 Y:0000 P:envMxdiZc -If not branch to 03C5BF
----------------------------------------------------------------------------------------------------------------------------------------------
$03/C5BC 4E F9 38 LSR $38F9 [$7E:38F9] A:0002 X:0000 Y:0000 P:envMxdizc - Reduce Evasion by half.
$03/C5BF A5 CE LDA $CE [$00:00CE] A:0002 X:0000 Y:0000 P:envMxdizc - Load A from CE.
--------------------------------------------------------------------------------------------------------------------------------------------------
$03/C5C1 29 7F AND #$7F A:0000 X:0000 Y:0000 P:envMxdiZc - Add A from 7F?
$03/C5C3 D0 19 BNE $19 [$C5DE] A:0000 X:0000 Y:0000 P:envMxdiZc - ?If so? branch to 03C5DE.
$03/C5C5 AD F9 38 LDA $38F9 [$7E:38F9] A:0000 X:0000 Y:0000 P:envMxdiZc - Load Evasion from Altered Field
$03/C5C8 85 DF STA $DF [$00:00DF] A:000B X:0000 Y:0000 P:envMxdizc - Store A in DF.
$03/C5CA A9 05 LDA #$05 A:000B X:0000 Y:0000 P:envMxdizc - Load 05 into A.
$03/C5CC 85 E1 STA $E1 [$00:00E1] A:0005 X:0000 Y:0000 P:envMxdizc - Store A in E1
$03/C5CE 20 E0 83 JSR $83E0 [$03:83E0] A:0005 X:0000 Y:0000 P:envMxdizc - Jump out of routine.
$03/C5D1 46 E4 LSR $E4 [$00:00E4] A:0000 X:0000 Y:0000 P:envMxdiZc - ?? (They're all clearly reducing amounts at E4 and E3 by a substantial amount, but not sure of the purpose in doing so. As above it may be a routine to add +1/4 to evasion which begs the question what is the point of the +1/4 if both sides get it anyhow?)
$03/C5D3 66 E3 ROR $E3 [$00:00E3] A:0000 X:0000 Y:0000 P:envMxdiZc - ??
$03/C5D5 46 E4 LSR $E4 [$00:00E4] A:0000 X:0000 Y:0000 P:envMxdizC - ??
$03/C5D7 66 E3 ROR $E3 [$00:00E3] A:0000 X:0000 Y:0000 P:envMxdiZc - ??
$03/C5D9 A5 E3 LDA $E3 [$00:00E3] A:0000 X:0000 Y:0000 P:envMxdizC - ??
$03/C5DB 8D F9 38 STA $38F9 [$7E:38F9] A:000D X:0000 Y:0000 P:envMxdizC - Store Evasion.
$03/C5DE AD F9 38 LDA $38F9 [$7E:38F9] A:000D X:0000 Y:0000 P:envMxdizC - Load Evasion into A
$03/C5E1 8D FA 38 STA $38FA [$7E:38FA] A:000D X:0000 Y:0000 P:envMxdizC - Store Evasion into 38FA?
$03/C5E4 AD 28 27 LDA $2728 [$7E:2728] A:000D X:0000 Y:0000 P:envMxdizC - Load Physical Defense Multiplier
$03/C5E7 8D FB 38 STA $38FB [$7E:38FB] A:0003 X:0000 Y:0000 P:envMxdizC - Store it into 38FB.
$03/C5EA AD 03 27 LDA $2703 [$7E:2703] A:0003 X:0000 Y:0000 P:envMxdizC - Load Status Byte 1 from Character/Monster.
$03/C5ED 29 30 AND #$30 A:0002 X:0000 Y:0000 P:envMxdizC - Is it Toad or Mini?
$03/C5EF F0 03 BEQ $03 [$C5F4] A:0000 X:0000 Y:0000 P:envMxdiZC - If not branch to 03C5F4.
---------------------------------------------------------------------------------------------------------------------------------------------
$03/C5F1 9C FB 38 STZ $38FB [$7E:38FB] A:0030 X:0000 Y:0000 P:envMxdizC - Store zero into Defense Multiplier.
---------------------------------------------------------------------------------------------------------------------------------------------------
$03/C5F4 20 97 C9 JSR $C997 [$03:C997] A:0030 X:0000 Y:0000 P:envMxdizC - Jump out of routine.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$03/C997 9C FD 38 STZ $38FD [$7E:38FD] A:0030 X:0000 Y:0000 P:envMxdizC - Store Zero into 7E38FD.
$03/C99A AD FB 38 LDA $38FB [$7E:38FB] A:0030 X:0000 Y:0000 P:envMxdizC - Load 7E38FB into A.
$03/C99D F0 0F BEQ $0F [$C9AE] A:0000 X:0000 Y:0000 P:envMxdiZC - (Not sure how it is passed. Sometimes it is, sometimes it isn't.)
---------------------------------------------------------------------------------------------------------------------------------------------------
$03/C99F A8 TAY A:0001 X:0000 Y:0000 P:envMxdizc - Transfer A to Y.
$03/C9A0 20 8B 85 JSR $858B [$03:858B] A:0001 X:0000 Y:0001 P:envMxdizc - Jump to another subroutine. (I can't glean much useful information from within so it will be omitted)
$03/C9A3 CD FA 38 CMP $38FA [$7E:38FA] A:0041 X:0000 Y:0001 P:envMxdizc - Compared 7E38FA with the value in A.
$03/C9A6 B0 03 BCS $03 [$C9AB] A:0041 X:0000 Y:0001 P:envMxdizC - If not equal branch to 03C9AB (Can't figure out how to access the rest from there.)
--------------------------------------------------------------------------------------
$03/C9AB 88 DEY A:0041 X:0000 Y:0001 P:envMxdizC - Decrement Y
$03/C9AC D0 F2 BNE $F2 [$C9A0] A:0041 X:0000 Y:0000 P:envMxdiZC -If the bit is set branch to 03C9A0.
$03/C9AE 60 RTS A:0000 X:0000 Y:0000 P:envMxdiZC - Return
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$03/C5F7 AD FD 38 LDA $38FD [$7E:38FD] A:0000 X:0000 Y:0000 P:envMxdiZC - Load A from 7E38FD
$03/C5FA 8D F9 38 STA $38F9 [$7E:38F9] A:0000 X:0000 Y:0000 P:envMxdiZC - Store A into 7E38F9 (Which should be Evasion unless that check is already finished?)
$03/C5FD 38 SEC A:0000 X:0000 Y:0000 P:envMxdiZC - Set Carry Flag
$03/C5FE AD F8 38 LDA $38F8 [$7E:38F8] A:0000 X:0000 Y:0000 P:envMxdiZC - Load A from 7E38F8
$03/C601 ED F9 38 SBC $38F9 [$7E:38F9] A:0002 X:0000 Y:0000 P:envMxdizC - Subtract 1 from 7E38F9 (Evasion)
$03/C604 8D C8 34 STA $34C8 [$7E:34C8] A:0002 X:0000 Y:0000 P:envMxdizC - Store A in 7E34C8
$03/C607 8D FC 38 STA $38FC [$7E:38FC] A:0002 X:0000 Y:0000 P:envMxdizC - Store A in 7E38FC
$03/C60A F0 02 BEQ $02 [$C60E] A:0003 X:0000 Y:0000 P:envMxdizC - If Carry Flag is not set branch to 03C60E
------------------------------------------------------------------------------------------------------------------------------------
$03/C60C B0 25 BCS $25 [$C633] A:0003 X:0000 Y:0000 P:envMxdizC - Branch if Carry is set to 03C633
--------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
$03/C633 A5 CE LDA $CE [$00:00CE] A:0003 X:0000 Y:0000 P:envMxdizC - Load A from CE
$03/C635 10 05 BPL $05 [$C63C] A:0080 X:0000 Y:0000 P:eNvMxdizC - If the value is positive than jump to 03C63C.
------------------------------------------------------------------------------------------------------------------------------------------
$03/C637 AD 81 38 LDA $3881 [$7E:3881] A:0080 X:0000 Y:0000 P:eNvMxdizC - Load A from 7E3881
$03/C63A D0 D2 BNE $D2 [$C60E] A:0000 X:0000 Y:0000 P:envMxdiZC - If the value has a flag set go back to 03C60E
$03/C63C AD C7 34 LDA $34C7 [$7E:34C7] A:0000 X:0000 Y:0000 P:envMxdiZC - Load A from 7E34C7
$03/C63F 09 80 ORA #$80 A:0000 X:0000 Y:0000 P:envMxdiZC - Load 80 into A.
$03/C641 8D C7 34 STA $34C7 [$7E:34C7] A:0080 X:0000 Y:0000 P:eNvMxdizC - Store A in 7E34C7
$03/C644 A6 A6 LDX $A6 [$00:00A6] A:0080 X:0000 Y:0000 P:eNvMxdizC - Load the value in A6 into X
$03/C646 BD 04 20 LDA $2004,x[$7E:2304] A:0080 X:0300 Y:0000 P:envMxdizC - Load the value in Status Anomalies (Byte 2) into A.
$03/C649 85 A9 STA $A9 [$00:00A9] A:0000 X:0300 Y:0000 P:envMxdiZC - Store A in 00A9.
$03/C64B 29 F7 AND #$F7 A:0000 X:0300 Y:0000 P:envMxdiZC - ??
$03/C64D 9D 04 20 STA $2004,x[$7E:2304] A:0000 X:0300 Y:0000 P:envMxdiZC - Store A into 2004 (Eh? How could it have changed from here to there)
$03/C650 A9 02 LDA #$02 A:0000 X:0300 Y:0000 P:envMxdiZC - Load a 02 into A.
$03/C652 8D FE 38 STA $38FE [$7E:38FE] A:0002 X:0300 Y:0000 P:envMxdizC - Store A at 7E38FE (presumably a data altering field x2 (Default) Power)
$03/C655 8D FF 38 STA $38FF [$7E:38FF] A:0002 X:0300 Y:0000 P:envMxdizC - Store A at 7E38FF (as above)
$03/C658 AD 99 26 LDA $2699 [$7E:2699] A:0002 X:0300 Y:0000 P:envMxdizC - Load A from Caster's Attack Elemental Copy Data.
$03/C65B 8D 00 36 STA $3600 [$7E:3600] A:0008 X:0300 Y:0000 P:envMxdizC - Store A in 7E3600.
$03/C65E 2D 21 27 AND $2721 [$7E:2721] A:0008 X:0300 Y:0000 P:envMxdizC - Check the value of A against the Target's Very Weak Elemental.
$03/C661 F0 07 BEQ $07 [$C66A] A:0000 X:0300 Y:0000 P:envMxdiZC - Branch if there is no match to 03C66A.
--------------------------------------------------------------------------------------------------------------------------------
$03/C663 A9 08 LDA #$08 A:0008 X:0400 Y:0000 P:envMxdizC - Load a 08 into A.
$03/C665 8D FE 38 STA $38FE [$7E:38FE] A:0008 X:0400 Y:0000 P:envMxdizC - Store A in 7E38FE (Presumably a data altering field - x4 Power)
$03/C668 80 2B BRA $2B [$C695] A:0008 X:0400 Y:0000 P:envMxdizC - Always Branch to 7EC695.
--------------------------------------------------------------------------------------------------------------------------------
$03/C66A AD 99 26 LDA $2699 [$7E:2699] A:0000 X:0300 Y:0000 P:envMxdiZC - Load Caster's Attack Elemental from Data Copy into A.
$03/C66D 2D 20 27 AND $2720 [$7E:2720] A:0008 X:0400 Y:0000 P:envMxdizC - Check the value of A against the Target's Elemental Weakness.
$03/C670 F0 07 BEQ $07 [$C679] A:0008 X:0400 Y:0000 P:envMxdizC - Branch if there is no match to 03C66A.
-------------------------------------------------------------------------------------------------------------------------------
$03/C672 A9 04 LDA #$04 A:0008 X:0400 Y:0000 P:envMxdizC - Load 04 into A.
$03/C674 8D FE 38 STA $38FE [$7E:38FE] A:0004 X:0400 Y:0000 P:envMxdizC Store it at 38FE (x2 Power)
$03/C677 80 1C BRA $1C [$C695] A:0004 X:0400 Y:0000 P:envMxdizC - Always Branch to 03C695.
---------------------------------------------------------------------------------------------------------------------------------
$03/C679 AD 99 26 LDA $2699 [$7E:2699] A:0000 X:0000 Y:0000 P:envMxdiZC - Load Caster's Elemental Attack from Data Copy into A.
$03/C67C 2D 26 27 AND $2726 [$7E:2726] A:0000 X:0000 Y:0000 P:envMxdiZC - Check it against Target's Elemental Immunity.
$03/C67F F0 07 BEQ $07 [$C688] A:0000 X:0000 Y:0000 P:envMxdiZC - Branch if there is no match to 03C688.
----------------------------------------------------------------------------------------------------------------------------------
$03/C681 A9 00 LDA #$00 A:0008 X:0400 Y:0000 P:envMxdizC - Load 00 into A.
$03/C683 8D FE 38 STA $38FE [$7E:38FE] A:0000 X:0400 Y:0000 P:envMxdiZC - Store A in 38FE (x0 Power=1 Damage no matter what)
$03/C686 80 0D BRA $0D [$C695] A:0000 X:0400 Y:0000 P:envMxdiZC - Branch to 03C695.
------------------------------------------------------------------------------------------------------------------------------------
$03/C688 AD 99 26 LDA $2699 [$7E:2699] A:0000 X:0400 Y:0000 P:envMxdiZC - Load A from Caster's Elemental Attack Data in Data Copy.
$03/C68B 2D 25 27 AND $2725 [$7E:2725] A:0008 X:0400 Y:0000 P:envMxdizC - Check it against the Target's Resistance Byte in Data Copy.
$03/C68E F0 05 BEQ $05 [$C695] A:0008 X:0400 Y:0000 P:envMxdizC - Branch to 03C695 if there is no match.
-------------------------------------------------------------------------------------------------------------------------------------
$03/C690 A9 01 LDA #$01 A:0008 X:0400 Y:0000 P:envMxdizC - Load 01 into A.
$03/C692 8D FE 38 STA $38FE [$7E:38FE] A:0001 X:0400 Y:0000 P:envMxdizC Store it in a damage altering field (x1 (1/2) Power
-----------------------------------------------------------------------------------------------------------------------------------
$03/C695 A5 CD LDA $CD [$00:00CD] A:0000 X:0280 Y:0000 P:envMxdiZC - Seems to draw the current Caster's Class ID. If it's a monster it will always be Negative.
$03/C697 30 13 BMI $13 [$C6AC] A:0000 X:0280 Y:0000 P:envMxdiZC - Branch if Minus to 03C6AC.
$03/C699 A5 CE LDA $CE [$00:00CE] A:0000 X:0280 Y:0000 P:envMxdiZC - ??
$03/C69B 10 20 BPL $20 [$C6BD] A:0080 X:0280 Y:0000 P:eNvMxdizC - Branch if not negative (it is, 80, -127) to 03C6BD
$03/C69D AD 9A 26 LDA $269A [$7E:269A] A:0080 X:0280 Y:0000 P:eNvMxdizC - Load Attack Strong vs. Creature Type from Caster's Data Copy into A.
$03/C6A0 2D 40 27 AND $2740 [$7E:2740] A:0000 X:0280 Y:0000 P:envMxdiZC - Check it against the Target's Creature Type.
$03/C6A3 F0 18 BEQ $18 [$C6BD] A:0000 X:0280 Y:0000 P:envMxdiZC - Branch if there is no match, to 03C6BD
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/C6A5 A9 08 LDA #$08 A:0080 X:0400 Y:0000 P:eNvMxdizC - Load a 08 into A
$03/C6A7 8D FF 38 STA $38FF [$7E:38FF] A:0008 X:0400 Y:0000 P:envMxdizC - Store A in 7E38FF for later presumably. (x4 Power)
$03/C6AA 80 11 BRA $11 [$C6BD] A:0008 X:0400 Y:0000 P:envMxdizC - Branch Always to 03C6BD.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/C6AC A5 CE LDA $CE [$00:00CE] A:0082 X:0000 Y:0000 P:eNvMxdizC - ??
$03/C6AE 30 0D BMI $0D [$C6BD] A:0000 X:0000 Y:0000 P:envMxdiZC - ??
$03/C6B0 AD C0 26 LDA $26C0 [$7E:26C0] A:0000 X:0000 Y:0000 P:envMxdiZC - Load Creature Type from Caster's Data Copy.
$03/C6B3 2D 27 27 AND $2727 [$7E:2727] A:0080 X:0000 Y:0000 P:eNvMxdizC - Check it against Strong vs. Creature Types in Target's Data Copy.
$03/C6B6 F0 05 BEQ $05 [$C6BD] A:0000 X:0000 Y:0000 P:envMxdiZC - If it is does not match than Jump to 03C6BD
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/C6B8 A9 01 LDA #$01 A:0080 X:0000 Y:0000 P:eNvMxdizC - Load 01 into A.
$03/C6BA 8D FF 38 STA $38FF [$7E:38FF] A:0001 X:0000 Y:0000 P:envMxdizC - Store A in 7E38FF.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
$03/C6BD 9C 00 39 STZ $3900 [$7E:3900] A:0000 X:0280 Y:0000 P:envMxdiZC
$03/C6C0 AD 9D 26 LDA $269D [$7E:269D] A:0000 X:0400 Y:0000 P:envMxdiZC - Load Current Attack Base from Caster's Data Copy into A.
$03/C6C3 AA TAX A:0028 X:0400 Y:0000 P:envMxdizC - Transfer A to X.
$03/C6C4 8E 02 39 STX $3902 [$7E:3902] A:0028 X:0028 Y:0000 P:envMxdizC - Place the Attack Base 7E3902.
$03/C6C7 AD 84 26 LDA $2684 [$7E:2684] A:0028 X:0028 Y:0000 P:envMxdizC - Load Status Anomalies (Byte 2) from Caster's Data Copy into A.
$03/C6CA 29 04 AND #$04 A:0000 X:0028 Y:0000 P:envMxdiZC - Is the Status Berserk?
$03/C6CC F0 19 BEQ $19 [$C6E7] A:0000 X:0028 Y:0000 P:envMxdiZC - If not Jump to 03C6E7.
---------------------------------------------------------------------------------------------------------------------
03/C6CE 86 A9 STX $A9 [$00:00A9] A:0004 X:0028 Y:0000 P:envMxdizC - Store the X 0028 for later.
$03/C6D0 46 AA LSR $AA [$00:00AA] A:0004 X:0028 Y:0000 P:envMxdizC - divide the value in AA by 2.
$03/C6D2 66 A9 ROR $A9 [$00:00A9] A:0004 X:0028 Y:0000 P:envMxdiZc - divide the value in A9 by 2
$03/C6D4 18 CLC A:0004 X:0028 Y:0000 P:envMxdizc - Clear Z Flag
$03/C6D5 AD 02 39 LDA $3902 [$7E:3902] A:0004 X:0028 Y:0000 P:envMxdizc - Load A from 7E3902
$03/C6D8 65 A9 ADC $A9 [$00:00A9] A:0028 X:0028 Y:0000 P:envMxdizc - Add the value from 00A9
$03/C6DA 8D 02 39 STA $3902 [$7E:3902] A:003C X:0028 Y:0000 P:envMxdizc - Store the new value in 7E3902
$03/C6DD AD 03 39 LDA $3903 [$7E:3903] A:003C X:0028 Y:0000 P:envMxdizc - Load A from 7E3903
$03/C6E0 65 AA ADC $AA [$00:00AA] A:0000 X:0028 Y:0000 P:envMxdiZc - Add the value from 00AA
$03/C6E2 8D 03 39 STA $3903 [$7E:3903] A:0000 X:0028 Y:0000 P:envMxdiZc - Store the new value in 7E3903 (Berserk therefore gains 1 1/2 xdamage as DeathLike theorized)
$03/C6E5 80 0D BRA $0D [$C6F4] A:0000 X:0028 Y:0000 P:envMxdiZc - Branch Always to 03C6F4...
(Continued in Next Post)
Because it is such an enormous post of code it needs two posts in order to keep the originally first post (which will be made a directory for easy access) intact.