Difference between revisions of "MP Switch, Distribute, and Damage Split usability"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
  MP Switch, Distribute, and Damage Split Check:
+
  If Formula is not 0x07, then if unit can react, test for MP switch then Distribute and Then Damage split
  0018cc34: 27bdffe8 addiu r29,r29,0xffe8     
+
Jump to ends after finding and setting one of thoses reaction.
  0018cc38: 3c038019 lui r3,0x8019    
+
-----------------------------------------------------------------------------------------------------------
  0018cc3c: 906338e5 lbu r3,0x38e5(r3)    
+
  0018cc34: 27bdffe8 addiu r29,r29,-0x0018    |
  0018cc40: 34020007 ori r2,r0,0x0007    
+
  0018cc38: 3c038019 lui r3,0x8019           |
  0018cc44: 10620020 beq r3,r2,0x0018ccc8    
+
  0018cc3c: 906338e5 lbu r3,0x38e5(r3)       |{{f/load|<nowiki>r3 = Ability formula</nowiki>}}
  0018cc48: afbf0010 sw r31,0x0010(r29)    
+
  0018cc40: 34020007 ori r2,r0,0x0007         |{{f/std|<nowiki>r2 = 0x07 (Weapon heal formula)</nowiki>}}
  0018cc4c: 3c048019 lui r4,0x8019    
+
  0018cc44: 10620020 beq r3,r2,0x0018ccc8     {{f/Cond|If Current Ability Formula <> 0x07}} /Else branch to  {{f/loc|END}}
  0018cc50: 8c842d98 lw r4,0x2d98(r4)    
+
  0018cc48: afbf0010 sw r31,0x0010(r29)           |{{f/std|}}
  0018cc54: 0c063248 jal 0x0018c920         [[Check if unit can react 1]]
+
  0018cc4c: 3c048019 lui r4,0x8019               |{{f/std|}}
  0018cc58: 00000000 nop          
+
  0018cc50: 8c842d98 lw r4,0x2d98(r4)             |{{f/adr|<nowiki>r4 = Targeted Unit data pointer</nowiki>}}
  0018cc5c: 1440001a bne r2,r0,0x0018ccc8    
+
  0018cc54: 0c063248 jal 0x0018c920               |{{f/jal|Check if unit can react 1|Check if unit can react 1}}
  0018cc60: 00000000 nop          
+
  0018cc58: 00000000 nop                         |
  0018cc64: 3c048019 lui r4,0x8019    
+
  0018cc5c: 1440001a bne r2,r0,0x0018ccc8         {{f/Cond|If Unit can react}} /Else branch to  {{f/loc|END}}
  0018cc68: 8c842d98 lw r4,0x2d98(r4)     Load Defender's Stats
+
  0018cc60: 00000000 nop                             |{{f/std|}}
  0018cc6c: 00000000 nop          
+
  0018cc64: 3c048019 lui r4,0x8019                   |{{f/std|}}
  0018cc70: 9083008d lbu r3,0x008d(r4)   Load 3rd set of Reactions
+
  0018cc68: 8c842d98 lw r4,0x2d98(r4)                 |{{f/adr|<nowiki>r4 = Targeted Unit data pointer</nowiki>}}
  0018cc74: 00000000 nop          
+
  0018cc6c: 00000000 nop                             |
  0018cc78: 30620001 andi r2,r3,0x0001    
+
  0018cc70: 9083008d lbu r3,0x008d(r4)               |{{f/load|<nowiki>r3 = Targeted Unit 3rd reaction set</nowiki>}}
  0018cc7c: 10400005 beq r2,r0,0x0018cc94         Branch if not using MP switch
+
  0018cc74: 00000000 nop                             |
  0018cc80: 30620002 andi r2,r3,0x0002     r2 = 2
+
  0018cc78: 30620001 andi r2,r3,0x0001               |{{f/std|<nowiki>r2 = 0x01 If Targeted Unit uses MP switch</nowiki>}}
  0018cc84: 0c06346e jal 0x0018d1b8     [[MP Switch Usability]]
+
  0018cc7c: 10400005 beq r2,r0,0x0018cc94             {{f/Cond|If Targeted Unit uses MP switch}}
  0018cc88: 00000000 nop          
+
  0018cc80: 30620002 andi r2,r3,0x0002               |{{f/std|<nowiki>r2 = 0x02 if Targeted Unit uses Distribute</nowiki>}}
  0018cc8c: 08063332 j 0x0018ccc8         End
+
  0018cc84: 0c06346e jal 0x0018d1b8                       |{{f/jal|MP Switch Usability|MP Switch Usability}}
  0018cc90: 00000000 nop          
+
  0018cc88: 00000000 nop                                 |
  0018cc94: 10400005 beq r2,r0,0x0018ccac         Branch if not using Distribute
+
  0018cc8c: 08063332 j 0x0018ccc8                         {{f/jump|jump to }} {{f/loc|END}}
  0018cc98: 00000000 nop          
+
  0018cc90: 00000000 nop                                 |
  0018cc9c: 0c0634aa jal 0x0018d2a8               [[Distribute Usability]]
+
  0018cc94: 10400005 beq r2,r0,0x0018ccac             {{f/Cond|Else If Targeted Unit uses Distribute}}
  0018cca0: 00000000 nop          
+
  0018cc98: 00000000 nop                                 |{{f/std|}}
  0018cca4: 08063332 j 0x0018ccc8                 End
+
  0018cc9c: 0c0634aa jal 0x0018d2a8                       |{{f/jal|Distribute Usability|Distribute Usability}}
  0018cca8: 00000000 nop          
+
  0018cca0: 00000000 nop                                 |
  0018ccac: 9082008e lbu r2,0x008e(r4) Load 4th set of Reactions
