Difference between revisions of "Golem Accuracy"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m (Notes and links)
m
Line 1: Line 1:
Return r2 = 0x01 if action Miss
+
  00188888: 27bdffe8 addiu r29,r29,0xffe8     |
+
  0018888c: afbf0010 sw r31,0x0010(r29)       |
  00188888: 27bdffe8 addiu r29,r29,0xffe8        
+
  00188890: 0c061760 jal 0x00185d80           |{{f/jal|Store_MA_and_X|Store_MA_and_X}} Set Ability XA = Attacker's MA and YA = used Ability X
  0018888c: afbf0010 sw r31,0x0010(r29)          
+
  00188894: 00000000 nop                     |
  00188890: 0c061760 jal 0x00185d80               |-->[[Store_MA_and_X|<span style="color:blue">Store_MA_and_X</span>]]
+
  00188898: 0c061881 jal 0x00186204           |{{f/jal|Magic_Attack_Up_routine|Magic_Attack_Up_routine}} Ability XA +33% If Attacker uses Magic Attack Up
  00188894: 00000000 nop                          
+
  0018889c: 00000000 nop                     |
  00188898: 0c061881 jal 0x00186204               |-->[[Magic_Attack_Up_routine|<span style="color:blue">Magic_Attack_Up_routine</span>]]
+
  001888a0: 0c061967 jal 0x0018659c           |{{f/jal|Set_XA_%2B_YA_for_Status_Formulas_(Stupid_section)|Set_XA_%2B_YA_for_Status_Formulas}} XA+YA becomes TCA HP damage (YA is processed via compatibility)
  0018889c: 00000000 nop                          
+
  001888a4: 00000000 nop                     |
  001888a0: 0c061967 jal 0x0018659c               |-->[[Set_XA_%2B_YA_for_Status_Formulas_(Stupid_section)|<span style="color:blue">Set_XA_%2B_YA_for_Status_Formulas_(Stupid_section)</span>]]
+
  001888a8: 3c028019 lui r2,0x8019           |
  001888a4: 00000000 nop                          
+
  001888ac: 8c422d94 lw r2,0x2d94(r2)         |{{f/adr|<nowiki>r2 = Attacker data pointer</nowiki>}}
  001888a8: 3c028019 lui r2,0x8019                
+
  001888b0: 00000000 nop                     |
  001888ac: 8c422d94 lw r2,0x2d94(r2)             |<span style="color:limegreen">r2 = Attacker data pointer</span>
+
  001888b4: 9042005c lbu r2,0x005c(r2)       |{{f/load|<nowiki>r2 = Attacker current status (5th set)</nowiki>}}
  001888b0: 00000000 nop                          
+
  001888b8: 00000000 nop                     |
  001888b4: 9042005c lbu r2,0x005c(r2)             |<span style="color:limegreen">r2 = Attacker current status 5</span>
+
  001888bc: 30420080 andi r2,r2,0x0080       |{{f/std|<nowiki>r2 = 0x80 if attacker as faith</nowiki>}}
  001888b8: 00000000 nop                          
+
  001888c0: 10400003 beq r2,r0,0x001888d0     {{f/Cond|If Attacker as faith}}
  001888bc: 30420080 andi r2,r2,0x0080             |r2 = 0x80 if attacker as faith
+
  001888c4: 34020064 ori r2,r0,0x0064             |{{f/std|<nowiki>r2 = 100</nowiki>}}
  001888c0: 10400003 beq r2,r0,0x001888d0         #'''If Attacker as faith'''
+
  001888c8: 3c018019 lui r1,0x8019               |
  001888c4: 34020064 ori r2,r0,0x0064                 |r2 = 100
+
  001888cc: a02238d3 sb r2,0x38d3(r1)             |{{f/store|Store 100 as Current Ability Attacker Faith}} {{f/std|  0x801938d3 / 801938d3}}
  001888c8: 3c018019 lui r1,0x8019                     |
+
  001888d0: 3c028019 lui r2,0x8019           |
  001888cc: a02238d3 sb r2,0x38d3(r1)                 |<span style="color:darkviolet">Store 100 as attacker effective faith</span>
+
  001888d4: 8c422d94 lw r2,0x2d94(r2)         |{{f/adr|<nowiki>r2 = Attacker data pointer</nowiki>}}
  001888d0: 3c028019 lui r2,0x8019                     |
