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 20edfdc414..0000000000 --- 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 25add84ca1..0000000000 --- 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 9058c36e8d..091a889ce0 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 0554c3d247..42772dfdde 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 +#define SQXZ(vec) (SQ(vec.x) + SQ(vec.z)) +#define DOTXZ(vec1, vec2) ((vec1.x) * (vec2.x) + (vec1.z) * (vec2.z)) - Vec3f delta_a3_a4_sp6C; - Vec3f delta_a3_a5_sp60; - Vec3f delta_a4_a5_sp54; +/* + * 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; + if ((actorToItemProj.y > 0.0f) && (actorToItemProj.y < height) && + (sqrtf(SQ(actorToItemProj.x) + SQ(actorToItemProj.z)) < radius)) { + return 3; } - // 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; - } - } - - // 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); + } + if (phi_v0 == 1) { + sp4C = (-temp_f14 - temp_f0) / (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); - } - } 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; + } else { + phi_a1 = (sp50 < 0.0f || 1.0f < sp50); + phi_a2 = (sp4C < 0.0f || 1.0f < sp4C); + + if (phi_a1 && phi_a2) { + return 0; } - // 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; - } - } - 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;