Difference between revisions of "Evasion Changes due to Statuses"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
  Evasion Changes due to Statuses
+
  No Parameters - Returns Nothing
  001853f4: 3c058019 lui r5,0x8019
+
  001853f8: 8ca52d98 lw r5,0x2d98(r5) Load Target's Data Pointer
+
Nullify Ability Evasion byte (0x801938de to 0x801938e1) if Target has '''Don't Act - Sleep - Stop - Confuse - Charging - Performing'''
  001853fc: 27bdffe8 addiu r29,r29,0xffe8
+
Halve Ability base Hit (0x801938dc) If Target is '''Defending'''
  00185400: afbf0010 sw r31,0x0010(r29)
+
----------------------------------------------------------------------------------------------------------------------------------
  00185404: 90a2005c lbu r2,0x005c(r5) Load Target's 5th set of statuses
+
  001853f4: 3c058019 lui r5,0x8019           |
  00185408: 90a3005b lbu r3,0x005b(r5) Load Target's 4th set of statuses
+
  001853f8: 8ca52d98 lw r5,0x2d98(r5)         |{{f/adr|<nowiki>r5 = Target data pointer</nowiki>}} {{f/adr|Load Target's Data Pointer}}
  0018540c: 30420014 andi r2,r2,0x0014 Check for Don't Act/Sleep
+
  001853fc: 27bdffe8 addiu r29,r29,-0x0018    |
  00185410: 0002102b sltu r2,r0,r2 r2 = 1 if Target has either
+
  00185400: afbf0010 sw r31,0x0010(r29)       |
  00185414: 30630002 andi r3,r3,0x0002
+
  00185404: 90a2005c lbu r2,0x005c(r5)       |{{f/load|<nowiki>r2 = Target 5th set of Statuses byte</nowiki>}}
  00185418: 10600002 beq r3,r0,0x00185424 Branch if Target doesn't have Stop
+
  00185408: 90a3005b lbu r3,0x005b(r5)       |{{f/load|<nowiki>r3 = Target 4th set of Statuses byte</nowiki>}}
  0018541c: 00402021 addu r4,r2,r0 r4 = DA/Sleep check result
+
  0018540c: 30420014 andi r2,r2,0x0014       |{{f/std|r2 <> 0x00 If Target has Don't Act or Sleep}}
  00185420: 34040001 ori r4,r0,0x0001 r4 = 1
+
  00185410: 0002102b sltu r2,r0,r2           |r2 = 0x01 If Target has '''Don't Act or Sleep'''
  00185424: 90a20059 lbu r2,0x0059(r5) Load Target's 2nd set of statuses
+
  00185414: 30630002 andi r3,r3,0x0002       |{{f/std|<nowiki>r3 = 0x02 if Target has Stop</nowiki>}}
  00185428: 00000000 nop
+
  00185418: 10600002 beq r3,r0,0x00185424     {{f/Cond|If Target has Stop}}
  0018542c: 30420010 andi r2,r2,0x0010
+
  0018541c: 00402021 addu r4,r2,r0           |{{f/std|<nowiki>r4 = 0x01 if Target has Don't Act or Sleep</nowiki>}}
  00185430: 10400002 beq r2,r0,0x0018543c Branch if Target doesn't have  Confuse
+
  00185420: 34040001 ori r4,r0,0x0001             |{{f/std|<nowiki>r4 = 0x01</nowiki>}}
  00185434: 00000000 nop
+
  00185424: 90a20059 lbu r2,0x0059(r5)       |{{f/load|<nowiki>r2 = Target 2nd set of Statuses byte</nowiki>}} {{f/load|Load Target's 2nd set of statuses}}
  00185438: 34040001 ori r4,r0,0x0001 r4 = 1
+
  00185428: 00000000 nop                     |
  0018543c: 90a20058 lbu r2,0x0058(r5) Load Target's 1st set of statuses
+
  0018542c: 30420010 andi r2,r2,0x0010       |{{f/std|<nowiki>r2 = 0x10 if Target is Confuse</nowiki>}}
  00185440: 00000000 nop
+
  00185430: 10400002 beq r2,r0,0x0018543c     {{f/Cond|If Target is Confuse}}
  00185444: 30420009 andi r2,r2,0x000 9
+
  00185434: 00000000 nop                         |
  00185448: 10400003 beq r2,r0,0x00185458 Branch if Target doesn't have  Perform/Charging
+
  00185438: 34040001 ori r4,r0,0x0001             |{{f/std|<nowiki>r4 = 0x01</nowiki>}}
  0018544c: 308200ff andi r2,r4,0x00ff
+
  0018543c: 90a20058 lbu r2,0x0058(r5)       |{{f/load|<nowiki>r2 = Target 1st set of Statuses byte</nowiki>}}
  00185450: 34040001 ori r4,r0,0x0001 r4 = 1
+
  00185440: 00000000 nop                     |
  00185454: 308200ff andi r2,r4,0x00ff r2 = status checking result
+
  00185444: 30420009 andi r2,r2,0x0009        |{{f/std|r2 <> 0x00 if Target is Performing or Charging}}
  00185458: 10400005 beq r2,r0,0x00185470 Branch if Target doesn't have the above statuses
+
  00185448: 10400003 beq r2,r0,0x00185458     {{f/Cond|If Target is Performing / Charging}}
  0018545c: 00000000 nop
+
  0018544c: 308200ff andi r2,r4,0x00ff       |{{f/std|<nowiki>r2 = 0x01 If Target has at least one of the statuses tested above</nowiki>}}
  00185460: 3c048019 lui r4,0x8019
+
  00185450: 34040001 ori r4,r0,0x0001             |{{f/std|<nowiki>r4 = 0x01</nowiki>}}
  00185464: 248438de addiu r4,r4,0x38de prep Evade Pointer
+
  00185454: 308200ff andi r2,r4,0x00ff           |{{f/std|<nowiki>r2 = 0x01</nowiki>}}
  00185468: 0c017991 jal 0x0005e644 [[Data Nullifying]] (Evade)
+
  00185458: 10400005 beq r2,r0,0x00185470     {{f/Cond|If Target has at least one of the statuses checked}}
  0018546c: 34050004 ori r5,r0,0x0004 r5 = 4 (all 4 evades)
+
  0018545c: 00000000 nop                         |{{f/std|}}
  00185470: 3c028019 lui r2,0x8019
+
  00185460: 3c048019 lui r4,0x8019               |{{f/std|}}
  00185474: 8c422d98 lw r2,0x2d98(r2) Load Target's Data Pointer
+
  00185464: 248438de addiu r4,r4,0x38de           |{{f/adr|<nowiki>r4 = 0x801938de (Current Ability Accessory Evade pointer)</nowiki>}}
  00185478: 00000000 nop
+
  00185468: 0c017991 jal 0x0005e644               |{{f/jal|Data Nullifying|Data Nullifying}} Nullify all Current Ability Evasion byte (0x801938de to 0x801938e1)
  0018547c: 90420058 lbu r2,0x0058(r2) Load Target's 1st set of statuses
+
  0018546c: 34050004 ori r5,r0,0x0004             |{{f/std|<nowiki>r5 = 0x04 (number of byte to nullify)</nowiki>}}
  00185480: 00000000 nop
+
  00185470: 3c028019 lui r2,0x8019           |{{f/std|}}
  00185484: 30420002 andi r2,r2,0x0002
+
  00185474: 8c422d98 lw r2,0x2d98(r2)         |{{f/adr|<nowiki>r2 = Target data pointer</nowiki>}}
  00185488: 10400007 beq r2,r0,0x001854a8 Branch if Target is not Defending
+
  00185478: 00000000 nop                     |
  0018548c: 00000000 nop
+
  0018547c: 90420058 lbu r2,0x0058(r2)       |{{f/load|<nowiki>r2 = Target 1st set of statuses byte</nowiki>}}
  00185490: 3c038019 lui r3,0x8019
+
  00185480: 00000000 nop                     |
  00185494: 246338dc addiu r3,r3,0x38dc
+
  00185484: 30420002 andi r2,r2,0x0002       |{{f/std|<nowiki>r2 = 0x02 if Target is defending</nowiki>}}
  00185498: 90620000 lbu r2,0x0000(r3) Load Base Hit
+
  00185488: 10400007 beq r2,r0,0x001854a8     {{f/Cond|If Target is defending}}
  0018549c: 00000000 nop
+
  0018548c: 00000000 nop                         |{{f/std|}}
  001854a0: 00021042 srl r2,r2,0x01 Base Hit / 2
+
  00185490: 3c038019 lui r3,0x8019               |{{f/std|}}
  001854a4: a0620000 sb r2,0x0000(r3) Store new Hit%
+
  00185494: 246338dc addiu r3,r3,0x38dc           |{{f/adr|<nowiki>r3 = 0x801938dc (Ability base hit pointer)</nowiki>}}
  001854a8: 8fbf0010 lw r31,0x0010(r29)
+
  00185498: 90620000 lbu r2,0x0000(r3)           |{{f/load|<nowiki>r2 = Current Ability base hit</nowiki>}}
  001854ac: 27bd0018 addiu r29,r29,0x0018
+
  0018549c: 00000000 nop                         |
  001854b0: 03e00008 jr r31
+
  001854a0: 00021042 srl r2,r2,0x01               |{{f/std|<nowiki>r2 = Base Hit / 2</nowiki>}}
  001854b4: 00000000 nop
+
  001854a4: a0620000 sb r2,0x0000(r3)             |{{f/store|Store Halved Current Ability Base Hit}}
 +
  001854a8: 8fbf0010 lw r31,0x0010(r29)       '''END'''
 +
  001854ac: 27bd0018 addiu r29,r29,0x0018    
 +
  001854b0: 03e00008 jr r31                  
 +
  001854b4: 00000000 nop                    
  
 
+
=== Return Locations ===
== Return Locations ==
+
'''Battle.bin'''
 
+
  00188540: [[Physical Evade Calculation]]
*Battle.bin
+
  00188598: [[Physical Evade Calculation(Charge)]]
 
+
  001885e0: [[Magical Evade Calculation]]
  00188538: [[Physical Evade Calculation]]
 
  00188590: [[Physical Evade Calculation(Charge)]]
 
  001885d8: [[Magical Evade Calculation]]
 

Latest revision as of 20:33, 22 March 2022

No Parameters - Returns Nothing

Nullify Ability Evasion byte (0x801938de to 0x801938e1) if Target has Don't Act - Sleep - Stop - Confuse - Charging - Performing
Halve Ability base Hit (0x801938dc) If Target is Defending
----------------------------------------------------------------------------------------------------------------------------------
001853f4: 3c058019 lui r5,0x8019            |
001853f8: 8ca52d98 lw r5,0x2d98(r5)         |r5 = Target data pointer Load Target's Data Pointer
001853fc: 27bdffe8 addiu r29,r29,-0x0018    |
00185400: afbf0010 sw r31,0x0010(r29)       |
00185404: 90a2005c lbu r2,0x005c(r5)        |r2 = Target 5th set of Statuses byte
00185408: 90a3005b lbu r3,0x005b(r5)        |r3 = Target 4th set of Statuses byte
0018540c: 30420014 andi r2,r2,0x0014        |r2 <> 0x00 If Target has Don't Act or Sleep
00185410: 0002102b sltu r2,r0,r2            |r2 = 0x01 If Target has Don't Act or Sleep
00185414: 30630002 andi r3,r3,0x0002        |r3 = 0x02 if Target has Stop
00185418: 10600002 beq r3,r0,0x00185424     #If Target has Stop
0018541c: 00402021 addu r4,r2,r0            |r4 = 0x01 if Target has Don't Act or Sleep
00185420: 34040001 ori r4,r0,0x0001             |r4 = 0x01
00185424: 90a20059 lbu r2,0x0059(r5)        |r2 = Target 2nd set of Statuses byte Load Target's 2nd set of statuses
00185428: 00000000 nop                      |
0018542c: 30420010 andi r2,r2,0x0010        |r2 = 0x10 if Target is Confuse
00185430: 10400002 beq r2,r0,0x0018543c     #If Target is Confuse
00185434: 00000000 nop                          |
00185438: 34040001 ori r4,r0,0x0001             |r4 = 0x01
0018543c: 90a20058 lbu r2,0x0058(r5)        |r2 = Target 1st set of Statuses byte
00185440: 00000000 nop                      |
00185444: 30420009 andi r2,r2,0x0009        |r2 <> 0x00 if Target is Performing or Charging
00185448: 10400003 beq r2,r0,0x00185458     #If Target is Performing / Charging
0018544c: 308200ff andi r2,r4,0x00ff        |r2 = 0x01 If Target has at least one of the statuses tested above
00185450: 34040001 ori r4,r0,0x0001             |r4 = 0x01
00185454: 308200ff andi r2,r4,0x00ff            |r2 = 0x01
00185458: 10400005 beq r2,r0,0x00185470     #If Target has at least one of the statuses checked
0018545c: 00000000 nop                          |
00185460: 3c048019 lui r4,0x8019                |
00185464: 248438de addiu r4,r4,0x38de           |r4 = 0x801938de (Current Ability Accessory Evade pointer)
00185468: 0c017991 jal 0x0005e644               |-->Data Nullifying Nullify all Current Ability Evasion byte (0x801938de to 0x801938e1)
0018546c: 34050004 ori r5,r0,0x0004             |r5 = 0x04 (number of byte to nullify)
00185470: 3c028019 lui r2,0x8019            |
00185474: 8c422d98 lw r2,0x2d98(r2)         |r2 = Target data pointer
00185478: 00000000 nop                      |
0018547c: 90420058 lbu r2,0x0058(r2)        |r2 = Target 1st set of statuses byte
00185480: 00000000 nop                      |
00185484: 30420002 andi r2,r2,0x0002        |r2 = 0x02 if Target is defending
00185488: 10400007 beq r2,r0,0x001854a8     #If Target is defending
0018548c: 00000000 nop                          |
00185490: 3c038019 lui r3,0x8019                |
00185494: 246338dc addiu r3,r3,0x38dc           |r3 = 0x801938dc (Ability base hit pointer)
00185498: 90620000 lbu r2,0x0000(r3)            |r2 = Current Ability base hit
0018549c: 00000000 nop                          |
001854a0: 00021042 srl r2,r2,0x01               |r2 = Base Hit / 2
001854a4: a0620000 sb r2,0x0000(r3)             |Store Halved Current Ability Base Hit
001854a8: 8fbf0010 lw r31,0x0010(r29)       END
001854ac: 27bd0018 addiu r29,r29,0x0018     
001854b0: 03e00008 jr r31                   
001854b4: 00000000 nop                      

Return Locations

Battle.bin
00188540: Physical Evade Calculation
00188598: Physical Evade Calculation(Charge)
001885e0: Magical Evade Calculation