Difference between revisions of "Ability Loading"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
Line 97: Line 97:
 
  0019a7dc: 08066a87 j 0x 0019aa1c
 
  0019a7dc: 08066a87 j 0x 0019aa1c
 
  0019a7e0: a6230000 sh r3,0x0000(r17) Store Unit's ID
 
  0019a7e0: a6230000 sh r3,0x0000(r17) Store Unit's ID
 +
 +
*Charge*
 +
0019a7e4: 17c2000c bne r30,r2,0x 0019a818 Branch if Action Menu != Charge
 +
0019a7e8: 001610c0 sll r2,r22,0x03 Unit's ID * 8
 +
0019a7ec: 001210c0 sll r2,r18,0x03 Unit's Battle ID * 8
 +
0019a7f0: 3c08801a lui r8,0x801a
 +
0019a7f4: 2508f3c4 addiu r8,r8,0xf3c4
 +
0019a7f8: 00481021 addu r2,r2,r8
 +
0019a7fc: 9050177c lbu r16,0x177c(r2) Load Unit's Weapon ID
 +
0019a800: 00000000 nop
 +
0019a804: 2602ffb9 addiu r2,r16,0xffb9 Weapon ID - 0x47 (Romanda Gun)
 +
0019a808: 2c420006 sltiu r2,r2,0x0006
 +
0019a80c: 14400083 bne r2,r0,0x 0019aa1c Branch if Weapon is a Gun
 +
0019a810: 02601021 addu r2,r19,r0 r2 = Counter
 +
0019a814: 001610c0 sll r2,r22,0x03 Unit's ID * 8
 +
 +
*Others*
 +
0019a818: 00561023 subu r2,r2,r22 ID * 7
 +
0019a81c: 00021180 sll r2,r2,0x06 ID * 1c0
 +
0019a820: 3c038019 lui r3,0x8019
 +
0019a824: 246308cc addiu r3,r3,0x08cc
 +
0019a828: 0043a821 addu r21,r2,r3 r21 = Unit's Data Pointer
 +
0019a82c: 00008021 addu r16,r0,r0 Ability Counter = 0
 +
0019a830: 00121100 sll r2,r18,0x04 Battle ID * 16
 +
0019a834: 00521021 addu r2,r2,r18 ID * 17
 +
0019a838: 000210c0 sll r2,r2,0x03 ID * 136
 +
0019a83c: 24420ef0 addiu r2,r2,0x0ef0
 +
0019a840: 3c08801a lui r8,0x801a
 +
0019a844: 2508f3c4 addiu r8,r8,0xf3c4
 +
0019a848: 01023821 addu r7,r8,r2 r7 = Usable Ability List Pointer
 +
0019a84c: 0080b821 addu r23,r4,r0 r23 = Temp Ability Pointer
 +
0019a850: 96f20000 lhu r18,0x0000(r23) Load Ability ID
 +
0019a854: 00000000 nop
 +
0019a858: 12400060 beq r18,r0,0x 0019a9dc Branch if Ability ID = 0
 +
0019a85c: 00131880 sll r3,r19,0x02 Counter * 4
 +
0019a860: 001220c0 sll r4,r18,0x03 ID * 8
 +
0019a864: 3c018006 lui r1,0x8006
 +
0019a868: 00240821 addu r1,r1,r4
 +
0019a86c: 9022ebf7 lbu r2,-0x1409(r1) Load ?
 +
0019a870: 00000000 nop
 +
0019a874: 30420080 andi r2,r2,0x0080
 +
0019a878: 10400058 beq r2,r0,0x 0019a9dc Branch if ability isn't Usable by AI
 +
0019a87c: 00e38821 addu r17,r7,r3 r17 = Current Usable Ability Pointer
 +
0019a880: 2a420170 slti r2,r18,0x0170
 +
0019a884: 1040002c beq r2,r0,0x 0019a938 Branch if ID >= 0x170 (Potion)
 +
0019a888: 00921023 subu r2,r4,r18 ID * 7
 +
0019a88c: 00022040 sll r4,r2,0x01 ID * 14
 +
0019a890: 92a20090 lbu r2,0x0090(r21) Load Unit's Support set 2
 +