+
  001888d8: 00000000 nop                     |
  001888d4: 8c422d94 lw r2,0x2d94(r2)             |<span style="color:limegreen">r2 = Attacker data pointer</span>
+
  001888dc: 9042005c lbu r2,0x005c(r2)       |{{f/load|<nowiki>r2 = Attacker current status 5</nowiki>}}
  001888d8: 00000000 nop                          
+
  001888e0: 00000000 nop                     |
  001888dc: 9042005c lbu r2,0x005c(r2)             |<span style="color:limegreen">r2 = Attacker current status 5</span>
+
  001888e4: 30420040 andi r2,r2,0x0040       |{{f/std|<nowiki>r2 = 0x40 if attacker as innoncent</nowiki>}}
  001888e0: 00000000 nop                          
+
  001888e8: 10400003 beq r2,r0,0x001888f8     {{f/Cond|If attacker as innocent}}
  001888e4: 30420040 andi r2,r2,0x0040             |r2 = 0x40 if attacker as innoncent
+
  001888ec: 00000000 nop                         |
  001888e8: 10400003 beq r2,r0,0x001888f8         #'''If attacker as innocent'''
+
  001888f0: 3c018019 lui r1,0x8019               |
  001888ec: 00000000 nop                               |
+
  001888f4: a02038d3 sb r0,0x38d3(r1)             |{{f/store|Store 0 as Current Ability Attacker Faith}}
  001888f0: 3c018019 lui r1,0x8019                     |
+
  001888f8: 3c048019 lui r4,0x8019           |
  001888f4: a02038d3 sb r0,0x38d3(r1)                 |<span style="color:darkviolet">Store 0 as attacker effective faith</span>
+
  001888fc: 8c842d90 lw r4,0x2d90(r4)         |{{f/adr|<nowiki>r4 = Target current action (TCA) data pointer</nowiki>}}
  001888f8: 3c048019 lui r4,0x8019                     |
+
  00188900: 3c028019 lui r2,0x8019           |
  001888fc: 8c842d90 lw r4,0x2d90(r4)             |<span style="color:limegreen">r4 = Target current action data pointer</span>
+
  00188904: 904238d3 lbu r2,0x38d3(r2)       |{{f/load|<nowiki>r2 = Current Ability Attacker effective faith</nowiki>}}
  00188900: 3c028019 lui r2,0x8019                
+
  00188908: 84830004 lh r3,0x0004(r4)         |{{f/load|<nowiki>r3 = TCA HP dmg (Host temporary Hit%)</nowiki>}}
  00188904: 904238d3 lbu r2,0x38d3(r2)             |<span style="color:limegreen">r2 = Attacker effective faith</span>
+
  0018890c: 00000000 nop                     |
  00188908: 84830004 lh r3,0x0004(r4)             |<span style="color:limegreen">r3 = T Current action HP dmg (Host temporary Hit%)</span>
+
  00188910: 00620018 mult r3,r2               |{{f/std|Att. Faith x TCA HP dmg}}
  0018890c: 00000000 nop                          
+
  00188914: 00001812 mflo r3                 |{{f/std|<nowiki>r3 = Att. Faith x TCA HP dmg</nowiki>}}
  00188910: 00620018 mult r3,r2                  
+
  00188918: 3c0251eb lui r2,0x51eb           |
  00188914: 00001812 mflo r3                       |r3 = Att. Faith x Hit%
+
  0018891c: 3442851f ori r2,r2,0x851f         |{{f/std|<nowiki>r2 = 0,32 * 2^32</nowiki>}}
  00188918: 3c0251eb lui r2,0x51eb                
+
  00188920: 00620018 mult r3,r2               |{{f/std|Att. Faith x TCA HP dmg * 0,32 * 2^32}}
  0018891c: 3442851f ori r2,r2,0x851f             |r2 = 0,32 * 2^32
+
  00188924: 00031fc3 sra r3,r3,0x1f           |{{f/std|<nowiki>r3 = Higher bit of r3 (prepare rounding stuff - should be 0)</nowiki>}}
  00188920: 00620018 mult r3,r2                  
+
  00188928: 00001010 mfhi r2                 |{{f/std|<nowiki>r2 = (Att.Faith x TCA HP dmg) * 0,32</nowiki>}}
  00188924: 00031fc3 sra r3,r3,0x1f               |r3 = r3/2^31 (prepare rounding stuff)
