Difference between revisions of "Math Skill"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
(Created page with "If checked, calculators can use this spell. If unchecked, calculators cannot.")
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
If checked, calculators can use this spell.
 
  
If unchecked, calculators cannot.
+
Math Skill
 +
00181ef0: 27bdffe8 addiu r29,r29,0xffe8
 +
00181ef4: afbf0010 sw r31,0x0010(r29)
 +
00181ef8: 30a500ff andi r5,r5,0x00ff
 +
00181efc: 0c0607ce jal 0x00181f38 load skillset abilities
 +
00181f00: 340700f0 ori r7,r0,0x00f0 check for 1st set of Math Skill
 +
00181f04: 8fbf0010 lw r31,0x0010(r29)
 +
00181f08: 27bd0018 addiu r29,r29,0x0018
 +
00181f0c: 03e00008 jr r31
 +
00181f10: 00000000 nop
 +
 
 +
00181f14: 27bdffe8 addiu r29,r29,0xffe8
 +
00181f18: afbf0010 sw r31,0x0010(r29)
 +
00181f1c: 30a500ff andi r5,r5,0x00ff
 +
00181f20: 0c0607ce jal 0x 00181f38 load skillset abilities
 +
00181f24: 3407000f ori r7,r0,0x000f check for 2nd set of math skill
 +
00181f28: 8fbf0010 lw r31,0x0010(r29)
 +
00181f2c: 27bd 0018 addiu r29,r29,0x 0018
 +
00181f30: 03e00008 jr r31
 +
00181f34: 00000000 nop
 +
 
 +
Routine that checks math skill IDS
 +
r7 = 0xf0 (1st set) or 0x0f (second set)
 +
00181f38: 27bdff40 addiu r29,r29,0xff40
 +
00181f3c: afb300b4 sw r19,0x00b4(r29)
 +
00181f40: 00809821 addu r19,r4,r0 r19 = attacker ID
 +
00181f44: afb000a8 sw r16,0x00a8(r29)
 +
00181f48: 00c08021 addu r16,r6,r0 r16 = ability list address
 +
00181f4c: afb200b0 sw r18,0x00b0(r29)
 +
00181f50: 00009021 addu r18,r0,r0
 +
00181f54: afb100ac sw r17,0x00ac(r29)
 +
00181f58: 00a08821 addu r17,r5,r0 r17 = skillset
 +
00181f5c: afb400b8 sw r20,0x00b8(r29)
 +
00181f60: afbf00bc sw r31,0x00bc(r29)
 +
00181f64: 0c060435 jal 0x 001810d4 Get Data Pointer
 +
00181f68: 00e0a021 addu r20,r7,r0 r20 = PV mod
 +
00181f6c: 10400005 beq r2,r0,0x 00181f84 branch if unit data pointer=0
 +
00181f70: 322300ff andi r3,r17,0x00ff r3=skillset
 +
00181f74: 34020015 ori r2,r0,0x0015
 +
00181f78: 10620004 beq r3,r2,0x 00181f8c branch if skillset = math skill
 +
00181f7c: 2402ffff addiu r2,r0,0xffff
 +
00181f80: a6020000 sh r2,0x0000(r16 ) store ability does not exist
 +
00181f84: 08060811 j 0x 00182044 jump to end if skillset != math  skill
 +
00181f88: 00001021 addu r2,r0,r0 return r2 = 0 (fail)
 +
00181f8c: 02602021 addu r4,r19,r0 r4 = attacker ID
 +
00181f90: 27a20060 addiu r2,r29,0x0060
 +
00181f94: afa20010 sw r2,0x0010(r29)
 +
00181f98: 27a20078 addiu r2,r29,0x0078
 +
00181f9c: afa2 0018 sw r2,0x 0018(r29)
 +
00181fa0: 27a20090 addiu r2,r29,0x0090
 +
00181fa4: 34050015 ori r5,r0,0x0015
 +
00181fa8: 27a60020 addiu r6,r29,0x0020
 +
00181fac: 27a70048 addiu r7,r29,0x0048
 +
00181fb0: afa00014 sw r0,0x0014(r29)
 +
00181fb4: 0c0605f0 jal 0x 001817c0 Skillset Loading
 +
00181fb8: afa2001c sw r2,0x001c(r29)
 +
00181fbc: 00403021 addu r6,r2,r0
 +
00181fc0: 10c0fff0 beq r6,r0,0x 00181f84
 +
00181fc4: 0246102a slt r2,r18,r6
 +
00181fc8: 1040001b beq r2,r0,0x 00182038
 +
