From 1545c9f17189234eefcff61753810b14be875ca6 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 15 Apr 2022 13:17:06 +1000 Subject: [PATCH] Decompile cd00025410 --- src/include/lib/collision.h | 2 +- src/lib/collision.c | 81 +++++++++++-------------------------- 2 files changed, 24 insertions(+), 59 deletions(-) diff --git a/src/include/lib/collision.h b/src/include/lib/collision.h index b7e7595d5..c7ed0ee63 100644 --- a/src/include/lib/collision.h +++ b/src/include/lib/collision.h @@ -26,7 +26,7 @@ void cd00025254(struct coord *arg0, struct coord *arg1, struct coord *pos, struc void cd00025314(struct coord *pos, struct coord *arg1); bool cd00025364(struct coord *arg0, struct coord *arg1); u32 cd000253c4(void); -u32 cd00025410(void); +s32 cd00025410(f32 arg0, f32 arg1, f32 arg2, f32 arg3); u32 cd000254d8(void); f32 cd00025654(f32 x1, f32 z1, f32 x2, f32 z2, f32 x3, f32 z3); f32 cd00025724(f32 x1, f32 z1, f32 x2, f32 z2); diff --git a/src/lib/collision.c b/src/lib/collision.c index 26694fc28..a56b4d37c 100644 --- a/src/lib/collision.c +++ b/src/lib/collision.c @@ -323,64 +323,29 @@ glabel cd000253c4 /* 2540c: ac29f034 */ sw $t1,%lo(var8005f034)($at) ); -GLOBAL_ASM( -glabel cd00025410 -/* 25410: afa60008 */ sw $a2,0x8($sp) -/* 25414: c7a40008 */ lwc1 $f4,0x8($sp) -/* 25418: afa7000c */ sw $a3,0xc($sp) -/* 2541c: c7a6000c */ lwc1 $f6,0xc($sp) -/* 25420: 46047082 */ mul.s $f2,$f14,$f4 -/* 25424: 00000000 */ nop -/* 25428: 46066002 */ mul.s $f0,$f12,$f6 -/* 2542c: 4600103c */ c.lt.s $f2,$f0 -/* 25430: 00000000 */ nop -/* 25434: 45000003 */ bc1f .L00025444 -/* 25438: 00000000 */ nop -/* 2543c: 03e00008 */ jr $ra -/* 25440: 24020001 */ addiu $v0,$zero,0x1 -.L00025444: -/* 25444: 4602003c */ c.lt.s $f0,$f2 -/* 25448: c7a80008 */ lwc1 $f8,0x8($sp) -/* 2544c: 45000003 */ bc1f .L0002545c -/* 25450: 00000000 */ nop -/* 25454: 03e00008 */ jr $ra -/* 25458: 2402ffff */ addiu $v0,$zero,-1 -.L0002545c: -/* 2545c: 46086282 */ mul.s $f10,$f12,$f8 -/* 25460: 44800000 */ mtc1 $zero,$f0 -/* 25464: c7b0000c */ lwc1 $f16,0xc($sp) -/* 25468: 4600503c */ c.lt.s $f10,$f0 -/* 2546c: 00000000 */ nop -/* 25470: 45010006 */ bc1t .L0002548c -/* 25474: 00000000 */ nop -/* 25478: 46107482 */ mul.s $f18,$f14,$f16 -/* 2547c: 4600903c */ c.lt.s $f18,$f0 -/* 25480: 00000000 */ nop -/* 25484: 45000003 */ bc1f .L00025494 -/* 25488: 00000000 */ nop -.L0002548c: -/* 2548c: 03e00008 */ jr $ra -/* 25490: 2402ffff */ addiu $v0,$zero,-1 -.L00025494: -/* 25494: 460c6102 */ mul.s $f4,$f12,$f12 -/* 25498: c7aa0008 */ lwc1 $f10,0x8($sp) -/* 2549c: c7b2000c */ lwc1 $f18,0xc($sp) -/* 254a0: 460e7182 */ mul.s $f6,$f14,$f14 -/* 254a4: 00001025 */ or $v0,$zero,$zero -/* 254a8: 460a5402 */ mul.s $f16,$f10,$f10 -/* 254ac: 46062200 */ add.s $f8,$f4,$f6 -/* 254b0: 46129102 */ mul.s $f4,$f18,$f18 -/* 254b4: 46048180 */ add.s $f6,$f16,$f4 -/* 254b8: 4606403c */ c.lt.s $f8,$f6 -/* 254bc: 00000000 */ nop -/* 254c0: 45000003 */ bc1f .L000254d0 -/* 254c4: 00000000 */ nop -/* 254c8: 03e00008 */ jr $ra -/* 254cc: 24020001 */ addiu $v0,$zero,0x1 -.L000254d0: -/* 254d0: 03e00008 */ jr $ra -/* 254d4: 00000000 */ nop -); +s32 cd00025410(f32 arg0, f32 arg1, f32 arg2, f32 arg3) +{ + f32 f0 = arg0 * arg3; + f32 f2 = arg1 * arg2; + + if (f2 < f0) { + return 1; + } + + if (f2 > f0) { + return -1; + } + + if (arg0 * arg2 < 0.0f || arg1 * arg3 < 0.0f) { + return -1; + } + + if (arg0 * arg0 + arg1 * arg1 < arg2 * arg2 + arg3 * arg3) { + return 1; + } + + return 0; +} GLOBAL_ASM( glabel cd000254d8