Difference between revisions of "00180f40 - 00180fe0"
Jump to navigation
Jump to search
m |
|||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | Parameters : r4 = Target data pointer | |
− | 00180f40: 27bdffd8 addiu r29,r29, | + | Returns nothing |
− | 00180f44: afb10014 sw r17,0x0014(r29) | + | |
− | 00180f48: 00808821 addu r17,r4,r0 | + | Disable all innate status, status immunities, current status, inflict status, and status CT (Morbolization prep) |
− | 00180f4c: afb00010 sw r16,0x0010(r29) | + | Note : Preventing status from being canceled here is not sufficient, there's another routine that might do it. |
− | 00180f50: 00008021 addu r16,r0,r0 | + | ------------------------------------------------------------------------------------------------------------- |
− | 00180f54: afb3001c sw r19,0x001c(r29) | + | 00180f40: 27bdffd8 addiu r29,r29,-0x0028 | |
− | 00180f58: 34130080 ori r19,r0,0x0080 | + | 00180f44: afb10014 sw r17,0x0014(r29) | |
− | 00180f5c: afbf0020 sw r31,0x0020(r29) | + | 00180f48: 00808821 addu r17,r4,r0 |{{f/adr|<nowiki>r17 = Unit data pointer</nowiki>}} |
− | 00180f60: afb20018 sw r18,0x0018(r29) | + | 00180f4c: afb00010 sw r16,0x0010(r29) | |
− | 00180f64: 9232018a lbu r18,0x018a(r17) | + | 00180f50: 00008021 addu r16,r0,r0 |{{f/std|<nowiki>r16 = 0x00 (loop counter)</nowiki>}} |
− | 00180f68: 06010002 bgez r16,0x00180f74 | + | 00180f54: afb3001c sw r19,0x001c(r29) | |
− | 00180f6c: 02001021 addu r2,r16,r0 | + | 00180f58: 34130080 ori r19,r0,0x0080 |{{f/std|<nowiki>r19 = 0x80 (will be used as bitmask)</nowiki>}} |
− | 00180f70: 26020007 addiu r2,r16,0x0007 | + | 00180f5c: afbf0020 sw r31,0x0020(r29) | |
− | 00180f74: 000210c3 sra r2,r2,0x03 | + | 00180f60: afb20018 sw r18,0x0018(r29) | |
− | 00180f78: 32030007 andi r3,r16,0x0007 | + | 00180f64: 9232018a lbu r18,0x018a(r17) |{{f/load|<nowiki>r18 = Unit Raw iD (without 0xff check)</nowiki>}} |
− | 00180f7c: 02221021 addu r2,r17,r2 | + | {{f/bloop|LOOP - through each status (40 iterations)}} |
− | 00180f80: 90420058 lbu r2,0x0058(r2) | + | 00180f68: 06010002 bgez r16,0x00180f74 {{f/Cond|If loop counter < 0}} {{f/std|Never ?}} |
− | 00180f84: 00731807 srav r3,r19,r3 | + | 00180f6c: 02001021 addu r2,r16,r0 |{{f/std|<nowiki>r2 = loop counter</nowiki>}} |
− | 00180f88: 00431024 and r2,r2,r3 | + | 00180f70: 26020007 addiu r2,r16,0x0007 |{{f/std|<nowiki>r2 = counter + 0x07</nowiki>}} |
− | 00180f8c: 10400004 beq r2,r0,0x00180fa0 | + | 00180f74: 000210c3 sra r2,r2,0x03 |{{f/std|<nowiki>r2 = This iteration status set (counter / 8)</nowiki>}} |
− | 00180f90: 26040001 addiu r4,r16,0x0001 | + | 00180f78: 32030007 andi r3,r16,0x0007 |{{f/std|<nowiki>r3 = Status bit position in its set</nowiki>}} |
− | 00180f94: 00002821 addu r5,r0,r0 | + | 00180f7c: 02221021 addu r2,r17,r2 |{{f/adr|This iteration Status set pointer}} |
− | 00180f98: 0c01a3a0 jal 0x00068e80 | + | 00180f80: 90420058 lbu r2,0x0058(r2) |{{f/load|This iteration set of Current status}} |
− | 00180f9c: 02403021 addu r6,r18,r0 | + | 00180f84: 00731807 srav r3,r19,r3 |{{f/std|<nowiki>r3 = This iteration bitmask</nowiki>}} |
− | 00180fa0: 26100001 addiu r16,r16,0x0001 | + | 00180f88: 00431024 and r2,r2,r3 |{{f/std|r2 <> 0x00 if this iteration status is enabled in Unit current status}} |
− | 00180fa4: 2a020028 slti r2,r16,0x0028 | + | 00180f8c: 10400004 beq r2,r0,0x00180fa0 {{f/Cond|If This iteration status is in Unit current status}} |
− | 00180fa8: 1440ffef bne r2,r0,0x00180f68 | + | 00180f90: 26040001 addiu r4,r16,0x0001 |{{f/std|<nowiki>r4 = Status number + 1</nowiki>}} |
− | 00180fac: 2624004e addiu r4,r17,0x004e | + | 00180f94: 00002821 addu r5,r0,r0 |{{f/std|<nowiki>r5 = Removal flag (for incoming routine)</nowiki>}} |
− | 00180fb0: 0c017991 jal 0x0005e644 | + | 00180f98: 0c01a3a0 jal 0x00068e80 |{{f/jal|Special_Status_Flag_Enabling|Special_Status_Flag_Enabling%3F}} |
− | 00180fb4: 3405001f ori r5,r0,0x001f | + | 00180f9c: 02403021 addu r6,r18,r0 |{{f/std|<nowiki>r6 = Unit ID</nowiki>}} |
− | 00180fb8: 262401bb addiu r4,r17,0x01bb | + | 00180fa0: 26100001 addiu r16,r16,0x0001 |{{f/std|counter + 1}} |
− | 00180fbc: 0c017991 jal 0x0005e644 | + | 00180fa4: 2a020028 slti r2,r16,0x0028 |{{f/std|check counter limit}} |
− | 00180fc0: 34050005 ori r5,r0,0x0005 | + | 00180fa8: 1440ffef bne r2,r0,0x00180f68 {{f/eloop|Loop 40 times}} |
+ | 00180fac: 2624004e addiu r4,r17,0x004e |{{f/adr|Unit innate status pointer}} | ||
+ | 00180fb0: 0c017991 jal 0x0005e644 |{{f/jal|Data_Nullifying|Data_Nullifying}} Nullify Innate status, status immunities and current status | ||
+ | 00180fb4: 3405001f ori r5,r0,0x001f |{{f/std|<nowiki>r5 = size of data to nullify</nowiki>}} | ||
+ | 00180fb8: 262401bb addiu r4,r17,0x01bb |{{f/adr|Unit inflicted status pointer}} | ||
+ | 00180fbc: 0c017991 jal 0x0005e644 |{{f/jal|Data_Nullifying|Data_Nullifying}} Nullify inflicted status | ||
+ | 00180fc0: 34050005 ori r5,r0,0x0005 |{{f/std|<nowiki>r5 = size of data to nullify</nowiki>}} | ||
00180fc4: 8fbf0020 lw r31,0x0020(r29) | 00180fc4: 8fbf0020 lw r31,0x0020(r29) | ||
00180fc8: 8fb3001c lw r19,0x001c(r29) | 00180fc8: 8fb3001c lw r19,0x001c(r29) | ||
Line 42: | Line 48: | ||
00180fdc: 03e00008 jr r31 | 00180fdc: 03e00008 jr r31 | ||
00180fe0: 00000000 nop | 00180fe0: 00000000 nop | ||
− | + | ===Return location=== | |
+ | '''Battle.bin''' | ||
+ | 0018c290: [[Attack_Finalisation_%26_Reaction_Flagging]] |
Latest revision as of 16:51, 14 July 2024
Parameters : r4 = Target data pointer Returns nothing Disable all innate status, status immunities, current status, inflict status, and status CT (Morbolization prep) Note : Preventing status from being canceled here is not sufficient, there's another routine that might do it. ------------------------------------------------------------------------------------------------------------- 00180f40: 27bdffd8 addiu r29,r29,-0x0028 | 00180f44: afb10014 sw r17,0x0014(r29) | 00180f48: 00808821 addu r17,r4,r0 |r17 = Unit data pointer 00180f4c: afb00010 sw r16,0x0010(r29) | 00180f50: 00008021 addu r16,r0,r0 |r16 = 0x00 (loop counter) 00180f54: afb3001c sw r19,0x001c(r29) | 00180f58: 34130080 ori r19,r0,0x0080 |r19 = 0x80 (will be used as bitmask) 00180f5c: afbf0020 sw r31,0x0020(r29) | 00180f60: afb20018 sw r18,0x0018(r29) | 00180f64: 9232018a lbu r18,0x018a(r17) |r18 = Unit Raw iD (without 0xff check) @LOOP - through each status (40 iterations) 00180f68: 06010002 bgez r16,0x00180f74 #If loop counter < 0 Never ? 00180f6c: 02001021 addu r2,r16,r0 |r2 = loop counter 00180f70: 26020007 addiu r2,r16,0x0007 |r2 = counter + 0x07 00180f74: 000210c3 sra r2,r2,0x03 |r2 = This iteration status set (counter / 8) 00180f78: 32030007 andi r3,r16,0x0007 |r3 = Status bit position in its set 00180f7c: 02221021 addu r2,r17,r2 |This iteration Status set pointer 00180f80: 90420058 lbu r2,0x0058(r2) |This iteration set of Current status 00180f84: 00731807 srav r3,r19,r3 |r3 = This iteration bitmask 00180f88: 00431024 and r2,r2,r3 |r2 <> 0x00 if this iteration status is enabled in Unit current status 00180f8c: 10400004 beq r2,r0,0x00180fa0 #If This iteration status is in Unit current status 00180f90: 26040001 addiu r4,r16,0x0001 |r4 = Status number + 1 00180f94: 00002821 addu r5,r0,r0 |r5 = Removal flag (for incoming routine) 00180f98: 0c01a3a0 jal 0x00068e80 |-->Special_Status_Flag_Enabling%3F 00180f9c: 02403021 addu r6,r18,r0 |r6 = Unit ID 00180fa0: 26100001 addiu r16,r16,0x0001 |counter + 1 00180fa4: 2a020028 slti r2,r16,0x0028 |check counter limit 00180fa8: 1440ffef bne r2,r0,0x00180f68 Λ Loop 40 times 00180fac: 2624004e addiu r4,r17,0x004e |Unit innate status pointer 00180fb0: 0c017991 jal 0x0005e644 |-->Data_Nullifying Nullify Innate status, status immunities and current status 00180fb4: 3405001f ori r5,r0,0x001f |r5 = size of data to nullify 00180fb8: 262401bb addiu r4,r17,0x01bb |Unit inflicted status pointer 00180fbc: 0c017991 jal 0x0005e644 |-->Data_Nullifying Nullify inflicted status 00180fc0: 34050005 ori r5,r0,0x0005 |r5 = size of data to nullify 00180fc4: 8fbf0020 lw r31,0x0020(r29) 00180fc8: 8fb3001c lw r19,0x001c(r29) 00180fcc: 8fb20018 lw r18,0x0018(r29) 00180fd0: 8fb10014 lw r17,0x0014(r29) 00180fd4: 8fb00010 lw r16,0x0010(r29) 00180fd8: 27bd0028 addiu r29,r29,0x0028 00180fdc: 03e00008 jr r31 00180fe0: 00000000 nop
Return location
Battle.bin 0018c290: Attack_Finalisation_&_Reaction_Flagging