0019a894: 3c018006 lui r1,0x8006
 +
0019a898: 00240821 addu r1,r1,r4
 +
0019a89c: 9023fbfd lbu r3,-0x0403(r1) Load Ability's MP Cost
 +
0019a8a0: 30420080 andi r2,r2,0x0080
 +
0019a8a4: 10400002 beq r2,r0,0x 0019a8b0 Branch if Unit doesn't have Half of MP
 +
0019a8a8: 00000000 nop
 +
0019a8ac: 00031842 srl r3,r3,0x01 MP Cost / 2
 +
0019a8b0: 96a2002e lhu r2,0x002e(r21) Load Unit's Max MP
 +
0019a8b4: 00000000 nop
 +
0019a8b8: 0043102a slt r2,r2,r3
 +
0019a8bc: 14400047 bne r2,r0,0x 0019a9dc Branch if Unit has enough MP to use
 +
0019a8c0: 00000000 nop
 +
0019a8c4: 3c02801a lui r2,0x801a
 +
0019a8c8: 8c42f3d0 lw r2,-0x0c30(r2) Load AI Behavior Data
 +
0019a8cc: 00000000 nop
 +
0019a8d0: 30420400 andi r2,r2,0x0400
 +
0019a8d4: 10400006 beq r2,r0,0x 0019a8f0 Branch if AI doesn't check Faith
 +
0019a8d8: 00000000 nop
 +
0019a8dc: 92a20052 lbu r2,0x0052(r21) Load Unit's Innate Statuses
 +
0019a8e0: 00000000 nop
 +
0019a8e4: 30420040 andi r2,r2,0x0040
 +
0019a8e8: 1440003c bne r2,r0,0x 0019a9dc Branch if Unit has Innate Innocent
 +
0019a8ec: 00000000 nop
 +
0019a8f0: 3c018006 lui r1,0x8006
 +
0019a8f4: 00240821 addu r1,r1,r4
 +
0019a8f8: 9023fbf6 lbu r3,-0x040a(r1) Load Ability Flags 4
 +
0019a8fc: 00000000 nop
 +
0019a900: 30620008 andi r2,r3,0x0008
 +
0019a904: 10400004 beq r2,r0,0x 0019a918 Branch if it doesn't require Sword
 +
0019a908: 00000000 nop
 +
0019a90c: 92a20184 lbu r2,0x0184(r21) Load Equipped Flags?
 +
0019a910: 08066a4c j 0x 0019a930
 +
0019a914: 30420008 andi r2,r2,0x0008 Check for Sword
 +
0019a918: 30620004 andi r2,r3,0x0004
 +
0019a91c: 10400007 beq r2,r0,0x 0019a93c Branch if it doesn't require Materia B.
 +
0019a920: 02c02021 addu r4,r22,r0 r4 = Unit's ID
 +
0019a924: 92a20184 lbu r2,0x0184(r21) Load Equipped Flags?
 +
0019a928: 00000000 nop
 +
0019a92c: 30420004 andi r2,r2,0x0004
 +
0019a930: 1040002a beq r2,r0,0x 0019a9dc Branch if Sword/Materia Blade not used
 +
0019a934: 00000000 nop
 +
0019a938: 02c02021 addu r4,r22,r0 r4 = Unit's ID
 +
0019a93c: 02802821 addu r5,r20,r0 r5 = Skillset
 +
0019a940: 02003021 addu r6,r16,r0 r6 = Ability Counter
 +
0019a944: 0c066a94 jal 0x 0019aa50 Load Known Ability Flag
 +
0019a948: afa70018 sw r7,0x0018(r29)
 +
0019a94c: 8fa70018 lw r7,0x0018(r29)
 +
0019a950: 10400022 beq r2,r0,0x 0019a9dc Branch if Ability isn't known
 +
0019a954: 2a8200b0 slti r2,r20,0x00b0
 +
0019a958: 1440000c bne r2,r0,0x 0019a98c Branch if not a monster skillset
 +
0019a95c: 34020009 ori r2,r0,0x0009 r2 = 9
 +
0019a960: 34020003 ori r2,r0,0x0003 r2 = 3
 +
