Difference between revisions of "Monster skill, frog attack ability loading"
Jump to navigation
Jump to search
(2 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
Monster skill, frog ability loading | Monster skill, frog ability loading | ||
− | 001822cc: 27bdffc8 addiu r29,r29,0xffc8 | + | 001822cc: 27bdffc8 addiu r29,r29,0xffc8 - 0x38 |
001822d0: afb20020 sw r18,0x0020(r29) | 001822d0: afb20020 sw r18,0x0020(r29) | ||
− | 001822d4: 8fb20048 lw r18,0x0048(r29) | + | 001822d4: 8fb20048 lw r18,0x0048(r29) Raw CT pointer from stack |
001822d8: afb1001c sw r17,0x001c(r29) | 001822d8: afb1001c sw r17,0x001c(r29) | ||
− | 001822dc: 00c08821 addu r17,r6,r0 | + | 001822dc: 00c08821 addu r17,r6,r0 Ability ID list |
001822e0: afb40028 sw r20,0x0028(r29) | 001822e0: afb40028 sw r20,0x0028(r29) | ||
− | 001822e4: 34140003 ori r20,r0,0x0003 | + | 001822e4: 34140003 ori r20,r0,0x0003 No. Abilities in skillset (default 3) |
001822e8: afb30024 sw r19,0x0024(r29) | 001822e8: afb30024 sw r19,0x0024(r29) | ||
001822ec: 00009821 addu r19,r0,r0 | 001822ec: 00009821 addu r19,r0,r0 | ||
001822f0: afb5002c sw r21,0x002c(r29) | 001822f0: afb5002c sw r21,0x002c(r29) | ||
− | 001822f4: 00a0a821 addu r21,r5,r0 | + | 001822f4: 00a0a821 addu r21,r5,r0 r21 = skillset ID |
001822f8: afbf0030 sw r31,0x0030(r29) | 001822f8: afbf0030 sw r31,0x0030(r29) | ||
001822fc: 0c060435 jal 0x 001810d4 get unit data | 001822fc: 0c060435 jal 0x 001810d4 get unit data | ||
− | 00182300: | + | 00182300: afb00018 sw r16,0x 0018(r29) |
00182304: 00402021 addu r4,r2,r0 | 00182304: 00402021 addu r4,r2,r0 | ||
− | 00182308: 1080003f beq r4,r0,0x 00182408 | + | 00182308: 1080003f beq r4,r0,0x 00182408 branch if unit is invalid |
0018230c: 00001021 addu r2,r0,r0 | 0018230c: 00001021 addu r2,r0,r0 | ||
− | + | ||
− | 00182310: 9082005a lbu r2,0x005a(r4) | + | 00182310: 9082005a lbu r2,0x005a(r4) load target statuses |
00182314: 00000000 nop | 00182314: 00000000 nop | ||
00182318: 30420002 andi r2,r2,0x0002 | 00182318: 30420002 andi r2,r2,0x0002 | ||
0018231c: 10400002 beq r2,r0,0x 00182328 branch if not frog | 0018231c: 10400002 beq r2,r0,0x 00182328 branch if not frog | ||
00182320: 32a200ff andi r2,r21,0x00ff | 00182320: 32a200ff andi r2,r21,0x00ff | ||
− | 00182324: 34130001 ori r19,r0,0x0001 | + | 00182324: 34130001 ori r19,r0,0x0001 set frog register to true |
− | + | ||
00182328: 3c018006 lui r1,0x8006 | 00182328: 3c018006 lui r1,0x8006 | ||
0018232c: 00220821 addu r1,r1,r2 | 0018232c: 00220821 addu r1,r1,r2 | ||
Line 31: | Line 31: | ||
00182338: 10620004 beq r3,r2,0x 0018234c branch if not 06 - monster skillset | 00182338: 10620004 beq r3,r2,0x 0018234c branch if not 06 - monster skillset | ||
0018233c: 2402ffff addiu r2,r0,0xffff | 0018233c: 2402ffff addiu r2,r0,0xffff | ||
− | 00182340: a6220000 sh r2,0x0000(r17) store | + | 00182340: a6220000 sh r2,0x0000(r17) store 0xffff into ability ID list (end list if not monster) |
00182344: 08060902 j 0x 00182408 jump to end, return r2 = 00 | 00182344: 08060902 j 0x 00182408 jump to end, return r2 = 00 | ||
00182348: 00001021 addu r2,r0,r0 | 00182348: 00001021 addu r2,r0,r0 | ||
− | + | ||
0018234c: 12600003 beq r19,r0,0x 0018235c branch if not frog | 0018234c: 12600003 beq r19,r0,0x 0018235c branch if not frog | ||
00182350: 3405016f ori r5,r0,0x016f | 00182350: 3405016f ori r5,r0,0x016f | ||
00182354: a6250000 sh r5,0x0000(r17) store ability = 0x16f, frog attack | 00182354: a6250000 sh r5,0x0000(r17) store ability = 0x16f, frog attack | ||
− | 00182358: 26310002 addiu r17,r17,0x0002 | + | 00182358: 26310002 addiu r17,r17,0x0002 next ability ID |
− | + | ||
− | 0018235c: 0c06090c jal | + | 0018235c: 0c06090c jal 0x00182430 monster skill check |
00182360: 00000000 nop | 00182360: 00000000 nop | ||
− | 00182364: 10400002 beq r2,r0, | + | 00182364: 10400002 beq r2,r0,0x00182370 branch if not monster skillset (if not beast-master?) |
− | 00182368: 00008021 addu r16,r0,r0 | + | 00182368: 00008021 addu r16,r0,r0 r16 = 0 |
− | + | ||
− | 0018236c: 34140004 ori r20,r0,0x0004 | + | 0018236c: 34140004 ori r20,r0,0x0004 if monster skillset, 4 abilities available (if beast-master adjacent unit?) |
− | 00182370: 12800025 beq r20,r0, | + | 00182370: 12800025 beq r20,r0,0x00182408 end if No. abilities in skillset is 0 |
− | 00182374: 32a400ff andi r4,r21,0x00ff | + | 00182374: 32a400ff andi r4,r21,0x00ff r4 = skillset |
00182378: 0c01695a jal 0x0005a568 load ability from skillset | 00182378: 0c01695a jal 0x0005a568 load ability from skillset | ||
0018237c: 02002821 addu r5,r16,r0 | 0018237c: 02002821 addu r5,r16,r0 | ||
− | 00182380: 00402021 addu r4,r2,r0 | + | 00182380: 00402021 addu r4,r2,r0 r4 = ability |
00182384: 12600006 beq r19,r0,0x 001823a0 branch if not frog? | 00182384: 12600006 beq r19,r0,0x 001823a0 branch if not frog? | ||
− | 00182388: 00802821 addu r5,r4,r0 | + | 00182388: 00802821 addu r5,r4,r0 r5 = ability |
− | + | ||
0018238c: 00041400 sll r2,r4,0x10 | 0018238c: 00041400 sll r2,r4,0x10 | ||
− | 00182390: 00021403 sra r2,r2,0x10 | + | 00182390: 00021403 sra r2,r2,0x10 r2 = ability |
00182394: 3403001d ori r3,r0,0x001d | 00182394: 3403001d ori r3,r0,0x001d | ||
− | 00182398: 14430017 bne r2,r3, | + | 00182398: 14430017 bne r2,r3,0x001823f8 branch if attack is not frog? (HUH?? c... can frogs use frog????) |
0018239c: 00000000 nop | 0018239c: 00000000 nop | ||
− | + | ||
001823a0: 00041400 sll r2,r4,0x10 | 001823a0: 00041400 sll r2,r4,0x10 | ||
001823a4: 00021c03 sra r3,r2,0x10 | 001823a4: 00021c03 sra r3,r2,0x10 | ||
− | 001823a8: 10600013 beq r3,r0,0x 001823f8 | + | 001823a8: 10600013 beq r3,r0,0x 001823f8 branch if attack is 0 (attack) |
001823ac: 2482ffff addiu r2,r4,0xffff | 001823ac: 2482ffff addiu r2,r4,0xffff | ||
001823b0: 3042ffff andi r2,r2,0xffff | 001823b0: 3042ffff andi r2,r2,0xffff | ||
001823b4: 2c42016f sltiu r2,r2,0x016f | 001823b4: 2c42016f sltiu r2,r2,0x016f | ||
− | 001823b8: 1040000f beq r2,r0, | + | 001823b8: 1040000f beq r2,r0,0x001823f8 branch if attack is potion or greater |
001823bc: 000310c0 sll r2,r3,0x03 | 001823bc: 000310c0 sll r2,r3,0x03 | ||
001823c0: 00431023 subu r2,r2,r3 | 001823c0: 00431023 subu r2,r2,r3 | ||
− | 001823c4: 00021040 sll r2,r2,0x01 | + | 001823c4: 00021040 sll r2,r2,0x01 ID * 14 |
001823c8: 3c018006 lui r1,0x8006 | 001823c8: 3c018006 lui r1,0x8006 | ||
001823cc: 00220821 addu r1,r1,r2 | 001823cc: 00220821 addu r1,r1,r2 | ||
− | 001823d0: 9022fbf5 lbu r2,-0x040b(r1) load ability flags | + | 001823d0: 9022fbf5 lbu r2,-0x040b(r1) load ability flags 3 |
001823d4: 00000000 nop | 001823d4: 00000000 nop | ||
− | 001823d8: 000219c2 srl r3,r2,0x07 | + | 001823d8: 000219c2 srl r3,r2,0x07 reflectable in bit 1 |
001823dc: 30420020 andi r2,r2,0x0020 affected by silence check | 001823dc: 30420020 andi r2,r2,0x0020 affected by silence check | ||
− | 001823e0: 00021102 srl r2,r2,0x04 | + | 001823e0: 00021102 srl r2,r2,0x04 silencable in bit 2 |
001823e4: 00621825 or r3,r3,r2 | 001823e4: 00621825 or r3,r3,r2 | ||
− | 001823e8: a2430000 sb r3,0x0000(r18) | + | 001823e8: a2430000 sb r3,0x0000(r18) store reflectable/silence (cannot perform monster abilities? weird.) |
001823ec: 26520001 addiu r18,r18,0x0001 | 001823ec: 26520001 addiu r18,r18,0x0001 | ||
− | 001823f0: a6250000 sh r5,0x0000(r17) store ability | + | 001823f0: a6250000 sh r5,0x0000(r17) store ability ID in list |
− | 001823f4: 26310002 addiu r17,r17,0x0002 | + | 001823f4: 26310002 addiu r17,r17,0x0002 next ability ID |
− | 001823f8: 26100001 addiu r16,r16,0x0001 | + | 001823f8: 26100001 addiu r16,r16,0x0001 increase counter by 1 |
− | 001823fc: 0214102a slt r2,r16,r20 | + | 001823fc: 0214102a slt r2,r16,r20 set if less than No. abilities in skillset |
− | 00182400: 1440ffdd bne r2,r0, | + | 00182400: 1440ffdd bne r2,r0,0x00182378 loop 3 times (4 if beast-master?) |
− | 00182404: 32a400ff andi r4,r21,0x00ff | + | 00182404: 32a400ff andi r4,r21,0x00ff Skillset |
− | + | ||
00182408: 8fbf0030 lw r31,0x0030(r29) | 00182408: 8fbf0030 lw r31,0x0030(r29) | ||
0018240c: 8fb5002c lw r21,0x002c(r29) | 0018240c: 8fb5002c lw r21,0x002c(r29) | ||
Line 93: | Line 93: | ||
00182418: 8fb20020 lw r18,0x0020(r29) | 00182418: 8fb20020 lw r18,0x0020(r29) | ||
0018241c: 8fb1001c lw r17,0x001c(r29) | 0018241c: 8fb1001c lw r17,0x001c(r29) | ||
− | 00182420: | + | 00182420: 8fb00018 lw r16,0x0018(r29) |
00182424: 27bd0038 addiu r29,r29,0x0038 | 00182424: 27bd0038 addiu r29,r29,0x0038 | ||
00182428: 03e00008 jr r31 | 00182428: 03e00008 jr r31 | ||
0018242c: 00000000 nop | 0018242c: 00000000 nop |
Latest revision as of 01:07, 19 February 2022
Monster skill, frog ability loading 001822cc: 27bdffc8 addiu r29,r29,0xffc8 - 0x38 001822d0: afb20020 sw r18,0x0020(r29) 001822d4: 8fb20048 lw r18,0x0048(r29) Raw CT pointer from stack 001822d8: afb1001c sw r17,0x001c(r29) 001822dc: 00c08821 addu r17,r6,r0 Ability ID list 001822e0: afb40028 sw r20,0x0028(r29) 001822e4: 34140003 ori r20,r0,0x0003 No. Abilities in skillset (default 3) 001822e8: afb30024 sw r19,0x0024(r29) 001822ec: 00009821 addu r19,r0,r0 001822f0: afb5002c sw r21,0x002c(r29) 001822f4: 00a0a821 addu r21,r5,r0 r21 = skillset ID 001822f8: afbf0030 sw r31,0x0030(r29) 001822fc: 0c060435 jal 0x 001810d4 get unit data 00182300: afb00018 sw r16,0x 0018(r29) 00182304: 00402021 addu r4,r2,r0 00182308: 1080003f beq r4,r0,0x 00182408 branch if unit is invalid 0018230c: 00001021 addu r2,r0,r0 00182310: 9082005a lbu r2,0x005a(r4) load target statuses 00182314: 00000000 nop 00182318: 30420002 andi r2,r2,0x0002 0018231c: 10400002 beq r2,r0,0x 00182328 branch if not frog 00182320: 32a200ff andi r2,r21,0x00ff 00182324: 34130001 ori r19,r0,0x0001 set frog register to true 00182328: 3c018006 lui r1,0x8006 0018232c: 00220821 addu r1,r1,r2 00182330: 90235cb4 lbu r3,0x5cb4(r1) load action menu byte 00182334: 34020006 ori r2,r0,0x0006 00182338: 10620004 beq r3,r2,0x 0018234c branch if not 06 - monster skillset 0018233c: 2402ffff addiu r2,r0,0xffff 00182340: a6220000 sh r2,0x0000(r17) store 0xffff into ability ID list (end list if not monster) 00182344: 08060902 j 0x 00182408 jump to end, return r2 = 00 00182348: 00001021 addu r2,r0,r0 0018234c: 12600003 beq r19,r0,0x 0018235c branch if not frog 00182350: 3405016f ori r5,r0,0x016f 00182354: a6250000 sh r5,0x0000(r17) store ability = 0x16f, frog attack 00182358: 26310002 addiu r17,r17,0x0002 next ability ID 0018235c: 0c06090c jal 0x00182430 monster skill check 00182360: 00000000 nop 00182364: 10400002 beq r2,r0,0x00182370 branch if not monster skillset (if not beast-master?) 00182368: 00008021 addu r16,r0,r0 r16 = 0 0018236c: 34140004 ori r20,r0,0x0004 if monster skillset, 4 abilities available (if beast-master adjacent unit?) 00182370: 12800025 beq r20,r0,0x00182408 end if No. abilities in skillset is 0 00182374: 32a400ff andi r4,r21,0x00ff r4 = skillset 00182378: 0c01695a jal 0x0005a568 load ability from skillset 0018237c: 02002821 addu r5,r16,r0 00182380: 00402021 addu r4,r2,r0 r4 = ability 00182384: 12600006 beq r19,r0,0x 001823a0 branch if not frog? 00182388: 00802821 addu r5,r4,r0 r5 = ability 0018238c: 00041400 sll r2,r4,0x10 00182390: 00021403 sra r2,r2,0x10 r2 = ability 00182394: 3403001d ori r3,r0,0x001d 00182398: 14430017 bne r2,r3,0x001823f8 branch if attack is not frog? (HUH?? c... can frogs use frog????) 0018239c: 00000000 nop 001823a0: 00041400 sll r2,r4,0x10 001823a4: 00021c03 sra r3,r2,0x10 001823a8: 10600013 beq r3,r0,0x 001823f8 branch if attack is 0 (attack) 001823ac: 2482ffff addiu r2,r4,0xffff 001823b0: 3042ffff andi r2,r2,0xffff 001823b4: 2c42016f sltiu r2,r2,0x016f 001823b8: 1040000f beq r2,r0,0x001823f8 branch if attack is potion or greater 001823bc: 000310c0 sll r2,r3,0x03 001823c0: 00431023 subu r2,r2,r3 001823c4: 00021040 sll r2,r2,0x01 ID * 14 001823c8: 3c018006 lui r1,0x8006 001823cc: 00220821 addu r1,r1,r2 001823d0: 9022fbf5 lbu r2,-0x040b(r1) load ability flags 3 001823d4: 00000000 nop 001823d8: 000219c2 srl r3,r2,0x07 reflectable in bit 1 001823dc: 30420020 andi r2,r2,0x0020 affected by silence check 001823e0: 00021102 srl r2,r2,0x04 silencable in bit 2 001823e4: 00621825 or r3,r3,r2 001823e8: a2430000 sb r3,0x0000(r18) store reflectable/silence (cannot perform monster abilities? weird.) 001823ec: 26520001 addiu r18,r18,0x0001 001823f0: a6250000 sh r5,0x0000(r17) store ability ID in list 001823f4: 26310002 addiu r17,r17,0x0002 next ability ID 001823f8: 26100001 addiu r16,r16,0x0001 increase counter by 1 001823fc: 0214102a slt r2,r16,r20 set if less than No. abilities in skillset 00182400: 1440ffdd bne r2,r0,0x00182378 loop 3 times (4 if beast-master?) 00182404: 32a400ff andi r4,r21,0x00ff Skillset 00182408: 8fbf0030 lw r31,0x0030(r29) 0018240c: 8fb5002c lw r21,0x002c(r29) 00182410: 8fb40028 lw r20,0x0028(r29) 00182414: 8fb30024 lw r19,0x0024(r29) 00182418: 8fb20020 lw r18,0x0020(r29) 0018241c: 8fb1001c lw r17,0x001c(r29) 00182420: 8fb00018 lw r16,0x0018(r29) 00182424: 27bd0038 addiu r29,r29,0x0038 00182428: 03e00008 jr r31 0018242c: 00000000 nop