Difference between revisions of "'Reflect', Blade Grasp, and Arrow Guard"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
(Created page with " 'Reflect', Blade Grasp, and Arrow Guard check? 0018c9e4: 3c028019 lui r2,0x8019 0018c9e8: 8c42f5f0 lw r2,-0x0a10(r2) 0018c9ec: 27bdffe8 addiu r29,r29,0xffe8 0018c9f...")
 
m
 
(12 intermediate revisions by 5 users not shown)
Line 1: Line 1:
  'Reflect', Blade Grasp, and Arrow Guard check?
+
  Reflect, Blade Grasp, and Arrow Guard check? - Checks for Reflect status, not the ability.
  0018c9e4: 3c028019 lui r2,0x8019
+
- I've mentioned this before, but the reflect reaction **is** the code for the reflect ability, 100%. in other words make sure to preserve it as much as possible. -- Talcall
  0018c9e8: 8c42f5f0 lw r2,-0x0a10(r2)
+
  0018c9ec: 27bdffe8 addiu r29,r29,0xffe8
+
  0018c9e4: 3c028019 lui r2,0x8019           |
  0018c9f0: 1440003f bne r2,r0,0x0018caf0
+
  0018c9e8: 8c42f5f0 lw r2,-0x0a10(r2)       |{{f/load|<nowiki>r2 = Load type of action</nowiki>}}
  0018c9f4: afbf0010 sw r31,0x0010(r29)
+
  0018c9ec: 27bdffe8 addiu r29,r29,0xffe8     |
  0018c9f8: 3c038019 lui r3,0x8019
+
  0018c9f0: 1440003f bne r2,r0,0x0018caf0     {{f/Cond|<nowiki>If r2 = 0x00 (not a reaction?/not reactable ?)</nowiki>}} /Else branch to {{f/loc|<nowiki>End</nowiki>}}
  0018c9fc: 906338e5 lbu r3,0x38e5(r3)
+
  0018c9f4: afbf0010 sw r31,0x0010(r29)           |
  0018ca00: 34020007 ori r2,r0,0x0007
+
  0018c9f8: 3c038019 lui r3,0x8019                 |
  0018ca04: 1062003a beq r3,r2,0x0018caf0
+
  0018c9fc: 906338e5 lbu r3,0x38e5(r3)             |{{f/load|<nowiki>r3 =  current ability formula</nowiki>}} {{f/std|<nowiki>0x801938e5</nowiki>}}
  0018ca08: 00000000 nop
+
  0018ca00: 34020007 ori r2,r0,0x0007             |{{f/std|<nowiki>r2 = 7</nowiki>}}
  0018ca0c: 3c048019 lui r4,0x8019
+
  0018ca04: 1062003a beq r3,r2,0x0018caf0         {{f/Cond|<nowiki>if ability formula is not Heal_(Weapon) </nowiki>}} /Else branch to {{f/loc|<nowiki>End</nowiki>}} (No reaction if healed by a weapon ?)
  0018ca10: 8c842d98 lw r4,0x2d98(r4) Load Defender's Dat a
+
  0018ca08: 00000000 nop                               |
  0018ca14: 0c063268 jal 0x0018c9a0 Checks for two unknown variables, sets r2 to either 1 or 2
+
  0018ca0c: 3c048019 lui r4,0x8019                     |
  0018ca18: 00000000 nop
+
  0018ca10: 8c842d98 lw r4,0x2d98(r4)                 |{{f/adr|<nowiki>r4 = Target data pointer</nowiki>}}
  0018ca1c: 34030001 ori r3,r0,0x0001
+
  0018ca14: 0c063268 jal 0x0018c9a0                   |{{f/jal|Reaction check?|<nowiki>Reaction check?</nowiki>}} /return r2 = 0x00, 0x01 or 0x02 {{f/std|<nowiki>see below</nowiki>}}
  0018ca20: 10430033 beq r2,r3,0x0018caf0
+
  0018ca18: 00000000 nop                               |
  0018ca24: 00000000 nop
+
  0018ca1c: 34030001 ori r3,r0,0x0001                 |
  0018ca28: 3c028019 lui r2,0x8019
+
  0018ca20: 10430033 beq r2,r3,0x0018caf0             {{f/Cond|<nowiki>if r2 <> 0x01 </nowiki>}} /Else branch to {{f/loc|<nowiki>End</nowiki>}} {{f/std|<nowiki>r2 = 0x01 if 801938c6 <> 0x00 and 801938c8 = 0x00</nowiki>}}
  0018ca2c: 8c422d98 lw r2,0x2d98(r2) Load Defender's Data
