Difference between revisions of "Monster Skill check prep"
Jump to navigation
Jump to search
(Created page with " Monster Skill check prep 00182430: 27bdffd0 addiu r29,r29,0xffd0 00182434: afb0 0018 sw r16,0x 0018(r29) 00182438: 00808021 addu r16,r4,r0 r16 = monster's data (acting ...") |
RetroTypes (talk | contribs) m (Formatting and adding additional comments) |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | Monster Skill | + | #Parameters: |
− | 00182430: 27bdffd0 addiu r29,r29,0xffd0 | + | #r4 = Unit's Data Pointer |
− | 00182434: | + | |
− | 00182438: 00808021 addu r16,r4,r0 | + | #Returns: |
− | 0018243c: afbf002c sw r31,0x002c(r29) | + | #r2 = 0 if Invalid Unit or no adjacent Unit has Monster Skill |
− | 00182440: afb40028 sw r20,0x0028(r29) | + | ≠ 0 if at least one adjacent Unit has Monster Skill |
− | 00182444: afb30024 sw r19,0x0024(r29) | + | |
− | 00182448: afb20020 sw r18,0x0020(r29) | + | 00182430: 27bdffd0 addiu r29,r29,0xffd0 # |
− | 0018244c: afb1001c sw r17,0x001c(r29) | + | 00182434: afb00018 sw r16,0x0018(r29) # |
− | 00182450: 92030001 lbu r3,0x0001(r16) | + | 00182438: 00808021 addu r16,r4,r0 #r16 = Monster's Data Pointer (Acting Unit) |
− | 00182454: 340200ff ori r2,r0,0x00ff | + | 0018243c: afbf002c sw r31,0x002c(r29) # |
− | 00182458: 10620021 beq r3,r2, | + | 00182440: afb40028 sw r20,0x0028(r29) # |
− | 0018245c: 00000000 nop | + | 00182444: afb30024 sw r19,0x0024(r29) # |
− | 00182460: 9205018a lbu r5,0x018a(r16) | + | 00182448: afb20020 sw r18,0x0020(r29) # |
− | 00182464: 0c05f056 jal 0x0017c158 | + | 0018244c: afb1001c sw r17,0x001c(r29) # |
− | 00182468: 27a40010 addiu r4,r29,0x0010 | + | 00182450: 92030001 lbu r3,0x0001(r16) #r3 = Unit ENTD slot |
− | 0018246c: 92130005 lbu r19,0x0005(r16) | + | 00182454: 340200ff ori r2,r0,0x00ff #r2 = 0xFF |
− | 00182470: 92140047 lbu r20,0x0047(r16) | + | 00182458: 10620021 beq r3,r2,0x001824e0 #If Unit exists /Else Branch if Unit doesn't exist |
− | 00182474: 92110048 lbu r17,0x0048(r16) | + | 0018245c: 00000000 nop # |
− | 00182478: 93b20016 lbu r18,0x0016(r29) | + | 00182460: 9205018a lbu r5,0x018a(r16) #r5 = Miscellaneous Unit ID |
− | 0018247c: 02602021 addu r4,r19,r0 | + | 00182464: 0c05f056 jal 0x0017c158 #[[Calculate_Height_Data]] |
− | 00182480: 2685ffff addiu r5,r20,0xffff | + | 00182468: 27a40010 addiu r4,r29,0x0010 #r4 = something off the stack? |
− | 00182484: 02203021 addu r6,r17,r0 | + | 0018246c: 92130005 lbu r19,0x0005(r16) #r19 = ENTD flags 2 |
− | 00182488: 0c060942 jal | + | 00182470: 92140047 lbu r20,0x0047(r16) #r20 = Unit's X Coordinate |
− | 0018248c: 02403821 addu r7,r18,r0 | + | 00182474: 92110048 lbu r17,0x0048(r16) #r17 = Unit's Y Coordinate |
− | 00182490: 02602021 addu r4,r19,r0 | + | 00182478: 93b20016 lbu r18,0x0016(r29) #r18 = Unit's Support Ability |
− | 00182494: 26850001 addiu r5,r20,0x0001 | + | 0018247c: 02602021 addu r4,r19,r0 #r4 = ENTD flags |
− | 00182498: 02203021 addu r6,r17,r0 | + | 00182480: 2685ffff addiu r5,r20,0xffff #r5 = X Coordinate - 1 |
− | 0018249c: 02403821 addu r7,r18,r0 | + | 00182484: 02203021 addu r6,r17,r0 #r6 = Y Coordinate |
− | 001824a0: 0c060942 jal | + | 00182488: 0c060942 jal 0x00182508 #[[Monster Skill check]] |
− | 001824a4: 00408021 addu r16,r2,r0 | + | 0018248c: 02403821 addu r7,r18,r0 #r7 = Unit's Support Ability |
− | 001824a8: 02028021 addu r16,r16,r2 | + | 00182490: 02602021 addu r4,r19,r0 #r4 = ENTD flags |
− | 001824ac: 02602021 addu r4,r19,r0 | + | 00182494: 26850001 addiu r5,r20,0x0001 #r5 = X Coordinate + 1 |
− | 001824b0: 02802821 addu r5,r20,r0 | + | 00182498: 02203021 addu r6,r17,r0 #r6 = Y Coordinate |
− | 001824b4: 2626ffff addiu r6,r17,0xffff | + | 0018249c: 02403821 addu r7,r18,r0 #r7 = Unit's Support Ability |
− | 001824b8: 0c060942 jal | + | 001824a0: 0c060942 jal 0x00182508 #[[Monster Skill check]] |
− | 001824bc: 02403821 addu r7,r18,r0 | + | 001824a4: 00408021 addu r16,r2,r0 #r16 = outcome 1 |
− | 001824c0: 02028021 addu r16,r16,r2 | + | 001824a8: 02028021 addu r16,r16,r2 #r16 = outcome 1 and 2 |
− | 001824c4: 02602021 addu r4,r19,r0 | + | 001824ac: 02602021 addu r4,r19,r0 #r4 = ENTD flags |
− | 001824c8: 02802821 addu r5,r20,r0 | + | 001824b0: 02802821 addu r5,r20,r0 #r5 = X Coordinate |
− | 001824cc: 26260001 addiu r6,r17,0x0001 | + | 001824b4: 2626ffff addiu r6,r17,0xffff #r6 = Y Coordinate - 1 |
− | 001824d0: 0c060942 jal | + | 001824b8: 0c060942 jal 0x00182508 #[[Monster Skill check]] |
− | 001824d4: 02403821 addu r7,r18,r0 | + | 001824bc: 02403821 addu r7,r18,r0 #r7 = Unit's Support Ability |
− | 001824d8: 08060939 j | + | 001824c0: 02028021 addu r16,r16,r2 #r16 = outcome 1,2, and 3 |
− | 001824dc: 02021021 addu r2,r16,r2 | + | 001824c4: 02602021 addu r4,r19,r0 #r4 = ENTD flags |
− | 001824e0: 00001021 addu r2,r0,r0 | + | 001824c8: 02802821 addu r5,r20,r0 #r5 = X Coordinate |
+ | 001824cc: 26260001 addiu r6,r17,0x0001 #r6 = Y Coordinate + 1 | ||
+ | 001824d0: 0c060942 jal 0x00182508 #[[Monster Skill check]] | ||
+ | 001824d4: 02403821 addu r7,r18,r0 #r7 = Unit's Support Ability | ||
+ | 001824d8: 08060939 j 0x001824e4 #Jump to END | ||
+ | 001824dc: 02021021 addu r2,r16,r2 r2 = all outcomes added together (will be 0 if no adjacent unit has Monster Skill) | ||
+ | 001824e0: 00001021 addu r2,r0,r0 #r2 = 0 (If unit doesn't exist, no beast-master checking required) | ||
001824e4: 8fbf002c lw r31,0x002c(r29) | 001824e4: 8fbf002c lw r31,0x002c(r29) | ||
001824e8: 8fb40028 lw r20,0x0028(r29) | 001824e8: 8fb40028 lw r20,0x0028(r29) | ||
Line 50: | Line 56: | ||
001824f0: 8fb20020 lw r18,0x0020(r29) | 001824f0: 8fb20020 lw r18,0x0020(r29) | ||
001824f4: 8fb1001c lw r17,0x001c(r29) | 001824f4: 8fb1001c lw r17,0x001c(r29) | ||
− | 001824f8: | + | 001824f8: 8fb00018 lw r16,0x0018(r29) |
001824fc: 27bd0030 addiu r29,r29,0x0030 | 001824fc: 27bd0030 addiu r29,r29,0x0030 | ||
00182500: 03e00008 jr r31 | 00182500: 03e00008 jr r31 | ||
00182504: 00000000 nop | 00182504: 00000000 nop |
Latest revision as of 11:32, 14 April 2025
#Parameters: #r4 = Unit's Data Pointer #Returns: #r2 = 0 if Invalid Unit or no adjacent Unit has Monster Skill ≠ 0 if at least one adjacent Unit has Monster Skill
00182430: 27bdffd0 addiu r29,r29,0xffd0 # 00182434: afb00018 sw r16,0x0018(r29) # 00182438: 00808021 addu r16,r4,r0 #r16 = Monster's Data Pointer (Acting Unit) 0018243c: afbf002c sw r31,0x002c(r29) # 00182440: afb40028 sw r20,0x0028(r29) # 00182444: afb30024 sw r19,0x0024(r29) # 00182448: afb20020 sw r18,0x0020(r29) # 0018244c: afb1001c sw r17,0x001c(r29) # 00182450: 92030001 lbu r3,0x0001(r16) #r3 = Unit ENTD slot 00182454: 340200ff ori r2,r0,0x00ff #r2 = 0xFF 00182458: 10620021 beq r3,r2,0x001824e0 #If Unit exists /Else Branch if Unit doesn't exist 0018245c: 00000000 nop # 00182460: 9205018a lbu r5,0x018a(r16) #r5 = Miscellaneous Unit ID 00182464: 0c05f056 jal 0x0017c158 #Calculate_Height_Data 00182468: 27a40010 addiu r4,r29,0x0010 #r4 = something off the stack? 0018246c: 92130005 lbu r19,0x0005(r16) #r19 = ENTD flags 2 00182470: 92140047 lbu r20,0x0047(r16) #r20 = Unit's X Coordinate 00182474: 92110048 lbu r17,0x0048(r16) #r17 = Unit's Y Coordinate 00182478: 93b20016 lbu r18,0x0016(r29) #r18 = Unit's Support Ability 0018247c: 02602021 addu r4,r19,r0 #r4 = ENTD flags 00182480: 2685ffff addiu r5,r20,0xffff #r5 = X Coordinate - 1 00182484: 02203021 addu r6,r17,r0 #r6 = Y Coordinate 00182488: 0c060942 jal 0x00182508 #Monster Skill check 0018248c: 02403821 addu r7,r18,r0 #r7 = Unit's Support Ability 00182490: 02602021 addu r4,r19,r0 #r4 = ENTD flags 00182494: 26850001 addiu r5,r20,0x0001 #r5 = X Coordinate + 1 00182498: 02203021 addu r6,r17,r0 #r6 = Y Coordinate 0018249c: 02403821 addu r7,r18,r0 #r7 = Unit's Support Ability 001824a0: 0c060942 jal 0x00182508 #Monster Skill check 001824a4: 00408021 addu r16,r2,r0 #r16 = outcome 1 001824a8: 02028021 addu r16,r16,r2 #r16 = outcome 1 and 2 001824ac: 02602021 addu r4,r19,r0 #r4 = ENTD flags 001824b0: 02802821 addu r5,r20,r0 #r5 = X Coordinate 001824b4: 2626ffff addiu r6,r17,0xffff #r6 = Y Coordinate - 1 001824b8: 0c060942 jal 0x00182508 #Monster Skill check 001824bc: 02403821 addu r7,r18,r0 #r7 = Unit's Support Ability 001824c0: 02028021 addu r16,r16,r2 #r16 = outcome 1,2, and 3 001824c4: 02602021 addu r4,r19,r0 #r4 = ENTD flags 001824c8: 02802821 addu r5,r20,r0 #r5 = X Coordinate 001824cc: 26260001 addiu r6,r17,0x0001 #r6 = Y Coordinate + 1 001824d0: 0c060942 jal 0x00182508 #Monster Skill check 001824d4: 02403821 addu r7,r18,r0 #r7 = Unit's Support Ability 001824d8: 08060939 j 0x001824e4 #Jump to END 001824dc: 02021021 addu r2,r16,r2 r2 = all outcomes added together (will be 0 if no adjacent unit has Monster Skill) 001824e0: 00001021 addu r2,r0,r0 #r2 = 0 (If unit doesn't exist, no beast-master checking required) 001824e4: 8fbf002c lw r31,0x002c(r29) 001824e8: 8fb40028 lw r20,0x0028(r29) 001824ec: 8fb30024 lw r19,0x0024(r29) 001824f0: 8fb20020 lw r18,0x0020(r29) 001824f4: 8fb1001c lw r17,0x001c(r29) 001824f8: 8fb00018 lw r16,0x0018(r29) 001824fc: 27bd0030 addiu r29,r29,0x0030 00182500: 03e00008 jr r31 00182504: 00000000 nop