Arrow Guard Usability

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
Arrow Guard Usability:

0018d0e8: 3c028019 lui r2,0x8019            
0018d0ec: 904238f3 lbu r2,0x38f3(r2)        |r2 = Current Ability Flags 1
0018d0f0: 27bdffe8 addiu r29,r29,0xffe8     |
0018d0f4: 30420020 andi r2,r2,0x0020        |r2 = 0x20 if ranged weapon is checked
0018d0f8: 1040002b beq r2,r0,0x0018d1a8     #If ranged weapon is checked /Else branch to End
0018d0fc: afbf0010 sw r31,0x0010(r29)            | 
0018d100: 3c028019 lui r2,0x8019                 | 
0018d104: 904238d8 lbu r2,0x38d8(r2)             |r2 = Current ability used weapon ID
0018d108: 00000000 nop                           |
0018d10c: 00021840 sll r3,r2,0x01                |ID * 2
0018d110: 00621821 addu r3,r3,r2                 |ID * 3
0018d114: 00031880 sll r3,r3,0x02                |ID * 12 (12 is the size of each weapon section)
0018d118: 3c018006 lui r1,0x8006                 |
0018d11c: 00230821 addu r1,r1,r3                 |r1 = 80060000 + ID * 12
0018d120: 90222ebd lbu r2,0x2ebd(r1)             |r2 = Used weapon type 0x80062edb is the weapon type of weapon ID 0x00
0018d124: 00000000 nop                           |
0018d128: 2442fff5 addiu r2,r2,-0x000b           |Weapon Item Type - 11 (everything before crossbow is < 0)  /Item type table
0018d12c: 2c420002 sltiu r2,r2,0x0002            |r2 = 0x01 if weapon type is crossbow or bow (use unsigned value so values < 0x00 become something > 0x7F)
0018d130: 1040001d beq r2,r0,0x0018d1a8          #If weapon is bow or crossbow type /Else branch to End
0018d134: 34020064 ori r2,r0,0x0064                  |r2 = 0x64 (= 100)
0018d138: 3c048019 lui r4,0x8019                     |
0018d13c: 8c842d98 lw r4,0x2d98(r4)                  |r4 = Target data pointer
0018d140: 00000000 nop                               |
0018d144: 90830024 lbu r3,0x0024(r4)                 |r3 = Target brave
0018d148: 3c058019 lui r5,0x8019                     |
0018d14c: 8ca52d90 lw r5,0x2d90(r5)                  |r5 = Target current action data pointer
0018d150: 00431023 subu r2,r2,r3                     |r2 = 100 - Brave
0018d154: 0c0634e1 jal 0x0018d384                    |-->Chance to React  0 to 100 Random number against Target brave - returns r2 = 0x00 if reaction occurs
0018d158: a4a2002a sh r2,0x002a(r5)                  |Store (100-Brave) as target current action Hit % ?
0018d15c: 14400012 bne r2,r0,0x0018d1a8              #If target will react /Else branch to End
0018d160: 00000000 nop                                   | 
0018d164: 3c028019 lui r2,0x8019                         | 
0018d168: 8c42f5fc lw r2,-0x0a04(r2)                     |r2 = Action state  
0018d16c: 00000000 nop                                   |
0018d170: 1440000d bne r2,r0,0x0018d1a8                  #If action is being executed /Else branch to end
0018d174: 00000000 nop                                       | 
0018d178: 3c028019 lui r2,0x8019                             | 
0018d17c: 8c422d90 lw r2,0x2d90(r2)                          |r2 = Target current action data pointer
0018d180: 00000000 nop                                       |
0018d184: a0400000 sb r0,0x0000(r2)                          |Store Target current action hit flag as miss
0018d188: 3c038019 lui r3,0x8019                             |
0018d18c: 8c632d90 lw r3,0x2d90(r3)                          |r3 = Target current action data pointer
0018d190: 34020004 ori r2,r0,0x0004                          |r2 = 0x04
0018d194: a0620002 sb r2,0x0002(r3)                          |Store Evade type as 0x04 (Arrow guard)
0018d198: 3c038019 lui r3,0x8019                             |
0018d19c: 8c632d90 lw r3,0x2d90(r3)                          |r3 = Target current action data pointer
0018d1a0: 340201c4 ori r2,r0,0x01c4                          |r2 = 0x1c4 (Arrow guard Ability ID)
0018d1a4: a462000e sh r2,0x000e(r3)                          |Store Target Reaction ID as arrow guard
0018d1a8: 8fbf0010 lw r31,0x0010(r29)                        
0018d1ac: 27bd0018 addiu r29,r29,0x0018                      
0018d1b0: 03e00008 jr r31                                    
0018d1b4: 00000000 nop        

Return location

0018caf0: 'Reflect',_Blade_Grasp,_and_Arrow_Guard