+
  0018ca24: 00000000 nop                               |
  0018ca30: 00000000 nop
+
  0018ca28: 3c028019 lui r2,0x8019                     |{{f/std|<nowiki> if here either r2 = 0x00 (Target 0x19a = 0x00) or r2 = 0x02 (target 0x19a <> 0x00)</nowiki>}}
  0018ca34: 9042005c lbu r2,0x005c(r2) Load Defender's 3rd set of Status
+
  0018ca2c: 8c422d98 lw r2,0x2d98(r2)                 |{{f/adr|<nowiki>r2 = Target Data pointer</nowiki>}}
  0018ca38: 00000000 nop
+
  0018ca30: 00000000 nop                               |
  0018ca3c: 30420002 andi r2,r2,0x0002
+
  0018ca34: 9042005c lbu r2,0x005c(r2)                 |{{f/load|<nowiki>r2 = Target 5th set of current Status</nowiki>}}
  0018ca40: 10400008 beq r2,r0,0x0018ca64 Branch if unit isn't under Reflect
+
  0018ca38: 00000000 nop                               |
  0018ca44: 00000000 nop
+
  0018ca3c: 30420002 andi r2,r2,0x0002                 |{{f/std|<nowiki>r2 = 0x02</nowiki>}}
  0018ca48: 3c028019 lui r2,0x8019
+
  0018ca40: 10400008 beq r2,r0,0x0018ca64             {{f/Cond|<nowiki>If unit has reflect</nowiki>}} /Else branch after reflect section
  0018ca4c: 944238c6 lhu r2,0x38c6(r2)
+
  0018ca44: 00000000 nop                                   |{{f/std|<nowiki> </nowiki>}}
  0018ca50: 00000000 nop
+
  0018ca48: 3c028019 lui r2,0x8019                         |
  0018ca54: 14400003 bne r2,r0,0x0018ca64
+
  0018ca4c: 944238c6 lhu r2,0x38c6(r2)                     |{{f/load|<nowiki>r2 = current ability reaction ID</nowiki>}}
  0018ca58: 00000000 nop
+
  0018ca50: 00000000 nop                                   |
  0018ca5c: 0c0633fa jal 0x0018cfe8 Reflect Reaction?
+
  0018ca54: 14400003 bne r2,r0,0x0018ca64                 {{f/Cond|<nowiki>if  current ability reaction ID = 0x00</nowiki>}} /Else branch after reflect section
  0018ca60: 00000000 nop
+
  0018ca58: 00000000 nop                                       |{{f/std|<nowiki> </nowiki>}}
  0018ca64: 3c028019 lui r2,0x8019
+
  0018ca5c: 0c0633fa jal 0x0018cfe8                           |{{f/jal|Reflect Reaction?|<nowiki>Reflect Reaction?</nowiki>}} {{f/std|<nowiki>Causes action to miss, store used ability ID in Target last attack recieved  </nowiki>}}
  0018ca68: 8c422d90 lw r2,0x2d90(r2) Load Defender's Currect Action Data
+
  0018ca60: 00000000 nop                                       |                    {{f/std| and reflect ID in Target reaction ID (current action 0x0e)}}
  0018ca6c: 00000000 nop
+
  0018ca64: 3c028019 lui r2,0x8019                     |{{f/std|<nowiki> </nowiki>}}
  0018ca70: 8442000e lh r2,0x000e(r2) Load Defender's Reaction ID
+
  0018ca68: 8c422d90 lw r2,0x2d90(r2)                 |{{f/adr|<nowiki>r2 = Target Current Action Data pointer</nowiki>}}
  0018ca74: 00000000 nop
+
  0018ca6c: 00000000 nop                               |
  0018ca78: 1440001d bne r2,r0,0x0018caf0 Branch if Defender has a reaction
+
  0018ca70: 8442000e lh r2,0x000e(r2)                 |{{f/load|<nowiki>r2 = Target current action reaction ID </nowiki>}} {{f/std|<nowiki>(same as target 0x19a)</nowiki>}}
  0018ca7c: 00000000 nop
+
  0018ca74: 00000000 nop                               |
  0018ca80: 3c048019 lui r4,0x8019
+
  0018ca78: 1440001d bne r2,r0,0x0018caf0             {{f/Cond|<nowiki>if Target current action reaction ID  = 0x00</nowiki>}} /Else branch to {{f/loc|<nowiki>end</nowiki>}} - Quit routine if reflect worked
  0018ca84: 8c842d98 lw r4,0x2d98(r4) Load Defender's Stats