+
  0018892c: 00021143 sra r2,r2,0x05           |{{f/std|<nowiki>r2 = (Att.Faith x TCA HP dmg) /100</nowiki>}}
  00188928: 00001010 mfhi r2                       |r2 = (Att.Faith x Hit%) * 0,32
+
  00188930: 00431023 subu r2,r2,r3           |{{f/std|rounding ( - 0 or 1)}}
  0018892c: 00021143 sra r2,r2,0x05               |r2 = (Att.Faith x Hit%) * 0,32 /32      (=  (Att.Faith x Hit%) /100)
+
  00188934: 0c061d44 jal 0x00187510           |{{f/jal|Uses_HP_damage_as_Action_hit%25|Uses_HP_damage_as_Action_hit%25}} HP damage becomes Hit% - Roll Hit% vs random (0 to 100), Set Action hit flag to miss if it fails
  00188930: 00431023 subu r2,r2,r3                 |rounding ( - 0 or 1)
+
  00188938: a4820004 sh r2,0x0004(r4)         |{{f/store|Store (Att.Faith x TCA HP dmg) /100 as HP Dmg}}
  00188934: 0c061d44 jal 0x00187510               |-->[[Use_Specific_Action_Hit_Percentage|<span style="color:blue">Use_Specific_Action_Hit_Percentage</span>]]
+
  0018893c: 3c028019 lui r2,0x8019           |{{f/std|Uses_HP_damage_as_Action_hit%25}}
  00188938: a4820004 sh r2,0x0004(r4)             |<span style="color:darkviolet">Store r2 as HP Dmg </span>(become Hit% in above jal)
+
  00188940: 8c422d90 lw r2,0x2d90(r2)         |{{f/adr|<nowiki>r2 = TCA data pointer</nowiki>}}
  0018893c: 3c028019 lui r2,0x8019                
+
  00188944: 00000000 nop                     |
  00188940: 8c422d90 lw r2,0x2d90(r2)             |<span style="color:limegreen">r2 = Target current action data pointer</span>
+
  00188948: 90420000 lbu r2,0x0000(r2)       |{{f/load|<nowiki>r2 = TCA hit flag</nowiki>}}
  00188944: 00000000 nop                          
+
  0018894c: 00000000 nop                     |
  00188948: 90420000 lbu r2,0x0000(r2)             |<span style="color:limegreen">r2 = Target action hit flag</span>
+
  00188950: 2c420001 sltiu r2,r2,0x0001       |{{f/std|<nowiki>r2 = 0x01 if action miss</nowiki>}}
  0018894c: 00000000 nop                          
+
  00188954: 8fbf0010 lw r31,0x0010(r29)      
  00188950: 2c420001 sltiu r2,r2,0x0001           |r2 = 1 if action miss
+
  00188958: 27bd0018 addiu r29,r29,0x0018    
  00188954: 8fbf0010 lw r31,0x0010(r29)          
+
  0018895c: 03e00008 jr r31                  
  00188958: 27bd0018 addiu r29,r29,0x0018        
 
  0018895c: 03e00008 jr r31                      
 
 
  00188960: 00000000 nop
 
  00188960: 00000000 nop
 
+
=== Return location ===
==Return location==
+
'''Battle.bin'''
*Battle.bin
 
 
  0018917c: [[14_Set_Golem_Hit_CasF/100*(MA%2BX)%25|Formula 14 - Set Golem Hit CasF/100*(MA+X)%]]
 
  0018917c: [[14_Set_Golem_Hit_CasF/100*(MA%2BX)%25|Formula 14 - Set Golem Hit CasF/100*(MA+X)%]]

Revision as of 12:25, 17 April 2022

