summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpetrie911 <69443847+petrie911@users.noreply.github.com>2020-12-22 14:59:56 -0600
committerGitHub <noreply@github.com>2020-12-22 15:59:56 -0500
commite4b84365ff32d02df35c932d28ebf44aa56f666d (patch)
tree34319ce41ad0955704635a342042dfea0ea09f90
parent4f2259e24ef163e6bf87e0355458dd95f1a54481 (diff)
z_collision_check OK (#558)
* another match * fix variables * comment * functions.h * last match
-rw-r--r--asm/non_matchings/code/z_collision_check/func_8005B2AC.s260
-rw-r--r--asm/non_matchings/code/z_collision_check/func_80062ECC.s493
-rw-r--r--include/functions.h18
-rw-r--r--src/code/z_collision_check.c349
4 files changed, 173 insertions, 947 deletions
diff --git a/asm/non_matchings/code/z_collision_check/func_8005B2AC.s b/asm/non_matchings/code/z_collision_check/func_8005B2AC.s
deleted file mode 100644
index 20edfdc41..000000000
--- a/asm/non_matchings/code/z_collision_check/func_8005B2AC.s
+++ /dev/null
@@ -1,260 +0,0 @@
-.rdata
-glabel D_8013A5B0
- .asciz "../z_collision_check.c"
- .balign 4
-
-glabel D_8013A5C8
- .asciz "vtx_tbl != NULL"
- .balign 4
-
-glabel D_8013A5D8
- .asciz "../z_collision_check.c"
- .balign 4
-
-glabel D_8013A5F0
- .asciz "../z_collision_check.c"
- .balign 4
-
-.text
-glabel func_8005B2AC
-/* AD244C 8005B2AC 27BDFF70 */ addiu $sp, $sp, -0x90
-/* AD2450 8005B2B0 AFB00028 */ sw $s0, 0x28($sp)
-/* AD2454 8005B2B4 AFA60098 */ sw $a2, 0x98($sp)
-/* AD2458 8005B2B8 00808025 */ move $s0, $a0
-/* AD245C 8005B2BC AFBF002C */ sw $ra, 0x2c($sp)
-/* AD2460 8005B2C0 AFA50094 */ sw $a1, 0x94($sp)
-/* AD2464 8005B2C4 AFA7009C */ sw $a3, 0x9c($sp)
-/* AD2468 8005B2C8 3C068014 */ lui $a2, %hi(D_8013A5B0) # $a2, 0x8014
-/* AD246C 8005B2CC 24C6A5B0 */ addiu $a2, %lo(D_8013A5B0) # addiu $a2, $a2, -0x5a50
-/* AD2470 8005B2D0 240702C9 */ li $a3, 713
-/* AD2474 8005B2D4 02002825 */ move $a1, $s0
-/* AD2478 8005B2D8 0C031AB1 */ jal Graph_OpenDisps
-/* AD247C 8005B2DC 27A40064 */ addiu $a0, $sp, 0x64
-/* AD2480 8005B2E0 8E0202C0 */ lw $v0, 0x2c0($s0)
-/* AD2484 8005B2E4 3C0FDA38 */ lui $t7, (0xDA380003 >> 16) # lui $t7, 0xda38
-/* AD2488 8005B2E8 3C188013 */ lui $t8, %hi(gMtxClear) # $t8, 0x8013
-/* AD248C 8005B2EC 244E0008 */ addiu $t6, $v0, 8
-/* AD2490 8005B2F0 AE0E02C0 */ sw $t6, 0x2c0($s0)
-/* AD2494 8005B2F4 2718DB20 */ addiu $t8, %lo(gMtxClear) # addiu $t8, $t8, -0x24e0
-/* AD2498 8005B2F8 35EF0003 */ ori $t7, (0xDA380003 & 0xFFFF) # ori $t7, $t7, 3
-/* AD249C 8005B2FC AC4F0000 */ sw $t7, ($v0)
-/* AD24A0 8005B300 AC580004 */ sw $t8, 4($v0)
-/* AD24A4 8005B304 8E0202C0 */ lw $v0, 0x2c0($s0)
-/* AD24A8 8005B308 3C09FA00 */ lui $t1, (0xFA0000FF >> 16) # lui $t1, 0xfa00
-/* AD24AC 8005B30C 352900FF */ ori $t1, (0xFA0000FF & 0xFFFF) # ori $t1, $t1, 0xff
-/* AD24B0 8005B310 24590008 */ addiu $t9, $v0, 8
-/* AD24B4 8005B314 AE1902C0 */ sw $t9, 0x2c0($s0)
-/* AD24B8 8005B318 AC490000 */ sw $t1, ($v0)
-/* AD24BC 8005B31C 93AE00A7 */ lbu $t6, 0xa7($sp)
-/* AD24C0 8005B320 93AB00A3 */ lbu $t3, 0xa3($sp)
-/* AD24C4 8005B324 93A900AB */ lbu $t1, 0xab($sp)
-/* AD24C8 8005B328 000E7C00 */ sll $t7, $t6, 0x10
-/* AD24CC 8005B32C 000B6600 */ sll $t4, $t3, 0x18
-/* AD24D0 8005B330 018FC025 */ or $t8, $t4, $t7
-/* AD24D4 8005B334 00095200 */ sll $t2, $t1, 8
-/* AD24D8 8005B338 030A5825 */ or $t3, $t8, $t2
-/* AD24DC 8005B33C 356D0032 */ ori $t5, $t3, 0x32
-/* AD24E0 8005B340 AC4D0004 */ sw $t5, 4($v0)
-/* AD24E4 8005B344 8E0202C0 */ lw $v0, 0x2c0($s0)
-/* AD24E8 8005B348 3C04E700 */ lui $a0, 0xe700
-/* AD24EC 8005B34C 3C0FE200 */ lui $t7, (0xE200001C >> 16) # lui $t7, 0xe200
-/* AD24F0 8005B350 244E0008 */ addiu $t6, $v0, 8
-/* AD24F4 8005B354 AE0E02C0 */ sw $t6, 0x2c0($s0)
-/* AD24F8 8005B358 AC400004 */ sw $zero, 4($v0)
-/* AD24FC 8005B35C AC440000 */ sw $a0, ($v0)
-/* AD2500 8005B360 8E0202C0 */ lw $v0, 0x2c0($s0)
-/* AD2504 8005B364 3C19C811 */ lui $t9, (0xC8112078 >> 16) # lui $t9, 0xc811
-/* AD2508 8005B368 37392078 */ ori $t9, (0xC8112078 & 0xFFFF) # ori $t9, $t9, 0x2078
-/* AD250C 8005B36C 244C0008 */ addiu $t4, $v0, 8
-/* AD2510 8005B370 AE0C02C0 */ sw $t4, 0x2c0($s0)
-/* AD2514 8005B374 35EF001C */ ori $t7, (0xE200001C & 0xFFFF) # ori $t7, $t7, 0x1c
-/* AD2518 8005B378 AC4F0000 */ sw $t7, ($v0)
-/* AD251C 8005B37C AC590004 */ sw $t9, 4($v0)
-/* AD2520 8005B380 8E0202C0 */ lw $v0, 0x2c0($s0)
-/* AD2524 8005B384 3C18D700 */ lui $t8, 0xd700
-/* AD2528 8005B388 3C0DFC41 */ lui $t5, (0xFC41C7FF >> 16) # lui $t5, 0xfc41
-/* AD252C 8005B38C 24490008 */ addiu $t1, $v0, 8
-/* AD2530 8005B390 AE0902C0 */ sw $t1, 0x2c0($s0)
-/* AD2534 8005B394 AC400004 */ sw $zero, 4($v0)
-/* AD2538 8005B398 AC580000 */ sw $t8, ($v0)
-/* AD253C 8005B39C 8E0202C0 */ lw $v0, 0x2c0($s0)
-/* AD2540 8005B3A0 35ADC7FF */ ori $t5, (0xFC41C7FF & 0xFFFF) # ori $t5, $t5, 0xc7ff
-/* AD2544 8005B3A4 240EFE38 */ li $t6, -456
-/* AD2548 8005B3A8 244A0008 */ addiu $t2, $v0, 8
-/* AD254C 8005B3AC AE0A02C0 */ sw $t2, 0x2c0($s0)
-/* AD2550 8005B3B0 AC400004 */ sw $zero, 4($v0)
-/* AD2554 8005B3B4 AC440000 */ sw $a0, ($v0)
-/* AD2558 8005B3B8 8E0202C0 */ lw $v0, 0x2c0($s0)
-/* AD255C 8005B3BC 3C0FD9FF */ lui $t7, (0xD9FFF9FF >> 16) # lui $t7, 0xd9ff
-/* AD2560 8005B3C0 35EFF9FF */ ori $t7, (0xD9FFF9FF & 0xFFFF) # ori $t7, $t7, 0xf9ff
-/* AD2564 8005B3C4 244B0008 */ addiu $t3, $v0, 8
-/* AD2568 8005B3C8 AE0B02C0 */ sw $t3, 0x2c0($s0)
-/* AD256C 8005B3CC AC4E0004 */ sw $t6, 4($v0)
-/* AD2570 8005B3D0 AC4D0000 */ sw $t5, ($v0)
-/* AD2574 8005B3D4 8E0202C0 */ lw $v0, 0x2c0($s0)
-/* AD2578 8005B3D8 3C09D9FF */ lui $t1, (0xD9FFFFFF >> 16) # lui $t1, 0xd9ff
-/* AD257C 8005B3DC 3529FFFF */ ori $t1, (0xD9FFFFFF & 0xFFFF) # ori $t1, $t1, 0xffff
-/* AD2580 8005B3E0 244C0008 */ addiu $t4, $v0, 8
-/* AD2584 8005B3E4 AE0C02C0 */ sw $t4, 0x2c0($s0)
-/* AD2588 8005B3E8 AC400004 */ sw $zero, 4($v0)
-/* AD258C 8005B3EC AC4F0000 */ sw $t7, ($v0)
-/* AD2590 8005B3F0 8E0202C0 */ lw $v0, 0x2c0($s0)
-/* AD2594 8005B3F4 3C180002 */ lui $t8, 2
-/* AD2598 8005B3F8 24050030 */ li $a1, 48
-/* AD259C 8005B3FC 24590008 */ addiu $t9, $v0, 8
-/* AD25A0 8005B400 AE1902C0 */ sw $t9, 0x2c0($s0)
-/* AD25A4 8005B404 AC580004 */ sw $t8, 4($v0)
-/* AD25A8 8005B408 AC490000 */ sw $t1, ($v0)
-/* AD25AC 8005B40C 8E0202C0 */ lw $v0, 0x2c0($s0)
-/* AD25B0 8005B410 244A0008 */ addiu $t2, $v0, 8
-/* AD25B4 8005B414 AE0A02C0 */ sw $t2, 0x2c0($s0)
-/* AD25B8 8005B418 AC440000 */ sw $a0, ($v0)
-/* AD25BC 8005B41C 02002025 */ move $a0, $s0
-/* AD25C0 8005B420 0C031A73 */ jal Graph_Alloc
-/* AD25C4 8005B424 AC400004 */ sw $zero, 4($v0)
-/* AD25C8 8005B428 14400009 */ bnez $v0, .L8005B450
-/* AD25CC 8005B42C 00404025 */ move $t0, $v0
-/* AD25D0 8005B430 3C048014 */ lui $a0, %hi(D_8013A5C8) # $a0, 0x8014
-/* AD25D4 8005B434 3C058014 */ lui $a1, %hi(D_8013A5D8) # $a1, 0x8014
-/* AD25D8 8005B438 24A5A5D8 */ addiu $a1, %lo(D_8013A5D8) # addiu $a1, $a1, -0x5a28
-/* AD25DC 8005B43C 2484A5C8 */ addiu $a0, %lo(D_8013A5C8) # addiu $a0, $a0, -0x5a38
-/* AD25E0 8005B440 240602D6 */ li $a2, 726
-/* AD25E4 8005B444 0C0007FC */ jal __assert
-/* AD25E8 8005B448 AFA2008C */ sw $v0, 0x8c($sp)
-/* AD25EC 8005B44C 8FA8008C */ lw $t0, 0x8c($sp)
-.L8005B450:
-/* AD25F0 8005B450 8FA40094 */ lw $a0, 0x94($sp)
-/* AD25F4 8005B454 8FA50098 */ lw $a1, 0x98($sp)
-/* AD25F8 8005B458 8FA6009C */ lw $a2, 0x9c($sp)
-/* AD25FC 8005B45C C4840000 */ lwc1 $f4, ($a0)
-/* AD2600 8005B460 27A70084 */ addiu $a3, $sp, 0x84
-/* AD2604 8005B464 4600218D */ trunc.w.s $f6, $f4
-/* AD2608 8005B468 440D3000 */ mfc1 $t5, $f6
-/* AD260C 8005B46C 00000000 */ nop
-/* AD2610 8005B470 A50D0000 */ sh $t5, ($t0)
-/* AD2614 8005B474 C4880004 */ lwc1 $f8, 4($a0)
-/* AD2618 8005B478 27AD007C */ addiu $t5, $sp, 0x7c
-/* AD261C 8005B47C 4600428D */ trunc.w.s $f10, $f8
-/* AD2620 8005B480 440C5000 */ mfc1 $t4, $f10
-/* AD2624 8005B484 00000000 */ nop
-/* AD2628 8005B488 A50C0002 */ sh $t4, 2($t0)
-/* AD262C 8005B48C C4900008 */ lwc1 $f16, 8($a0)
-/* AD2630 8005B490 4600848D */ trunc.w.s $f18, $f16
-/* AD2634 8005B494 44199000 */ mfc1 $t9, $f18
-/* AD2638 8005B498 00000000 */ nop
-/* AD263C 8005B49C A5190004 */ sh $t9, 4($t0)
-/* AD2640 8005B4A0 C4A40000 */ lwc1 $f4, ($a1)
-/* AD2644 8005B4A4 4600218D */ trunc.w.s $f6, $f4
-/* AD2648 8005B4A8 44183000 */ mfc1 $t8, $f6
-/* AD264C 8005B4AC 00000000 */ nop
-/* AD2650 8005B4B0 A5180010 */ sh $t8, 0x10($t0)
-/* AD2654 8005B4B4 C4A80004 */ lwc1 $f8, 4($a1)
-/* AD2658 8005B4B8 4600428D */ trunc.w.s $f10, $f8
-/* AD265C 8005B4BC 440B5000 */ mfc1 $t3, $f10
-/* AD2660 8005B4C0 00000000 */ nop
-/* AD2664 8005B4C4 A50B0012 */ sh $t3, 0x12($t0)
-/* AD2668 8005B4C8 C4B00008 */ lwc1 $f16, 8($a1)
-/* AD266C 8005B4CC 27AB0080 */ addiu $t3, $sp, 0x80
-/* AD2670 8005B4D0 4600848D */ trunc.w.s $f18, $f16
-/* AD2674 8005B4D4 440E9000 */ mfc1 $t6, $f18
-/* AD2678 8005B4D8 00000000 */ nop
-/* AD267C 8005B4DC A50E0014 */ sh $t6, 0x14($t0)
-/* AD2680 8005B4E0 C4C40000 */ lwc1 $f4, ($a2)
-/* AD2684 8005B4E4 27AE0078 */ addiu $t6, $sp, 0x78
-/* AD2688 8005B4E8 4600218D */ trunc.w.s $f6, $f4
-/* AD268C 8005B4EC 440F3000 */ mfc1 $t7, $f6
-/* AD2690 8005B4F0 00000000 */ nop
-/* AD2694 8005B4F4 A50F0020 */ sh $t7, 0x20($t0)
-/* AD2698 8005B4F8 C4C80004 */ lwc1 $f8, 4($a2)
-/* AD269C 8005B4FC 4600428D */ trunc.w.s $f10, $f8
-/* AD26A0 8005B500 44095000 */ mfc1 $t1, $f10
-/* AD26A4 8005B504 00000000 */ nop
-/* AD26A8 8005B508 A5090022 */ sh $t1, 0x22($t0)
-/* AD26AC 8005B50C C4D00008 */ lwc1 $f16, 8($a2)
-/* AD26B0 8005B510 4600848D */ trunc.w.s $f18, $f16
-/* AD26B4 8005B514 440A9000 */ mfc1 $t2, $f18
-/* AD26B8 8005B518 00000000 */ nop
-/* AD26BC 8005B51C A50A0024 */ sh $t2, 0x24($t0)
-/* AD26C0 8005B520 AFA8008C */ sw $t0, 0x8c($sp)
-/* AD26C4 8005B524 AFAE0018 */ sw $t6, 0x18($sp)
-/* AD26C8 8005B528 AFAD0014 */ sw $t5, 0x14($sp)
-/* AD26CC 8005B52C 0C03322D */ jal Math3D_DefPlane
-/* AD26D0 8005B530 AFAB0010 */ sw $t3, 0x10($sp)
-/* AD26D4 8005B534 8FA8008C */ lw $t0, 0x8c($sp)
-/* AD26D8 8005B538 240300FF */ li $v1, 255
-/* AD26DC 8005B53C 25040030 */ addiu $a0, $t0, 0x30
-/* AD26E0 8005B540 0104082B */ sltu $at, $t0, $a0
-/* AD26E4 8005B544 1020002C */ beqz $at, .L8005B5F8
-/* AD26E8 8005B548 01001025 */ move $v0, $t0
-/* AD26EC 8005B54C 24420010 */ addiu $v0, $v0, 0x10
-/* AD26F0 8005B550 0044082B */ sltu $at, $v0, $a0
-/* AD26F4 8005B554 A440FFF6 */ sh $zero, -0xa($v0)
-/* AD26F8 8005B558 A440FFF8 */ sh $zero, -8($v0)
-/* AD26FC 8005B55C 10200016 */ beqz $at, .L8005B5B8
-/* AD2700 8005B560 A440FFFA */ sh $zero, -6($v0)
-.L8005B564:
-/* AD2704 8005B564 C7B20084 */ lwc1 $f18, 0x84($sp)
-/* AD2708 8005B568 24420010 */ addiu $v0, $v0, 0x10
-/* AD270C 8005B56C 0044082B */ sltu $at, $v0, $a0
-/* AD2710 8005B570 4600948D */ trunc.w.s $f18, $f18
-/* AD2714 8005B574 44099000 */ mfc1 $t1, $f18
-/* AD2718 8005B578 00000000 */ nop
-/* AD271C 8005B57C A049FFEC */ sb $t1, -0x14($v0)
-/* AD2720 8005B580 C7B20080 */ lwc1 $f18, 0x80($sp)
-/* AD2724 8005B584 4600948D */ trunc.w.s $f18, $f18
-/* AD2728 8005B588 440D9000 */ mfc1 $t5, $f18
-/* AD272C 8005B58C 00000000 */ nop
-/* AD2730 8005B590 A04DFFED */ sb $t5, -0x13($v0)
-/* AD2734 8005B594 C7B2007C */ lwc1 $f18, 0x7c($sp)
-/* AD2738 8005B598 A043FFEF */ sb $v1, -0x11($v0)
-/* AD273C 8005B59C A440FFF6 */ sh $zero, -0xa($v0)
-/* AD2740 8005B5A0 4600948D */ trunc.w.s $f18, $f18
-/* AD2744 8005B5A4 A440FFF8 */ sh $zero, -8($v0)
-/* AD2748 8005B5A8 A440FFFA */ sh $zero, -6($v0)
-/* AD274C 8005B5AC 44199000 */ mfc1 $t9, $f18
-/* AD2750 8005B5B0 1420FFEC */ bnez $at, .L8005B564
-/* AD2754 8005B5B4 A059FFEE */ sb $t9, -0x12($v0)
-.L8005B5B8:
-/* AD2758 8005B5B8 C7B20084 */ lwc1 $f18, 0x84($sp)
-/* AD275C 8005B5BC 4600948D */ trunc.w.s $f18, $f18
-/* AD2760 8005B5C0 44099000 */ mfc1 $t1, $f18
-/* AD2764 8005B5C4 00000000 */ nop
-/* AD2768 8005B5C8 A049FFFC */ sb $t1, -4($v0)
-/* AD276C 8005B5CC C7B20080 */ lwc1 $f18, 0x80($sp)
-/* AD2770 8005B5D0 4600948D */ trunc.w.s $f18, $f18
-/* AD2774 8005B5D4 440D9000 */ mfc1 $t5, $f18
-/* AD2778 8005B5D8 00000000 */ nop
-/* AD277C 8005B5DC A04DFFFD */ sb $t5, -3($v0)
-/* AD2780 8005B5E0 C7B2007C */ lwc1 $f18, 0x7c($sp)
-/* AD2784 8005B5E4 A043FFFF */ sb $v1, -1($v0)
-/* AD2788 8005B5E8 4600948D */ trunc.w.s $f18, $f18
-/* AD278C 8005B5EC 44199000 */ mfc1 $t9, $f18
-/* AD2790 8005B5F0 00000000 */ nop
-/* AD2794 8005B5F4 A059FFFE */ sb $t9, -2($v0)
-.L8005B5F8:
-/* AD2798 8005B5F8 8E0202C0 */ lw $v0, 0x2c0($s0)
-/* AD279C 8005B5FC 3C180100 */ lui $t8, (0x01003006 >> 16) # lui $t8, 0x100
-/* AD27A0 8005B600 37183006 */ ori $t8, (0x01003006 & 0xFFFF) # ori $t8, $t8, 0x3006
-/* AD27A4 8005B604 24490008 */ addiu $t1, $v0, 8
-/* AD27A8 8005B608 AE0902C0 */ sw $t1, 0x2c0($s0)
-/* AD27AC 8005B60C AC480004 */ sw $t0, 4($v0)
-/* AD27B0 8005B610 AC580000 */ sw $t8, ($v0)
-/* AD27B4 8005B614 8E0202C0 */ lw $v0, 0x2c0($s0)
-/* AD27B8 8005B618 3C0B0500 */ lui $t3, (0x05000204 >> 16) # lui $t3, 0x500
-/* AD27BC 8005B61C 356B0204 */ ori $t3, (0x05000204 & 0xFFFF) # ori $t3, $t3, 0x204
-/* AD27C0 8005B620 244A0008 */ addiu $t2, $v0, 8
-/* AD27C4 8005B624 AE0A02C0 */ sw $t2, 0x2c0($s0)
-/* AD27C8 8005B628 3C068014 */ lui $a2, %hi(D_8013A5F0) # $a2, 0x8014
-/* AD27CC 8005B62C 24C6A5F0 */ addiu $a2, %lo(D_8013A5F0) # addiu $a2, $a2, -0x5a10
-/* AD27D0 8005B630 27A40064 */ addiu $a0, $sp, 0x64
-/* AD27D4 8005B634 02002825 */ move $a1, $s0
-/* AD27D8 8005B638 240702F5 */ li $a3, 757
-/* AD27DC 8005B63C AC400004 */ sw $zero, 4($v0)
-/* AD27E0 8005B640 0C031AD5 */ jal Graph_CloseDisps
-/* AD27E4 8005B644 AC4B0000 */ sw $t3, ($v0)
-/* AD27E8 8005B648 8FBF002C */ lw $ra, 0x2c($sp)
-/* AD27EC 8005B64C 8FB00028 */ lw $s0, 0x28($sp)
-/* AD27F0 8005B650 27BD0090 */ addiu $sp, $sp, 0x90
-/* AD27F4 8005B654 03E00008 */ jr $ra
-/* AD27F8 8005B658 00000000 */ nop
-
diff --git a/asm/non_matchings/code/z_collision_check/func_80062ECC.s b/asm/non_matchings/code/z_collision_check/func_80062ECC.s
deleted file mode 100644
index 25add84ca..000000000
--- a/asm/non_matchings/code/z_collision_check/func_80062ECC.s
+++ /dev/null
@@ -1,493 +0,0 @@
-.late_rodata
-glabel D_8013AD2C
- .float 0.008
-
-glabel D_8013AD30
- .float 0.008
-
-.text
-glabel func_80062ECC
-/* ADA06C 80062ECC 27BDFF88 */ addiu $sp, $sp, -0x78
-/* ADA070 80062ED0 8FA40088 */ lw $a0, 0x88($sp)
-/* ADA074 80062ED4 E7AC0078 */ swc1 $f12, 0x78($sp)
-/* ADA078 80062ED8 E7AE007C */ swc1 $f14, 0x7c($sp)
-/* ADA07C 80062EDC AFA60080 */ sw $a2, 0x80($sp)
-/* ADA080 80062EE0 C4E60000 */ lwc1 $f6, ($a3)
-/* ADA084 80062EE4 C4840000 */ lwc1 $f4, ($a0)
-/* ADA088 80062EE8 8FA5008C */ lw $a1, 0x8c($sp)
-/* ADA08C 80062EEC 00001025 */ move $v0, $zero
-/* ADA090 80062EF0 46062201 */ sub.s $f8, $f4, $f6
-/* ADA094 80062EF4 E7A8006C */ swc1 $f8, 0x6c($sp)
-/* ADA098 80062EF8 C4E40004 */ lwc1 $f4, 4($a3)
-/* ADA09C 80062EFC C48A0004 */ lwc1 $f10, 4($a0)
-/* ADA0A0 80062F00 C7A80080 */ lwc1 $f8, 0x80($sp)
-/* ADA0A4 80062F04 46045181 */ sub.s $f6, $f10, $f4
-/* ADA0A8 80062F08 46083381 */ sub.s $f14, $f6, $f8
-/* ADA0AC 80062F0C E7AE0070 */ swc1 $f14, 0x70($sp)
-/* ADA0B0 80062F10 C4E60008 */ lwc1 $f6, 8($a3)
-/* ADA0B4 80062F14 C4840008 */ lwc1 $f4, 8($a0)
-/* ADA0B8 80062F18 46062101 */ sub.s $f4, $f4, $f6
-/* ADA0BC 80062F1C E7A40074 */ swc1 $f4, 0x74($sp)
-/* ADA0C0 80062F20 C4E40000 */ lwc1 $f4, ($a3)
-/* ADA0C4 80062F24 C4A60000 */ lwc1 $f6, ($a1)
-/* ADA0C8 80062F28 46043181 */ sub.s $f6, $f6, $f4
-/* ADA0CC 80062F2C E7A60060 */ swc1 $f6, 0x60($sp)
-/* ADA0D0 80062F30 C4E60004 */ lwc1 $f6, 4($a3)
-/* ADA0D4 80062F34 C4A40004 */ lwc1 $f4, 4($a1)
-/* ADA0D8 80062F38 46062101 */ sub.s $f4, $f4, $f6
-/* ADA0DC 80062F3C 46082181 */ sub.s $f6, $f4, $f8
-/* ADA0E0 80062F40 E7A60064 */ swc1 $f6, 0x64($sp)
-/* ADA0E4 80062F44 C4E80008 */ lwc1 $f8, 8($a3)
-/* ADA0E8 80062F48 C4A40008 */ lwc1 $f4, 8($a1)
-/* ADA0EC 80062F4C 46082101 */ sub.s $f4, $f4, $f8
-/* ADA0F0 80062F50 C7A80060 */ lwc1 $f8, 0x60($sp)
-/* ADA0F4 80062F54 E7A40068 */ swc1 $f4, 0x68($sp)
-/* ADA0F8 80062F58 C7A4006C */ lwc1 $f4, 0x6c($sp)
-/* ADA0FC 80062F5C 46044401 */ sub.s $f16, $f8, $f4
-/* ADA100 80062F60 460E3201 */ sub.s $f8, $f6, $f14
-/* ADA104 80062F64 C7A60068 */ lwc1 $f6, 0x68($sp)
-/* ADA108 80062F68 E7B00054 */ swc1 $f16, 0x54($sp)
-/* ADA10C 80062F6C E7A80018 */ swc1 $f8, 0x18($sp)
-/* ADA110 80062F70 E7A80058 */ swc1 $f8, 0x58($sp)
-/* ADA114 80062F74 C7A80074 */ lwc1 $f8, 0x74($sp)
-/* ADA118 80062F78 46083481 */ sub.s $f18, $f6, $f8
-/* ADA11C 80062F7C 44803000 */ mtc1 $zero, $f6
-/* ADA120 80062F80 C7A8007C */ lwc1 $f8, 0x7c($sp)
-/* ADA124 80062F84 460E303C */ c.lt.s $f6, $f14
-/* ADA128 80062F88 E7B2005C */ swc1 $f18, 0x5c($sp)
-/* ADA12C 80062F8C 45000002 */ bc1f .L80062F98
-/* ADA130 80062F90 00000000 */ nop
-/* ADA134 80062F94 24020001 */ li $v0, 1
-.L80062F98:
-/* ADA138 80062F98 50400013 */ beql $v0, $zero, .L80062FE8
-/* ADA13C 80062F9C 44804000 */ mtc1 $zero, $f8
-/* ADA140 80062FA0 4608703C */ c.lt.s $f14, $f8
-/* ADA144 80062FA4 C7A80074 */ lwc1 $f8, 0x74($sp)
-/* ADA148 80062FA8 C7A60074 */ lwc1 $f6, 0x74($sp)
-/* ADA14C 80062FAC 4502000E */ bc1fl .L80062FE8
-/* ADA150 80062FB0 44804000 */ mtc1 $zero, $f8
-/* ADA154 80062FB4 46042282 */ mul.s $f10, $f4, $f4
-/* ADA158 80062FB8 00000000 */ nop
-/* ADA15C 80062FBC 46083102 */ mul.s $f4, $f6, $f8
-/* ADA160 80062FC0 C7A60078 */ lwc1 $f6, 0x78($sp)
-/* ADA164 80062FC4 46045000 */ add.s $f0, $f10, $f4
-/* ADA168 80062FC8 46000004 */ sqrt.s $f0, $f0
-/* ADA16C 80062FCC 4606003C */ c.lt.s $f0, $f6
-/* ADA170 80062FD0 00000000 */ nop
-/* ADA174 80062FD4 45000003 */ bc1f .L80062FE4
-/* ADA178 80062FD8 00000000 */ nop
-/* ADA17C 80062FDC 1000017A */ b .L800635C8
-/* ADA180 80062FE0 24020003 */ li $v0, 3
-.L80062FE4:
-/* ADA184 80062FE4 44804000 */ mtc1 $zero, $f8
-.L80062FE8:
-/* ADA188 80062FE8 C7AA0064 */ lwc1 $f10, 0x64($sp)
-/* ADA18C 80062FEC 00001825 */ move $v1, $zero
-/* ADA190 80062FF0 C7A4007C */ lwc1 $f4, 0x7c($sp)
-/* ADA194 80062FF4 460A403C */ c.lt.s $f8, $f10
-/* ADA198 80062FF8 00000000 */ nop
-/* ADA19C 80062FFC 45000002 */ bc1f .L80063008
-/* ADA1A0 80063000 00000000 */ nop
-/* ADA1A4 80063004 24030001 */ li $v1, 1
-.L80063008:
-/* ADA1A8 80063008 50600012 */ beql $v1, $zero, .L80063054
-/* ADA1AC 8006300C C7A60074 */ lwc1 $f6, 0x74($sp)
-/* ADA1B0 80063010 4604503C */ c.lt.s $f10, $f4
-/* ADA1B4 80063014 C7A20060 */ lwc1 $f2, 0x60($sp)
-/* ADA1B8 80063018 C7AC0068 */ lwc1 $f12, 0x68($sp)
-/* ADA1BC 8006301C 4502000D */ bc1fl .L80063054
-/* ADA1C0 80063020 C7A60074 */ lwc1 $f6, 0x74($sp)
-/* ADA1C4 80063024 46021182 */ mul.s $f6, $f2, $f2
-/* ADA1C8 80063028 C7AA0078 */ lwc1 $f10, 0x78($sp)
-/* ADA1CC 8006302C 460C6202 */ mul.s $f8, $f12, $f12
-/* ADA1D0 80063030 46083000 */ add.s $f0, $f6, $f8
-/* ADA1D4 80063034 46000004 */ sqrt.s $f0, $f0
-/* ADA1D8 80063038 460A003C */ c.lt.s $f0, $f10
-/* ADA1DC 8006303C 00000000 */ nop
-/* ADA1E0 80063040 45020004 */ bc1fl .L80063054
-/* ADA1E4 80063044 C7A60074 */ lwc1 $f6, 0x74($sp)
-/* ADA1E8 80063048 1000015F */ b .L800635C8
-/* ADA1EC 8006304C 24020003 */ li $v0, 3
-/* ADA1F0 80063050 C7A60074 */ lwc1 $f6, 0x74($sp)
-.L80063054:
-/* ADA1F4 80063054 C7A4006C */ lwc1 $f4, 0x6c($sp)
-/* ADA1F8 80063058 3C018014 */ lui $at, %hi(D_8013AD2C)
-/* ADA1FC 8006305C 46063202 */ mul.s $f8, $f6, $f6
-/* ADA200 80063060 00000000 */ nop
-/* ADA204 80063064 46042282 */ mul.s $f10, $f4, $f4
-/* ADA208 80063068 46085280 */ add.s $f10, $f10, $f8
-/* ADA20C 8006306C C7A80078 */ lwc1 $f8, 0x78($sp)
-/* ADA210 80063070 46084202 */ mul.s $f8, $f8, $f8
-/* ADA214 80063074 46085301 */ sub.s $f12, $f10, $f8
-/* ADA218 80063078 46108282 */ mul.s $f10, $f16, $f16
-/* ADA21C 8006307C 00000000 */ nop
-/* ADA220 80063080 46129202 */ mul.s $f8, $f18, $f18
-/* ADA224 80063084 E7AC0038 */ swc1 $f12, 0x38($sp)
-/* ADA228 80063088 46085080 */ add.s $f2, $f10, $f8
-/* ADA22C 8006308C C42AAD2C */ lwc1 $f10, %lo(D_8013AD2C)($at)
-/* ADA230 80063090 46001005 */ abs.s $f0, $f2
-/* ADA234 80063094 460A003C */ c.lt.s $f0, $f10
-/* ADA238 80063098 00000000 */ nop
-/* ADA23C 8006309C 4501002C */ bc1t .L80063150
-/* ADA240 800630A0 00000000 */ nop
-/* ADA244 800630A4 46108200 */ add.s $f8, $f16, $f16
-/* ADA248 800630A8 3C014080 */ li $at, 0x40800000 # 0.000000
-/* ADA24C 800630AC 46044282 */ mul.s $f10, $f8, $f4
-/* ADA250 800630B0 46129200 */ add.s $f8, $f18, $f18
-/* ADA254 800630B4 46064102 */ mul.s $f4, $f8, $f6
-/* ADA258 800630B8 44814000 */ mtc1 $at, $f8
-/* ADA25C 800630BC 46045380 */ add.s $f14, $f10, $f4
-/* ADA260 800630C0 C7AA0038 */ lwc1 $f10, 0x38($sp)
-/* ADA264 800630C4 460E7002 */ mul.s $f0, $f14, $f14
-/* ADA268 800630C8 00000000 */ nop
-/* ADA26C 800630CC 46024182 */ mul.s $f6, $f8, $f2
-/* ADA270 800630D0 00000000 */ nop
-/* ADA274 800630D4 460A3302 */ mul.s $f12, $f6, $f10
-/* ADA278 800630D8 460C003C */ c.lt.s $f0, $f12
-/* ADA27C 800630DC 00000000 */ nop
-/* ADA280 800630E0 45000003 */ bc1f .L800630F0
-/* ADA284 800630E4 00000000 */ nop
-/* ADA288 800630E8 10000137 */ b .L800635C8
-/* ADA28C 800630EC 00001025 */ move $v0, $zero
-.L800630F0:
-/* ADA290 800630F0 460C0401 */ sub.s $f16, $f0, $f12
-/* ADA294 800630F4 44809000 */ mtc1 $zero, $f18
-/* ADA298 800630F8 24030001 */ li $v1, 1
-/* ADA29C 800630FC 46021200 */ add.s $f8, $f2, $f2
-/* ADA2A0 80063100 4610903C */ c.lt.s $f18, $f16
-/* ADA2A4 80063104 46008004 */ sqrt.s $f0, $f16
-/* ADA2A8 80063108 45000003 */ bc1f .L80063118
-/* ADA2AC 8006310C 24020001 */ li $v0, 1
-/* ADA2B0 80063110 10000002 */ b .L8006311C
-/* ADA2B4 80063114 24030001 */ li $v1, 1
-.L80063118:
-/* ADA2B8 80063118 00001025 */ move $v0, $zero
-.L8006311C:
-/* ADA2BC 8006311C 460E0101 */ sub.s $f4, $f0, $f14
-/* ADA2C0 80063120 24080001 */ li $t0, 1
-/* ADA2C4 80063124 46082403 */ div.s $f16, $f4, $f8
-/* ADA2C8 80063128 E7B00050 */ swc1 $f16, 0x50($sp)
-/* ADA2CC 8006312C 14480006 */ bne $v0, $t0, .L80063148
-/* ADA2D0 80063130 C7B00050 */ lwc1 $f16, 0x50($sp)
-/* ADA2D4 80063134 46007187 */ neg.s $f6, $f14
-/* ADA2D8 80063138 46021100 */ add.s $f4, $f2, $f2
-/* ADA2DC 8006313C 46003281 */ sub.s $f10, $f6, $f0
-/* ADA2E0 80063140 46045303 */ div.s $f12, $f10, $f4
-/* ADA2E4 80063144 E7AC004C */ swc1 $f12, 0x4c($sp)
-.L80063148:
-/* ADA2E8 80063148 1000005F */ b .L800632C8
-/* ADA2EC 8006314C C7AC004C */ lwc1 $f12, 0x4c($sp)
-.L80063150:
-/* ADA2F0 80063150 46108200 */ add.s $f8, $f16, $f16
-/* ADA2F4 80063154 C7A6006C */ lwc1 $f6, 0x6c($sp)
-/* ADA2F8 80063158 3C018014 */ lui $at, %hi(D_8013AD30)
-/* ADA2FC 8006315C 46129100 */ add.s $f4, $f18, $f18
-/* ADA300 80063160 46064282 */ mul.s $f10, $f8, $f6
-/* ADA304 80063164 C7A80074 */ lwc1 $f8, 0x74($sp)
-/* ADA308 80063168 24080001 */ li $t0, 1
-/* ADA30C 8006316C 46082182 */ mul.s $f6, $f4, $f8
-/* ADA310 80063170 C424AD30 */ lwc1 $f4, %lo(D_8013AD30)($at)
-/* ADA314 80063174 46065380 */ add.s $f14, $f10, $f6
-/* ADA318 80063178 46007005 */ abs.s $f0, $f14
-/* ADA31C 8006317C 4604003C */ c.lt.s $f0, $f4
-/* ADA320 80063180 00000000 */ nop
-/* ADA324 80063184 45030009 */ bc1tl .L800631AC
-/* ADA328 80063188 44805000 */ mtc1 $zero, $f10
-/* ADA32C 8006318C 46006207 */ neg.s $f8, $f12
-/* ADA330 80063190 44809000 */ mtc1 $zero, $f18
-/* ADA334 80063194 24030001 */ li $v1, 1
-/* ADA338 80063198 00001025 */ move $v0, $zero
-/* ADA33C 8006319C 460E4403 */ div.s $f16, $f8, $f14
-/* ADA340 800631A0 10000049 */ b .L800632C8
-/* ADA344 800631A4 C7AC004C */ lwc1 $f12, 0x4c($sp)
-/* ADA348 800631A8 44805000 */ mtc1 $zero, $f10
-.L800631AC:
-/* ADA34C 800631AC 00000000 */ nop
-/* ADA350 800631B0 460A603E */ c.le.s $f12, $f10
-/* ADA354 800631B4 00000000 */ nop
-/* ADA358 800631B8 45000041 */ bc1f .L800632C0
-/* ADA35C 800631BC 00000000 */ nop
-/* ADA360 800631C0 10400009 */ beqz $v0, .L800631E8
-/* ADA364 800631C4 00402025 */ move $a0, $v0
-/* ADA368 800631C8 C7A60070 */ lwc1 $f6, 0x70($sp)
-/* ADA36C 800631CC C7A4007C */ lwc1 $f4, 0x7c($sp)
-/* ADA370 800631D0 00002025 */ move $a0, $zero
-/* ADA374 800631D4 4604303C */ c.lt.s $f6, $f4
-/* ADA378 800631D8 00000000 */ nop
-/* ADA37C 800631DC 45020003 */ bc1fl .L800631EC
-/* ADA380 800631E0 00802825 */ move $a1, $a0
-/* ADA384 800631E4 24040001 */ li $a0, 1
-.L800631E8:
-/* ADA388 800631E8 00802825 */ move $a1, $a0
-.L800631EC:
-/* ADA38C 800631EC 10600009 */ beqz $v1, .L80063214
-/* ADA390 800631F0 00602025 */ move $a0, $v1
-/* ADA394 800631F4 C7A80064 */ lwc1 $f8, 0x64($sp)
-/* ADA398 800631F8 C7AA007C */ lwc1 $f10, 0x7c($sp)
-/* ADA39C 800631FC 00002025 */ move $a0, $zero
-/* ADA3A0 80063200 460A403C */ c.lt.s $f8, $f10
-/* ADA3A4 80063204 00000000 */ nop
-/* ADA3A8 80063208 45000002 */ bc1f .L80063214
-/* ADA3AC 8006320C 00000000 */ nop
-/* ADA3B0 80063210 24040001 */ li $a0, 1
-.L80063214:
-/* ADA3B4 80063214 10A00014 */ beqz $a1, .L80063268
-/* ADA3B8 80063218 00000000 */ nop
-/* ADA3BC 8006321C 10800012 */ beqz $a0, .L80063268
-/* ADA3C0 80063220 8FA30090 */ lw $v1, 0x90($sp)
-/* ADA3C4 80063224 27AE006C */ addiu $t6, $sp, 0x6c
-/* ADA3C8 80063228 8DD80000 */ lw $t8, ($t6)
-/* ADA3CC 8006322C 8FA40094 */ lw $a0, 0x94($sp)
-/* ADA3D0 80063230 27B90060 */ addiu $t9, $sp, 0x60
-/* ADA3D4 80063234 AC780000 */ sw $t8, ($v1)
-/* ADA3D8 80063238 8DCF0004 */ lw $t7, 4($t6)
-/* ADA3DC 8006323C 24020002 */ li $v0, 2
-/* ADA3E0 80063240 AC6F0004 */ sw $t7, 4($v1)
-/* ADA3E4 80063244 8DD80008 */ lw $t8, 8($t6)
-/* ADA3E8 80063248 AC780008 */ sw $t8, 8($v1)
-/* ADA3EC 8006324C 8F2A0000 */ lw $t2, ($t9)
-/* ADA3F0 80063250 AC8A0000 */ sw $t2, ($a0)
-/* ADA3F4 80063254 8F290004 */ lw $t1, 4($t9)
-/* ADA3F8 80063258 AC890004 */ sw $t1, 4($a0)
-/* ADA3FC 8006325C 8F2A0008 */ lw $t2, 8($t9)
-/* ADA400 80063260 100000D9 */ b .L800635C8
-/* ADA404 80063264 AC8A0008 */ sw $t2, 8($a0)
-.L80063268:
-/* ADA408 80063268 10A0000A */ beqz $a1, .L80063294
-/* ADA40C 8006326C 8FA30090 */ lw $v1, 0x90($sp)
-/* ADA410 80063270 27AB006C */ addiu $t3, $sp, 0x6c
-/* ADA414 80063274 8D6D0000 */ lw $t5, ($t3)
-/* ADA418 80063278 24020001 */ li $v0, 1
-/* ADA41C 8006327C AC6D0000 */ sw $t5, ($v1)
-/* ADA420 80063280 8D6C0004 */ lw $t4, 4($t3)
-/* ADA424 80063284 AC6C0004 */ sw $t4, 4($v1)
-/* ADA428 80063288 8D6D0008 */ lw $t5, 8($t3)
-/* ADA42C 8006328C 100000CE */ b .L800635C8
-/* ADA430 80063290 AC6D0008 */ sw $t5, 8($v1)
-.L80063294:
-/* ADA434 80063294 1080000A */ beqz $a0, .L800632C0
-/* ADA438 80063298 8FA30090 */ lw $v1, 0x90($sp)
-/* ADA43C 8006329C 27AE0060 */ addiu $t6, $sp, 0x60
-/* ADA440 800632A0 8DD80000 */ lw $t8, ($t6)
-/* ADA444 800632A4 24020001 */ li $v0, 1
-/* ADA448 800632A8 AC780000 */ sw $t8, ($v1)
-/* ADA44C 800632AC 8DCF0004 */ lw $t7, 4($t6)
-/* ADA450 800632B0 AC6F0004 */ sw $t7, 4($v1)
-/* ADA454 800632B4 8DD80008 */ lw $t8, 8($t6)
-/* ADA458 800632B8 100000C3 */ b .L800635C8
-/* ADA45C 800632BC AC780008 */ sw $t8, 8($v1)
-.L800632C0:
-/* ADA460 800632C0 100000C1 */ b .L800635C8
-/* ADA464 800632C4 00001025 */ move $v0, $zero
-.L800632C8:
-/* ADA468 800632C8 5440000E */ bnezl $v0, .L80063304
-/* ADA46C 800632CC 4612803C */ c.lt.s $f16, $f18
-/* ADA470 800632D0 4612803C */ c.lt.s $f16, $f18
-/* ADA474 800632D4 3C013F80 */ li $at, 0x3F800000 # 0.000000
-/* ADA478 800632D8 45010007 */ bc1t .L800632F8
-/* ADA47C 800632DC 00000000 */ nop
-/* ADA480 800632E0 44813000 */ mtc1 $at, $f6
-/* ADA484 800632E4 00000000 */ nop
-/* ADA488 800632E8 4610303C */ c.lt.s $f6, $f16
-/* ADA48C 800632EC 00000000 */ nop
-/* ADA490 800632F0 4500002E */ bc1f .L800633AC
-/* ADA494 800632F4 00000000 */ nop
-.L800632F8:
-/* ADA498 800632F8 100000B3 */ b .L800635C8
-/* ADA49C 800632FC 00001025 */ move $v0, $zero
-/* ADA4A0 80063300 4612803C */ c.lt.s $f16, $f18
-.L80063304:
-/* ADA4A4 80063304 00002825 */ move $a1, $zero
-/* ADA4A8 80063308 3C013F80 */ li $at, 0x3F800000 # 0.000000
-/* ADA4AC 8006330C 45000002 */ bc1f .L80063318
-/* ADA4B0 80063310 00000000 */ nop
-/* ADA4B4 80063314 24050001 */ li $a1, 1
-.L80063318:
-/* ADA4B8 80063318 14A00008 */ bnez $a1, .L8006333C
-/* ADA4BC 8006331C 00A02025 */ move $a0, $a1
-/* ADA4C0 80063320 44812000 */ mtc1 $at, $f4
-/* ADA4C4 80063324 00002025 */ move $a0, $zero
-/* ADA4C8 80063328 4610203C */ c.lt.s $f4, $f16
-/* ADA4CC 8006332C 00000000 */ nop
-/* ADA4D0 80063330 45020003 */ bc1fl .L80063340
-/* ADA4D4 80063334 4612603C */ c.lt.s $f12, $f18
-/* ADA4D8 80063338 24040001 */ li $a0, 1
-.L8006333C:
-/* ADA4DC 8006333C 4612603C */ c.lt.s $f12, $f18
-.L80063340:
-/* ADA4E0 80063340 00802825 */ move $a1, $a0
-/* ADA4E4 80063344 00003025 */ move $a2, $zero
-/* ADA4E8 80063348 3C013F80 */ li $at, 0x3F800000 # 0.000000
-/* ADA4EC 8006334C 45000002 */ bc1f .L80063358
-/* ADA4F0 80063350 00000000 */ nop
-/* ADA4F4 80063354 24060001 */ li $a2, 1
-.L80063358:
-/* ADA4F8 80063358 14C00008 */ bnez $a2, .L8006337C
-/* ADA4FC 8006335C 00C02025 */ move $a0, $a2
-/* ADA500 80063360 44814000 */ mtc1 $at, $f8
-/* ADA504 80063364 00002025 */ move $a0, $zero
-/* ADA508 80063368 460C403C */ c.lt.s $f8, $f12
-/* ADA50C 8006336C 00000000 */ nop
-/* ADA510 80063370 45000002 */ bc1f .L8006337C
-/* ADA514 80063374 00000000 */ nop
-/* ADA518 80063378 24040001 */ li $a0, 1
-.L8006337C:
-/* ADA51C 8006337C 10A00005 */ beqz $a1, .L80063394
-/* ADA520 80063380 00000000 */ nop
-/* ADA524 80063384 10800003 */ beqz $a0, .L80063394
-/* ADA528 80063388 00000000 */ nop
-/* ADA52C 8006338C 1000008E */ b .L800635C8
-/* ADA530 80063390 00001025 */ move $v0, $zero
-.L80063394:
-/* ADA534 80063394 10A00002 */ beqz $a1, .L800633A0
-/* ADA538 80063398 00000000 */ nop
-/* ADA53C 8006339C 00001825 */ move $v1, $zero
-.L800633A0:
-/* ADA540 800633A0 10800002 */ beqz $a0, .L800633AC
-/* ADA544 800633A4 00000000 */ nop
-/* ADA548 800633A8 00001025 */ move $v0, $zero
-.L800633AC:
-/* ADA54C 800633AC 1468000F */ bne $v1, $t0, .L800633EC
-/* ADA550 800633B0 C7AA0018 */ lwc1 $f10, 0x18($sp)
-/* ADA554 800633B4 460A8182 */ mul.s $f6, $f16, $f10
-/* ADA558 800633B8 C7A40070 */ lwc1 $f4, 0x70($sp)
-/* ADA55C 800633BC 44804000 */ mtc1 $zero, $f8
-/* ADA560 800633C0 C7AA007C */ lwc1 $f10, 0x7c($sp)
-/* ADA564 800633C4 46043000 */ add.s $f0, $f6, $f4
-/* ADA568 800633C8 4608003C */ c.lt.s $f0, $f8
-/* ADA56C 800633CC 00000000 */ nop
-/* ADA570 800633D0 45030006 */ bc1tl .L800633EC
-/* ADA574 800633D4 00001825 */ move $v1, $zero
-/* ADA578 800633D8 4600503C */ c.lt.s $f10, $f0
-/* ADA57C 800633DC 00000000 */ nop
-/* ADA580 800633E0 45000002 */ bc1f .L800633EC
-/* ADA584 800633E4 00000000 */ nop
-/* ADA588 800633E8 00001825 */ move $v1, $zero
-.L800633EC:
-/* ADA58C 800633EC 1448000F */ bne $v0, $t0, .L8006342C
-/* ADA590 800633F0 C7A60018 */ lwc1 $f6, 0x18($sp)
-/* ADA594 800633F4 46066102 */ mul.s $f4, $f12, $f6
-/* ADA598 800633F8 C7A80070 */ lwc1 $f8, 0x70($sp)
-/* ADA59C 800633FC 44805000 */ mtc1 $zero, $f10
-/* ADA5A0 80063400 C7A6007C */ lwc1 $f6, 0x7c($sp)
-/* ADA5A4 80063404 46082000 */ add.s $f0, $f4, $f8
-/* ADA5A8 80063408 460A003C */ c.lt.s $f0, $f10
-/* ADA5AC 8006340C 00000000 */ nop
-/* ADA5B0 80063410 45030006 */ bc1tl .L8006342C
-/* ADA5B4 80063414 00001025 */ move $v0, $zero
-/* ADA5B8 80063418 4600303C */ c.lt.s $f6, $f0
-/* ADA5BC 8006341C 00000000 */ nop
-/* ADA5C0 80063420 45000002 */ bc1f .L8006342C
-/* ADA5C4 80063424 00000000 */ nop
-/* ADA5C8 80063428 00001025 */ move $v0, $zero
-.L8006342C:
-/* ADA5CC 8006342C 14600005 */ bnez $v1, .L80063444
-/* ADA5D0 80063430 00000000 */ nop
-/* ADA5D4 80063434 14400003 */ bnez $v0, .L80063444
-/* ADA5D8 80063438 00000000 */ nop
-/* ADA5DC 8006343C 10000062 */ b .L800635C8
-/* ADA5E0 80063440 00001025 */ move $v0, $zero
-.L80063444:
-/* ADA5E4 80063444 1468002D */ bne $v1, $t0, .L800634FC
-/* ADA5E8 80063448 00000000 */ nop
-/* ADA5EC 8006344C 1448002B */ bne $v0, $t0, .L800634FC
-/* ADA5F0 80063450 C7A00054 */ lwc1 $f0, 0x54($sp)
-/* ADA5F4 80063454 46008102 */ mul.s $f4, $f16, $f0
-/* ADA5F8 80063458 C7A8006C */ lwc1 $f8, 0x6c($sp)
-/* ADA5FC 8006345C C4E60000 */ lwc1 $f6, ($a3)
-/* ADA600 80063460 C7A20058 */ lwc1 $f2, 0x58($sp)
-/* ADA604 80063464 8FA30090 */ lw $v1, 0x90($sp)
-/* ADA608 80063468 8FA40094 */ lw $a0, 0x94($sp)
-/* ADA60C 8006346C C7AE005C */ lwc1 $f14, 0x5c($sp)
-/* ADA610 80063470 46082280 */ add.s $f10, $f4, $f8
-/* ADA614 80063474 46028202 */ mul.s $f8, $f16, $f2
-/* ADA618 80063478 24020002 */ li $v0, 2
-/* ADA61C 8006347C 46065100 */ add.s $f4, $f10, $f6
-/* ADA620 80063480 E4640000 */ swc1 $f4, ($v1)
-/* ADA624 80063484 C7AA0070 */ lwc1 $f10, 0x70($sp)
-/* ADA628 80063488 C4E40004 */ lwc1 $f4, 4($a3)
-/* ADA62C 8006348C 460A4180 */ add.s $f6, $f8, $f10
-/* ADA630 80063490 460E8282 */ mul.s $f10, $f16, $f14
-/* ADA634 80063494 46043200 */ add.s $f8, $f6, $f4
-/* ADA638 80063498 E4680004 */ swc1 $f8, 4($v1)
-/* ADA63C 8006349C C7A60074 */ lwc1 $f6, 0x74($sp)
-/* ADA640 800634A0 C4E80008 */ lwc1 $f8, 8($a3)
-/* ADA644 800634A4 46065100 */ add.s $f4, $f10, $f6
-/* ADA648 800634A8 46006182 */ mul.s $f6, $f12, $f0
-/* ADA64C 800634AC 46082280 */ add.s $f10, $f4, $f8
-/* ADA650 800634B0 E46A0008 */ swc1 $f10, 8($v1)
-/* ADA654 800634B4 C7A4006C */ lwc1 $f4, 0x6c($sp)
-/* ADA658 800634B8 C4EA0000 */ lwc1 $f10, ($a3)
-/* ADA65C 800634BC 46043200 */ add.s $f8, $f6, $f4
-/* ADA660 800634C0 46026102 */ mul.s $f4, $f12, $f2
-/* ADA664 800634C4 460A4180 */ add.s $f6, $f8, $f10
-/* ADA668 800634C8 E4860000 */ swc1 $f6, ($a0)
-/* ADA66C 800634CC C7A80070 */ lwc1 $f8, 0x70($sp)
-/* ADA670 800634D0 C4E60004 */ lwc1 $f6, 4($a3)
-/* ADA674 800634D4 46082280 */ add.s $f10, $f4, $f8
-/* ADA678 800634D8 460E6202 */ mul.s $f8, $f12, $f14
-/* ADA67C 800634DC 46065100 */ add.s $f4, $f10, $f6
-/* ADA680 800634E0 E4840004 */ swc1 $f4, 4($a0)
-/* ADA684 800634E4 C7AA0074 */ lwc1 $f10, 0x74($sp)
-/* ADA688 800634E8 C4E40008 */ lwc1 $f4, 8($a3)
-/* ADA68C 800634EC 460A4180 */ add.s $f6, $f8, $f10
-/* ADA690 800634F0 46043200 */ add.s $f8, $f6, $f4
-/* ADA694 800634F4 10000034 */ b .L800635C8
-/* ADA698 800634F8 E4880008 */ swc1 $f8, 8($a0)
-.L800634FC:
-/* ADA69C 800634FC 14680018 */ bne $v1, $t0, .L80063560
-/* ADA6A0 80063500 C7AA0054 */ lwc1 $f10, 0x54($sp)
-/* ADA6A4 80063504 460A8182 */ mul.s $f6, $f16, $f10
-/* ADA6A8 80063508 C7A4006C */ lwc1 $f4, 0x6c($sp)
-/* ADA6AC 8006350C C4EA0000 */ lwc1 $f10, ($a3)
-/* ADA6B0 80063510 8FA30090 */ lw $v1, 0x90($sp)
-/* ADA6B4 80063514 24020001 */ li $v0, 1
-/* ADA6B8 80063518 46043200 */ add.s $f8, $f6, $f4
-/* ADA6BC 8006351C 460A4180 */ add.s $f6, $f8, $f10
-/* ADA6C0 80063520 E4660000 */ swc1 $f6, ($v1)
-/* ADA6C4 80063524 C7A40058 */ lwc1 $f4, 0x58($sp)
-/* ADA6C8 80063528 C7AA0070 */ lwc1 $f10, 0x70($sp)
-/* ADA6CC 8006352C 46048202 */ mul.s $f8, $f16, $f4
-/* ADA6D0 80063530 C4E40004 */ lwc1 $f4, 4($a3)
-/* ADA6D4 80063534 460A4180 */ add.s $f6, $f8, $f10
-/* ADA6D8 80063538 46043200 */ add.s $f8, $f6, $f4
-/* ADA6DC 8006353C E4680004 */ swc1 $f8, 4($v1)
-/* ADA6E0 80063540 C7AA005C */ lwc1 $f10, 0x5c($sp)
-/* ADA6E4 80063544 C7A40074 */ lwc1 $f4, 0x74($sp)
-/* ADA6E8 80063548 460A8182 */ mul.s $f6, $f16, $f10
-/* ADA6EC 8006354C C4EA0008 */ lwc1 $f10, 8($a3)
-/* ADA6F0 80063550 46043200 */ add.s $f8, $f6, $f4
-/* ADA6F4 80063554 460A4180 */ add.s $f6, $f8, $f10
-/* ADA6F8 80063558 1000001B */ b .L800635C8
-/* ADA6FC 8006355C E4660008 */ swc1 $f6, 8($v1)
-.L80063560:
-/* ADA700 80063560 14480018 */ bne $v0, $t0, .L800635C4
-/* ADA704 80063564 C7A40054 */ lwc1 $f4, 0x54($sp)
-/* ADA708 80063568 46046202 */ mul.s $f8, $f12, $f4
-/* ADA70C 8006356C C7AA006C */ lwc1 $f10, 0x6c($sp)
-/* ADA710 80063570 C4E40000 */ lwc1 $f4, ($a3)
-/* ADA714 80063574 8FA30090 */ lw $v1, 0x90($sp)
-/* ADA718 80063578 24020001 */ li $v0, 1
-/* ADA71C 8006357C 460A4180 */ add.s $f6, $f8, $f10
-/* ADA720 80063580 46043200 */ add.s $f8, $f6, $f4
-/* ADA724 80063584 E4680000 */ swc1 $f8, ($v1)
-/* ADA728 80063588 C7AA0058 */ lwc1 $f10, 0x58($sp)
-/* ADA72C 8006358C C7A40070 */ lwc1 $f4, 0x70($sp)
-/* ADA730 80063590 460A6182 */ mul.s $f6, $f12, $f10
-/* ADA734 80063594 C4EA0004 */ lwc1 $f10, 4($a3)
-/* ADA738 80063598 46043200 */ add.s $f8, $f6, $f4
-/* ADA73C 8006359C 460A4180 */ add.s $f6, $f8, $f10
-/* ADA740 800635A0 E4660004 */ swc1 $f6, 4($v1)
-/* ADA744 800635A4 C7A4005C */ lwc1 $f4, 0x5c($sp)
-/* ADA748 800635A8 C7AA0074 */ lwc1 $f10, 0x74($sp)
-/* ADA74C 800635AC 46046202 */ mul.s $f8, $f12, $f4
-/* ADA750 800635B0 C4E40008 */ lwc1 $f4, 8($a3)
-/* ADA754 800635B4 460A4180 */ add.s $f6, $f8, $f10
-/* ADA758 800635B8 46043200 */ add.s $f8, $f6, $f4
-/* ADA75C 800635BC 10000002 */ b .L800635C8
-/* ADA760 800635C0 E4680008 */ swc1 $f8, 8($v1)
-.L800635C4:
-/* ADA764 800635C4 24020001 */ li $v0, 1
-.L800635C8:
-/* ADA768 800635C8 03E00008 */ jr $ra
-/* ADA76C 800635CC 27BD0078 */ addiu $sp, $sp, 0x78
diff --git a/include/functions.h b/include/functions.h
index 9058c36e8..091a889ce 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -672,7 +672,8 @@ s32 func_80042048(CollisionContext*, CollisionPoly*, s32);
// ? func_80042108(?);
s32 func_8004213C(GlobalContext*, CollisionContext*, f32, f32, f32*, WaterBox**);
s32 func_8004239C(GlobalContext* globalCtx, CollisionContext* colCtx, Vec3f* arg2, f32 arg3, WaterBox** arg4);
-s32 func_80042244(GlobalContext* globalCtx, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
+s32 func_80042244(GlobalContext* globalCtx, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface,
+ WaterBox** outWaterBox);
u32 func_80042538(CollisionContext* colCtx, WaterBox* waterBox);
u16 func_80042548(CollisionContext* colCtx, WaterBox* waterBox);
u32 func_8004259C(CollisionContext* colCtx, WaterBox* waterBox);
@@ -720,11 +721,11 @@ s32 Camera_ChangeDoorCam(Camera* camera, Actor* doorActor, s16 camDataIdx, f32 a
s16 timer3);
s32 Camera_Copy(Camera* dstCamera, Camera* srcCamera);
Vec3f* Camera_GetSkyboxOffset(Vec3f* dst, Camera* camera);
-void Camera_SetCameraData(Camera* camera, s16 setDataFlags, void* data0,
- void* data1, s16 data2, s16 data3, UNK_TYPE arg6);
+void Camera_SetCameraData(Camera* camera, s16 setDataFlags, void* data0, void* data1, s16 data2, s16 data3,
+ UNK_TYPE arg6);
DamageTable* DamageTable_Get(s32 index);
-// ? func_8005B280(?);
-void func_8005B2AC(GraphicsContext* gfx, Vec3f* vA, Vec3f* vB, Vec3f* vC, u8 r, u8 g, u8 b);
+void func_8005B280(GraphicsContext* gfxCtx, Vec3f* vA, Vec3f* vB, Vec3f* vC);
+void func_8005B2AC(GraphicsContext* gfxCtx, Vec3f* vA, Vec3f* vB, Vec3f* vC, u8 r, u8 g, u8 b);
s32 Collider_InitBase(GlobalContext* globalCtx, Collider* collider);
s32 Collider_DestroyBase(GlobalContext* globalCtx, Collider* collider);
s32 Collider_SetBase_Actor(GlobalContext* globalCtx, Collider* collider, ColliderInit_Actor* src);
@@ -859,7 +860,8 @@ void func_80062D60(GlobalContext* globalCtx, Vec3f* v);
void func_80062DAC(GlobalContext* globalCtx, Vec3f* v, Vec3f* arg2);
void func_80062DF4(GlobalContext* globalCtx, Vec3f* v);
void func_80062E14(GlobalContext* globalCtx, Vec3f* arg1, Vec3f* arg2);
-s32 func_80062ECC(f32, f32, f32, Vec3f*, Vec3f*, Vec3f*, Vec3f*, Vec3f*);
+s32 func_80062ECC(f32 radius, f32 height, f32 offset, Vec3f* actorPos, Vec3f* itemPos, Vec3f* itemProjPos, Vec3f* out1,
+ Vec3f* out2);
void SaveContext_Init(void);
// ? func_800636C0(?);
void func_8006375C(s32 arg0, s32 arg1, const char* text);
@@ -1302,9 +1304,9 @@ void func_800A43B8(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimation
LinkAnimationHeader* linkAnimSeg2, f32 frame, f32 transitionRate, Vec3s* arg7);
s32 func_800A4530(SkelAnime* skelAnime, f32 arg1);
s32 SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
- AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount);
+ AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount);
s32 SkelAnime_InitFlex(GlobalContext* globalCtx, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg,
- AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount);
+ AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount);
void SkelAnime_InitSkin(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
AnimationHeader* animationseg);
s32 SkelAnime_FrameUpdateMatrix(SkelAnime* skelAnime);
diff --git a/src/code/z_collision_check.c b/src/code/z_collision_check.c
index 0554c3d24..42772dfdd 100644
--- a/src/code/z_collision_check.c
+++ b/src/code/z_collision_check.c
@@ -2,12 +2,65 @@
#include "vt.h"
// draw red poly
-void func_8005B280(GraphicsContext* gfx, Vec3f* vA, Vec3f* vB, Vec3f* vC) {
- func_8005B2AC(gfx, vA, vB, vC, 255, 0, 0);
+void func_8005B280(GraphicsContext* gfxCtx, Vec3f* vA, Vec3f* vB, Vec3f* vC) {
+ func_8005B2AC(gfxCtx, vA, vB, vC, 255, 0, 0);
}
// draw poly
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005B2AC.s")
+void func_8005B2AC(GraphicsContext* gfxCtx, Vec3f* vA, Vec3f* vB, Vec3f* vC, u8 r, u8 g, u8 b) {
+ Vtx* vtxTbl;
+ Vtx* vtx;
+ f32 nx;
+ f32 ny;
+ f32 nz;
+ f32 originDist;
+
+ OPEN_DISPS(gfxCtx, "../z_collision_check.c", 713);
+
+ gSPMatrix(POLY_OPA_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
+ gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0xFF, r, g, b, 50);
+ gDPPipeSync(POLY_OPA_DISP++);
+ gDPSetRenderMode(POLY_OPA_DISP++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2);
+ gSPTexture(POLY_OPA_DISP++, 0, 0, 0, G_TX_RENDERTILE, G_OFF);
+ gDPPipeSync(POLY_OPA_DISP++);
+ gDPSetCombineLERP(POLY_OPA_DISP++, SHADE, 0, PRIMITIVE, 0, SHADE, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0,
+ COMBINED);
+ gSPClearGeometryMode(POLY_OPA_DISP++, G_CULL_BOTH);
+ gSPSetGeometryMode(POLY_OPA_DISP++, G_LIGHTING);
+ gDPPipeSync(POLY_OPA_DISP++);
+
+ vtxTbl = Graph_Alloc(gfxCtx, 3 * sizeof(Vtx));
+ if (vtxTbl == NULL) {
+ __assert("vtx_tbl != NULL", "../z_collision_check.c", 726);
+ }
+
+ vtxTbl[0].n.ob[0] = vA->x;
+ vtxTbl[0].n.ob[1] = vA->y;
+ vtxTbl[0].n.ob[2] = vA->z;
+ vtxTbl[1].n.ob[0] = vB->x;
+ vtxTbl[1].n.ob[1] = vB->y;
+ vtxTbl[1].n.ob[2] = vB->z;
+ vtxTbl[2].n.ob[0] = vC->x;
+ vtxTbl[2].n.ob[1] = vC->y;
+ vtxTbl[2].n.ob[2] = vC->z;
+
+ Math3D_DefPlane(vA, vB, vC, &nx, &ny, &nz, &originDist);
+
+ for (vtx = vtxTbl; vtx < vtxTbl + 3; vtx++) {
+ vtx->n.flag = 0;
+ vtx->n.tc[0] = 0;
+ vtx->n.tc[1] = 0;
+ vtx->n.n[0] = (u8)(s32)nx & 0xFF;
+ vtx->n.n[1] = (u8)(s32)ny & 0xFF;
+ vtx->n.n[2] = (u8)(s32)nz & 0xFF;
+ vtx->n.a = 255;
+ }
+
+ gSPVertex(POLY_OPA_DISP++, vtxTbl, 3, 0);
+ gSP1Triangle(POLY_OPA_DISP++, 0, 1, 2, 0);
+
+ CLOSE_DISPS(gfxCtx, "../z_collision_check.c", 757);
+}
s32 Collider_InitBase(GlobalContext* globalCtx, Collider* collider) {
static Collider init = { NULL, NULL, NULL, NULL, 0, 0, 0, 0, COLTYPE_UNK3, COLSHAPE_INVALID };
@@ -1979,6 +2032,7 @@ void CollisionCheck_AC_CylVsQuad(GlobalContext* globalCtx, CollisionCheckContext
}
}
+static s8 sBssDummy0;
static s8 sBssDummy1;
static s8 sBssDummy2;
@@ -3106,228 +3160,151 @@ void func_80062E14(GlobalContext* globalCtx, Vec3f* v, Vec3f* arg2) {
Audio_PlaySoundGeneral(NA_SE_IT_REFLECTION_WOOD, arg2, 4, &D_801333E0, &D_801333E0, &D_801333E8);
}
-#ifdef NON_EQUIVALENT
-// Incomplete, possibly not using the same logic
-s32 func_80062ECC(f32 actor_ac_98_10, f32 actor_ac_98_12, f32 arg2, Vec3f* ac_actor_pos, Vec3f* at_actor_pos,
- Vec3f* arg5, Vec3f* arg6, Vec3f* arg7) {
- // arg5 = SP + 0xA8, unk input
- // arg6 = SP + 0x90, unk output
- // arg7 = SP + 0x84, unk output2
- // sp -0x78
-
- Vec3f delta_a3_a4_sp6C;
- Vec3f delta_a3_a5_sp60;
- Vec3f delta_a4_a5_sp54;
+#define SQXZ(vec) (SQ(vec.x) + SQ(vec.z))
+#define DOTXZ(vec1, vec2) ((vec1.x) * (vec2.x) + (vec1.z) * (vec2.z))
+
+/*
+ * Determines if the line segment connecting itemPos and itemProjPos intersects the side of a cylinder with the given
+ * radius, height, and offset at actorPos. Returns 3 if either endpoint is inside the cylinder, otherwise returns the
+ * number of points of intersection with the side of the cylinder. The locations of those points are put in out1 and
+ * out2, with out1 being closer to itemPos. Line segments that pass through both bases of the cylinder are not detected.
+ */
+s32 func_80062ECC(f32 radius, f32 height, f32 offset, Vec3f* actorPos, Vec3f* itemPos, Vec3f* itemProjPos, Vec3f* out1,
+ Vec3f* out2) {
+ Vec3f actorToItem;
+ Vec3f actorToItemProj;
+ Vec3f itemStep;
f32 sp50;
f32 sp4C;
- f32 temp_f0;
- f32 temp_f0_3;
- f32 temp_f12;
- f32 temp_f14;
+ u32 phi_v0;
+ u32 phi_v1;
+ u32 phi_a1;
+ u32 phi_a2;
f32 sp38;
- f32 temp_f16_2;
+ f32 temp_f14;
f32 temp_f2;
- s32 phi_v0;
- s32 phi_v1;
- s32 phi_a0;
- s32 phi_a1;
- s32 phi_a2;
+ f32 zero = 0.0f;
+ f32 temp_f0;
+ f32 pad;
- delta_a3_a4_sp6C.x = at_actor_pos->x - ac_actor_pos->x;
- delta_a3_a4_sp6C.y = at_actor_pos->y - ac_actor_pos->y - arg2; // temp_f14
- delta_a3_a4_sp6C.z = at_actor_pos->z - ac_actor_pos->z;
+ actorToItem.x = itemPos->x - actorPos->x;
+ actorToItem.y = itemPos->y - actorPos->y - offset;
+ actorToItem.z = itemPos->z - actorPos->z;
- delta_a3_a5_sp60.x = arg5->x - ac_actor_pos->x;
- delta_a3_a5_sp60.y = arg5->y - ac_actor_pos->y - arg2; // temp_f6
- delta_a3_a5_sp60.z = arg5->z - ac_actor_pos->z;
+ actorToItemProj.x = itemProjPos->x - actorPos->x;
+ actorToItemProj.y = itemProjPos->y - actorPos->y - offset;
+ actorToItemProj.z = itemProjPos->z - actorPos->z;
- delta_a4_a5_sp54.x = delta_a3_a5_sp60.x - delta_a3_a4_sp6C.x; // temp_f16;
- delta_a4_a5_sp54.y = delta_a3_a5_sp60.y - delta_a3_a4_sp6C.y; // sp18; // temp_f8;
- delta_a4_a5_sp54.z = delta_a3_a5_sp60.z - delta_a3_a4_sp6C.z; // temp_f18;
+ itemStep.x = actorToItemProj.x - actorToItem.x;
+ itemStep.y = actorToItemProj.y - actorToItem.y;
+ itemStep.z = actorToItemProj.z - actorToItem.z;
- phi_v0 = 0;
- // ada12c: bc1f 0xada138 ~>
- if (0.0f < delta_a3_a4_sp6C.y) {
- phi_v0 = 1;
- }
- // ada138: beqzl v0,0xada188 ~>
- if (phi_v0 && delta_a3_a4_sp6C.y < actor_ac_98_12) {
- if (sqrtf(SQ(delta_a3_a4_sp6C.x) + SQ(delta_a3_a4_sp6C.z)) < actor_ac_98_10) {
- return 3;
- }
+ if ((actorToItem.y > 0.0f) && (actorToItem.y < height) && (sqrtf(SQ(actorToItem.x) + SQ(actorToItem.z)) < radius)) {
+ return 3;
}
- phi_v1 = 0;
- if (0.0f < delta_a3_a5_sp60.y) { // ada19c: bc1f 0xada1a8 ~>
- phi_v1 = 1;
- }
- // ada1a8: beqzl v1,0xada1f4 ~>
- if (phi_v1 && delta_a3_a5_sp60.y < actor_ac_98_12) {
- if (sqrtf(SQ(delta_a3_a5_sp60.x) + SQ(delta_a3_a5_sp60.z)) < actor_ac_98_10) {
- return 3;
- }
+ if ((actorToItemProj.y > 0.0f) && (actorToItemProj.y < height) &&
+ (sqrtf(SQ(actorToItemProj.x) + SQ(actorToItemProj.z)) < radius)) {
+ return 3;
}
-
- // ada1f4
- sp38 = SQ(delta_a3_a4_sp6C.x) + SQ(delta_a3_a4_sp6C.z) - SQ(actor_ac_98_10); // temp_f12;
- temp_f2 = SQ(delta_a4_a5_sp54.x) + SQ(delta_a4_a5_sp54.z);
- if (!(fabsf(temp_f2) < 0.008f)) { // ada23c: bc1t 0xada2f0 ~>
- temp_f14 = (delta_a4_a5_sp54.x + delta_a4_a5_sp54.x) * delta_a3_a4_sp6C.x +
- (delta_a4_a5_sp54.z + delta_a4_a5_sp54.z) * delta_a3_a4_sp6C.z;
- temp_f0 = SQ(temp_f14);
- temp_f12 = (4.0f * temp_f2) * sp38;
- if (temp_f0 < temp_f12) { // ada280: bc1f 0xada290 ~>
+ sp38 = SQXZ(actorToItem) - SQ(radius);
+ temp_f2 = SQXZ(itemStep);
+ if (!IS_ZERO(temp_f2)) {
+ temp_f14 = DOTXZ(2.0f * itemStep, actorToItem);
+ if (SQ(temp_f14) < (4.0f * temp_f2) * sp38) {
return 0;
}
- // ada290
- temp_f16_2 = temp_f0 - temp_f12;
- temp_f0 = sqrtf(temp_f16_2);
- if (0.0f < temp_f16_2) {
- phi_v0 = 1;
- phi_v1 = 1;
+ if (SQ(temp_f14) - ((4.0f * temp_f2) * sp38) > zero) {
+ phi_v1 = phi_v0 = 1;
} else {
- phi_v0 = 0;
phi_v1 = 1;
+ phi_v0 = 0;
+ }
+ temp_f0 = sqrtf(SQ(temp_f14) - (4.0f * temp_f2) * sp38);
+ if (phi_v1 == 1) {
+ sp50 = (temp_f0 - temp_f14) / (2.0f * temp_f2);
}
-
- sp50 = (temp_f0 - temp_f14) / (temp_f2 + temp_f2); // temp_f16_3;
if (phi_v0 == 1) {
- sp4C = (-temp_f14 - temp_f0) / (temp_f2 + temp_f2);
+ sp4C = (-temp_f14 - temp_f0) / (2.0f * temp_f2);
}
- } else { // 0xada2f0
- temp_f14 = ((delta_a4_a5_sp54.x + delta_a4_a5_sp54.x) * delta_a3_a4_sp6C.x) +
- ((delta_a4_a5_sp54.z + delta_a4_a5_sp54.z) * delta_a3_a4_sp6C.z);
- if (!(fabsf(temp_f14) < 0.008f)) { // ada324
- phi_v0 = 0;
- sp50 = -sp38 / temp_f14;
- phi_v1 = 1;
- } // ada340: b 0xada468
- else {
- if (sp38 <= 0.0f) { // ada358: bc1f 0xada460
- phi_a0 = phi_v0;
- if (phi_v0 != 0) // ada360: beqz v0,0xada388 ~>
- {
- phi_a0 = 0;
- // ada37C
- if (delta_a3_a4_sp6C.y < actor_ac_98_12) {
- phi_a0 = 1;
- }
- }
- phi_a1 = phi_a0;
- // ada38C
- phi_a0 = phi_v1;
- if (phi_v1 != 0) {
- phi_a0 = 0;
- if (delta_a3_a5_sp60.y < actor_ac_98_12) {
- phi_a0 = 1;
- }
- }
- if (phi_a1) { // ada3b4
- if (phi_a0) { // ada3bc
- *arg6 = delta_a3_a4_sp6C;
- *arg7 = delta_a3_a5_sp60;
- return 2;
- }
- }
- // ada408
- if (phi_a1) {
- *arg6 = delta_a3_a4_sp6C;
- return 1;
- }
- // ada434
- if (phi_a0) {
- *arg6 = delta_a3_a5_sp60;
- return 1;
- }
+
+ } else if (!IS_ZERO(DOTXZ(2.0f * itemStep, actorToItem))) {
+ phi_v1 = 1;
+ phi_v0 = 0;
+ sp50 = -sp38 / DOTXZ(2.0f * itemStep, actorToItem);
+ } else {
+ if (sp38 <= 0.0f) {
+ phi_a1 = (0.0f < actorToItem.y) && (actorToItem.y < height);
+ phi_a2 = (0.0f < actorToItemProj.y) && (actorToItemProj.y < height);
+
+ if (phi_a1 && phi_a2) {
+ *out1 = actorToItem;
+ *out2 = actorToItemProj;
+ return 2;
+ }
+ if (phi_a1) {
+ *out1 = actorToItem;
+ return 1;
+ }
+ if (phi_a2) {
+ *out1 = actorToItemProj;
+ return 1;
}
- // ada460
- return 0;
}
+ return 0;
}
- // ada468 800632C8
- if (phi_v0 == 0) { // ada468: bnezl v0,0xada4a4 ~>
+
+ if (phi_v0 == 0) {
if (sp50 < 0.0f || 1.0f < sp50) {
return 0;
}
- } else { // ada4a4
- phi_a1 = 0;
- if (sp50 < 0.0f) { // ada4ac
- phi_a1 = 1;
- }
- // ada4b8
- phi_a0 = phi_a1;
- if (phi_a1 == 0) {
- phi_a1 = 0;
- if (1.0f < sp50) {
- phi_a1 = 1;
- }
- }
- // ada4dc
- phi_a2 = 0;
- if (sp4C < 0.0f) {
- phi_a2 = 1;
- }
- if (phi_a2 == 0) {
- phi_a2 = 0;
- if (1.0f < sp4C) {
- phi_a2 = 1;
- }
- }
- if (phi_a1 != 0) {
- if (phi_a2 != 0) {
- return 0;
- }
+ } else {
+ phi_a1 = (sp50 < 0.0f || 1.0f < sp50);
+ phi_a2 = (sp4C < 0.0f || 1.0f < sp4C);
+
+ if (phi_a1 && phi_a2) {
+ return 0;
}
- if (phi_a1 != 0) {
+ if (phi_a1) {
phi_v1 = 0;
}
- if (phi_a2 != 0) {
+ if (phi_a2) {
phi_v0 = 0;
}
}
- if (phi_v1 == 1) {
- temp_f0_3 = sp50 * delta_a4_a5_sp54.y + delta_a3_a4_sp6C.y;
- if (temp_f0_3 < 0.0f || actor_ac_98_12 < temp_f0_3) {
- phi_v1 = 0;
- }
+
+ if ((phi_v1 == 1) && ((sp50 * itemStep.y + actorToItem.y < 0.0f) || (height < sp50 * itemStep.y + actorToItem.y))) {
+ phi_v1 = 0;
}
- if (phi_v0 == 1) {
- temp_f0_3 = sp4C * delta_a4_a5_sp54.y + delta_a3_a4_sp6C.y;
- if (temp_f0_3 < 0.0f || actor_ac_98_12 < temp_f0_3) {
- phi_v0 = 0;
- }
+ if ((phi_v0 == 1) && ((sp4C * itemStep.y + actorToItem.y < 0.0f) || (height < sp4C * itemStep.y + actorToItem.y))) {
+ phi_v0 = 0;
}
if (phi_v1 == 0 && phi_v0 == 0) {
return 0;
- }
- if (phi_v1 == 1) {
- if (phi_v0 == 1) {
- arg6->x = sp50 * delta_a4_a5_sp54.x + delta_a3_a4_sp6C.x + ac_actor_pos->x;
- arg6->y = sp50 * delta_a4_a5_sp54.y + delta_a3_a4_sp6C.y + ac_actor_pos->y;
- arg6->z = sp50 * delta_a4_a5_sp54.z + delta_a3_a4_sp6C.z + ac_actor_pos->z;
- arg7->x = sp4C * delta_a4_a5_sp54.x + delta_a3_a4_sp6C.x + ac_actor_pos->x;
- arg7->y = sp4C * delta_a4_a5_sp54.y + delta_a3_a4_sp6C.y + ac_actor_pos->y;
- arg7->z = sp4C * delta_a4_a5_sp54.z + delta_a3_a4_sp6C.z + ac_actor_pos->z;
- return 2;
- }
- }
- if (phi_v1 == 1) {
- arg6->x = sp50 * delta_a4_a5_sp54.x + delta_a3_a4_sp6C.x + ac_actor_pos->x;
- arg6->y = sp50 * delta_a4_a5_sp54.y + delta_a3_a4_sp6C.y + ac_actor_pos->y;
- arg6->z = sp50 * delta_a4_a5_sp54.z + delta_a3_a4_sp6C.z + ac_actor_pos->z;
+ } else if ((phi_v1 == 1) && (phi_v0 == 1)) {
+ out1->x = sp50 * itemStep.x + actorToItem.x + actorPos->x;
+ out1->y = sp50 * itemStep.y + actorToItem.y + actorPos->y;
+ out1->z = sp50 * itemStep.z + actorToItem.z + actorPos->z;
+ out2->x = sp4C * itemStep.x + actorToItem.x + actorPos->x;
+ out2->y = sp4C * itemStep.y + actorToItem.y + actorPos->y;
+ out2->z = sp4C * itemStep.z + actorToItem.z + actorPos->z;
+ return 2;
+ } else if (phi_v1 == 1) {
+ out1->x = sp50 * itemStep.x + actorToItem.x + actorPos->x;
+ out1->y = sp50 * itemStep.y + actorToItem.y + actorPos->y;
+ out1->z = sp50 * itemStep.z + actorToItem.z + actorPos->z;
return 1;
- }
- if (phi_v0 == 1) { // ada700
- arg6->x = sp4C * delta_a4_a5_sp54.x + delta_a3_a4_sp6C.x + ac_actor_pos->x;
- arg6->y = sp4C * delta_a4_a5_sp54.y + delta_a3_a4_sp6C.y + ac_actor_pos->y;
- arg6->z = sp4C * delta_a4_a5_sp54.z + delta_a3_a4_sp6C.z + ac_actor_pos->z;
+ } else if (phi_v0 == 1) {
+ out1->x = sp4C * itemStep.x + actorToItem.x + actorPos->x;
+ out1->y = sp4C * itemStep.y + actorToItem.y + actorPos->y;
+ out1->z = sp4C * itemStep.z + actorToItem.z + actorPos->z;
return 1;
}
return 1;
}
-#else
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_80062ECC.s")
-#endif
+
+#undef SQXZ
+#undef DOTXZ
s32 func_800635D0(s32 arg0) {
s32 result;