Difference between revisions of "Load ability data for skillset"
Jump to navigation
Jump to search
Line 3: | Line 3: | ||
001817c0: 27bdfed0 addiu r29,r29,0xfed0 | 001817c0: 27bdfed0 addiu r29,r29,0xfed0 | ||
001817c4: afa400b0 sw r4,0x00b0(r29) | 001817c4: afa400b0 sw r4,0x00b0(r29) | ||
− | 001817c8: 8fa400b0 lw r4,0x00b0(r29) | + | 001817c8: 8fa400b0 lw r4,0x00b0(r29) unit data? |
001817cc: afb40118 sw r20,0x0118(r29) | 001817cc: afb40118 sw r20,0x0118(r29) | ||
− | 001817d0: 8fb40140 lw r20,0x0140(r29) | + | 001817d0: 8fb40140 lw r20,0x0140(r29) 0x10 stack address |
001817d4: afb20110 sw r18,0x0110(r29) | 001817d4: afb20110 sw r18,0x0110(r29) | ||
− | 001817d8: 8fb20148 lw r18,0x0148(r29) | + | 001817d8: 8fb20148 lw r18,0x0148(r29) 0x18 stack address |
001817dc: afb1010c sw r17,0x010c(r29) | 001817dc: afb1010c sw r17,0x010c(r29) | ||
− | 001817e0: 8fb1014c lw r17,0x014c(r29) | + | 001817e0: 8fb1014c lw r17,0x014c(r29) 0x1c stack address |
001817e4: afbe0128 sw r30,0x0128(r29) | 001817e4: afbe0128 sw r30,0x0128(r29) | ||
001817e8: 0000f021 addu r30,r0,r0 | 001817e8: 0000f021 addu r30,r0,r0 | ||
Line 18: | Line 18: | ||
001817fc: afb30114 sw r19,0x0114(r29) | 001817fc: afb30114 sw r19,0x0114(r29) | ||
00181800: afb00108 sw r16,0x0108(r29) | 00181800: afb00108 sw r16,0x0108(r29) | ||
− | 00181804: afa600c0 sw r6,0x00c0(r29) | + | 00181804: afa600c0 sw r6,0x00c0(r29) stack address (0x20) |
00181808: afa000e0 sw r0,0x00e0(r29) | 00181808: afa000e0 sw r0,0x00e0(r29) | ||
0018180c: afa000e8 sw r0,0x00e8(r29) | 0018180c: afa000e8 sw r0,0x00e8(r29) | ||
Line 24: | Line 24: | ||
00181814: afa000f8 sw r0,0x00f8(r29) | 00181814: afa000f8 sw r0,0x00f8(r29) | ||
00181818: afa00100 sw r0,0x0100(r29) | 00181818: afa00100 sw r0,0x0100(r29) | ||
− | 0018181c: afa700c8 sw r7,0x00c8(r29) | + | 0018181c: afa700c8 sw r7,0x00c8(r29) Stack address (0x48) |
00181820: 0c060435 jal 0x 001810d4 load unit data (r2) | 00181820: 0c060435 jal 0x 001810d4 load unit data (r2) | ||
00181824: a3a500b8 sb r5,0x00b8(r29) store primary skillset | 00181824: a3a500b8 sb r5,0x00b8(r29) store primary skillset | ||
Line 36: | Line 36: | ||
00181844: 00000000 nop | 00181844: 00000000 nop | ||
00181848: 34090001 ori r9,r0,0x0001 | 00181848: 34090001 ori r9,r0,0x0001 | ||
− | 0018184c: afa90100 sw r9,0x0100(r29) | + | 0018184c: afa90100 sw r9,0x0100(r29) frog flag |
00181850: 92020090 lbu r2,0x0090(r16) load support 2 | 00181850: 92020090 lbu r2,0x0090(r16) load support 2 | ||
00181854: 00000000 nop | 00181854: 00000000 nop | ||
Line 43: | Line 43: | ||
00181860: 00000000 nop | 00181860: 00000000 nop | ||
00181864: 34080001 ori r8,r0,0x0001 | 00181864: 34080001 ori r8,r0,0x0001 | ||
− | 00181868: afa800f8 sw r8,0x00f8(r29) | + | 00181868: afa800f8 sw r8,0x00f8(r29) half mp flag |
0018186c: 92030092 lbu r3,0x0092(r16) load support 4 | 0018186c: 92030092 lbu r3,0x0092(r16) load support 4 | ||
00181870: 00000000 nop | 00181870: 00000000 nop | ||
Line 50: | Line 50: | ||
0018187c: 34090002 ori r9,r0,0x0002 | 0018187c: 34090002 ori r9,r0,0x0002 | ||
00181880: 08060626 j 0x 00181898 | 00181880: 08060626 j 0x 00181898 | ||
− | 00181884: afa900f0 sw r9,0x00f0(r29) | + | 00181884: afa900f0 sw r9,0x00f0(r29) non charge flag |
00181888: 30620008 andi r2,r3,0x0008 | 00181888: 30620008 andi r2,r3,0x0008 | ||
0018188c: 10400002 beq r2,r0,0x 00181898 branch if not short charge | 0018188c: 10400002 beq r2,r0,0x 00181898 branch if not short charge | ||
00181890: 34080001 ori r8,r0,0x0001 | 00181890: 34080001 ori r8,r0,0x0001 | ||
− | 00181894: afa800f0 sw r8,0x00f0(r29) | + | 00181894: afa800f0 sw r8,0x00f0(r29) short charge flag |
00181898: 27a40010 addiu r4,r29,0x0010 | 00181898: 27a40010 addiu r4,r29,0x0010 | ||
0018189c: 0c060dc3 jal 0x0018370c Calculate AT list | 0018189c: 0c060dc3 jal 0x0018370c Calculate AT list | ||
Line 64: | Line 64: | ||
001818b4: 30620008 andi r2,r3,0x0008 | 001818b4: 30620008 andi r2,r3,0x0008 | ||
001818b8: 34090001 ori r9,r0,0x0001 | 001818b8: 34090001 ori r9,r0,0x0001 | ||
− | 001818bc: afa900e0 sw r9,0x00e0(r29) | + | 001818bc: afa900e0 sw r9,0x00e0(r29) materia blade flag |
001818c0: 10400003 beq r2,r0,0x 001818d0 branch if sword not equipped | 001818c0: 10400003 beq r2,r0,0x 001818d0 branch if sword not equipped | ||
001818c4: 00000000 nop | 001818c4: 00000000 nop | ||
001818c8: 34080001 ori r8,r0,0x0001 | 001818c8: 34080001 ori r8,r0,0x0001 | ||
− | 001818cc: afa800e8 sw r8,0x00e8(r29) | + | 001818cc: afa800e8 sw r8,0x00e8(r29) sword flag |
001818d0: 92020006 lbu r2,0x0006(r16) load gender | 001818d0: 92020006 lbu r2,0x0006(r16) load gender | ||
001818d4: 00000000 nop | 001818d4: 00000000 nop | ||
Line 87: | Line 87: | ||
00181910: 93a300b8 lbu r3,0x00b8(r29) | 00181910: 93a300b8 lbu r3,0x00b8(r29) | ||
00181914: 00000000 nop | 00181914: 00000000 nop | ||
− | 00181918: 10620005 beq r3,r2,0x 00181930 | + | 00181918: 10620005 beq r3,r2,0x 00181930 branch if loaded skillset = units primary skillset |
0018191c: 00002821 addu r5,r0,r0 | 0018191c: 00002821 addu r5,r0,r0 | ||
00181920: 92020162 lbu r2,0x0162(r16) load special skillset | 00181920: 92020162 lbu r2,0x0162(r16) load special skillset | ||
00181924: 00000000 nop | 00181924: 00000000 nop | ||
− | 00181928: 14620003 bne r3,r2,0x 00181938 branch if not | + | 00181928: 14620003 bne r3,r2,0x 00181938 branch if not units primary skillset |
0018192c: 00000000 nop | 0018192c: 00000000 nop | ||
00181930: 08060650 j 0x 00181940 | 00181930: 08060650 j 0x 00181940 | ||
Line 99: | Line 99: | ||
00181940: 14a20004 bne r5,r2,0x 00181954 branch if skillset - 5 is not 0xff | 00181940: 14a20004 bne r5,r2,0x 00181954 branch if skillset - 5 is not 0xff | ||
00181944: 3c0800ff lui r8,0x00ff | 00181944: 3c0800ff lui r8,0x00ff | ||
+ | store known abilities = all | ||
00181948: 3508ffff ori r8,r8,0xffff | 00181948: 3508ffff ori r8,r8,0xffff | ||
0018194c: 08060658 j 0x 00181960 | 0018194c: 08060658 j 0x 00181960 | ||
− | 00181950: afa800d0 sw r8,0x00d0(r29) | + | 00181950: afa800d0 sw r8,0x00d0(r29) store known abilities = all |
+ | |||
00181954: 0c017880 jal 0x0005e200 get known abilities | 00181954: 0c017880 jal 0x0005e200 get known abilities | ||
00181958: 02002021 addu r4,r16,r0 | 00181958: 02002021 addu r4,r16,r0 | ||
− | 0018195c: afa200d0 sw r2,0x00d0(r29) store known abilities | + | 0018195c: afa200d0 sw r2,0x00d0(r29) store known abilities (fffec0) |
00181960: 00009821 addu r19,r0,r0 | 00181960: 00009821 addu r19,r0,r0 | ||
− | 00181964: 03d1b821 addu r23,r30,r17 | + | 00181964: 03d1b821 addu r23,r30,r17 0x90 stack address(item) |
− | 00181968: 03d2b021 addu r22,r30,r18 | + | 00181968: 03d2b021 addu r22,r30,r18 0x18 stack address |
− | 0018196c: 8fa900c8 lw r9,0x00c8(r29) | + | 0018196c: 8fa900c8 lw r9,0x00c8(r29) 0x48 stack address(item) |
− | 00181970: 03d4a821 addu r21,r30,r20 | + | 00181970: 03d4a821 addu r21,r30,r20 0x60 stack address |
− | 00181974: 03c9a021 addu r20,r30,r9 | + | 00181974: 03c9a021 addu r20,r30,r9 |
00181978: 3c020080 lui r2,0x0080 | 00181978: 3c020080 lui r2,0x0080 | ||
+ | |||
0018197c: 8fa800d0 lw r8,0x00d0(r29) load known abilities? | 0018197c: 8fa800d0 lw r8,0x00d0(r29) load known abilities? | ||
00181980: 02621007 srav r2,r2,r19 | 00181980: 02621007 srav r2,r2,r19 | ||
Line 120: | Line 123: | ||
00181994: 0c01695a jal 0x0005a568 load ability from skillset | 00181994: 0c01695a jal 0x0005a568 load ability from skillset | ||
00181998: 02602821 addu r5,r19,r0 | 00181998: 02602821 addu r5,r19,r0 | ||
− | 0018199c: 8fa90100 lw r9,0x0100(r29) | + | 0018199c: 8fa90100 lw r9,0x0100(r29) load frog flag |
001819a0: 00402021 addu r4,r2,r0 | 001819a0: 00402021 addu r4,r2,r0 | ||
001819a4: 11200006 beq r9,r0,0x 001819c0 branch if ?? status present? | 001819a4: 11200006 beq r9,r0,0x 001819c0 branch if ?? status present? | ||
001819a8: a7a400d8 sh r4,0x00d8(r29) store ability | 001819a8: a7a400d8 sh r4,0x00d8(r29) store ability | ||
+ | if frog | ||
001819ac: 00041400 sll r2,r4,0x10 | 001819ac: 00041400 sll r2,r4,0x10 | ||
001819b0: 00021403 sra r2,r2,0x10 | 001819b0: 00021403 sra r2,r2,0x10 | ||
Line 129: | Line 133: | ||
001819b8: 14430058 bne r2,r3,0x 00181b1c branch if ability is not 0x1d frog? | 001819b8: 14430058 bne r2,r3,0x 00181b1c branch if ability is not 0x1d frog? | ||
001819bc: 00000000 nop | 001819bc: 00000000 nop | ||
+ | |||
001819c0: 00041400 sll r2,r4,0x10 | 001819c0: 00041400 sll r2,r4,0x10 | ||
001819c4: 00021c03 sra r3,r2,0x10 | 001819c4: 00021c03 sra r3,r2,0x10 | ||
Line 136: | Line 141: | ||
001819d4: 2c42016f sltiu r2,r2,0x016f | 001819d4: 2c42016f sltiu r2,r2,0x016f | ||
001819d8: 10400036 beq r2,r0,0x 00181ab4 branch if ability is not a regular ability | 001819d8: 10400036 beq r2,r0,0x 00181ab4 branch if ability is not a regular ability | ||
+ | regular ability | ||
001819dc: 000310c0 sll r2,r3,0x03 | 001819dc: 000310c0 sll r2,r3,0x03 | ||
001819e0: 00431023 subu r2,r2,r3 | 001819e0: 00431023 subu r2,r2,r3 | ||
Line 162: | Line 168: | ||
00181a3c: 11000002 beq r8,r0,0x 00181a48 | 00181a3c: 11000002 beq r8,r0,0x 00181a48 | ||
00181a40: 26220001 addiu r2,r17,0x0001 | 00181a40: 26220001 addiu r2,r17,0x0001 | ||
− | 00181a44: 00028843 sra r17,r2,0x01 MP / 2 | + | 00181a44: 00028843 sra r17,r2,0x01 MP cost / 2 |
00181a48: 9082000c lbu r2,0x000c(r4) load CT | 00181a48: 9082000c lbu r2,0x000c(r4) load CT | ||
00181a4c: 90830005 lbu r3,0x0005(r4) load flags 3 | 00181a4c: 90830005 lbu r3,0x0005(r4) load flags 3 | ||
Line 174: | Line 180: | ||
00181a6c: 8fa900f0 lw r9,0x00f0(r29) | 00181a6c: 8fa900f0 lw r9,0x00f0(r29) | ||
00181a70: 34020001 ori r2,r0,0x0001 | 00181a70: 34020001 ori r2,r0,0x0001 | ||
− | 00181a74: 15220002 bne r9,r2,0x 00181a80 short charge check | + | 00181a74: 15220002 bne r9,r2,0x 00181a80 short charge check |
00181a78: 26020001 addiu r2,r16,0x0001 | 00181a78: 26020001 addiu r2,r16,0x0001 | ||
− | 00181a7c: 00028043 sra r16,r2,0x01 CT + 1 / 2 | + | 00181a7c: 00028043 sra r16,r2,0x01 (CT+1) / 2 |
00181a80: 8fa800f0 lw r8,0x00f0(r29) | 00181a80: 8fa800f0 lw r8,0x00f0(r29) | ||
00181a84: 34020002 ori r2,r0,0x0002 | 00181a84: 34020002 ori r2,r0,0x0002 | ||
Line 182: | Line 188: | ||
00181a8c: 02002821 addu r5,r16,r0 store (CT + 1)/2 | 00181a8c: 02002821 addu r5,r16,r0 store (CT + 1)/2 | ||
00181a90: 00008021 addu r16,r0,r0 | 00181a90: 00008021 addu r16,r0,r0 | ||
− | 00181a94: 02002821 addu r5,r16,r0 store 0 CT | + | 00181a94: 02002821 addu r5,r16,r0 store 0 CT |
00181a98: 8fa400b0 lw r4,0x00b0(r29) load Unit ID | 00181a98: 8fa400b0 lw r4,0x00b0(r29) load Unit ID | ||
00181a9c: 0c0605c8 jal 0x 00181720 ability loading? | 00181a9c: 0c0605c8 jal 0x 00181720 ability loading? | ||
00181aa0: 27a60010 addiu r6,r29,0x0010 | 00181aa0: 27a60010 addiu r6,r29,0x0010 | ||
− | 00181aa4: a2910000 sb r17,0x0000(r20) store MP cost | + | 00181aa4: a2910000 sb r17,0x0000(r20) store MP cost ??? stack |
− | 00181aa8: a2b00000 sb r16,0x0000(r21) store CT | + | 00181aa8: a2b00000 sb r16,0x0000(r21) store CT 0x60 stack |
00181aac: 080606bc j 0x 00181af0 | 00181aac: 080606bc j 0x 00181af0 | ||
− | 00181ab0: a2d20000 sb r18,0x0000(r22) store silence/persevere checks? | + | 00181ab0: a2d20000 sb r18,0x0000(r22) store silence/persevere checks? 0x18 stack |
00181ab4: 2482fe6a addiu r2,r4,0xfe6a | 00181ab4: 2482fe6a addiu r2,r4,0xfe6a | ||
00181ab8: 3042ffff andi r2,r2,0xffff | 00181ab8: 3042ffff andi r2,r2,0xffff | ||
Line 199: | Line 205: | ||
00181ad0: 00220821 addu r1,r1,r2 | 00181ad0: 00220821 addu r1,r1,r2 | ||
00181ad4: 90300d18 lbu r16,0x0d18(r1) load CT? | 00181ad4: 90300d18 lbu r16,0x0d18(r1) load CT? | ||
− | 00181ad8: 8fa400b0 lw r4,0x00b0(r29) | + | 00181ad8: 8fa400b0 lw r4,0x00b0(r29) unit id |
00181adc: 0c0605c8 jal 0x 00181720 | 00181adc: 0c0605c8 jal 0x 00181720 | ||
00181ae0: 02002821 addu r5,r16,r0 | 00181ae0: 02002821 addu r5,r16,r0 | ||
− | 00181ae4: a2800000 sb r0,0x0000(r20) store 0 for mp cost | + | 00181ae4: a2800000 sb r0,0x0000(r20) store 0 for mp cost ??? stack |
− | 00181ae8: a2b00000 sb r16,0x0000(r21) store CT | + | 00181ae8: a2b00000 sb r16,0x0000(r21) store CT 0x60 stack |
− | 00181aec: a2c00000 sb r0,0x0000(r22) store 0 for silence/persevere checks | + | 00181aec: a2c00000 sb r0,0x0000(r22) store 0 for silence/persevere checks 0x18 |
− | 00181af0: a2e20000 sb r2,0x0000(r23) store Turns | + | 00181af0: a2e20000 sb r2,0x0000(r23) store Turns 0x90 stack |
00181af4: 26f70001 addiu r23,r23,0x0001 | 00181af4: 26f70001 addiu r23,r23,0x0001 | ||
00181af8: 26d60001 addiu r22,r22,0x0001 | 00181af8: 26d60001 addiu r22,r22,0x0001 | ||
Line 211: | Line 217: | ||
00181b00: 26940001 addiu r20,r20,0x0001 | 00181b00: 26940001 addiu r20,r20,0x0001 | ||
00181b04: 97a800d8 lhu r8,0x00d8(r29) load ability ID | 00181b04: 97a800d8 lhu r8,0x00d8(r29) load ability ID | ||
− | 00181b08: 8fa900c0 lw r9,0x00c0(r29) load pointer address | + | 00181b08: 8fa900c0 lw r9,0x00c0(r29) load pointer address 0x20 |
00181b0c: 27de0001 addiu r30,r30,0x0001 | 00181b0c: 27de0001 addiu r30,r30,0x0001 | ||
00181b10: a5280000 sh r8,0x0000(r9) store ability ID | 00181b10: a5280000 sh r8,0x0000(r9) store ability ID | ||
Line 220: | Line 226: | ||
00181b24: 1440ff95 bne r2,r0,0x 0018197c | 00181b24: 1440ff95 bne r2,r0,0x 0018197c | ||
00181b28: 3c020080 lui r2,0x0080 | 00181b28: 3c020080 lui r2,0x0080 | ||
− | 00181b2c: 8fa900c0 lw r9,0x00c0(r29) | + | |
− | 00181b30: 2402ffff addiu r2,r0,0xffff | + | 00181b2c: 8fa900c0 lw r9,0x00c0(r29) 0x20 address |
+ | 00181b30: 2402ffff addiu r2,r0,0xffff store end of list | ||
00181b34: a5220000 sh r2,0x0000(r9) store ?? | 00181b34: a5220000 sh r2,0x0000(r9) store ?? | ||
00181b38: 03c01021 addu r2,r30,r0 return number of abilities? | 00181b38: 03c01021 addu r2,r30,r0 return number of abilities? |
Revision as of 12:30, 17 March 2014
Load ability data for skillset (MP, CT, Turns, req. sword booleans) 001817c0: 27bdfed0 addiu r29,r29,0xfed0 001817c4: afa400b0 sw r4,0x00b0(r29) 001817c8: 8fa400b0 lw r4,0x00b0(r29) unit data? 001817cc: afb40118 sw r20,0x0118(r29) 001817d0: 8fb40140 lw r20,0x0140(r29) 0x10 stack address 001817d4: afb20110 sw r18,0x0110(r29) 001817d8: 8fb20148 lw r18,0x0148(r29) 0x18 stack address 001817dc: afb1010c sw r17,0x010c(r29) 001817e0: 8fb1014c lw r17,0x014c(r29) 0x1c stack address 001817e4: afbe0128 sw r30,0x0128(r29) 001817e8: 0000f021 addu r30,r0,r0 001817ec: afbf012c sw r31,0x012c(r29) 001817f0: afb70124 sw r23,0x0124(r29) 001817f4: afb60120 sw r22,0x0120(r29) 001817f8: afb5011c sw r21,0x011c(r29) 001817fc: afb30114 sw r19,0x0114(r29) 00181800: afb00108 sw r16,0x0108(r29) 00181804: afa600c0 sw r6,0x00c0(r29) stack address (0x20) 00181808: afa000e0 sw r0,0x00e0(r29) 0018180c: afa000e8 sw r0,0x00e8(r29) 00181810: afa000f0 sw r0,0x00f0(r29) 00181814: afa000f8 sw r0,0x00f8(r29) 00181818: afa00100 sw r0,0x0100(r29) 0018181c: afa700c8 sw r7,0x00c8(r29) Stack address (0x48) 00181820: 0c060435 jal 0x 001810d4 load unit data (r2) 00181824: a3a500b8 sb r5,0x00b8(r29) store primary skillset 00181828: 00408021 addu r16,r2,r0 0018182c: 120000c3 beq r16,r0,0x 00181b3c 00181830: 00001021 addu r2,r0,r0 00181834: 9202005a lbu r2,0x005a(r16) load statii 00181838: 00000000 nop 0018183c: 30420002 andi r2,r2,0x0002 00181840: 10400003 beq r2,r0,0x 00181850 branch if not frog 00181844: 00000000 nop 00181848: 34090001 ori r9,r0,0x0001 0018184c: afa90100 sw r9,0x0100(r29) frog flag 00181850: 92020090 lbu r2,0x0090(r16) load support 2 00181854: 00000000 nop 00181858: 30420080 andi r2,r2,0x0080 0018185c: 10400003 beq r2,r0,0x 0018186c branch if not half of MP 00181860: 00000000 nop 00181864: 34080001 ori r8,r0,0x0001 00181868: afa800f8 sw r8,0x00f8(r29) half mp flag 0018186c: 92030092 lbu r3,0x0092(r16) load support 4 00181870: 00000000 nop 00181874: 30620004 andi r2,r3,0x0004 00181878: 10400003 beq r2,r0,0x 00181888 branch if not non-charge 0018187c: 34090002 ori r9,r0,0x0002 00181880: 08060626 j 0x 00181898 00181884: afa900f0 sw r9,0x00f0(r29) non charge flag 00181888: 30620008 andi r2,r3,0x0008 0018188c: 10400002 beq r2,r0,0x 00181898 branch if not short charge 00181890: 34080001 ori r8,r0,0x0001 00181894: afa800f0 sw r8,0x00f0(r29) short charge flag 00181898: 27a40010 addiu r4,r29,0x0010 0018189c: 0c060dc3 jal 0x0018370c Calculate AT list 001818a0: 00002821 addu r5,r0,r0 001818a4: 92030184 lbu r3,0x0184(r16) load equipped flags 001818a8: 00000000 nop 001818ac: 30620004 andi r2,r3,0x0004 001818b0: 10400003 beq r2,r0,0x 001818c0 branch if materia blade not equipped 001818b4: 30620008 andi r2,r3,0x0008 001818b8: 34090001 ori r9,r0,0x0001 001818bc: afa900e0 sw r9,0x00e0(r29) materia blade flag 001818c0: 10400003 beq r2,r0,0x 001818d0 branch if sword not equipped 001818c4: 00000000 nop 001818c8: 34080001 ori r8,r0,0x0001 001818cc: afa800e8 sw r8,0x00e8(r29) sword flag 001818d0: 92020006 lbu r2,0x0006(r16) load gender 001818d4: 00000000 nop 001818d8: 30420020 andi r2,r2,0x0020 001818dc: 14400016 bne r2,r0,0x 00181938 branch if not human 001818e0: 00000000 nop 001818e4: 93a900b8 lbu r9,0x00b8(r29) load primary skillset 001818e8: 00000000 nop 001818ec: 2522fffb addiu r2,r9,0xfffb primary skillset - 5 001818f0: 304200ff andi r2,r2,0x00ff 001818f4: 2c420013 sltiu r2,r2,0x0013 001818f8: 10400004 beq r2,r0,0x 0018190c branch if not a generic skillset 001818fc: 00000000 nop 00181900: 93a200b8 lbu r2,0x00b8(r29) load primary skillset 00181904: 0806064f j 0x 0018193c 00181908: 2445fffb addiu r5,r2,0xfffb 0018190c: 92020012 lbu r2,0x0012(r16) load primary skillset 00181910: 93a300b8 lbu r3,0x00b8(r29) 00181914: 00000000 nop 00181918: 10620005 beq r3,r2,0x 00181930 branch if loaded skillset = units primary skillset 0018191c: 00002821 addu r5,r0,r0 00181920: 92020162 lbu r2,0x0162(r16) load special skillset 00181924: 00000000 nop 00181928: 14620003 bne r3,r2,0x 00181938 branch if not units primary skillset 0018192c: 00000000 nop 00181930: 08060650 j 0x 00181940 00181934: 2402ffff addiu r2,r0,0xffff 00181938: 2405ffff addiu r5,r0,0xffff 0018193c: 2402ffff addiu r2,r0,0xffff 00181940: 14a20004 bne r5,r2,0x 00181954 branch if skillset - 5 is not 0xff 00181944: 3c0800ff lui r8,0x00ff store known abilities = all 00181948: 3508ffff ori r8,r8,0xffff 0018194c: 08060658 j 0x 00181960 00181950: afa800d0 sw r8,0x00d0(r29) store known abilities = all
00181954: 0c017880 jal 0x0005e200 get known abilities 00181958: 02002021 addu r4,r16,r0 0018195c: afa200d0 sw r2,0x00d0(r29) store known abilities (fffec0) 00181960: 00009821 addu r19,r0,r0 00181964: 03d1b821 addu r23,r30,r17 0x90 stack address(item) 00181968: 03d2b021 addu r22,r30,r18 0x18 stack address 0018196c: 8fa900c8 lw r9,0x00c8(r29) 0x48 stack address(item) 00181970: 03d4a821 addu r21,r30,r20 0x60 stack address 00181974: 03c9a021 addu r20,r30,r9 00181978: 3c020080 lui r2,0x0080
0018197c: 8fa800d0 lw r8,0x00d0(r29) load known abilities? 00181980: 02621007 srav r2,r2,r19 00181984: 01021024 and r2,r8,r2 known abilities and 0x800000 00181988: 10400064 beq r2,r0,0x 00181b1c 0018198c: 00000000 nop 00181990: 93a400b8 lbu r4,0x00b8(r29) load skillset 00181994: 0c01695a jal 0x0005a568 load ability from skillset 00181998: 02602821 addu r5,r19,r0 0018199c: 8fa90100 lw r9,0x0100(r29) load frog flag 001819a0: 00402021 addu r4,r2,r0 001819a4: 11200006 beq r9,r0,0x 001819c0 branch if ?? status present? 001819a8: a7a400d8 sh r4,0x00d8(r29) store ability
if frog
001819ac: 00041400 sll r2,r4,0x10 001819b0: 00021403 sra r2,r2,0x10 001819b4: 3403001d ori r3,r0,0x001d 001819b8: 14430058 bne r2,r3,0x 00181b1c branch if ability is not 0x1d frog? 001819bc: 00000000 nop
001819c0: 00041400 sll r2,r4,0x10 001819c4: 00021c03 sra r3,r2,0x10 001819c8: 10600054 beq r3,r0,0x 00181b1c branch if ability = 0 001819cc: 2482ffff addiu r2,r4,0xffff 001819d0: 3042ffff andi r2,r2,0xffff 001819d4: 2c42016f sltiu r2,r2,0x016f 001819d8: 10400036 beq r2,r0,0x 00181ab4 branch if ability is not a regular ability regular ability 001819dc: 000310c0 sll r2,r3,0x03 001819e0: 00431023 subu r2,r2,r3 001819e4: 00021040 sll r2,r2,0x01 001819e8: 3c038006 lui r3,0x8006 001819ec: 2463fbf0 addiu r3,r3,0xfbf0 load ability data pointer 2 001819f0: 00432021 addu r4,r2,r3 001819f4: 90830006 lbu r3,0x0006(r4) 001819f8: 00000000 nop 001819fc: 30620008 andi r2,r3,0x0008 00181a00: 10400005 beq r2,r0,0x 00181a18 ability requires sword check 00181a04: 00000000 nop 00181a08: 8fa800e8 lw r8,0x00e8(r29) 00181a0c: 00000000 nop 00181a10: 11000042 beq r8,r0,0x 00181b1c 00181a14: 00000000 nop 00181a18: 30620004 andi r2,r3,0x0004 00181a1c: 10400005 beq r2,r0,0x 00181a34 ability requires materia blade check 00181a20: 00000000 nop 00181a24: 8fa900e0 lw r9,0x00e0(r29) 00181a28: 00000000 nop 00181a2c: 1120003b beq r9,r0,0x 00181b1c 00181a30: 00000000 nop 00181a34: 8fa800f8 lw r8,0x00f8(r29) load (half of mp check?) 00181a38: 9091000d lbu r17,0x000d(r4) load MP cost 00181a3c: 11000002 beq r8,r0,0x 00181a48 00181a40: 26220001 addiu r2,r17,0x0001 00181a44: 00028843 sra r17,r2,0x01 MP cost / 2 00181a48: 9082000c lbu r2,0x000c(r4) load CT 00181a4c: 90830005 lbu r3,0x0005(r4) load flags 3 00181a50: 3050007f andi r16,r2,0x007f r16 = CT 00181a54: 000321c2 srl r4,r3,0x07 00181a58: 30620020 andi r2,r3,0x0020 affected by silence 00181a5c: 00021102 srl r2,r2,0x04 00181a60: 30630004 andi r3,r3,0x0004 persevere 00181a64: 1460000b bne r3,r0,0x 00181a94 branch if persevere true 00181a68: 00829025 or r18,r4,r2 r18 = silence and persevere checks 00181a6c: 8fa900f0 lw r9,0x00f0(r29) 00181a70: 34020001 ori r2,r0,0x0001 00181a74: 15220002 bne r9,r2,0x 00181a80 short charge check 00181a78: 26020001 addiu r2,r16,0x0001 00181a7c: 00028043 sra r16,r2,0x01 (CT+1) / 2 00181a80: 8fa800f0 lw r8,0x00f0(r29) 00181a84: 34020002 ori r2,r0,0x0002 00181a88: 15020003 bne r8,r2,0x 00181a98 non-charge check 00181a8c: 02002821 addu r5,r16,r0 store (CT + 1)/2 00181a90: 00008021 addu r16,r0,r0 00181a94: 02002821 addu r5,r16,r0 store 0 CT 00181a98: 8fa400b0 lw r4,0x00b0(r29) load Unit ID 00181a9c: 0c0605c8 jal 0x 00181720 ability loading? 00181aa0: 27a60010 addiu r6,r29,0x0010 00181aa4: a2910000 sb r17,0x0000(r20) store MP cost ??? stack 00181aa8: a2b00000 sb r16,0x0000(r21) store CT 0x60 stack 00181aac: 080606bc j 0x 00181af0 00181ab0: a2d20000 sb r18,0x0000(r22) store silence/persevere checks? 0x18 stack 00181ab4: 2482fe6a addiu r2,r4,0xfe6a 00181ab8: 3042ffff andi r2,r2,0xffff 00181abc: 2c420008 sltiu r2,r2,0x0008 00181ac0: 1040000c beq r2,r0,0x 00181af4 branch if not charge ability 00181ac4: 00031040 sll r2,r3,0x01 00181ac8: 27a60010 addiu r6,r29,0x0010 00181acc: 3c018006 lui r1,0x8006 00181ad0: 00220821 addu r1,r1,r2 00181ad4: 90300d18 lbu r16,0x0d18(r1) load CT? 00181ad8: 8fa400b0 lw r4,0x00b0(r29) unit id 00181adc: 0c0605c8 jal 0x 00181720 00181ae0: 02002821 addu r5,r16,r0 00181ae4: a2800000 sb r0,0x0000(r20) store 0 for mp cost ??? stack 00181ae8: a2b00000 sb r16,0x0000(r21) store CT 0x60 stack 00181aec: a2c00000 sb r0,0x0000(r22) store 0 for silence/persevere checks 0x18 00181af0: a2e20000 sb r2,0x0000(r23) store Turns 0x90 stack 00181af4: 26f70001 addiu r23,r23,0x0001 00181af8: 26d60001 addiu r22,r22,0x0001 00181afc: 26b50001 addiu r21,r21,0x0001 00181b00: 26940001 addiu r20,r20,0x0001 00181b04: 97a800d8 lhu r8,0x00d8(r29) load ability ID 00181b08: 8fa900c0 lw r9,0x00c0(r29) load pointer address 0x20 00181b0c: 27de0001 addiu r30,r30,0x0001 00181b10: a5280000 sh r8,0x0000(r9) store ability ID 00181b14: 25290002 addiu r9,r9,0x0002 00181b18: afa900c0 sw r9,0x00c0(r29) store new stack pointer? 00181b1c: 26730001 addiu r19,r19,0x0001 00181b20: 2a620010 slti r2,r19,0x0010 run 15 times - for each ability? 00181b24: 1440ff95 bne r2,r0,0x 0018197c 00181b28: 3c020080 lui r2,0x0080
00181b2c: 8fa900c0 lw r9,0x00c0(r29) 0x20 address 00181b30: 2402ffff addiu r2,r0,0xffff store end of list 00181b34: a5220000 sh r2,0x0000(r9) store ?? 00181b38: 03c01021 addu r2,r30,r0 return number of abilities? 00181b3c: 8fbf012c lw r31,0x012c(r29) 00181b40: 8fbe0128 lw r30,0x0128(r29) 00181b44: 8fb70124 lw r23,0x0124(r29) 00181b48: 8fb60120 lw r22,0x0120(r29) 00181b4c: 8fb5011c lw r21,0x011c(r29) 00181b50: 8fb40118 lw r20,0x0118(r29) 00181b54: 8fb30114 lw r19,0x0114(r29) 00181b58: 8fb20110 lw r18,0x0110(r29) 00181b5c: 8fb1010c lw r17,0x010c(r29) 00181b60: 8fb00108 lw r16,0x0108(r29) 00181b64: 27bd0130 addiu r29,r29,0x0130 00181b68: 03e00008 jr r31 00181b6c: 00000000 nop