+
  0018ca7c: 00000000 nop                                   |
  0018ca88: 0c06325a jal 0x0018c968
+
  0018ca80: 3c048019 lui r4,0x8019                         |
  0018ca8c: 00000000 nop
+
  0018ca84: 8c842d98 lw r4,0x2d98(r4)                     |{{f/adr|<nowiki>r4 = Target data pointer</nowiki>}}
  0018ca90: 14400017 bne r2,r0,0x0018caf0
+
  0018ca88: 0c06325a jal 0x0018c968                       |{{f/jal|Check if unit can react%3F|<nowiki>Check if unit can react%3F</nowiki>}} Check some status and 0x8018F5F0 - returns r2 = 0x01 not reacting, else 0x00
  0018ca94: 00000000 nop
+
  0018ca8c: 00000000 nop                                   |
  0018ca98: 3c048019 lui r4,0x8019
+
  0018ca90: 14400017 bne r2,r0,0x0018caf0                 {{f/Cond|<nowiki>If unit can react</nowiki>}} /Else branch to {{f/loc|<nowiki>end</nowiki>}}
  0018ca9c: 8c842d98 lw r4,0x2d98(r4) Load Defender's Stats
+
  0018ca94: 00000000 nop                                       |
  0018caa0: 0c0604c3 jal 0x0018130c Usability Check
+
  0018ca98: 3c048019 lui r4,0x8019                             |
  0018caa4: 00000000 nop
+
  0018ca9c: 8c842d98 lw r4,0x2d98(r4)                         |{{f/adr|<nowiki>r4 = Target data pointer</nowiki>}}
  0018caa8: 14400011 bne r2,r0,0x0018caf0