+
  0018cca4: 08063332 j 0x0018ccc8                         {{f/jump|jump to }} {{f/loc|END}}
  0018ccb0: 00000000 nop          
+
  0018cca8: 00000000 nop                                 |
  0018ccb4: 30420080 andi r2,r2,0x0080    
+
  0018ccac: 9082008e lbu r2,0x008e(r4)               |{{f/load|<nowiki>r2 = Targeted Unit 4th reaction set</nowiki>}}
  0018ccb8: 10400003 beq r2,r0,0x0018ccc8 Branch if not using Damage Split
+
  0018ccb0: 00000000 nop                             |
  0018ccbc: 00000000 nop          
+
  0018ccb4: 30420080 andi r2,r2,0x0080               |{{f/std|<nowiki>r2 = 0x80 if Targeted Unit uses Damage split</nowiki>}}
  0018ccc0: 0c0634c6 jal 0x0018d318 [[Damage Split Usability]]
+
  0018ccb8: 10400003 beq r2,r0,0x0018ccc8             {{f/Cond|If Targeted Unit uses Damage splite}}
  0018ccc4: 00000000 nop          
+
  0018ccbc: 00000000 nop                                 |{{f/std|}}
  0018ccc8: 8fbf0010 lw r31,0x0010(r29)    
+
  0018ccc0: 0c0634c6 jal 0x0018d318                       |{{f/jal|Damage Split Usability|Damage Split Usability}}
  0018cccc: 27bd0018 addiu r29,r29,0x0018    
+
  0018ccc4: 00000000 nop                                 |
  0018ccd0: 03e00008 jr r31        
+
  0018ccc8: 8fbf0010 lw r31,0x0010(r29)       '''END'''
  0018ccd4: 00000000 nop
+
  0018cccc: 27bd0018 addiu r29,r29,0x0018    
 +
  0018ccd0: 03e00008 jr r31                  
 +
  0018ccd4: 00000000 nop                    
 +
=== Return location ===
 +
'''Battle.bin'''
 +
0018bfd4: [[Attack_Finalisation_%26_Reaction_Flagging]]

Latest revision as of 13:01, 25 November 2022

If Formula is not 0x07, then if unit can react, test for MP switch then Distribute and Then Damage split
Jump to ends after finding and setting one of thoses reaction. 
-----------------------------------------------------------------------------------------------------------
0018cc34: 27bdffe8 addiu r29,r29,-0x0018    |
0018cc38: 3c038019 lui r3,0x8019            |
0018cc3c: 906338e5 lbu r3,0x38e5(r3)        |r3 = Ability formula
0018cc40: 34020007 ori r2,r0,0x0007         |r2 = 0x07 (Weapon heal formula)
0018cc44: 10620020 beq r3,r2,0x0018ccc8     #If Current Ability Formula <> 0x07 /Else branch to  END
0018cc48: afbf0010 sw r31,0x0010(r29)           |
0018cc4c: 3c048019 lui r4,0x8019                |
0018cc50: 8c842d98 lw r4,0x2d98(r4)             |r4 = Targeted Unit data pointer
0018cc54: 0c063248 jal 0x0018c920               |-->Check if unit can react 1
0018cc58: 00000000 nop                          |
0018cc5c: 1440001a bne r2,r0,0x0018ccc8         #If Unit can react /Else branch to  END
0018cc60: 00000000 nop                              |
0018cc64: 3c048019 lui r4,0x8019                    |
0018cc68: 8c842d98 lw r4,0x2d98(r4)                 |r4 = Targeted Unit data pointer
0018cc6c: 00000000 nop                              |
0018cc70: 9083008d lbu r3,0x008d(r4)                |r3 = Targeted Unit 3rd reaction set
0018cc74: 00000000 nop                              |
0018cc78: 30620001 andi r2,r3,0x0001                |r2 = 0x01 If Targeted Unit uses MP switch
0018cc7c: 10400005 beq r2,r0,0x0018cc94             #If Targeted Unit uses MP switch
0018cc80: 30620002 andi r2,r3,0x0002                |r2 = 0x02 if Targeted Unit uses Distribute
0018cc84: 0c06346e jal 0x0018d1b8                       |-->MP Switch Usability
0018cc88: 00000000 nop                                  |
0018cc8c: 08063332 j 0x0018ccc8                         >>jump to  END
0018cc90: 00000000 nop                                  |
0018cc94: 10400005 beq r2,r0,0x0018ccac             #Else If Targeted Unit uses Distribute
0018cc98: 00000000 nop                                  |
0018cc9c: 0c0634aa jal 0x0018d2a8                       |-->Distribute Usability
0018cca0: 00000000 nop                                  |
0018cca4: 08063332 j 0x0018ccc8                         >>jump to  END
0018cca8: 00000000 nop                                  |
0018ccac: 9082008e lbu r2,0x008e(r4)                |r2 = Targeted Unit 4th reaction set
0018ccb0: 00000000 nop                              |
0018ccb4: 30420080 andi r2,r2,0x0080                |r2 = 0x80 if Targeted Unit uses Damage split
0018ccb8: 10400003 beq r2,r0,0x0018ccc8             #If Targeted Unit uses Damage splite
0018ccbc: 00000000 nop                                  |
0018ccc0: 0c0634c6 jal 0x0018d318                       |-->Damage Split Usability
0018ccc4: 00000000 nop                                  |
0018ccc8: 8fbf0010 lw r31,0x0010(r29)       END
0018cccc: 27bd0018 addiu r29,r29,0x0018     
0018ccd0: 03e00008 jr r31                   
0018ccd4: 00000000 nop                      

Return location

Battle.bin
0018bfd4: Attack_Finalisation_&_Reaction_Flagging