00181fcc: 00002821 addu r5,r0,r0
 +
00181fd0: 3408fe62 ori r8,r0,0xfe62
 +
00181fd4: 3c078006 lui r7,0x8006
 +
00181fd8: 24e70eb6 addiu r7,r7,0x0eb6 ability flags
 +
00181fdc: 27a40020 addiu r4,r29,0x0020
 +
00181fe0: 94830000 lhu r3,0x0000(r4) load ability
 +
00181fe4: 00000000 nop
 +
00181fe8: 00681021 addu r2,r3,r8 ability ID - 0x19e
 +
00181fec: 3042ffff andi r2,r2,0xffff
 +
00181ff0: 2c420008 sltiu r2,r2,0x0008
 +
00181ff4: 1040000c beq r2,r0,0x 00182028 branch if not math skill
 +
00181ff8: 24840002 addiu r4,r4,0x0002 Temp ability list++ (stack)
 +
00181ffc: 00031400 sll r2,r3,0x10
 +
00182000: 00021403 sra r2,r2,0x10
 +
00182004: 00471021 addu r2,r2,r7
 +
00182008: 90420000 lbu r2,0x0000(r2) load Arithmeticks flags?
 +
0018200c: 00000000 nop
 +
00182010: 00541024 and r2,r2,r20
 +
00182014: 10400004 beq r2,r0,0x 00182028 branch if not 0x80
 +
00182018: 00000000 nop
 +
0018201c: a6030000 sh r3,0x0000(r16) store ability to ability list
 +
00182020: 26100002 addiu r16,r16,0x0002
 +
00182024: 26520001 addiu r18,r18,0x0001
 +
00182028: 24a50001 addiu r5,r5,0x0001
 +
0018202c: 00a6102a slt r2,r5,r6
 +
00182030: 1440ffeb bne r2,r0,0x 00181fe0
 +
00182034: 00000000 nop
 +
00182038: 2402ffff addiu r2,r0,0xffff
 +
0018203c: a6020000 sh r2,0x0000(r16) store next ability 0xff (cutoff)
 +
00182040: 02401021 addu r2,r18,r0 return number of abilities found
 +
00182044: 8fbf00bc lw r31,0x00bc(r29)
 +
00182048: 8fb400b8 lw r20,0x00b8(r29)
 +
0018204c: 8fb300b4 lw r19,0x00b4(r29)
 +
00182050: 8fb200b0 lw r18,0x00b0(r29)
 +
00182054: 8fb100ac lw r17,0x00ac(r29)
 +
00182058: 8fb000a8 lw r16,0x00a8(r29)
 +
0018205c: 27bd00c0 addiu r29,r29,0x00c0
 +
00182060: 03e00008 jr r31

Latest revision as of 16:52, 24 February 2013