0019a964: 16020004 bne r16,r2,0x 0019a978 Branch if Ability Counter < 3
 +
0019a968: 00000000 nop
 +
0019a96c: 96220002 lhu r2,0x0002(r17) Load Ability's Skillset/flags
 +
0019a970: 08066a61 j 0x 0019a984
 +
0019a974: 34420800 ori r2,r2,0x0800 r2 = Monster Skill Needed check?
 +
0019a978: 96220002 lhu r2,0x0002(r17) Load Ability's Skillset/flags
 +
0019a97c: 00000000 nop
 +
0019a980: 3042f7ff andi r2,r2,0xf7ff Disable Monster Skill Needed check?
 +
0019a984: a6220002 sh r2,0x0002(r17) Store new Skillset/flags
 +
0019a988: 34020009 ori r2,r0,0x0009 r2 = 9
 +
0019a98c: a2340002 sb r20,0x0002(r17) Store Skillset
 +
0019a990: 17c2000d bne r30,r2,0x 0019a9c8 Branch if Action Menu != Jump
 +
0019a994: a6320000 sh r18,0x0000(r17) Store Ability ID
 +
 +
*Jump1*
 +
0019a998: 2a42018f slti r2,r18,0x018f
 +
0019a99c: 1040000f beq r2,r0,0x 0019a9dc Branch if ID >= 0x18f (Vertical Jump2)
 +
0019a9a0: 34020001 ori r2,r0,0x0001 r2 = 1
 +
0019a9a4: 8fa80010 lw r8,0x0010(r29) Load Jump Stored Flag
 +
0019a9a8: 00000000 nop
 +
0019a9ac: 15020005 bne r8,r2,0x 0019a9c4 Branch if Jump isn't stored
 +
0019a9b0: 34080001 ori r8,r0,0x0001 Jump Stored = True
 +
0019a9b4: 2673ffff addiu r19,r19,0xffff Counter --
 +
0019a9b8: 00131080 sll r2,r19,0x02 Counter * 4
 +
0019a9bc: 00e28821 addu r17,r7,r2 (Stores better jump data)
 +
0019a9c0: a6320000 sh r18,0x0000(r17) Store Ability ID
 +
0019a9c4: afa80010 sw r8,0x0010(r29) Store new Jump Stored Flag
 +
0019a9c8: 26730001 addiu r19,r19,0x0001 Counter ++
 +
0019a9cc: 96220000 lhu r2,0x0000(r17) Load Ability ID
 +
0019a9d0: 00161a80 sll r3,r22,0x0a Unit ID * 1024
 +
0019a9d4: 00431021 addu r2,r2,r3 Ability ID + Unit ID * 1024
 +
0019a9d8: a6220000 sh r2,0x0000(r17) Store Ability/Unit ID Data
 +
0019a9dc: 26100001 addiu r16,r16,0x0001 Ability Counter ++
 +
0019a9e0: 2a020010 slti r2,r16,0x0010
 +
0019a9e4: 1440ff9a bne r2,r0,0x 0019a850 Branch if Ability Counter < 16
 +
0019a9e8: 26f70002 addiu r23,r23,0x0002 Pointer += 2
 +
0019a9ec: 34020009 ori r2,r0,0x0009 r2 = 9
 +
0019a9f0: 17c20009 bne r30,r2,0x 0019aa18 Branch if Action Menu isn't Jump
 +
0019a9f4: 00000000 nop
 +
 +
*Jump2*
 +
0019a9f8: 8fa80010 lw r8,0x0010(r29) Load Jump Stored Flag
 +
0019a9fc: 00000000 nop
 +
0019aa00: 15000006 bne r8,r0,0x 0019aa1c Branch if Jump is Stored
 +
0019aa04: 02601021 addu r2,r19,r0 r2 = Counter
 +
0019aa08: 34020012 ori r2,r0,0x0012 r2 = 0x12
 +
0019aa0c: a2220002 sb r2,0x0002(r17) Store Skillset = Jump
 +
0019aa10: 00161280 sll r2,r22,0x0a Unit ID * 1024
 +
0019aa14: a6220000 sh r2,0x0000(r17) Store Unit's ID
 +
