Difference between revisions of "0008ab34 - 0008adf4"
Jump to navigation
Jump to search
m (not done, can't be fucked) |
m |
||
Line 2: | Line 2: | ||
− | call if *0x87 misc data = 0xf | + | call if *0x87 misc data = 0xf. I think this might be for knockback or whatever |
0008ab34: 27bdffc8 addiu r29,r29,0xffc8 | 0008ab34: 27bdffc8 addiu r29,r29,0xffc8 | ||
0008ab38: afb00028 sw r16,0x0028(r29) | 0008ab38: afb00028 sw r16,0x0028(r29) | ||
Line 8: | Line 8: | ||
0008ab40: afbf0030 sw r31,0x0030(r29) | 0008ab40: afbf0030 sw r31,0x0030(r29) | ||
0008ab44: afb1002c sw r17,0x002c(r29) | 0008ab44: afb1002c sw r17,0x002c(r29) | ||
− | 0008ab48: 8e11008c lw r17,0x008c(r16) | + | 0008ab48: 8e11008c lw r17,0x008c(r16) input counter (counts down) |
− | 0008ab4c: 8e020028 lw r2,0x0028(r16) ? | + | 0008ab4c: 8e020028 lw r2,0x0028(r16) X velocity? |
− | 0008ab50: 8e03002c lw r3,0x002c(r16) ? | + | 0008ab50: 8e03002c lw r3,0x002c(r16) Z-Velocity? |
− | 0008ab54: 8e040030 lw r4,0x0030(r16) ? | + | 0008ab54: 8e040030 lw r4,0x0030(r16) Y Velocity? |
0008ab58: 8e050034 lw r5,0x0034(r16) ? | 0008ab58: 8e050034 lw r5,0x0034(r16) ? | ||
0008ab5c: afa20018 sw r2,0x0018(r29) ? | 0008ab5c: afa20018 sw r2,0x0018(r29) ? | ||
Line 50: | Line 50: | ||
0008abe0: 34c62493 ori r6,r6,0x2493 r6 = 0x92492493 (4/7) | 0008abe0: 34c62493 ori r6,r6,0x2493 r6 = 0x92492493 (4/7) | ||
0008abe4: 000420c3 sra r4,r4,0x03 | 0008abe4: 000420c3 sra r4,r4,0x03 | ||
− | 0008abe8: 00642023 subu r4,r3,r4 | + | 0008abe8: 00642023 subu r4,r3,r4 dif * 7 >> 0x3 |
0008abec: 00860018 mult r4,r6 dif * 1/2 | 0008abec: 00860018 mult r4,r6 dif * 1/2 | ||
− | 0008abf0: 00041fc3 sra r3,r4,0x1f | + | 0008abf0: 00041fc3 sra r3,r4,0x1f dif * 7 >> 0x22 (0 or -1) |
0008abf4: 00001010 mfhi r2 | 0008abf4: 00001010 mfhi r2 | ||
− | 0008abf8: 00441021 addu r2,r2,r4 | + | 0008abf8: 00441021 addu r2,r2,r4 dif * 11 >> 0x3 |
− | 0008abfc: 000213c3 sra r2,r2,0x0f | + | 0008abfc: 000213c3 sra r2,r2,0x0f dif * 0xB >> 0x12 |
− | 0008ac00: 00431023 subu r2,r2,r3 | + | 0008ac00: 00431023 subu r2,r2,r3 dif * 0xB >> 0x12 - 0 |
− | 0008ac04: 000218c0 sll r3,r2,0x03 dif * | + | 0008ac04: 000218c0 sll r3,r2,0x03 dif * 0xB >> 0xF (r >> 0x12) |
− | 0008ac08: 00621823 subu r3,r3,r2 dif * | + | 0008ac08: 00621823 subu r3,r3,r2 dif * 0xB >> 0xF - dif * 0xB >> 0x12 |
− | 0008ac0c: 00031b40 sll r3,r3,0x0d dif * | + | 0008ac0c: 00031b40 sll r3,r3,0x0d dif * 0xB >> 0x2 - dif * 0xB >> 0x5 (r >> 0x12) |
− | 0008ac10: 00832023 subu r4,r4,r3 dif * 7/8 - dif * | + | 0008ac10: 00832023 subu r4,r4,r3 dif * 7 >> 0x3 - dif * 0xB >> 0x2 (r 0x12) - dif * 0xB >> 0x5 (r 0x12) (so this effectively is dif(7/8 - (11/4 - 11/32)), or -dif * 49/32) |
0008ac14: afa40018 sw r4,0x0018(r29) store into stack :) | 0008ac14: afa40018 sw r4,0x0018(r29) store into stack :) | ||
0008ac18: 8e030020 lw r3,0x0020(r16) load Y mod | 0008ac18: 8e030020 lw r3,0x0020(r16) load Y mod | ||
Line 76: | Line 76: | ||
if no hits | if no hits | ||
− | 0008ac48: 86020040 lh r2,0x0040(r16) | + | 0008ac48: 86020040 lh r2,0x0040(r16) load X mod |
− | 0008ac4c: 8464017a lh r4,0x017a(r3) | + | 0008ac4c: 8464017a lh r4,0x017a(r3) load X target panel coord |
− | 0008ac50: 2442fff2 addiu r2,r2,0xfff2 | + | 0008ac50: 2442fff2 addiu r2,r2,0xfff2 X mod - 0xe |
− | 0008ac54: 000418c0 sll r3,r4,0x03 | + | 0008ac54: 000418c0 sll r3,r4,0x03 Panel * 8 |
− | 0008ac58: 00641823 subu r3,r3,r4 | + | 0008ac58: 00641823 subu r3,r3,r4 Panel * 7 |
− | 0008ac5c: 00031880 sll r3,r3,0x02 | + | 0008ac5c: 00031880 sll r3,r3,0x02 Panel * 0x1c |
− | 0008ac60: 00431023 subu r2,r2,r3 | + | 0008ac60: 00431023 subu r2,r2,r3 X mod - 0xe - Panel * 0x1c |
0008ac64: 00021300 sll r2,r2,0x0c | 0008ac64: 00021300 sll r2,r2,0x0c | ||
− | 0008ac68: 00402021 addu r4,r2,r0 | + | 0008ac68: 00402021 addu r4,r2,r0 |
− | 0008ac6c: 04410002 bgez r2,0x0008ac78 | + | 0008ac6c: 04410002 bgez r2,0x0008ac78 Branch if difference between X mod and target panel is greater than or equal to 0 |
0008ac70: afa20018 sw r2,0x0018(r29) | 0008ac70: afa20018 sw r2,0x0018(r29) | ||
− | 0008ac74: 24440007 addiu r4,r2,0x0007 | + | 0008ac74: 24440007 addiu r4,r2,0x0007 add 7 for division or whatever |
0008ac78: 3c059249 lui r5,0x9249 | 0008ac78: 3c059249 lui r5,0x9249 | ||
− | 0008ac7c: 34a52493 ori r5,r5,0x2493 | + | 0008ac7c: 34a52493 ori r5,r5,0x2493 r5 = 0x92492493 (4/7) |
− | 0008ac80: 000420c3 sra r4,r4,0x03 | + | 0008ac80: 000420c3 sra r4,r4,0x03 dif / 8 |
− | 0008ac84: 00442023 subu r4,r2,r4 | + | 0008ac84: 00442023 subu r4,r2,r4 dif * 7/8 |
0008ac88: 00850018 mult r4,r5 | 0008ac88: 00850018 mult r4,r5 | ||
0008ac8c: 00041fc3 sra r3,r4,0x1f | 0008ac8c: 00041fc3 sra r3,r4,0x1f | ||
− | 0008ac90: 00001010 mfhi r2 | + | 0008ac90: 00001010 mfhi r2 dif * 1/2 |
− | 0008ac94: 00441021 addu r2,r2,r4 | + | 0008ac94: 00441021 addu r2,r2,r4 dif * 11/8 |
0008ac98: 000213c3 sra r2,r2,0x0f | 0008ac98: 000213c3 sra r2,r2,0x0f | ||
0008ac9c: 00431023 subu r2,r2,r3 | 0008ac9c: 00431023 subu r2,r2,r3 | ||
Line 118: | Line 118: | ||
0008ace8: 000420c3 sra r4,r4,0x03 | 0008ace8: 000420c3 sra r4,r4,0x03 | ||
0008acec: 00642023 subu r4,r3,r4 | 0008acec: 00642023 subu r4,r3,r4 | ||
− | 0008acf0: 00850018 mult r4,r5 | + | 0008acf0: 00850018 mult r4,r5 I don't want to type out all that math again. |
0008acf4: 00041fc3 sra r3,r4,0x1f | 0008acf4: 00041fc3 sra r3,r4,0x1f | ||
− | 0008acf8: afa0001c sw r0,0x001c(r29) | + | 0008acf8: afa0001c sw r0,0x001c(r29) store 0 |
− | 0008acfc: 00001010 mfhi r2 | + | 0008acfc: 00001010 mfhi r2 dif * 1/2 |
− | 0008ad00: 00441021 addu r2,r2,r4 | + | 0008ad00: 00441021 addu r2,r2,r4 |
0008ad04: 000213c3 sra r2,r2,0x0f | 0008ad04: 000213c3 sra r2,r2,0x0f | ||
0008ad08: 00431023 subu r2,r2,r3 | 0008ad08: 00431023 subu r2,r2,r3 | ||
Line 132: | Line 132: | ||
0008ad18: 00832023 subu r4,r4,r3 | 0008ad18: 00832023 subu r4,r4,r3 | ||
0008ad1c: afa40020 sw r4,0x0020(r29) | 0008ad1c: afa40020 sw r4,0x0020(r29) | ||
− | 0008ad20: 8fa40018 lw r4,0x0018(r29) | + | 0008ad20: 8fa40018 lw r4,0x0018(r29) load final X dif number |
0008ad24: 00000000 nop | 0008ad24: 00000000 nop | ||
0008ad28: 0091001a div r4,r17 | 0008ad28: 0091001a div r4,r17 | ||
− | 0008ad2c: 00002012 mflo r4 | + | 0008ad2c: 00002012 mflo r4 divide by *0x8c |
0008ad30: 8fa3001c lw r3,0x001c(r29) | 0008ad30: 8fa3001c lw r3,0x001c(r29) | ||
0008ad34: 00000000 nop | 0008ad34: 00000000 nop | ||
− | 0008ad38: 0071001a div r3,r17 | + | 0008ad38: 0071001a div r3,r17 divide 0 by *0x8c |
0008ad3c: 00001812 mflo r3 | 0008ad3c: 00001812 mflo r3 | ||
0008ad40: 8fa20020 lw r2,0x0020(r29) | 0008ad40: 8fa20020 lw r2,0x0020(r29) | ||
0008ad44: 00000000 nop | 0008ad44: 00000000 nop | ||
− | 0008ad48: 0051001a div r2,r17 | + | 0008ad48: 0051001a div r2,r17 divide final Y dif number by *0x8c |
0008ad4c: 00001012 mflo r2 | 0008ad4c: 00001012 mflo r2 | ||
− | 0008ad50: afa40018 sw r4,0x0018(r29) | + | 0008ad50: afa40018 sw r4,0x0018(r29) store final |
0008ad54: afa3001c sw r3,0x001c(r29) | 0008ad54: afa3001c sw r3,0x001c(r29) | ||
0008ad58: afa20020 sw r2,0x0020(r29) | 0008ad58: afa20020 sw r2,0x0020(r29) | ||
− | 0008ad5c: 8e020088 lw r2,0x0088(r16) | + | 0008ad5c: 8e020088 lw r2,0x0088(r16) load 0 |
0008ad60: 00000000 nop | 0008ad60: 00000000 nop | ||
0008ad64: 24420001 addiu r2,r2,0x0001 | 0008ad64: 24420001 addiu r2,r2,0x0001 | ||
0008ad68: 08022b5e j 0x0008ad78 | 0008ad68: 08022b5e j 0x0008ad78 | ||
− | 0008ad6c: ae020088 sw r2,0x0088(r16) | + | 0008ad6c: ae020088 sw r2,0x0088(r16) store 1 into how many times this has been triggered |
if no targets | if no targets | ||
0008ad70: 08022b6d j 0x0008adb4 | 0008ad70: 08022b6d j 0x0008adb4 | ||
− | 0008ad74: a2000087 sb r0,0x0087(r16) | + | 0008ad74: a2000087 sb r0,0x0087(r16) clear, don't animate. |
if *0x88 = 1 | if *0x88 = 1 | ||
− | 0008ad78: 1a20000c blez r17,0x0008adac | + | 0008ad78: 1a20000c blez r17,0x0008adac branch if r17 <= 0 |
0008ad7c: 00000000 nop | 0008ad7c: 00000000 nop | ||
− | 0008ad80: 8e020018 lw r2,0x0018(r16) | + | 0008ad80: 8e020018 lw r2,0x0018(r16) X-mod |
− | 0008ad84: 8fa30018 lw r3,0x0018(r29) | + | 0008ad84: 8fa30018 lw r3,0x0018(r29) X-dif |
0008ad88: 00000000 nop | 0008ad88: 00000000 nop | ||
− | 0008ad8c: 00431021 addu r2,r2,r3 | + | 0008ad8c: 00431021 addu r2,r2,r3 add the two together |
− | 0008ad90: ae020018 sw r2,0x0018(r16) | + | 0008ad90: ae020018 sw r2,0x0018(r16) store new X-mod |
0008ad94: 8e020020 lw r2,0x0020(r16) | 0008ad94: 8e020020 lw r2,0x0020(r16) | ||
0008ad98: 8fa30020 lw r3,0x0020(r29) | 0008ad98: 8fa30020 lw r3,0x0020(r29) | ||
Line 170: | Line 170: | ||
0008ada0: 00431021 addu r2,r2,r3 | 0008ada0: 00431021 addu r2,r2,r3 | ||
0008ada4: 08022b6c j 0x0008adb0 | 0008ada4: 08022b6c j 0x0008adb0 | ||
− | 0008ada8: ae020020 sw r2,0x0020(r16) | + | 0008ada8: ae020020 sw r2,0x0020(r16) store new Y mod |
− | 0008adac: a2000087 sb r0,0x0087(r16) | + | |
− | 0008adb0: 2631ffff addiu r17,r17,0xffff | + | if *0x8c = 0 |
+ | 0008adac: a2000087 sb r0,0x0087(r16) clear animation | ||
+ | 0008adb0: 2631ffff addiu r17,r17,0xffff -1 | ||
0008adb4: 8fa20018 lw r2,0x0018(r29) | 0008adb4: 8fa20018 lw r2,0x0018(r29) | ||
0008adb8: 8fa3001c lw r3,0x001c(r29) | 0008adb8: 8fa3001c lw r3,0x001c(r29) | ||
Line 180: | Line 182: | ||
0008adc8: ae03002c sw r3,0x002c(r16) | 0008adc8: ae03002c sw r3,0x002c(r16) | ||
0008adcc: ae040030 sw r4,0x0030(r16) | 0008adcc: ae040030 sw r4,0x0030(r16) | ||
− | 0008add0: ae050034 sw r5,0x0034(r16) | + | 0008add0: ae050034 sw r5,0x0034(r16) store X, height, Y and ? differences into misc data |
− | 0008add4: 0c02255f jal 0x0008957c | + | 0008add4: 0c02255f jal 0x0008957c Store position mods to vector mods (for position on screen.) |
− | 0008add8: 02002021 addu r4,r16,r0 | + | 0008add8: 02002021 addu r4,r16,r0 r4 = misc unit data pointer |
− | 0008addc: ae11008c sw r17,0x008c(r16) | + | 0008addc: ae11008c sw r17,0x008c(r16) count r17 down |
0008ade0: 8fbf0030 lw r31,0x0030(r29) | 0008ade0: 8fbf0030 lw r31,0x0030(r29) | ||
0008ade4: 8fb1002c lw r17,0x002c(r29) | 0008ade4: 8fb1002c lw r17,0x002c(r29) |
Revision as of 09:48, 10 April 2022
call if *0x87 misc data = 0xf. I think this might be for knockback or whatever 0008ab34: 27bdffc8 addiu r29,r29,0xffc8 0008ab38: afb00028 sw r16,0x0028(r29) 0008ab3c: 00808021 addu r16,r4,r0 r16 = misc unit data pointer 0008ab40: afbf0030 sw r31,0x0030(r29) 0008ab44: afb1002c sw r17,0x002c(r29) 0008ab48: 8e11008c lw r17,0x008c(r16) input counter (counts down) 0008ab4c: 8e020028 lw r2,0x0028(r16) X velocity? 0008ab50: 8e03002c lw r3,0x002c(r16) Z-Velocity? 0008ab54: 8e040030 lw r4,0x0030(r16) Y Velocity? 0008ab58: 8e050034 lw r5,0x0034(r16) ? 0008ab5c: afa20018 sw r2,0x0018(r29) ? 0008ab60: afa3001c sw r3,0x001c(r29) ? 0008ab64: afa40020 sw r4,0x0020(r29) ? 0008ab68: afa50024 sw r5,0x0024(r29) ? (ew, stack usage) 0008ab6c: 8e030088 lw r3,0x0088(r16) 0008ab70: 00000000 nop 0008ab74: 10600005 beq r3,r0,0x0008ab8c branch if *0x88 = 0 0008ab78: 34020001 ori r2,r0,0x0001 0008ab7c: 1062007e beq r3,r2,0x0008ad78 if *0x88 = 1 0008ab80: 00000000 nop 0008ab84: 08022b6d j 0x0008adb4 otherwise 0008ab88: 00000000 nop if *0x88 = 0 0008ab8c: 8e030134 lw r3,0x0134(r16) load unit data pointer 0008ab90: 00000000 nop 0008ab94: 10600076 beq r3,r0,0x0008ad70 branch if null 0008ab98: 00000000 nop 0008ab9c: 9202018d lbu r2,0x018d(r16) load hit counter? 0008aba0: 00000000 nop 0008aba4: 10400028 beq r2,r0,0x0008ac48 branch if no hits? 0008aba8: 00000000 nop 0008abac: 9204018e lbu r4,0x018e(r16) load target list 0008abb0: 0c01e9c9 jal 0x0007a724 Get unit misc data that matches r4 ID 0008abb4: 00000000 nop 0008abb8: 00402821 addu r5,r2,r0 r5 = target misc data pointer 0008abbc: 8e030018 lw r3,0x0018(r16) load X mod 0008abc0: 8ca20018 lw r2,0x0018(r5) load target X mod 0008abc4: 00000000 nop 0008abc8: 00621823 subu r3,r3,r2 find difference 0008abcc: 00602021 addu r4,r3,r0 0008abd0: 04610002 bgez r3,0x0008abdc branch if difference is greater than 0 0008abd4: afa30018 sw r3,0x0018(r29) store difference in stack 0008abd8: 24640007 addiu r4,r3,0x0007 if negative add 7 0008abdc: 3c069249 lui r6,0x9249 0008abe0: 34c62493 ori r6,r6,0x2493 r6 = 0x92492493 (4/7) 0008abe4: 000420c3 sra r4,r4,0x03 0008abe8: 00642023 subu r4,r3,r4 dif * 7 >> 0x3 0008abec: 00860018 mult r4,r6 dif * 1/2 0008abf0: 00041fc3 sra r3,r4,0x1f dif * 7 >> 0x22 (0 or -1) 0008abf4: 00001010 mfhi r2 0008abf8: 00441021 addu r2,r2,r4 dif * 11 >> 0x3 0008abfc: 000213c3 sra r2,r2,0x0f dif * 0xB >> 0x12 0008ac00: 00431023 subu r2,r2,r3 dif * 0xB >> 0x12 - 0 0008ac04: 000218c0 sll r3,r2,0x03 dif * 0xB >> 0xF (r >> 0x12) 0008ac08: 00621823 subu r3,r3,r2 dif * 0xB >> 0xF - dif * 0xB >> 0x12 0008ac0c: 00031b40 sll r3,r3,0x0d dif * 0xB >> 0x2 - dif * 0xB >> 0x5 (r >> 0x12) 0008ac10: 00832023 subu r4,r4,r3 dif * 7 >> 0x3 - dif * 0xB >> 0x2 (r 0x12) - dif * 0xB >> 0x5 (r 0x12) (so this effectively is dif(7/8 - (11/4 - 11/32)), or -dif * 49/32) 0008ac14: afa40018 sw r4,0x0018(r29) store into stack :) 0008ac18: 8e030020 lw r3,0x0020(r16) load Y mod 0008ac1c: 8ca20020 lw r2,0x0020(r5) load target Y mod 0008ac20: 00000000 nop 0008ac24: 00621823 subu r3,r3,r2 find difference 0008ac28: 00602021 addu r4,r3,r0 0008ac2c: 04610002 bgez r3,0x0008ac38 branch if greater than 0 0008ac30: afa30020 sw r3,0x0020(r29) 0008ac34: 24640007 addiu r4,r3,0x0007 0008ac38: 000420c3 sra r4,r4,0x03 0008ac3c: 00642023 subu r4,r3,r4 dif * 7/8 0008ac40: 08022b3d j 0x0008acf4 0008ac44: 00860018 mult r4,r6 dif * 1/2 if no hits 0008ac48: 86020040 lh r2,0x0040(r16) load X mod 0008ac4c: 8464017a lh r4,0x017a(r3) load X target panel coord 0008ac50: 2442fff2 addiu r2,r2,0xfff2 X mod - 0xe 0008ac54: 000418c0 sll r3,r4,0x03 Panel * 8 0008ac58: 00641823 subu r3,r3,r4 Panel * 7 0008ac5c: 00031880 sll r3,r3,0x02 Panel * 0x1c 0008ac60: 00431023 subu r2,r2,r3 X mod - 0xe - Panel * 0x1c 0008ac64: 00021300 sll r2,r2,0x0c 0008ac68: 00402021 addu r4,r2,r0 0008ac6c: 04410002 bgez r2,0x0008ac78 Branch if difference between X mod and target panel is greater than or equal to 0 0008ac70: afa20018 sw r2,0x0018(r29) 0008ac74: 24440007 addiu r4,r2,0x0007 add 7 for division or whatever 0008ac78: 3c059249 lui r5,0x9249 0008ac7c: 34a52493 ori r5,r5,0x2493 r5 = 0x92492493 (4/7) 0008ac80: 000420c3 sra r4,r4,0x03 dif / 8 0008ac84: 00442023 subu r4,r2,r4 dif * 7/8 0008ac88: 00850018 mult r4,r5 0008ac8c: 00041fc3 sra r3,r4,0x1f 0008ac90: 00001010 mfhi r2 dif * 1/2 0008ac94: 00441021 addu r2,r2,r4 dif * 11/8 0008ac98: 000213c3 sra r2,r2,0x0f 0008ac9c: 00431023 subu r2,r2,r3 0008aca0: 000218c0 sll r3,r2,0x03 0008aca4: 00621823 subu r3,r3,r2 0008aca8: 00031b40 sll r3,r3,0x0d 0008acac: 00832023 subu r4,r4,r3 0008acb0: afa40018 sw r4,0x0018(r29) 0008acb4: 8e020134 lw r2,0x0134(r16) 0008acb8: 86030044 lh r3,0x0044(r16) 0008acbc: 8444017e lh r4,0x017e(r2) 0008acc0: 2463fff2 addiu r3,r3,0xfff2 0008acc4: 000410c0 sll r2,r4,0x03 0008acc8: 00441023 subu r2,r2,r4 0008accc: 00021080 sll r2,r2,0x02 0008acd0: 00621823 subu r3,r3,r2 0008acd4: 00031b00 sll r3,r3,0x0c 0008acd8: 00602021 addu r4,r3,r0 0008acdc: 04610002 bgez r3,0x0008ace8 0008ace0: afa30020 sw r3,0x0020(r29) 0008ace4: 24640007 addiu r4,r3,0x0007 0008ace8: 000420c3 sra r4,r4,0x03 0008acec: 00642023 subu r4,r3,r4 0008acf0: 00850018 mult r4,r5 I don't want to type out all that math again. 0008acf4: 00041fc3 sra r3,r4,0x1f 0008acf8: afa0001c sw r0,0x001c(r29) store 0 0008acfc: 00001010 mfhi r2 dif * 1/2 0008ad00: 00441021 addu r2,r2,r4 0008ad04: 000213c3 sra r2,r2,0x0f 0008ad08: 00431023 subu r2,r2,r3 0008ad0c: 000218c0 sll r3,r2,0x03 0008ad10: 00621823 subu r3,r3,r2 0008ad14: 00031b40 sll r3,r3,0x0d 0008ad18: 00832023 subu r4,r4,r3 0008ad1c: afa40020 sw r4,0x0020(r29) 0008ad20: 8fa40018 lw r4,0x0018(r29) load final X dif number 0008ad24: 00000000 nop 0008ad28: 0091001a div r4,r17 0008ad2c: 00002012 mflo r4 divide by *0x8c 0008ad30: 8fa3001c lw r3,0x001c(r29) 0008ad34: 00000000 nop 0008ad38: 0071001a div r3,r17 divide 0 by *0x8c 0008ad3c: 00001812 mflo r3 0008ad40: 8fa20020 lw r2,0x0020(r29) 0008ad44: 00000000 nop 0008ad48: 0051001a div r2,r17 divide final Y dif number by *0x8c 0008ad4c: 00001012 mflo r2 0008ad50: afa40018 sw r4,0x0018(r29) store final 0008ad54: afa3001c sw r3,0x001c(r29) 0008ad58: afa20020 sw r2,0x0020(r29) 0008ad5c: 8e020088 lw r2,0x0088(r16) load 0 0008ad60: 00000000 nop 0008ad64: 24420001 addiu r2,r2,0x0001 0008ad68: 08022b5e j 0x0008ad78 0008ad6c: ae020088 sw r2,0x0088(r16) store 1 into how many times this has been triggered if no targets 0008ad70: 08022b6d j 0x0008adb4 0008ad74: a2000087 sb r0,0x0087(r16) clear, don't animate. if *0x88 = 1 0008ad78: 1a20000c blez r17,0x0008adac branch if r17 <= 0 0008ad7c: 00000000 nop 0008ad80: 8e020018 lw r2,0x0018(r16) X-mod 0008ad84: 8fa30018 lw r3,0x0018(r29) X-dif 0008ad88: 00000000 nop 0008ad8c: 00431021 addu r2,r2,r3 add the two together 0008ad90: ae020018 sw r2,0x0018(r16) store new X-mod 0008ad94: 8e020020 lw r2,0x0020(r16) 0008ad98: 8fa30020 lw r3,0x0020(r29) 0008ad9c: 00000000 nop 0008ada0: 00431021 addu r2,r2,r3 0008ada4: 08022b6c j 0x0008adb0 0008ada8: ae020020 sw r2,0x0020(r16) store new Y mod if *0x8c = 0 0008adac: a2000087 sb r0,0x0087(r16) clear animation 0008adb0: 2631ffff addiu r17,r17,0xffff -1 0008adb4: 8fa20018 lw r2,0x0018(r29) 0008adb8: 8fa3001c lw r3,0x001c(r29) 0008adbc: 8fa40020 lw r4,0x0020(r29) 0008adc0: 8fa50024 lw r5,0x0024(r29) 0008adc4: ae020028 sw r2,0x0028(r16) 0008adc8: ae03002c sw r3,0x002c(r16) 0008adcc: ae040030 sw r4,0x0030(r16) 0008add0: ae050034 sw r5,0x0034(r16) store X, height, Y and ? differences into misc data 0008add4: 0c02255f jal 0x0008957c Store position mods to vector mods (for position on screen.) 0008add8: 02002021 addu r4,r16,r0 r4 = misc unit data pointer 0008addc: ae11008c sw r17,0x008c(r16) count r17 down 0008ade0: 8fbf0030 lw r31,0x0030(r29) 0008ade4: 8fb1002c lw r17,0x002c(r29) 0008ade8: 8fb00028 lw r16,0x0028(r29) 0008adec: 27bd0038 addiu r29,r29,0x0038 0008adf0: 03e00008 jr r31 0008adf4: 00000000 nop