Matched the last in collisions.c (#481)

Signed-off-by: Taggerung <tyler.taggerung@email.com>
This commit is contained in:
Tyler McGavran 2023-11-03 00:31:19 -04:00 committed by GitHub
parent 0f3bc7ca1a
commit 596fa15e8d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 132 additions and 357 deletions

View File

@ -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

View File

@ -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"

View File

@ -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];

View File

@ -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);