diff --git a/asm/non_matchings/racing/collision/func_802AC22C.s b/asm/non_matchings/racing/collision/func_802AC22C.s deleted file mode 100644 index bc0667375..000000000 --- a/asm/non_matchings/racing/collision/func_802AC22C.s +++ /dev/null @@ -1,352 +0,0 @@ -glabel func_802AC22C -/* 11583C 802AC22C 27BDFEF0 */ addiu $sp, $sp, -0x110 -/* 115840 802AC230 3C01447A */ li $at, 0x447A0000 # 1000.000000 -/* 115844 802AC234 44810000 */ mtc1 $at, $f0 -/* 115848 802AC238 AFBF0064 */ sw $ra, 0x64($sp) -/* 11584C 802AC23C AFB60060 */ sw $s6, 0x60($sp) -/* 115850 802AC240 AFB5005C */ sw $s5, 0x5c($sp) -/* 115854 802AC244 AFB40058 */ sw $s4, 0x58($sp) -/* 115858 802AC248 AFB30054 */ sw $s3, 0x54($sp) -/* 11585C 802AC24C AFB20050 */ sw $s2, 0x50($sp) -/* 115860 802AC250 AFB1004C */ sw $s1, 0x4c($sp) -/* 115864 802AC254 AFB00048 */ sw $s0, 0x48($sp) -/* 115868 802AC258 F7BC0040 */ sdc1 $f28, 0x40($sp) -/* 11586C 802AC25C F7BA0038 */ sdc1 $f26, 0x38($sp) -/* 115870 802AC260 F7B80030 */ sdc1 $f24, 0x30($sp) -/* 115874 802AC264 F7B60028 */ sdc1 $f22, 0x28($sp) -/* 115878 802AC268 F7B40020 */ sdc1 $f20, 0x20($sp) -/* 11587C 802AC26C A7A000D0 */ sh $zero, 0xd0($sp) -/* 115880 802AC270 A7A000D2 */ sh $zero, 0xd2($sp) -/* 115884 802AC274 A7A000D4 */ sh $zero, 0xd4($sp) -/* 115888 802AC278 E7A000DC */ swc1 $f0, 0xdc($sp) -/* 11588C 802AC27C E7A000E0 */ swc1 $f0, 0xe0($sp) -/* 115890 802AC280 E7A000E4 */ swc1 $f0, 0xe4($sp) -/* 115894 802AC284 9082000D */ lbu $v0, 0xd($a0) -/* 115898 802AC288 24010020 */ li $at, 32 -/* 11589C 802AC28C 00809825 */ move $s3, $a0 -/* 1158A0 802AC290 C4960000 */ lwc1 $f22, ($a0) -/* 1158A4 802AC294 C4980004 */ lwc1 $f24, 4($a0) -/* 1158A8 802AC298 10410036 */ beq $v0, $at, .L802AC374 -/* 1158AC 802AC29C C49A0008 */ lwc1 $f26, 8($a0) -/* 1158B0 802AC2A0 24010040 */ li $at, 64 -/* 1158B4 802AC2A4 1041001E */ beq $v0, $at, .L802AC320 -/* 1158B8 802AC2A8 27B600D0 */ addiu $s6, $sp, 0xd0 -/* 1158BC 802AC2AC 24010080 */ li $at, 128 -/* 1158C0 802AC2B0 10410006 */ beq $v0, $at, .L802AC2CC -/* 1158C4 802AC2B4 27B600D0 */ addiu $s6, $sp, 0xd0 -/* 1158C8 802AC2B8 3C0140A0 */ li $at, 0x40A00000 # 5.000000 -/* 1158CC 802AC2BC 4481E000 */ mtc1 $at, $f28 -/* 1158D0 802AC2C0 27B600D0 */ addiu $s6, $sp, 0xd0 -/* 1158D4 802AC2C4 10000041 */ b .L802AC3CC -/* 1158D8 802AC2C8 24150001 */ li $s5, 1 -.L802AC2CC: -/* 1158DC 802AC2CC 3C0140A0 */ li $at, 0x40A00000 # 5.000000 -/* 1158E0 802AC2D0 4481E000 */ mtc1 $at, $f28 -/* 1158E4 802AC2D4 E7BA0010 */ swc1 $f26, 0x10($sp) -/* 1158E8 802AC2D8 966E000E */ lhu $t6, 0xe($s3) -/* 1158EC 802AC2DC 4406B000 */ mfc1 $a2, $f22 -/* 1158F0 802AC2E0 4407C000 */ mfc1 $a3, $f24 -/* 1158F4 802AC2E4 4405E000 */ mfc1 $a1, $f28 -/* 1158F8 802AC2E8 02C02025 */ move $a0, $s6 -/* 1158FC 802AC2EC 0C0AADB1 */ jal func_802AB6C4 -/* 115900 802AC2F0 AFAE0014 */ sw $t6, 0x14($sp) -/* 115904 802AC2F4 24150001 */ li $s5, 1 -/* 115908 802AC2F8 14550034 */ bne $v0, $s5, .L802AC3CC -/* 11590C 802AC2FC 00000000 */ nop -/* 115910 802AC300 4406D000 */ mfc1 $a2, $f26 -/* 115914 802AC304 4600B306 */ mov.s $f12, $f22 -/* 115918 802AC308 4600C386 */ mov.s $f14, $f24 -/* 11591C 802AC30C 0C0AAF8C */ jal func_802ABE30 -/* 115920 802AC310 9667000E */ lhu $a3, 0xe($s3) -/* 115924 802AC314 E6600010 */ swc1 $f0, 0x10($s3) -/* 115928 802AC318 10000102 */ b .L802AC724 -/* 11592C 802AC31C 24020001 */ li $v0, 1 -.L802AC320: -/* 115930 802AC320 3C0140A0 */ li $at, 0x40A00000 # 5.000000 -/* 115934 802AC324 4481E000 */ mtc1 $at, $f28 -/* 115938 802AC328 E7BA0010 */ swc1 $f26, 0x10($sp) -/* 11593C 802AC32C 966F000E */ lhu $t7, 0xe($s3) -/* 115940 802AC330 4406B000 */ mfc1 $a2, $f22 -/* 115944 802AC334 4407C000 */ mfc1 $a3, $f24 -/* 115948 802AC338 4405E000 */ mfc1 $a1, $f28 -/* 11594C 802AC33C 02C02025 */ move $a0, $s6 -/* 115950 802AC340 0C0AAB93 */ jal func_802AAE4C -/* 115954 802AC344 AFAF0014 */ sw $t7, 0x14($sp) -/* 115958 802AC348 24150001 */ li $s5, 1 -/* 11595C 802AC34C 1455001F */ bne $v0, $s5, .L802AC3CC -/* 115960 802AC350 00000000 */ nop -/* 115964 802AC354 4406D000 */ mfc1 $a2, $f26 -/* 115968 802AC358 4600B306 */ mov.s $f12, $f22 -/* 11596C 802AC35C 4600C386 */ mov.s $f14, $f24 -/* 115970 802AC360 0C0AAF8C */ jal func_802ABE30 -/* 115974 802AC364 9667000E */ lhu $a3, 0xe($s3) -/* 115978 802AC368 E6600010 */ swc1 $f0, 0x10($s3) -/* 11597C 802AC36C 100000ED */ b .L802AC724 -/* 115980 802AC370 24020001 */ li $v0, 1 -.L802AC374: -/* 115984 802AC374 3C0140A0 */ li $at, 0x40A00000 # 5.000000 -/* 115988 802AC378 4481E000 */ mtc1 $at, $f28 -/* 11598C 802AC37C E7BA0010 */ swc1 $f26, 0x10($sp) -/* 115990 802AC380 9678000E */ lhu $t8, 0xe($s3) -/* 115994 802AC384 27B600D0 */ addiu $s6, $sp, 0xd0 -/* 115998 802AC388 4406B000 */ mfc1 $a2, $f22 -/* 11599C 802AC38C 4407C000 */ mfc1 $a3, $f24 -/* 1159A0 802AC390 4405E000 */ mfc1 $a1, $f28 -/* 1159A4 802AC394 02C02025 */ move $a0, $s6 -/* 1159A8 802AC398 0C0AACA2 */ jal func_802AB288 -/* 1159AC 802AC39C AFB80014 */ sw $t8, 0x14($sp) -/* 1159B0 802AC3A0 24150001 */ li $s5, 1 -/* 1159B4 802AC3A4 14550009 */ bne $v0, $s5, .L802AC3CC -/* 1159B8 802AC3A8 00000000 */ nop -/* 1159BC 802AC3AC 4406D000 */ mfc1 $a2, $f26 -/* 1159C0 802AC3B0 4600B306 */ mov.s $f12, $f22 -/* 1159C4 802AC3B4 4600C386 */ mov.s $f14, $f24 -/* 1159C8 802AC3B8 0C0AAF8C */ jal func_802ABE30 -/* 1159CC 802AC3BC 9667000E */ lhu $a3, 0xe($s3) -/* 1159D0 802AC3C0 E6600010 */ swc1 $f0, 0x10($s3) -/* 1159D4 802AC3C4 100000D7 */ b .L802AC724 -/* 1159D8 802AC3C8 24020001 */ li $v0, 1 -.L802AC3CC: -/* 1159DC 802AC3CC 3C028016 */ lui $v0, %hi(D_8015F6EA) # $v0, 0x8016 -/* 1159E0 802AC3D0 8442F6EA */ lh $v0, %lo(D_8015F6EA)($v0) -/* 1159E4 802AC3D4 3C198016 */ lui $t9, %hi(D_8015F6E8) # $t9, 0x8016 -/* 1159E8 802AC3D8 8739F6E8 */ lh $t9, %lo(D_8015F6E8)($t9) -/* 1159EC 802AC3DC 44822000 */ mtc1 $v0, $f4 -/* 1159F0 802AC3E0 3C038016 */ lui $v1, %hi(D_8015F6F2) # $v1, 0x8016 -/* 1159F4 802AC3E4 03222023 */ subu $a0, $t9, $v0 -/* 1159F8 802AC3E8 468021A0 */ cvt.s.w $f6, $f4 -/* 1159FC 802AC3EC 8463F6F2 */ lh $v1, %lo(D_8015F6F2)($v1) -/* 115A00 802AC3F0 3C088016 */ lui $t0, %hi(D_8015F6F0) # $t0, 0x8016 -/* 115A04 802AC3F4 8508F6F0 */ lh $t0, %lo(D_8015F6F0)($t0) -/* 115A08 802AC3F8 4606B201 */ sub.s $f8, $f22, $f6 -/* 115A0C 802AC3FC 44833000 */ mtc1 $v1, $f6 -/* 115A10 802AC400 01032823 */ subu $a1, $t0, $v1 -/* 115A14 802AC404 04810003 */ bgez $a0, .L802AC414 -/* 115A18 802AC408 00044943 */ sra $t1, $a0, 5 -/* 115A1C 802AC40C 2481001F */ addiu $at, $a0, 0x1f -/* 115A20 802AC410 00014943 */ sra $t1, $at, 5 -.L802AC414: -/* 115A24 802AC414 44895000 */ mtc1 $t1, $f10 -/* 115A28 802AC418 00000000 */ nop -/* 115A2C 802AC41C 46805420 */ cvt.s.w $f16, $f10 -/* 115A30 802AC420 468032A0 */ cvt.s.w $f10, $f6 -/* 115A34 802AC424 46104483 */ div.s $f18, $f8, $f16 -/* 115A38 802AC428 460AD201 */ sub.s $f8, $f26, $f10 -/* 115A3C 802AC42C 4600910D */ trunc.w.s $f4, $f18 -/* 115A40 802AC430 44062000 */ mfc1 $a2, $f4 -/* 115A44 802AC434 00000000 */ nop -/* 115A48 802AC438 00065C00 */ sll $t3, $a2, 0x10 -/* 115A4C 802AC43C 000B6403 */ sra $t4, $t3, 0x10 -/* 115A50 802AC440 01803025 */ move $a2, $t4 -/* 115A54 802AC444 04A10003 */ bgez $a1, .L802AC454 -/* 115A58 802AC448 00056943 */ sra $t5, $a1, 5 -/* 115A5C 802AC44C 24A1001F */ addiu $at, $a1, 0x1f -/* 115A60 802AC450 00016943 */ sra $t5, $at, 5 -.L802AC454: -/* 115A64 802AC454 448D8000 */ mtc1 $t5, $f16 -/* 115A68 802AC458 00000000 */ nop -/* 115A6C 802AC45C 468084A0 */ cvt.s.w $f18, $f16 -/* 115A70 802AC460 46124103 */ div.s $f4, $f8, $f18 -/* 115A74 802AC464 4600218D */ trunc.w.s $f6, $f4 -/* 115A78 802AC468 44073000 */ mfc1 $a3, $f6 -/* 115A7C 802AC46C 00000000 */ nop -/* 115A80 802AC470 00077C00 */ sll $t7, $a3, 0x10 -/* 115A84 802AC474 04C10003 */ bgez $a2, .L802AC484 -/* 115A88 802AC478 000F3C03 */ sra $a3, $t7, 0x10 -/* 115A8C 802AC47C 100000A9 */ b .L802AC724 -/* 115A90 802AC480 00001025 */ move $v0, $zero -.L802AC484: -/* 115A94 802AC484 04E10003 */ bgez $a3, .L802AC494 -/* 115A98 802AC488 28C10020 */ slti $at, $a2, 0x20 -/* 115A9C 802AC48C 100000A5 */ b .L802AC724 -/* 115AA0 802AC490 00001025 */ move $v0, $zero -.L802AC494: -/* 115AA4 802AC494 54200004 */ bnel $at, $zero, .L802AC4A8 -/* 115AA8 802AC498 28E10020 */ slti $at, $a3, 0x20 -/* 115AAC 802AC49C 100000A1 */ b .L802AC724 -/* 115AB0 802AC4A0 00001025 */ move $v0, $zero -/* 115AB4 802AC4A4 28E10020 */ slti $at, $a3, 0x20 -.L802AC4A8: -/* 115AB8 802AC4A8 14200003 */ bnez $at, .L802AC4B8 -/* 115ABC 802AC4AC 0007C940 */ sll $t9, $a3, 5 -/* 115AC0 802AC4B0 1000009C */ b .L802AC724 -/* 115AC4 802AC4B4 00001025 */ move $v0, $zero -.L802AC4B8: -/* 115AC8 802AC4B8 00D94021 */ addu $t0, $a2, $t9 -/* 115ACC 802AC4BC 00084C00 */ sll $t1, $t0, 0x10 -/* 115AD0 802AC4C0 00095403 */ sra $t2, $t1, 0x10 -/* 115AD4 802AC4C4 3C0C8015 */ lui $t4, %hi(D_8014F110) # $t4, 0x8015 -/* 115AD8 802AC4C8 258CF110 */ addiu $t4, %lo(D_8014F110) # addiu $t4, $t4, -0xef0 -/* 115ADC 802AC4CC 000A5880 */ sll $t3, $t2, 2 -/* 115AE0 802AC4D0 016C1821 */ addu $v1, $t3, $t4 -/* 115AE4 802AC4D4 94620002 */ lhu $v0, 2($v1) -/* 115AE8 802AC4D8 14400003 */ bnez $v0, .L802AC4E8 -/* 115AEC 802AC4DC AFA20070 */ sw $v0, 0x70($sp) -/* 115AF0 802AC4E0 10000090 */ b .L802AC724 -/* 115AF4 802AC4E4 00001025 */ move $v0, $zero -.L802AC4E8: -/* 115AF8 802AC4E8 8FAE0070 */ lw $t6, 0x70($sp) -/* 115AFC 802AC4EC 94710000 */ lhu $s1, ($v1) -/* 115B00 802AC4F0 00009025 */ move $s2, $zero -/* 115B04 802AC4F4 19C00089 */ blez $t6, .L802AC71C -/* 115B08 802AC4F8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 115B0C 802AC4FC 4481A000 */ mtc1 $at, $f20 -/* 115B10 802AC500 00000000 */ nop -.L802AC504: -/* 115B14 802AC504 3C0F8016 */ lui $t7, %hi(D_8015F584) # $t7, 0x8016 -/* 115B18 802AC508 8DEFF584 */ lw $t7, %lo(D_8015F584)($t7) -/* 115B1C 802AC50C 0011C040 */ sll $t8, $s1, 1 -/* 115B20 802AC510 3C088016 */ lui $t0, %hi(gSurfaceMap) # $t0, 0x8016 -/* 115B24 802AC514 01F8C821 */ addu $t9, $t7, $t8 -/* 115B28 802AC518 97300000 */ lhu $s0, ($t9) -/* 115B2C 802AC51C 8D08F580 */ lw $t0, %lo(gSurfaceMap)($t0) -/* 115B30 802AC520 0010A080 */ sll $s4, $s0, 2 -/* 115B34 802AC524 0290A023 */ subu $s4, $s4, $s0 -/* 115B38 802AC528 0014A080 */ sll $s4, $s4, 2 -/* 115B3C 802AC52C 0290A023 */ subu $s4, $s4, $s0 -/* 115B40 802AC530 0014A080 */ sll $s4, $s4, 2 -/* 115B44 802AC534 01141021 */ addu $v0, $t0, $s4 -/* 115B48 802AC538 94430000 */ lhu $v1, ($v0) -/* 115B4C 802AC53C 30694000 */ andi $t1, $v1, 0x4000 -/* 115B50 802AC540 51200029 */ beql $t1, $zero, .L802AC5E8 -/* 115B54 802AC544 30698000 */ andi $t1, $v1, 0x8000 -/* 115B58 802AC548 966A000E */ lhu $t2, 0xe($s3) -/* 115B5C 802AC54C 02C02025 */ move $a0, $s6 -/* 115B60 802AC550 5150006A */ beql $t2, $s0, .L802AC6FC -/* 115B64 802AC554 8FAC0070 */ lw $t4, 0x70($sp) -/* 115B68 802AC558 4405E000 */ mfc1 $a1, $f28 -/* 115B6C 802AC55C 4406B000 */ mfc1 $a2, $f22 -/* 115B70 802AC560 4407C000 */ mfc1 $a3, $f24 -/* 115B74 802AC564 E7BA0010 */ swc1 $f26, 0x10($sp) -/* 115B78 802AC568 0C0AAB93 */ jal func_802AAE4C -/* 115B7C 802AC56C AFB00014 */ sw $s0, 0x14($sp) -/* 115B80 802AC570 54550062 */ bnel $v0, $s5, .L802AC6FC -/* 115B84 802AC574 8FAC0070 */ lw $t4, 0x70($sp) -/* 115B88 802AC578 4406D000 */ mfc1 $a2, $f26 -/* 115B8C 802AC57C 4600B306 */ mov.s $f12, $f22 -/* 115B90 802AC580 4600C386 */ mov.s $f14, $f24 -/* 115B94 802AC584 0C0AAF8C */ jal func_802ABE30 -/* 115B98 802AC588 3207FFFF */ andi $a3, $s0, 0xffff -/* 115B9C 802AC58C E6600010 */ swc1 $f0, 0x10($s3) -/* 115BA0 802AC590 3C0B8016 */ lui $t3, %hi(gSurfaceMap) # $t3, 0x8016 -/* 115BA4 802AC594 8D6BF580 */ lw $t3, %lo(gSurfaceMap)($t3) -/* 115BA8 802AC598 240E0040 */ li $t6, 64 -/* 115BAC 802AC59C 3C0F8016 */ lui $t7, %hi(gSurfaceMap) # $t7, 0x8016 -/* 115BB0 802AC5A0 01746021 */ addu $t4, $t3, $s4 -/* 115BB4 802AC5A4 958D0002 */ lhu $t5, 2($t4) -/* 115BB8 802AC5A8 A26E000D */ sb $t6, 0xd($s3) -/* 115BBC 802AC5AC A670000E */ sh $s0, 0xe($s3) -/* 115BC0 802AC5B0 A26D000C */ sb $t5, 0xc($s3) -/* 115BC4 802AC5B4 8DEFF580 */ lw $t7, %lo(gSurfaceMap)($t7) -/* 115BC8 802AC5B8 24020001 */ li $v0, 1 -/* 115BCC 802AC5BC 01F4C021 */ addu $t8, $t7, $s4 -/* 115BD0 802AC5C0 97190000 */ lhu $t9, ($t8) -/* 115BD4 802AC5C4 33281000 */ andi $t0, $t9, 0x1000 -/* 115BD8 802AC5C8 51000004 */ beql $t0, $zero, .L802AC5DC -/* 115BDC 802AC5CC AE600014 */ sw $zero, 0x14($s3) -/* 115BE0 802AC5D0 10000054 */ b .L802AC724 -/* 115BE4 802AC5D4 AE750014 */ sw $s5, 0x14($s3) -/* 115BE8 802AC5D8 AE600014 */ sw $zero, 0x14($s3) -.L802AC5DC: -/* 115BEC 802AC5DC 10000051 */ b .L802AC724 -/* 115BF0 802AC5E0 24020001 */ li $v0, 1 -/* 115BF4 802AC5E4 30698000 */ andi $t1, $v1, 0x8000 -.L802AC5E8: -/* 115BF8 802AC5E8 51200023 */ beql $t1, $zero, .L802AC678 -/* 115BFC 802AC5EC C4500024 */ lwc1 $f16, 0x24($v0) -/* 115C00 802AC5F0 C44A001C */ lwc1 $f10, 0x1c($v0) -/* 115C04 802AC5F4 460AA032 */ c.eq.s $f20, $f10 -/* 115C08 802AC5F8 00000000 */ nop -/* 115C0C 802AC5FC 4503003F */ bc1tl .L802AC6FC -/* 115C10 802AC600 8FAC0070 */ lw $t4, 0x70($sp) -/* 115C14 802AC604 966A000E */ lhu $t2, 0xe($s3) -/* 115C18 802AC608 02C02025 */ move $a0, $s6 -/* 115C1C 802AC60C 5150003B */ beql $t2, $s0, .L802AC6FC -/* 115C20 802AC610 8FAC0070 */ lw $t4, 0x70($sp) -/* 115C24 802AC614 4405E000 */ mfc1 $a1, $f28 -/* 115C28 802AC618 4406B000 */ mfc1 $a2, $f22 -/* 115C2C 802AC61C 4407C000 */ mfc1 $a3, $f24 -/* 115C30 802AC620 E7BA0010 */ swc1 $f26, 0x10($sp) -/* 115C34 802AC624 0C0AADB1 */ jal func_802AB6C4 -/* 115C38 802AC628 AFB00014 */ sw $s0, 0x14($sp) -/* 115C3C 802AC62C 54550033 */ bnel $v0, $s5, .L802AC6FC -/* 115C40 802AC630 8FAC0070 */ lw $t4, 0x70($sp) -/* 115C44 802AC634 4406D000 */ mfc1 $a2, $f26 -/* 115C48 802AC638 4600B306 */ mov.s $f12, $f22 -/* 115C4C 802AC63C 4600C386 */ mov.s $f14, $f24 -/* 115C50 802AC640 0C0AAF8C */ jal func_802ABE30 -/* 115C54 802AC644 3207FFFF */ andi $a3, $s0, 0xffff -/* 115C58 802AC648 E6600010 */ swc1 $f0, 0x10($s3) -/* 115C5C 802AC64C 3C0B8016 */ lui $t3, %hi(gSurfaceMap) # $t3, 0x8016 -/* 115C60 802AC650 8D6BF580 */ lw $t3, %lo(gSurfaceMap)($t3) -/* 115C64 802AC654 240E0080 */ li $t6, 128 -/* 115C68 802AC658 24020001 */ li $v0, 1 -/* 115C6C 802AC65C 01746021 */ addu $t4, $t3, $s4 -/* 115C70 802AC660 958D0002 */ lhu $t5, 2($t4) -/* 115C74 802AC664 A26E000D */ sb $t6, 0xd($s3) -/* 115C78 802AC668 A670000E */ sh $s0, 0xe($s3) -/* 115C7C 802AC66C 1000002D */ b .L802AC724 -/* 115C80 802AC670 A26D000C */ sb $t5, 0xc($s3) -/* 115C84 802AC674 C4500024 */ lwc1 $f16, 0x24($v0) -.L802AC678: -/* 115C88 802AC678 4610A032 */ c.eq.s $f20, $f16 -/* 115C8C 802AC67C 00000000 */ nop -/* 115C90 802AC680 4503001E */ bc1tl .L802AC6FC -/* 115C94 802AC684 8FAC0070 */ lw $t4, 0x70($sp) -/* 115C98 802AC688 966F000E */ lhu $t7, 0xe($s3) -/* 115C9C 802AC68C 02C02025 */ move $a0, $s6 -/* 115CA0 802AC690 51F0001A */ beql $t7, $s0, .L802AC6FC -/* 115CA4 802AC694 8FAC0070 */ lw $t4, 0x70($sp) -/* 115CA8 802AC698 4405E000 */ mfc1 $a1, $f28 -/* 115CAC 802AC69C 4406B000 */ mfc1 $a2, $f22 -/* 115CB0 802AC6A0 4407C000 */ mfc1 $a3, $f24 -/* 115CB4 802AC6A4 E7BA0010 */ swc1 $f26, 0x10($sp) -/* 115CB8 802AC6A8 0C0AACA2 */ jal func_802AB288 -/* 115CBC 802AC6AC AFB00014 */ sw $s0, 0x14($sp) -/* 115CC0 802AC6B0 54550012 */ bnel $v0, $s5, .L802AC6FC -/* 115CC4 802AC6B4 8FAC0070 */ lw $t4, 0x70($sp) -/* 115CC8 802AC6B8 4406D000 */ mfc1 $a2, $f26 -/* 115CCC 802AC6BC 4600B306 */ mov.s $f12, $f22 -/* 115CD0 802AC6C0 4600C386 */ mov.s $f14, $f24 -/* 115CD4 802AC6C4 0C0AAF8C */ jal func_802ABE30 -/* 115CD8 802AC6C8 3207FFFF */ andi $a3, $s0, 0xffff -/* 115CDC 802AC6CC E6600010 */ swc1 $f0, 0x10($s3) -/* 115CE0 802AC6D0 3C188016 */ lui $t8, %hi(gSurfaceMap) # $t8, 0x8016 -/* 115CE4 802AC6D4 8F18F580 */ lw $t8, %lo(gSurfaceMap)($t8) -/* 115CE8 802AC6D8 24090020 */ li $t1, 32 -/* 115CEC 802AC6DC 24020001 */ li $v0, 1 -/* 115CF0 802AC6E0 0314C821 */ addu $t9, $t8, $s4 -/* 115CF4 802AC6E4 97280002 */ lhu $t0, 2($t9) -/* 115CF8 802AC6E8 A269000D */ sb $t1, 0xd($s3) -/* 115CFC 802AC6EC A670000E */ sh $s0, 0xe($s3) -/* 115D00 802AC6F0 1000000C */ b .L802AC724 -/* 115D04 802AC6F4 A268000C */ sb $t0, 0xc($s3) -/* 115D08 802AC6F8 8FAC0070 */ lw $t4, 0x70($sp) -.L802AC6FC: -/* 115D0C 802AC6FC 26520001 */ addiu $s2, $s2, 1 -/* 115D10 802AC700 324BFFFF */ andi $t3, $s2, 0xffff -/* 115D14 802AC704 26310001 */ addiu $s1, $s1, 1 -/* 115D18 802AC708 322AFFFF */ andi $t2, $s1, 0xffff -/* 115D1C 802AC70C 016C082A */ slt $at, $t3, $t4 -/* 115D20 802AC710 01609025 */ move $s2, $t3 -/* 115D24 802AC714 1420FF7B */ bnez $at, .L802AC504 -/* 115D28 802AC718 01408825 */ move $s1, $t2 -.L802AC71C: -/* 115D2C 802AC71C E6780010 */ swc1 $f24, 0x10($s3) -/* 115D30 802AC720 A260000C */ sb $zero, 0xc($s3) -.L802AC724: -/* 115D34 802AC724 8FBF0064 */ lw $ra, 0x64($sp) -/* 115D38 802AC728 D7B40020 */ ldc1 $f20, 0x20($sp) -/* 115D3C 802AC72C D7B60028 */ ldc1 $f22, 0x28($sp) -/* 115D40 802AC730 D7B80030 */ ldc1 $f24, 0x30($sp) -/* 115D44 802AC734 D7BA0038 */ ldc1 $f26, 0x38($sp) -/* 115D48 802AC738 D7BC0040 */ ldc1 $f28, 0x40($sp) -/* 115D4C 802AC73C 8FB00048 */ lw $s0, 0x48($sp) -/* 115D50 802AC740 8FB1004C */ lw $s1, 0x4c($sp) -/* 115D54 802AC744 8FB20050 */ lw $s2, 0x50($sp) -/* 115D58 802AC748 8FB30054 */ lw $s3, 0x54($sp) -/* 115D5C 802AC74C 8FB40058 */ lw $s4, 0x58($sp) -/* 115D60 802AC750 8FB5005C */ lw $s5, 0x5c($sp) -/* 115D64 802AC754 8FB60060 */ lw $s6, 0x60($sp) -/* 115D68 802AC758 03E00008 */ jr $ra -/* 115D6C 802AC75C 27BD0110 */ addiu $sp, $sp, 0x110 diff --git a/ctx_includes.c b/ctx_includes.c index 746a865f0..ef9e424f5 100644 --- a/ctx_includes.c +++ b/ctx_includes.c @@ -82,8 +82,8 @@ #include "src/code_800AF9B0.h" #include "src/code_800B45E0.h" #include "src/common_textures.h" -#include "src/data_800E45C0.h" -#include "src/data_800E8700.h" +#include "src/data/data_800E45C0.h" +#include "src/data/data_800E8700.h" #include "src/data_segment2.h" #include "src/ending/ceremony_and_credits.h" #include "src/ending/code_80280000.h" diff --git a/src/racing/collision.c b/src/racing/collision.c index 60d0ab828..9f617858a 100644 --- a/src/racing/collision.c +++ b/src/racing/collision.c @@ -634,8 +634,131 @@ void func_802AC114(Vec3f pos1, f32 boundingBoxSize, Vec3f pos2, UNUSED f32 unk) } } -// UNUSED mk64_surface_map_ram *func_802AC22C(void *arg) -GLOBAL_ASM("asm/non_matchings/racing/collision/func_802AC22C.s") +s32 func_802AC22C(KartBoundingBoxCorner *arg0) { + Collision spD0; + s32 stackPadding0; + s32 stackPadding1; + s32 stackPadding2; + s32 stackPadding3; + s32 stackPadding4; + s32 stackPadding5; + s32 stackPadding6; + s32 stackPadding7; + s32 stackPadding8; + s32 stackPadding9; + s32 stackPaddingA; + s32 stackPaddingB; + s32 temp1; + s32 temp2; + f32 temp_f22; + f32 temp_f24; + f32 temp_f26; + s16 temp_f4; + s16 temp_f6; + u16 var_s2; + u16 temp_v1; + u16 temp_s0; + s16 temp_v1_2; + u16 var_s1; + + spD0.unk30 = 0; + spD0.unk32 = 0; + spD0.unk34 = 0; + spD0.unk3C[0] = 1000.0f; + spD0.unk3C[1] = 1000.0f; + spD0.unk3C[2] = 1000.0f; + temp_f22 = arg0->cornerPos[0]; + temp_f24 = arg0->cornerPos[1]; + temp_f26 = arg0->cornerPos[2]; + switch (arg0->surfaceFlags) { /* irregular */ + case 0x80: + if (func_802AB6C4(&spD0, 5.0f, temp_f22, temp_f24, temp_f26, (u16) (s32) arg0->surfaceMapIndex) == 1) { + arg0->cornerGroundY = func_802ABE30(temp_f22, temp_f24, temp_f26, arg0->surfaceMapIndex); + return 1; + } + break; + case 0x40: + if (func_802AAE4C(&spD0, 5.0f, temp_f22, temp_f24, temp_f26, (u16) (s32) arg0->surfaceMapIndex) == 1) { + arg0->cornerGroundY = func_802ABE30(temp_f22, temp_f24, temp_f26, arg0->surfaceMapIndex); + return 1; + } + break; + case 0x20: + if (func_802AB288(&spD0, 5.0f, temp_f22, temp_f24, temp_f26, (u16) (s32) arg0->surfaceMapIndex) == 1) { + arg0->cornerGroundY = func_802ABE30(temp_f22, temp_f24, temp_f26, arg0->surfaceMapIndex); + return 1; + } + break; + default: + break; + } + temp1 = D_8015F6E8 - D_8015F6EA; + temp2 = D_8015F6F0 - D_8015F6F2; + temp_f4 = (temp_f22 - D_8015F6EA) / (temp1 / 32); + temp_f6 = (temp_f26 - D_8015F6F2) / (temp2 / 32); + if (temp_f4 < 0) { + return 0; + } + if (temp_f6 < 0) { + return 0; + } + if (temp_f4 >= 0x20) { + return 0; + } + if (temp_f6 >= 0x20) { + return 0; + } + + temp_v1_2 = (temp_f4 + temp_f6 * 32); + temp_v1 = D_8014F110[temp_v1_2].unk2; + if (temp_v1 == 0) { + return 0; + } + var_s1 = D_8014F110[temp_v1_2].unk0; + for (var_s2 = 0; var_s2 < temp_v1; var_s2++) { + temp_s0 = D_8015F584[var_s1]; + if (gSurfaceMap[temp_s0].flags & 0x4000) { + if (temp_s0 != arg0->surfaceMapIndex) { + if (func_802AAE4C(&spD0, 5.0f, temp_f22, temp_f24, temp_f26, temp_s0) == 1) { + arg0->cornerGroundY = func_802ABE30(temp_f22, temp_f24, temp_f26, temp_s0); + arg0->surfaceType = gSurfaceMap[temp_s0].surfaceType; + arg0->surfaceFlags = 0x40; + arg0->surfaceMapIndex = temp_s0; + if (gSurfaceMap[temp_s0].flags & 0x1000) { + arg0->unk_14 = 1; + } else { + arg0->unk_14 = 0; + } + return 1; + } + } + } else if (gSurfaceMap[temp_s0].flags & 0x8000) { + if ((gSurfaceMap[temp_s0].height != 1.0f) && (temp_s0 != arg0->surfaceMapIndex)) { + if (func_802AB6C4(&spD0, 5.0f, temp_f22, temp_f24, temp_f26, temp_s0) == 1) { + arg0->cornerGroundY = func_802ABE30(temp_f22, temp_f24, temp_f26, temp_s0); + arg0->surfaceType = gSurfaceMap[temp_s0].surfaceType; + arg0->surfaceFlags = 0x80; + arg0->surfaceMapIndex = temp_s0; + return 1; + } + } + } else if ((gSurfaceMap[temp_s0].rotation != 1.0f) && (temp_s0 != arg0->surfaceMapIndex)) { + if (func_802AB288(&spD0, 5.0f, temp_f22, temp_f24, temp_f26, temp_s0) == 1) { + arg0->cornerGroundY = func_802ABE30(temp_f22, temp_f24, temp_f26, temp_s0); + arg0->surfaceType = gSurfaceMap[temp_s0].surfaceType; + arg0->surfaceFlags = 0x20; + arg0->surfaceMapIndex = temp_s0; + return 1; + } + } + var_s1++; + } + arg0->cornerGroundY = temp_f24; + arg0->surfaceType = 0; + // Another function that has a return value but doesn't have an explicit return statement in one of its codepaths. + // The return value at this point will be whatever was last returned by func_802AAE4C/func_802AB6C4/func_802AB288 + // depending on which (if any) if statements were entered on the loop's last cycle +} s32 is_colliding_with_drivable_surface(Collision *collision, f32 boundingBoxSize, f32 x1, f32 y1, f32 z1, u16 index, f32 posX, f32 posY, f32 posZ) { mk64_surface_map_ram *tile = &gSurfaceMap[index]; diff --git a/src/racing/collision.h b/src/racing/collision.h index 37a8b8a75..cecc93f2c 100644 --- a/src/racing/collision.h +++ b/src/racing/collision.h @@ -6,6 +6,9 @@ void nullify_displaylist(uintptr_t); void func_802AAAAC(Collision*); f32 func_802AAB4C(Player*); +s32 func_802AAE4C(Collision*, f32, f32, f32, f32, u16); +s32 func_802AB288(Collision*, f32, f32, f32, f32, u16); +s32 func_802AB6C4(Collision*, f32, f32, f32, f32, u16); s8 get_surface_type(u16); s16 func_802ABD40(u16); s16 func_802ABD7C(u16); @@ -14,8 +17,9 @@ s16 func_802ABDF4(u16); f32 func_802ABE30(f32, f32, f32, u16); f32 func_802ABEAC(Collision*, Vec3f); void process_shell_collision(Vec3f, f32, Vec3f, f32); -u16 process_collision(Player *player, KartBoundingBoxCorner *corner, f32 cornerPosX, f32 cornerPosY, f32 cornerPosZ); +u16 process_collision(Player*, KartBoundingBoxCorner*, f32, f32, f32); void func_802AC114(Vec3f, f32, Vec3f, f32); +s32 func_802AC22C(KartBoundingBoxCorner*); u16 func_802AD950(Collision*, f32, f32, f32, f32, f32, f32, f32); u16 func_802ADDC8(Collision*, f32, f32, f32, f32); f32 func_802AE1C0(f32, f32, f32);