Calculate Ability Pointers and Type

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
Calculate Ability Pointers and Type
0005a72c: 308401ff andi r4,r4,0x01ff		r4 = Ability ID
0005a730: 000418c0 sll r3,r4,0x03		ID * 8
0005a734: 3c028006 lui r2,0x8006
0005a738: 2442ebf0 addiu r2,r2,0xebf0
0005a73c: 00621021 addu r2,r3,r2
0005a740: aca20000 sw r2,0x0000(r5)		Store Ability's Data 1 Pointer  (usually on the stack)
0005a744: 28820170 slti r2,r4,0x0170
0005a748: 10400008 beq r2,r0,0x0005a76c		Branch if Ability isn't a normal  Ability
0005a74c: 00641023 subu r2,r3,r4		ID * 7
0005a750: 00021040 sll r2,r2,0x01		ID * 14
0005a754: 3c038006 lui r3,0x8006
0005a758: 2463fbf0 addiu r3,r3,0xfbf0
0005a75c: 00431021 addu r2,r2,r3
0005a760: acc20000 sw r2,0x0000(r6)		Store Ability's Data 2 Pointer
0005a764: 08016a1f j 0x0005a87c
0005a768: 00001021 addu r2,r0,r0		r2 = 0
0005a76c: 2882017e slti r2,r4,0x017e
0005a770: 10400007 beq r2,r0,0x0005a790		Branch if Ability isn't an Item
0005a774: 00000000 nop
0005a778: 3c028006 lui r2,0x8006
0005a77c: 24420ea0 addiu r2,r2,0x0ea0
0005a780: 00821021 addu r2,r4,r2
0005a784: acc20000 sw r2,0x0000(r6)		Store Item's Ability Pointer
0005a788: 08016a1f j 0x0005a87c
0005a78c: 34020001 ori r2,r0,0x0001		r2 = 1
0005a790: 2882018a slti r2,r4,0x018a
0005a794: 10400007 beq r2,r0,0x0005a7b4		Branch if Ability isn't a Throw
0005a798: 00000000 nop
0005a79c: 3c028006 lui r2,0x8006
0005a7a0: 24420ea2 addiu r2,r2,0x0ea2
0005a7a4: 00821021 addu r2,r4,r2
0005a7a8: acc20000 sw r2,0x0000(r6)		Store Throw's Ability Pointer
0005a7ac: 08016a1f j 0x0005a87c
0005a7b0: 34020002 ori r2,r0,0x0002		r2 = 2
0005a7b4: 28820196 slti r2,r4,0x0196
0005a7b8: 10400007 beq r2,r0,0x0005a7d8		Branch if Ability isn't a Jump
0005a7bc: 00041040 sll r2,r4,0x01		ID * 2
0005a7c0: 3c038006 lui r3,0x8006
0005a7c4: 24630d18 addiu r3,r3,0x0d18
0005a7c8: 00431021 addu r2,r2,r3
0005a7cc: acc20000 sw r2,0x0000(r6)		Store Jump's Ability Pointer
0005a7d0: 08016a1f j 0x0005a87c
0005a7d4: 34020003 ori r2,r0,0x0003		r2 = 3
0005a7d8: 2882019e slti r2,r4,0x019e
0005a7dc: 10400007 beq r2,r0,0x0005a7fc		Branch if Ability isn't a Charge
0005a7e0: 00041040 sll r2,r4,0x01		ID * 2
0005a7e4: 3c038006 lui r3,0x8006
0005a7e8: 24630d18 addiu r3,r3,0x0d18
0005a7ec: 00431021 addu r2,r2,r3
0005a7f0: acc20000 sw r2,0x0000(r6)		Store Charge's Ability Pointer
0005a7f4: 08016a1f j 0x0005a87c
0005a7f8: 34020004 ori r2,r0,0x0004		r2 = 4
0005a7fc: 288201a6 slti r2,r4,0x01a6
0005a800: 10400007 beq r2,r0,0x0005a820		Branch if Ability isn't Math
0005a804: 00000000 nop
0005a808: 3c028006 lui r2,0x8006
0005a80c: 24420eb6 addiu r2,r2,0x0eb6
0005a810: 00821021 addu r2,r4,r2
0005a814: acc20000 sw r2,0x0000(r6)		Store Math's Ability Pointer
0005a818: 08016a1f j 0x0005a87c
0005a81c: 34020005 ori r2,r0,0x0005		r2 = 5
0005a820: 288201c6 slti r2,r4,0x01c6
0005a824: 10400007 beq r2,r0,0x0005a844		Branch if Ability isn't a Reaction
0005a828: 00000000 nop
0005a82c: 3c028006 lui r2,0x8006
0005a830: 24420eb6 addiu r2,r2,0x0eb6
0005a834: 00821021 addu r2,r4,r2
0005a838: acc20000 sw r2,0x0000(r6)		Store Reaction's Ability Pointer
0005a83c: 08016a1f j 0x0005a87c
0005a840: 34020006 ori r2,r0,0x0006		r2 = 6
0005a844: 288201e6 slti r2,r4,0x01e6
0005a848: 14400007 bne r2,r0,0x0005a868		Branch if Ability is a Support
0005a84c: 00000000 nop
0005a850: 3c028006 lui r2,0x8006
0005a854: 24420eb6 addiu r2,r2,0x0eb6
0005a858: 00821021 addu r2,r4,r2
0005a85c: acc20000 sw r2,0x0000(r6)		Store Movement's Ability Pointer
0005a860: 08016a1f j 0x0005a87c
0005a864: 34020008 ori r2,r0,0x0008		r2 = 8
0005a868: 3c028006 lui r2,0x8006
0005a86c: 24420eb6 addiu r2,r2,0x0eb6
0005a870: 00821021 addu r2,r4,r2
0005a874: acc20000 sw r2,0x0000(r6)		Store Support's Ability Pointer
0005a878: 34020007 ori r2,r0,0x0007		r2 = 7
0005a87c: 03e00008 jr r31
0005a880: 00000000 nop


Return Locations

0013624c: 001361e8 - 00136320
0014178c: Spell Quote determination