00188888: 27bdffe8 addiu r29,r29,0xffe8     |
0018888c: afbf0010 sw r31,0x0010(r29)       |
00188890: 0c061760 jal 0x00185d80           |-->Store_MA_and_X Set Ability XA = Attacker's MA and YA = used Ability X
00188894: 00000000 nop                      |
00188898: 0c061881 jal 0x00186204           |-->Magic_Attack_Up_routine Ability XA +33% If Attacker uses Magic Attack Up
0018889c: 00000000 nop                      |
001888a0: 0c061967 jal 0x0018659c           |-->Set_XA_%2B_YA_for_Status_Formulas XA+YA becomes TCA HP damage (YA is processed via compatibility)
001888a4: 00000000 nop                      |
001888a8: 3c028019 lui r2,0x8019            |
001888ac: 8c422d94 lw r2,0x2d94(r2)         |r2 = Attacker data pointer
001888b0: 00000000 nop                      |
001888b4: 9042005c lbu r2,0x005c(r2)        |r2 = Attacker current status (5th set)
001888b8: 00000000 nop                      |
001888bc: 30420080 andi r2,r2,0x0080        |r2 = 0x80 if attacker as faith
001888c0: 10400003 beq r2,r0,0x001888d0     #If Attacker as faith
001888c4: 34020064 ori r2,r0,0x0064             |r2 = 100
001888c8: 3c018019 lui r1,0x8019                |
001888cc: a02238d3 sb r2,0x38d3(r1)             |Store 100 as Current Ability Attacker Faith    0x801938d3 / 801938d3
001888d0: 3c028019 lui r2,0x8019            |
001888d4: 8c422d94 lw r2,0x2d94(r2)         |r2 = Attacker data pointer
001888d8: 00000000 nop                      |
001888dc: 9042005c lbu r2,0x005c(r2)        |r2 = Attacker current status 5
001888e0: 00000000 nop                      |
001888e4: 30420040 andi r2,r2,0x0040        |r2 = 0x40 if attacker as innoncent
001888e8: 10400003 beq r2,r0,0x001888f8     #If attacker as innocent
001888ec: 00000000 nop                          |
001888f0: 3c018019 lui r1,0x8019                |
001888f4: a02038d3 sb r0,0x38d3(r1)             |Store 0 as Current Ability Attacker Faith
001888f8: 3c048019 lui r4,0x8019            |
001888fc: 8c842d90 lw r4,0x2d90(r4)         |r4 = Target current action (TCA) data pointer
00188900: 3c028019 lui r2,0x8019            |
00188904: 904238d3 lbu r2,0x38d3(r2)        |r2 = Current Ability Attacker effective faith
00188908: 84830004 lh r3,0x0004(r4)         |r3 = TCA HP dmg (Host temporary Hit%)
0018890c: 00000000 nop                      |
00188910: 00620018 mult r3,r2               |Att. Faith x TCA HP dmg
00188914: 00001812 mflo r3                  |r3 = Att. Faith x TCA HP dmg
00188918: 3c0251eb lui r2,0x51eb            |
0018891c: 3442851f ori r2,r2,0x851f         |r2 = 0,32 * 2^32
00188920: 00620018 mult r3,r2               |Att. Faith x TCA HP dmg * 0,32 * 2^32
00188924: 00031fc3 sra r3,r3,0x1f           |r3 = Higher bit of r3 (prepare rounding stuff - should be 0)
00188928: 00001010 mfhi r2                  |r2 = (Att.Faith x TCA HP dmg) * 0,32
0018892c: 00021143 sra r2,r2,0x05           |r2 = (Att.Faith x TCA HP dmg) /100
00188930: 00431023 subu r2,r2,r3            |rounding ( - 0 or 1)
00188934: 0c061d44 jal 0x00187510           |-->Uses_HP_damage_as_Action_hit%25 HP damage becomes Hit% - Roll Hit% vs random (0 to 100), Set Action hit flag to miss if it fails
00188938: a4820004 sh r2,0x0004(r4)         |Store (Att.Faith x TCA HP dmg) /100 as HP Dmg
0018893c: 3c028019 lui r2,0x8019            |Uses_HP_damage_as_Action_hit%25
00188940: 8c422d90 lw r2,0x2d90(r2)         |r2 = TCA data pointer
00188944: 00000000 nop                      |
00188948: 90420000 lbu r2,0x0000(r2)        |r2 = TCA hit flag
0018894c: 00000000 nop                      |
00188950: 2c420001 sltiu r2,r2,0x0001       |r2 = 0x01 if action miss
00188954: 8fbf0010 lw r31,0x0010(r29)       
00188958: 27bd0018 addiu r29,r29,0x0018     
0018895c: 03e00008 jr r31                   
00188960: 00000000 nop

Return location

Battle.bin
0018917c: Formula 14 - Set Golem Hit CasF/100*(MA+X)%