Difference between revisions of "Monster Skill check prep"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m
m (Formatting and adding additional comments)
 
Line 1: Line 1:
  Monster Skill check prep
+
  #Parameters:
  00182430: 27bdffd0 addiu r29,r29,0xffd0
+
  #r4 = Unit's Data Pointer
  00182434: afb0 0018 sw r16,0x 0018(r29)
+
  00182438: 00808021 addu r16,r4,r0 r16 = monster's data (acting unit)
+
#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,0x 001824e0 branch if unit doesn't exist
+
  00182440: afb40028 sw r20,0x0028(r29)             #
  0018245c: 00000000 nop
+
  00182444: afb30024 sw r19,0x0024(r29)             #
  00182460: 9205018a lbu r5,0x018a(r16) load (misc?) unit ID?
+
  00182448: afb20020 sw r18,0x0020(r29)             #
  00182464: 0c05f056 jal 0x0017c158 [[Calculate_Height_Data]]
+
  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) load entd flags
+
  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) load map coordinates
+
  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 r4 = ENTD flags
+
  00182464: 0c05f056 jal 0x0017c158                     #[[Calculate_Height_Data]]
  00182480: 2685ffff addiu r5,r20,0xffff r5 = X coords - 1
+
  00182468: 27a40010 addiu r4,r29,0x0010                 #r4 = something off the stack?
  00182484: 02203021 addu r6,r17,r0 r6 = Y coords
+
  0018246c: 92130005 lbu r19,0x0005(r16)                 #r19 = ENTD flags 2
  00182488: 0c060942 jal 0x00182508 See if any units are 1 X away
+
  00182470: 92140047 lbu r20,0x0047(r16)                 #r20 = Unit's X Coordinate
  0018248c: 02403821 addu r7,r18,r0 r7 = unit ID of other unit
+
  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 0x00182508 check for + 1 X
+
  00182488: 0c060942 jal 0x00182508                     #[[Monster Skill check]]
  001824a4: 00408021 addu r16,r2,r0 r16 = unit battle ID
+
  0018248c: 02403821 addu r7,r18,r0                     #r7 = Unit's Support Ability
  001824a8: 02028021 addu r16,r16,r2 r16 = ID of adjacent unit...?
+
  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 0x 00182508 check for -1 Y
+
  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 0x 00182508 check for +1 Y
+
  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 0x 001824e4
+
  001824c0: 02028021 addu r16,r16,r2                     #r16 = outcome 1,2, and 3
  001824dc: 02021021 addu r2,r16,r2 r2 = no adjacent beast-master unit?
+
  001824c4: 02602021 addu r4,r19,r0                     #r4  = ENTD flags
  001824e0: 00001021 addu r2,r0,r0 if unit doesn't exist, no beast-master
+
  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)

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