Target's Status Affecting XA (Magical)

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
No Parameters - Returns Nothing

Decreases Ability XA (-33%) if Target has Shell
Increases Ability XA (+50%) if Target has Frog or Chicken
---------------------------------------------------------------------------------
00186460: 3c028019 lui r2,0x8019            |
00186464: 8c422d98 lw r2,0x2d98(r2)         |r2 = Target data pointer
00186468: 00000000 nop                      |
0018646c: 9042005b lbu r2,0x005b(r2)        |r2 = Target 4th set of Current statuses
00186470: 00000000 nop                      |
00186474: 30420010 andi r2,r2,0x0010        |r2 = 0x10 if Target has Shell
00186478: 1040000b beq r2,r0,0x001864a8     #If Target has Shell
0018647c: 3c025555 lui r2,0x5555                |
00186480: 3c048019 lui r4,0x8019                |
00186484: 248438ce addiu r4,r4,0x38ce           |r4 = Current Ability XA pointer
00186488: 84830000 lh r3,0x0000(r4)             |r3 = Ability XA
0018648c: 34425556 ori r2,r2,0x5556             |r2 = 0x55555556 (0,33 * 2^32)
00186490: 00031840 sll r3,r3,0x01               |XA * 2
00186494: 00620018 mult r3,r2                   |XA * 2 / 3 * 2^32
00186498: 00031fc3 sra r3,r3,0x1f               |r3 = highest bit of r3 (should be 0x00 else 0x01)
0018649c: 00001010 mfhi r2                      |r2 = XA *2/3
001864a0: 00431023 subu r2,r2,r3                |XA eventually down rounded
001864a4: a4820000 sh r2,0x0000(r4)             |Store New XA (66% of initial XA)
001864a8: 3c028019 lui r2,0x8019            |
001864ac: 8c422d98 lw r2,0x2d98(r2)         |r2 = Target data pointer
001864b0: 00000000 nop                      |
001864b4: 9042005a lbu r2,0x005a(r2)        |r2 = Target 3rd set of Current statuses
001864b8: 00000000 nop                      |
001864bc: 30420006 andi r2,r2,0x0006        |r2 <> 0x00 if Target has frog or chicken
001864c0: 1040000b beq r2,r0,0x001864f0     #If the Target has Frog or Chicken 
001864c4: 00000000 nop                          |
001864c8: 3c048019 lui r4,0x8019                |
001864cc: 248438ce addiu r4,r4,0x38ce           |r4 = Current Ability XA pointer
001864d0: 84830000 lh r3,0x0000(r4)             |r3 = Ability XA
001864d4: 00000000 nop                          |
001864d8: 00031040 sll r2,r3,0x01               |XA * 2
001864dc: 00431021 addu r2,r2,r3                |XA * 3
001864e0: 00021fc2 srl r3,r2,0x1f               |r3 = highest bit of r3 (should be 0x00 else 0x01)
001864e4: 00431021 addu r2,r2,r3                |XA eventually high rounded
001864e8: 00021043 sra r2,r2,0x01               |XA * 3 / 2
001864ec: a4820000 sh r2,0x0000(r4)             |Store new XA (150% of initial XA)
001864f0: 03e00008 jr r31                   END
001864f4: 00000000 nop
Warning : This routine doesn't save its own program counter to r31 or push its own data to the stack. Make sure to take care of this if you want to jal from here.

Return Locations

Battle.bin
00188764: Magical Support/Status/Compat
00189018: Formula 0E - Dmg (Y)% Hit F(MA+X)% 100% Status Hide Status