+
  0018caa0: 0c0604c3 jal 0x0018130c                           |{{f/jal|Weapon Guard Usability |<nowiki>Weapon Guard Usability </nowiki>}} r2 = 0x00 if unit can evade attacks  {{f/std|<nowiki>(check don't act, being ridden, depht >2 (and unit underwater - not riding))</nowiki>}}
  0018caac: 00000000 nop
+
  0018caa4: 00000000 nop                                       |
  0018cab0: 3c028019 lui r2,0x8019
+
  0018caa8: 14400011 bne r2,r0,0x0018caf0                     {{f/Cond|<nowiki>If Target can evade attacks</nowiki>}} /Else branch to {{f/loc|<nowiki>end</nowiki>}}
  0018cab4: 8c422d98 lw r2,0x2d98(r2) Load Defender's Stats
+
  0018caac: 00000000 nop                                           |
  0018cab8: 00000000 nop
+
  0018cab0: 3c028019 lui r2,0x8019                                 |
  0018cabc: 9043008e lbu r3,0x008e(r2) Load Defender's 4th set of Stats
+
  0018cab4: 8c422d98 lw r2,0x2d98(r2)                             |{{f/adr|<nowiki>r2 = Target data pointer</nowiki>}}
  0018cac0: 00000000 nop
+
  0018cab8: 00000000 nop                                           |
  0018cac4: 30620004 andi r2,r3,0x0004
+
  0018cabc: 9043008e lbu r3,0x008e(r2)                             |{{f/load|<nowiki>r3 = Target  4th set of reaction skills</nowiki>}}
  0018cac8: 10400005 beq r2,r0,0x0018cae0 Branch if Unit doesn't have Blade Grasp
+
  0018cac0: 00000000 nop                                           |
  0018cacc: 30620002 andi r2,r3,0x0002
+
  0018cac4: 30620004 andi r2,r3,0x0004                             |{{f/std|<nowiki>r2 = 0x04 if Target use blade grasp</nowiki>}}
  0018cad0: 0c063414 jal 0x0018d050 Blade Grasp Usability
+
  0018cac8: 10400005 beq r2,r0,0x0018cae0                         {{f/Cond|<nowiki>If Target use blade grasp</nowiki>}} /Else brach to arrow guard section
  0018cad4: 00000000 nop
+
  0018cacc: 30620002 andi r2,r3,0x0002                             |{{f/std|<nowiki>r2 = 0x02 if Target use arrow guard</nowiki>}}
  0018cad8: 080632bc j 0x0018caf0 End
+
  0018cad0: 0c063414 jal 0x0018d050                                   |{{f/jal|Blade Grasp Usability|<nowiki>Blade Grasp Usability</nowiki>}} {{f/std|<nowiki>If triggered action is set to miss, </nowiki>}}
  0018cadc: 00000000 nop
+
  0018cad4: 00000000 nop                                               |                        {{f/std|<nowiki>set evasion type and blade grasp ID is stored in Target reaction ID (current action 0x0e)</nowiki>}}
  0018cae0: 10400003 beq r2,r0,0x0018caf0 Branch if Unit doesn't have Arrow Guard
+
  0018cad8: 080632bc j 0x0018caf0                                     {{f/jump|<nowiki>Jump to end</nowiki>}}
  0018cae4: 00000000 nop
+
  0018cadc: 00000000 nop                                               |
  0018cae8: 0c06343a jal 0x0018d0e8
+
  0018cae0: 10400003 beq r2,r0,0x0018caf0                         {{f/Cond|<nowiki>If target use arrow guard</nowiki>}} /Else branch to {{f/loc|<nowiki>end</nowiki>}}
  0018caec: 00000000 nop
+
  0018cae4: 00000000 nop                                               |
  0018caf0: 8fbf0010 lw r31,0x0010(r29)
+
  0018cae8: 0c06343a jal 0x0018d0e8                                   |{{f/jal|Arrow Guard Usability|<nowiki>Arrow Guard Usability</nowiki>}} {{f/std|<nowiki>If triggered action is set to miss, </nowiki>}}
  0018caf4: 27bd0018 addiu r29,r29,0x0018
+
  0018caec: 00000000 nop                                               |                        {{f/std|<nowiki>set evasion type and Arrow guard ID is stored in  Target reaction ID (current action 0x0e)</nowiki>}}                           
  0018caf8: 03e00008 jr r31
+
  0018caf0: 8fbf0010 lw r31,0x0010(r29)                              
  0018cafc: 00000000 nop
+
  0018caf4: 27bd0018 addiu r29,r29,0x0018                            
 +
  0018caf8: 03e00008 jr r31                                          
 +
  0018cafc: 00000000 nop                      
 +
 
 +
==Return locations==
 +
0018b940: [[Pre_Formula_Setup_(FDC)]]

Latest revision as of 12:33, 20 May 2022

Reflect, Blade Grasp, and Arrow Guard check? - Checks for Reflect status, not the ability.
- I've mentioned this before, but the reflect reaction **is** the code for the reflect ability, 100%. in other words make sure to preserve it as much as possible. -- Talcall

0018c9e4: 3c028019 lui r2,0x8019            |
0018c9e8: 8c42f5f0 lw r2,-0x0a10(r2)        |r2 = Load type of action
0018c9ec: 27bdffe8 addiu r29,r29,0xffe8     |
0018c9f0: 1440003f bne r2,r0,0x0018caf0     #If r2 = 0x00 (not a reaction?/not reactable ?) /Else branch to End 
0018c9f4: afbf0010 sw r31,0x0010(r29)            |
0018c9f8: 3c038019 lui r3,0x8019                 |
0018c9fc: 906338e5 lbu r3,0x38e5(r3)             |r3 =  current ability formula 0x801938e5
0018ca00: 34020007 ori r2,r0,0x0007              |r2 = 7
0018ca04: 1062003a beq r3,r2,0x0018caf0          #if ability formula is not Heal_(Weapon)  /Else branch to End (No reaction if healed by a weapon ?)
0018ca08: 00000000 nop                               |
0018ca0c: 3c048019 lui r4,0x8019                     |
0018ca10: 8c842d98 lw r4,0x2d98(r4)                  |r4 = Target data pointer
0018ca14: 0c063268 jal 0x0018c9a0                    |-->Reaction check? /return r2 = 0x00, 0x01 or 0x02 see below
0018ca18: 00000000 nop                               |
0018ca1c: 34030001 ori r3,r0,0x0001                  |
0018ca20: 10430033 beq r2,r3,0x0018caf0              #if r2 <> 0x01  /Else branch to End r2 = 0x01 if 801938c6 <> 0x00 and 801938c8 = 0x00
0018ca24: 00000000 nop                               |
0018ca28: 3c028019 lui r2,0x8019                     | if here either r2 = 0x00 (Target 0x19a = 0x00) or r2 = 0x02 (target 0x19a <> 0x00)
0018ca2c: 8c422d98 lw r2,0x2d98(r2)                  |r2 = Target Data pointer
0018ca30: 00000000 nop                               |
0018ca34: 9042005c lbu r2,0x005c(r2)                 |r2 = Target 5th set of current Status
0018ca38: 00000000 nop                               |
0018ca3c: 30420002 andi r2,r2,0x0002                 |r2 = 0x02
0018ca40: 10400008 beq r2,r0,0x0018ca64              #If unit has reflect /Else branch after reflect section
0018ca44: 00000000 nop                                   | 
0018ca48: 3c028019 lui r2,0x8019                         |
0018ca4c: 944238c6 lhu r2,0x38c6(r2)                     |r2 = current ability reaction ID
0018ca50: 00000000 nop                                   |
0018ca54: 14400003 bne r2,r0,0x0018ca64                  #if  current ability reaction ID = 0x00 /Else branch after reflect section
0018ca58: 00000000 nop                                       | 
0018ca5c: 0c0633fa jal 0x0018cfe8                            |-->Reflect Reaction? Causes action to miss, store used ability ID in Target last attack recieved  
0018ca60: 00000000 nop                                       |                     and reflect ID in Target reaction ID (current action 0x0e)
0018ca64: 3c028019 lui r2,0x8019                     | 
0018ca68: 8c422d90 lw r2,0x2d90(r2)                  |r2 = Target Current Action Data pointer
0018ca6c: 00000000 nop                               |
0018ca70: 8442000e lh r2,0x000e(r2)                  |r2 = Target current action reaction ID  (same as target 0x19a)
0018ca74: 00000000 nop                               |
0018ca78: 1440001d bne r2,r0,0x0018caf0              #if Target current action reaction ID  = 0x00 /Else branch to end - Quit routine if reflect worked
0018ca7c: 00000000 nop                                   |
0018ca80: 3c048019 lui r4,0x8019                         |
0018ca84: 8c842d98 lw r4,0x2d98(r4)                      |r4 = Target data pointer
0018ca88: 0c06325a jal 0x0018c968                        |-->Check if unit can react%3F Check some status and 0x8018F5F0 - returns r2 = 0x01 not reacting, else 0x00
0018ca8c: 00000000 nop                                   |
0018ca90: 14400017 bne r2,r0,0x0018caf0                  #If unit can react /Else branch to end
0018ca94: 00000000 nop                                       |
0018ca98: 3c048019 lui r4,0x8019                             |
0018ca9c: 8c842d98 lw r4,0x2d98(r4)                          |r4 = Target data pointer
0018caa0: 0c0604c3 jal 0x0018130c                            |-->Weapon Guard Usability  r2 = 0x00 if unit can evade attacks  (check don't act, being ridden, depht >2 (and unit underwater - not riding))
0018caa4: 00000000 nop                                       |
0018caa8: 14400011 bne r2,r0,0x0018caf0                      #If Target can evade attacks /Else branch to end
0018caac: 00000000 nop                                           |
0018cab0: 3c028019 lui r2,0x8019                                 |
0018cab4: 8c422d98 lw r2,0x2d98(r2)                              |r2 = Target data pointer
0018cab8: 00000000 nop                                           |
0018cabc: 9043008e lbu r3,0x008e(r2)                             |r3 = Target  4th set of reaction skills
0018cac0: 00000000 nop                                           |
0018cac4: 30620004 andi r2,r3,0x0004                             |r2 = 0x04 if Target use blade grasp
0018cac8: 10400005 beq r2,r0,0x0018cae0                          #If Target use blade grasp /Else brach to arrow guard section
0018cacc: 30620002 andi r2,r3,0x0002                             |r2 = 0x02 if Target use arrow guard
0018cad0: 0c063414 jal 0x0018d050                                    |-->Blade Grasp Usability If triggered action is set to miss, 
0018cad4: 00000000 nop                                               |                         set evasion type and blade grasp ID is stored in Target reaction ID (current action 0x0e)
0018cad8: 080632bc j 0x0018caf0                                      >>Jump to end
0018cadc: 00000000 nop                                               |
0018cae0: 10400003 beq r2,r0,0x0018caf0                          #If target use arrow guard /Else branch to end
0018cae4: 00000000 nop                                               |
0018cae8: 0c06343a jal 0x0018d0e8                                    |-->Arrow Guard Usability If triggered action is set to miss,  
0018caec: 00000000 nop                                               |                         set evasion type and Arrow guard ID is stored in  Target reaction ID (current action 0x0e)                            
0018caf0: 8fbf0010 lw r31,0x0010(r29)                                
0018caf4: 27bd0018 addiu r29,r29,0x0018                              
0018caf8: 03e00008 jr r31                                            
0018cafc: 00000000 nop                        

Return locations

0018b940: Pre_Formula_Setup_(FDC)