Math Skill
00181ef0: 27bdffe8 addiu r29,r29,0xffe8
00181ef4: afbf0010 sw r31,0x0010(r29)
00181ef8: 30a500ff andi r5,r5,0x00ff
00181efc: 0c0607ce jal 0x00181f38				load skillset abilities
00181f00: 340700f0 ori r7,r0,0x00f0				check for 1st set of Math Skill
00181f04: 8fbf0010 lw r31,0x0010(r29)
00181f08: 27bd0018 addiu r29,r29,0x0018
00181f0c: 03e00008 jr r31
00181f10: 00000000 nop
00181f14: 27bdffe8 addiu r29,r29,0xffe8
00181f18: afbf0010 sw r31,0x0010(r29)
00181f1c: 30a500ff andi r5,r5,0x00ff
00181f20: 0c0607ce jal 0x 00181f38				load skillset abilities
00181f24: 3407000f ori r7,r0,0x000f				check for 2nd set of math skill
00181f28: 8fbf0010 lw r31,0x0010(r29)
00181f2c: 27bd 0018 addiu r29,r29,0x 0018
00181f30: 03e00008 jr r31
00181f34: 00000000 nop
Routine that checks math skill IDS
r7 = 0xf0 (1st set) or 0x0f (second set)
00181f38: 27bdff40 addiu r29,r29,0xff40
00181f3c: afb300b4 sw r19,0x00b4(r29)
00181f40: 00809821 addu r19,r4,r0			r19 = attacker ID
00181f44: afb000a8 sw r16,0x00a8(r29)
00181f48: 00c08021 addu r16,r6,r0			r16 = ability list address
00181f4c: afb200b0 sw r18,0x00b0(r29)
00181f50: 00009021 addu r18,r0,r0
00181f54: afb100ac sw r17,0x00ac(r29)
00181f58: 00a08821 addu r17,r5,r0			r17 = skillset
00181f5c: afb400b8 sw r20,0x00b8(r29)
00181f60: afbf00bc sw r31,0x00bc(r29)
00181f64: 0c060435 jal 0x 001810d4			Get Data Pointer
00181f68: 00e0a021 addu r20,r7,r0			r20 = PV mod
00181f6c: 10400005 beq r2,r0,0x 00181f84		branch if unit data pointer=0
00181f70: 322300ff andi r3,r17,0x00ff		r3=skillset
00181f74: 34020015 ori r2,r0,0x0015			
00181f78: 10620004 beq r3,r2,0x 00181f8c		branch if skillset = math skill
00181f7c: 2402ffff addiu r2,r0,0xffff
00181f80: a6020000 sh r2,0x0000(r16 )		store ability does not exist
00181f84: 08060811 j 0x 00182044				jump to end if skillset != math  skill
00181f88: 00001021 addu r2,r0,r0			return r2 = 0 (fail)
00181f8c: 02602021 addu r4,r19,r0			r4 = attacker ID
00181f90: 27a20060 addiu r2,r29,0x0060		
00181f94: afa20010 sw r2,0x0010(r29)
00181f98: 27a20078 addiu r2,r29,0x0078
00181f9c: afa2 0018 sw r2,0x 0018(r29)
00181fa0: 27a20090 addiu r2,r29,0x0090		
00181fa4: 34050015 ori r5,r0,0x0015
00181fa8: 27a60020 addiu r6,r29,0x0020
00181fac: 27a70048 addiu r7,r29,0x0048
00181fb0: afa00014 sw r0,0x0014(r29)
00181fb4: 0c0605f0 jal 0x 001817c0			Skillset Loading
00181fb8: afa2001c sw r2,0x001c(r29)
00181fbc: 00403021 addu r6,r2,r0
00181fc0: 10c0fff0 beq r6,r0,0x 00181f84
00181fc4: 0246102a slt r2,r18,r6
00181fc8: 1040001b beq r2,r0,0x 00182038
00181fcc: 00002821 addu r5,r0,r0
00181fd0: 3408fe62 ori r8,r0,0xfe62
00181fd4: 3c078006 lui r7,0x8006
00181fd8: 24e70eb6 addiu r7,r7,0x0eb6		ability flags
00181fdc: 27a40020 addiu r4,r29,0x0020
00181fe0: 94830000 lhu r3,0x0000(r4)		load ability
00181fe4: 00000000 nop
00181fe8: 00681021 addu r2,r3,r8			ability ID - 0x19e
00181fec: 3042ffff andi r2,r2,0xffff		
00181ff0: 2c420008 sltiu r2,r2,0x0008
00181ff4: 1040000c beq r2,r0,0x 00182028		branch if not math skill
00181ff8: 24840002 addiu r4,r4,0x0002		Temp ability list++ (stack)
00181ffc: 00031400 sll r2,r3,0x10
00182000: 00021403 sra r2,r2,0x10
00182004: 00471021 addu r2,r2,r7
00182008: 90420000 lbu r2,0x0000(r2)		load Arithmeticks flags?
0018200c: 00000000 nop
00182010: 00541024 and r2,r2,r20
00182014: 10400004 beq r2,r0,0x 00182028		branch if not 0x80
00182018: 00000000 nop
0018201c: a6030000 sh r3,0x0000(r16)		store ability to ability list
00182020: 26100002 addiu r16,r16,0x0002
00182024: 26520001 addiu r18,r18,0x0001
00182028: 24a50001 addiu r5,r5,0x0001
0018202c: 00a6102a slt r2,r5,r6
00182030: 1440ffeb bne r2,r0,0x 00181fe0
00182034: 00000000 nop
00182038: 2402ffff addiu r2,r0,0xffff
0018203c: a6020000 sh r2,0x0000(r16)		store next ability 0xff (cutoff)
00182040: 02401021 addu r2,r18,r0			return number of abilities found
00182044: 8fbf00bc lw r31,0x00bc(r29)
00182048: 8fb400b8 lw r20,0x00b8(r29)
0018204c: 8fb300b4 lw r19,0x00b4(r29)
00182050: 8fb200b0 lw r18,0x00b0(r29)
00182054: 8fb100ac lw r17,0x00ac(r29)
00182058: 8fb000a8 lw r16,0x00a8(r29)
0018205c: 27bd00c0 addiu r29,r29,0x00c0 
00182060: 03e00008 jr r31