0019aa18: 02601021 addu r2,r19,r0 r2 = Counter
 +
0019aa1c: 8fbf0044 lw r31,0x0044(r29)
 +
0019aa20: 8fbe0040 lw r30,0x0040(r29)
 +
0019aa24: 8fb7003c lw r23,0x003c(r29)
 +
0019aa28: 8fb60038 lw r22,0x0038(r29)
 +
0019aa2c: 8fb50034 lw r21,0x0034(r29)
 +
0019aa30: 8fb40030 lw r20,0x0030(r29)
 +
0019aa34: 8fb3002c lw r19,0x002c(r29)
 +
0019aa38: 8fb20028 lw r18,0x0028(r29)
 +
0019aa3c: 8fb10024 lw r17,0x0024(r29)
 +
0019aa40: 8fb00020 lw r16,0x0020(r29)
 +
0019aa44: 27bd0048 addiu r29,r29,0x0048
 +
0019aa48: 03e00008 jr r31
 +
0019aa4c: 00000000 nop

Revision as of 02:38, 26 September 2014

*Ability Loading*
0019a670: 02802021 addu r4,r20,r0		r4 = Unit's Skillset
0019a674: 34050001 ori r5,r0,0x0001		Check = 1 (Ability)
0019a678: 0c01698e jal 0x0005a638		Store Skillset's Abilities?
0019a67c: afa00010 sw r0,0x0010(r29)		Store Jump Stored Flag = False
0019a680: 00402021 addu r4,r2,r0		r4 = Temp Ability List? Pointer
0019a684: 3c08801a lui r8,0x801a
0019a688: 2508f3c4 addiu r8,r8,0xf3c4
0019a68c: 02c81021 addu r2,r22,r8
0019a690: 34030002 ori r3,r0,0x0002		r3 = 2
0019a694: 3c018006 lui r1,0x8006
0019a698: 00340821 addu r1,r1,r20
0019a69c: 903e5cb4 lbu r30,0x5cb4(r1)		Load Skillset's Action Menu
0019a6a0: 9052198c lbu r18,0x198c(r2)		Load Unit's Battle ID?
*Weapon Inventory*
0019a6a4: 17c3003f bne r30,r3,0x 0019a7a4	Beanch if Action Menu != Weapon Inventory
0019a6a8: 34020003 ori r2,r0,0x0003		r2 = 3
0019a6ac: 02c02021 addu r4,r22,r0		r4 = Unit's ID
0019a6b0: 02802821 addu r5,r20,r0		r5 = Unit's Skillset
0019a6b4: 0c066a94 jal 0x 0019aa50		Load Known Ability Flag
0019a6b8: 00003021 addu r6,r0,r0		Counter2 = 0 (Throw Shuriken)
0019a6bc: 10400014 beq r2,r0,0x 0019a710		Branch if Ability isn't known
0019a6c0: 00162280 sll r4,r22,0x0a		Unit's ID * 1024
0019a6c4: 00008021 addu r16,r0,r0		Item Counter = 0
0019a6c8: 00121100 sll r2,r18,0x04		Battle ID * 16
0019a6cc: 00521021 addu r2,r2,r18		ID * 17
0019a6d0: 000210c0 sll r2,r2,0x03		ID * 136
0019a6d4: 24420ef0 addiu r2,r2,0x0ef0
0019a6d8: 3c08801a lui r8,0x801a
0019a6dc: 2508f3c4 addiu r8,r8,0xf3c4
0019a6e0: 00481021 addu r2,r2,r8		r2 = Unit's Usable Move List Pointer
0019a6e4: 00131880 sll r3,r19,0x02		Counter * 4
0019a6e8: 00621821 addu r3,r3,r2
0019a6ec: 00901021 addu r2,r4,r16		Unit's ID * 1024 + Item Counter
0019a6f0: 2442007a addiu r2,r2,0x007a		(Shuriken's ID)
0019a6f4: a0740002 sb r20,0x0002(r3)		Store Unit's Skillset
0019a6f8: a4620000 sh r2,0x0000(r3)		Store Unit's ID + Shuriken ID
0019a6fc: 24630004 addiu r3,r3,0x0004		Pointer += 4
0019a700: 26100001 addiu r16,r16,0x0001		Item Counter ++
0019a704: 2a020003 slti r2,r16,0x0003
0019a708: 1440fff8 bne r2,r0,0x 0019a6ec		Branch if Item Counter < 3
0019a70c: 26730001 addiu r19,r19,0x0001		Counter ++
0019a710: 02c02021 addu r4,r22,r0		r4 = Unit's ID
0019a714: 02802821 addu r5,r20,r0		r5 = Unit's Skillset
0019a718: 0c066a94 jal 0x 0019aa50		Load Known Ability Flag
0019a71c: 34060001 ori r6,r0,0x0001		Counter2 = 1 (Throw Ball)
0019a720: 10400014 beq r2,r0,0x 0019a774		Branch if Ability isn't known
0019a724: 00008021 addu r16,r0,r0		Item Counter = 0
0019a728: 00162280 sll r4,r22,0x0a		Unit ID * 1024
0019a72c: 00121100 sll r2,r18,0x04		Battle ID * 16
0019a730: 00521021 addu r2,r2,r18		ID * 17
0019a734: 000210c0 sll r2,r2,0x03		ID * 136
0019a738: 24420ef0 addiu r2,r2,0x0ef0
0019a73c: 3c08801a lui r8,0x801a
0019a740: 2508f3c4 addiu r8,r8,0xf3c4
0019a744: 01021021 addu r2,r8,r2		r2 = Unit's Usable Move List Pointer
0019a748: 00131880 sll r3,r19,0x02		Counter * 4
0019a74c: 00621821 addu r3,r3,r2
0019a750: 00901021 addu r2,r4,r16		Unit's ID * 1024 + Item Counter
0019a754: 2442007d addiu r2,r2,0x007d		(Fire Ball ID)
0019a758: a0740002 sb r20,0x0002(r3)		Store Unit's Skillset
0019a75c: a4620000 sh r2,0x0000(r3)		Store Unit's ID + Ball ID
0019a760: 24630004 addiu r3,r3,0x0004		Pointer += 3
0019a764: 26100001 addiu r16,r16,0x0001		Item Counter ++
0019a768: 2a020003 slti r2,r16,0x0003
0019a76c: 1440fff8 bne r2,r0,0x 0019a750		Branch if Item Counter < 3
0019a770: 26730001 addiu r19,r19,0x0001		Counter ++
0019a774: 34100002 ori r16,r0,0x0002		Throw Counter = 2
0019a778: 02c02021 addu r4,r22,r0		r4 = Unit's ID
0019a77c: 02802821 addu r5,r20,r0		r5 = Unit's Skillset
0019a780: 0c066a94 jal 0x 0019aa50		Load Known Ability Flag
0019a784: 02003021 addu r6,r16,r0		Counter2 = Throw Counter (Knife and on)
0019a788: 1440ffac bne r2,r0,0x 0019a63c		Branch if Ability is known
0019a78c: 26100001 addiu r16,r16,0x0001		Throw Counter ++
0019a790: 2a02000c slti r2,r16,0x000c
0019a794: 1440fff9 bne r2,r0,0x 0019a77c		Branch if Throw Counter < 12
0019a798: 02c02021 addu r4,r22,r0		r4 = Unit's ID
0019a79c: 08066a87 j 0x 0019aa1c
0019a7a0: 02601021 addu r2,r19,r0		r2 = Counter
*Math SKill*
0019a7a4: 17c2000f bne r30,r2,0x 0019a7e4	Branch if Action Menu != Math Skill
0019a7a8: 3402000a ori r2,r0,0x000a		r2 = a
0019a7ac: 00121100 sll r2,r18,0x04		Battle ID * 16
0019a7b0: 00521021 addu r2,r2,r18		ID * 17
0019a7b4: 000210c0 sll r2,r2,0x03		ID * 136
0019a7b8: 24420ef0 addiu r2,r2,0x0ef0
0019a7bc: 3c08801a lui r8,0x801a
0019a7c0: 2508f3c4 addiu r8,r8,0xf3c4
0019a7c4: 00481021 addu r2,r2,r8		r2 = Usable Skill List Pointer
0019a7c8: 00131880 sll r3,r19,0x02		Counter * 4
0019a7cc: 00438821 addu r17,r2,r3
0019a7d0: 26620001 addiu r2,r19,0x0001		r2 = Counter + 1
0019a7d4: 00161a80 sll r3,r22,0x0a
0019a7d8: a2340002 sb r20,0x0002(r17)		Store Skillset
0019a7dc: 08066a87 j 0x 0019aa1c
0019a7e0: a6230000 sh r3,0x0000(r17)		Store Unit's ID
*Charge*
0019a7e4: 17c2000c bne r30,r2,0x 0019a818	Branch if Action Menu != Charge
0019a7e8: 001610c0 sll r2,r22,0x03		Unit's ID * 8
0019a7ec: 001210c0 sll r2,r18,0x03		Unit's Battle ID * 8
0019a7f0: 3c08801a lui r8,0x801a
0019a7f4: 2508f3c4 addiu r8,r8,0xf3c4
0019a7f8: 00481021 addu r2,r2,r8
0019a7fc: 9050177c lbu r16,0x177c(r2)		Load Unit's Weapon ID
0019a800: 00000000 nop
0019a804: 2602ffb9 addiu r2,r16,0xffb9		Weapon ID - 0x47 (Romanda Gun)
0019a808: 2c420006 sltiu r2,r2,0x0006
0019a80c: 14400083 bne r2,r0,0x 0019aa1c		Branch if Weapon is a Gun
0019a810: 02601021 addu r2,r19,r0		r2 = Counter
0019a814: 001610c0 sll r2,r22,0x03		Unit's ID * 8
*Others*
0019a818: 00561023 subu r2,r2,r22		ID * 7
0019a81c: 00021180 sll r2,r2,0x06		ID * 1c0
0019a820: 3c038019 lui r3,0x8019
0019a824: 246308cc addiu r3,r3,0x08cc
0019a828: 0043a821 addu r21,r2,r3		r21 = Unit's Data Pointer
0019a82c: 00008021 addu r16,r0,r0		Ability Counter = 0
0019a830: 00121100 sll r2,r18,0x04		Battle ID * 16
0019a834: 00521021 addu r2,r2,r18		ID * 17
0019a838: 000210c0 sll r2,r2,0x03		ID * 136
0019a83c: 24420ef0 addiu r2,r2,0x0ef0
0019a840: 3c08801a lui r8,0x801a
0019a844: 2508f3c4 addiu r8,r8,0xf3c4
0019a848: 01023821 addu r7,r8,r2		r7 = Usable Ability List Pointer
0019a84c: 0080b821 addu r23,r4,r0		r23 = Temp Ability Pointer
0019a850: 96f20000 lhu r18,0x0000(r23)		Load Ability ID
0019a854: 00000000 nop
0019a858: 12400060 beq r18,r0,0x 0019a9dc	Branch if Ability ID = 0
0019a85c: 00131880 sll r3,r19,0x02		Counter * 4
0019a860: 001220c0 sll r4,r18,0x03		ID * 8
0019a864: 3c018006 lui r1,0x8006
0019a868: 00240821 addu r1,r1,r4
0019a86c: 9022ebf7 lbu r2,-0x1409(r1)		Load ?
0019a870: 00000000 nop
0019a874: 30420080 andi r2,r2,0x0080
0019a878: 10400058 beq r2,r0,0x 0019a9dc		Branch if ability isn't Usable by AI
0019a87c: 00e38821 addu r17,r7,r3		r17 = Current Usable Ability Pointer
0019a880: 2a420170 slti r2,r18,0x0170
0019a884: 1040002c beq r2,r0,0x 0019a938		Branch if ID >= 0x170 (Potion)
0019a888: 00921023 subu r2,r4,r18		ID * 7
0019a88c: 00022040 sll r4,r2,0x01		ID * 14
0019a890: 92a20090 lbu r2,0x0090(r21)		Load Unit's Support set 2
0019a894: 3c018006 lui r1,0x8006
0019a898: 00240821 addu r1,r1,r4
0019a89c: 9023fbfd lbu r3,-0x0403(r1)		Load Ability's MP Cost
0019a8a0: 30420080 andi r2,r2,0x0080
0019a8a4: 10400002 beq r2,r0,0x 0019a8b0		Branch if Unit doesn't have Half of MP
0019a8a8: 00000000 nop
0019a8ac: 00031842 srl r3,r3,0x01		MP Cost / 2
0019a8b0: 96a2002e lhu r2,0x002e(r21)		Load Unit's Max MP
0019a8b4: 00000000 nop
0019a8b8: 0043102a slt r2,r2,r3
0019a8bc: 14400047 bne r2,r0,0x 0019a9dc		Branch if Unit has enough MP to use
0019a8c0: 00000000 nop
0019a8c4: 3c02801a lui r2,0x801a
0019a8c8: 8c42f3d0 lw r2,-0x0c30(r2)		Load AI Behavior Data
0019a8cc: 00000000 nop
0019a8d0: 30420400 andi r2,r2,0x0400
0019a8d4: 10400006 beq r2,r0,0x 0019a8f0		Branch if AI doesn't check Faith
0019a8d8: 00000000 nop
0019a8dc: 92a20052 lbu r2,0x0052(r21)		Load Unit's Innate Statuses
0019a8e0: 00000000 nop
0019a8e4: 30420040 andi r2,r2,0x0040
0019a8e8: 1440003c bne r2,r0,0x 0019a9dc		Branch if Unit has Innate Innocent
0019a8ec: 00000000 nop
0019a8f0: 3c018006 lui r1,0x8006
0019a8f4: 00240821 addu r1,r1,r4
0019a8f8: 9023fbf6 lbu r3,-0x040a(r1)		Load Ability Flags 4
0019a8fc: 00000000 nop
0019a900: 30620008 andi r2,r3,0x0008
0019a904: 10400004 beq r2,r0,0x 0019a918		Branch if it doesn't require Sword
0019a908: 00000000 nop
0019a90c: 92a20184 lbu r2,0x0184(r21)		Load Equipped Flags?
0019a910: 08066a4c j 0x 0019a930
0019a914: 30420008 andi r2,r2,0x0008		Check for Sword
0019a918: 30620004 andi r2,r3,0x0004
0019a91c: 10400007 beq r2,r0,0x 0019a93c		Branch if it doesn't require Materia B.
0019a920: 02c02021 addu r4,r22,r0		r4 = Unit's ID
0019a924: 92a20184 lbu r2,0x0184(r21)		Load Equipped Flags?
0019a928: 00000000 nop
0019a92c: 30420004 andi r2,r2,0x0004
0019a930: 1040002a beq r2,r0,0x 0019a9dc		Branch if Sword/Materia Blade not used
0019a934: 00000000 nop
0019a938: 02c02021 addu r4,r22,r0		r4 = Unit's ID
0019a93c: 02802821 addu r5,r20,r0		r5 = Skillset
0019a940: 02003021 addu r6,r16,r0		r6 = Ability Counter
0019a944: 0c066a94 jal 0x 0019aa50		Load Known Ability Flag
0019a948: afa70018 sw r7,0x0018(r29)
0019a94c: 8fa70018 lw r7,0x0018(r29)
0019a950: 10400022 beq r2,r0,0x 0019a9dc		Branch if Ability isn't known
0019a954: 2a8200b0 slti r2,r20,0x00b0
0019a958: 1440000c bne r2,r0,0x 0019a98c		Branch if not a monster skillset
0019a95c: 34020009 ori r2,r0,0x0009		r2 = 9
0019a960: 34020003 ori r2,r0,0x0003		r2 = 3
0019a964: 16020004 bne r16,r2,0x 0019a978	Branch if Ability Counter < 3
0019a968: 00000000 nop
0019a96c: 96220002 lhu r2,0x0002(r17)		Load Ability's Skillset/flags
0019a970: 08066a61 j 0x 0019a984
0019a974: 34420800 ori r2,r2,0x0800		r2 = Monster Skill Needed check?
0019a978: 96220002 lhu r2,0x0002(r17)		Load Ability's Skillset/flags
0019a97c: 00000000 nop
0019a980: 3042f7ff andi r2,r2,0xf7ff		Disable Monster Skill Needed check?
0019a984: a6220002 sh r2,0x0002(r17)		Store new Skillset/flags
0019a988: 34020009 ori r2,r0,0x0009		r2 = 9
0019a98c: a2340002 sb r20,0x0002(r17)		Store Skillset
0019a990: 17c2000d bne r30,r2,0x 0019a9c8	Branch if Action Menu != Jump
0019a994: a6320000 sh r18,0x0000(r17)		Store Ability ID
*Jump1*
0019a998: 2a42018f slti r2,r18,0x018f
0019a99c: 1040000f beq r2,r0,0x 0019a9dc		Branch if ID >= 0x18f (Vertical Jump2)
0019a9a0: 34020001 ori r2,r0,0x0001		r2 = 1
0019a9a4: 8fa80010 lw r8,0x0010(r29)		Load Jump Stored Flag
0019a9a8: 00000000 nop
0019a9ac: 15020005 bne r8,r2,0x 0019a9c4		Branch if Jump isn't stored
0019a9b0: 34080001 ori r8,r0,0x0001		Jump Stored = True
0019a9b4: 2673ffff addiu r19,r19,0xffff		Counter --
0019a9b8: 00131080 sll r2,r19,0x02		Counter * 4
0019a9bc: 00e28821 addu r17,r7,r2		(Stores better jump data)
0019a9c0: a6320000 sh r18,0x0000(r17)		Store Ability ID
0019a9c4: afa80010 sw r8,0x0010(r29)		Store new Jump Stored Flag
0019a9c8: 26730001 addiu r19,r19,0x0001		Counter ++
0019a9cc: 96220000 lhu r2,0x0000(r17)		Load Ability ID
0019a9d0: 00161a80 sll r3,r22,0x0a		Unit ID * 1024
0019a9d4: 00431021 addu r2,r2,r3		Ability ID + Unit ID * 1024
0019a9d8: a6220000 sh r2,0x0000(r17)		Store Ability/Unit ID Data
0019a9dc: 26100001 addiu r16,r16,0x0001		Ability Counter ++
0019a9e0: 2a020010 slti r2,r16,0x0010
0019a9e4: 1440ff9a bne r2,r0,0x 0019a850		Branch if Ability Counter < 16
0019a9e8: 26f70002 addiu r23,r23,0x0002		Pointer += 2
0019a9ec: 34020009 ori r2,r0,0x0009		r2 = 9
0019a9f0: 17c20009 bne r30,r2,0x 0019aa18	Branch if Action Menu isn't Jump
0019a9f4: 00000000 nop
*Jump2*
0019a9f8: 8fa80010 lw r8,0x0010(r29)		Load Jump Stored Flag
0019a9fc: 00000000 nop
0019aa00: 15000006 bne r8,r0,0x 0019aa1c		Branch if Jump is Stored
0019aa04: 02601021 addu r2,r19,r0		r2 = Counter
0019aa08: 34020012 ori r2,r0,0x0012		r2 = 0x12
0019aa0c: a2220002 sb r2,0x0002(r17)		Store Skillset = Jump
0019aa10: 00161280 sll r2,r22,0x0a		Unit ID * 1024
0019aa14: a6220000 sh r2,0x0000(r17)		Store Unit's ID
0019aa18: 02601021 addu r2,r19,r0		r2 = Counter
0019aa1c: 8fbf0044 lw r31,0x0044(r29)
0019aa20: 8fbe0040 lw r30,0x0040(r29)
0019aa24: 8fb7003c lw r23,0x003c(r29)
0019aa28: 8fb60038 lw r22,0x0038(r29)
0019aa2c: 8fb50034 lw r21,0x0034(r29)
0019aa30: 8fb40030 lw r20,0x0030(r29)
0019aa34: 8fb3002c lw r19,0x002c(r29)
0019aa38: 8fb20028 lw r18,0x0028(r29)
0019aa3c: 8fb10024 lw r17,0x0024(r29)
0019aa40: 8fb00020 lw r16,0x0020(r29)
0019aa44: 27bd0048 addiu r29,r29,0x0048
0019aa48: 03e00008 jr r31
0019aa4c: 00000000 nop