diff --git a/src/game/game_096750.c b/src/game/game_096750.c index ff4ff88d3..2e6e2e40b 100644 --- a/src/game/game_096750.c +++ b/src/game/game_096750.c @@ -12,103 +12,44 @@ #include "lib/lib_4a360.h" #include "types.h" -const u32 var7f1ab830[] = {0x40490fdb}; -const u32 var7f1ab834[] = {0x3fc90fdb}; -const u32 var7f1ab838[] = {0x4096cbe4}; -const u32 var7f1ab83c[] = {0x40c90fdb}; -const u32 var7f1ab840[] = {0x3fc90fdb}; -const u32 var7f1ab844[] = {0x40490fdb}; -const u32 var7f1ab848[] = {0x40c90fdb}; -const u32 var7f1ab84c[] = {0x00000000}; +f32 func0f096750(f32 x, f32 z) +{ + f32 result; -GLOBAL_ASM( -glabel func0f096750 -/* f096750: 44808000 */ mtc1 $zero,$f16 -/* f096754: 27bdffe0 */ addiu $sp,$sp,-32 -/* f096758: f7b40010 */ sdc1 $f20,0x10($sp) -/* f09675c: 46106032 */ c.eq.s $f12,$f16 -/* f096760: 46006506 */ mov.s $f20,$f12 -/* f096764: afbf001c */ sw $ra,0x1c($sp) -/* f096768: 4502000a */ bc1fl .L0f096794 -/* f09676c: 46107032 */ c.eq.s $f14,$f16 -/* f096770: 460e803e */ c.le.s $f16,$f14 -/* f096774: 3c017f1b */ lui $at,%hi(var7f1ab830) -/* f096778: 45000003 */ bc1f .L0f096788 -/* f09677c: 00000000 */ sll $zero,$zero,0x0 -/* f096780: 1000003b */ beqz $zero,.L0f096870 -/* f096784: 46008086 */ mov.s $f2,$f16 -.L0f096788: -/* f096788: 10000039 */ beqz $zero,.L0f096870 -/* f09678c: c422b830 */ lwc1 $f2,%lo(var7f1ab830)($at) -/* f096790: 46107032 */ c.eq.s $f14,$f16 -.L0f096794: -/* f096794: 00000000 */ sll $zero,$zero,0x0 -/* f096798: 4500000a */ bc1f .L0f0967c4 -/* f09679c: 00000000 */ sll $zero,$zero,0x0 -/* f0967a0: 4614803c */ c.lt.s $f16,$f20 -/* f0967a4: 3c017f1b */ lui $at,%hi(var7f1ab834) -/* f0967a8: 45000004 */ bc1f .L0f0967bc -/* f0967ac: 00000000 */ sll $zero,$zero,0x0 -/* f0967b0: 3c017f1b */ lui $at,%hi(var7f1ab838) -/* f0967b4: 1000002e */ beqz $zero,.L0f096870 -/* f0967b8: c422b834 */ lwc1 $f2,%lo(var7f1ab834)($at) -.L0f0967bc: -/* f0967bc: 1000002c */ beqz $zero,.L0f096870 -/* f0967c0: c422b838 */ lwc1 $f2,%lo(var7f1ab838)($at) -.L0f0967c4: -/* f0967c4: 4614a102 */ mul.s $f4,$f20,$f20 -/* f0967c8: e7ae0024 */ swc1 $f14,0x24($sp) -/* f0967cc: 460e7182 */ mul.s $f6,$f14,$f14 -/* f0967d0: 0c012974 */ jal sqrtf -/* f0967d4: 46062300 */ add.s $f12,$f4,$f6 -/* f0967d8: c7ae0024 */ lwc1 $f14,0x24($sp) -/* f0967dc: 46000086 */ mov.s $f2,$f0 -/* f0967e0: 4614703c */ c.lt.s $f14,$f20 -/* f0967e4: 00000000 */ sll $zero,$zero,0x0 -/* f0967e8: 4502000e */ bc1fl .L0f096824 -/* f0967ec: 4602a303 */ div.s $f12,$f20,$f2 -/* f0967f0: 0fc25a74 */ jal func0f0969d0 -/* f0967f4: 46007303 */ div.s $f12,$f14,$f0 -/* f0967f8: 44808000 */ mtc1 $zero,$f16 -/* f0967fc: 46000086 */ mov.s $f2,$f0 -/* f096800: 3c017f1b */ lui $at,%hi(var7f1ab83c) -/* f096804: 4610a03c */ c.lt.s $f20,$f16 -/* f096808: 00000000 */ sll $zero,$zero,0x0 -/* f09680c: 45020019 */ bc1fl .L0f096874 -/* f096810: 8fbf001c */ lw $ra,0x1c($sp) -/* f096814: c428b83c */ lwc1 $f8,%lo(var7f1ab83c)($at) -/* f096818: 10000015 */ beqz $zero,.L0f096870 -/* f09681c: 46004081 */ sub.s $f2,$f8,$f0 -/* f096820: 4602a303 */ div.s $f12,$f20,$f2 -.L0f096824: -/* f096824: 0fc25a74 */ jal func0f0969d0 -/* f096828: e7ae0024 */ swc1 $f14,0x24($sp) -/* f09682c: c7ae0024 */ lwc1 $f14,0x24($sp) -/* f096830: 44808000 */ mtc1 $zero,$f16 -/* f096834: 3c017f1b */ lui $at,%hi(var7f1ab840) -/* f096838: c42ab840 */ lwc1 $f10,%lo(var7f1ab840)($at) -/* f09683c: 4610703c */ c.lt.s $f14,$f16 -/* f096840: 3c017f1b */ lui $at,%hi(var7f1ab844) -/* f096844: 46005301 */ sub.s $f12,$f10,$f0 -/* f096848: 45000003 */ bc1f .L0f096858 -/* f09684c: 46006086 */ mov.s $f2,$f12 -/* f096850: c432b844 */ lwc1 $f18,%lo(var7f1ab844)($at) -/* f096854: 460c9081 */ sub.s $f2,$f18,$f12 -.L0f096858: -/* f096858: 4610103c */ c.lt.s $f2,$f16 -/* f09685c: 3c017f1b */ lui $at,%hi(var7f1ab848) -/* f096860: 45020004 */ bc1fl .L0f096874 -/* f096864: 8fbf001c */ lw $ra,0x1c($sp) -/* f096868: c424b848 */ lwc1 $f4,%lo(var7f1ab848)($at) -/* f09686c: 46041080 */ add.s $f2,$f2,$f4 -.L0f096870: -/* f096870: 8fbf001c */ lw $ra,0x1c($sp) -.L0f096874: -/* f096874: d7b40010 */ ldc1 $f20,0x10($sp) -/* f096878: 27bd0020 */ addiu $sp,$sp,0x20 -/* f09687c: 03e00008 */ jr $ra -/* f096880: 46001006 */ mov.s $f0,$f2 -/* f096884: 00000000 */ sll $zero,$zero,0x0 -/* f096888: 00000000 */ sll $zero,$zero,0x0 -/* f09688c: 00000000 */ sll $zero,$zero,0x0 -); + if (x == 0) { + if (z >= 0) { + result = 0; + } else { + result = M_PI; + } + } else if (z == 0) { + if (x > 0) { + result = 1.5707963705063f; + } else { + result = 1.5707963705063f * 3; + } + } else { + result = sqrtf(x * x + z * z); + + if (z < x) { + result = func0f0969d0(z / result); + + if (x < 0) { + result = M_TAU - result; + } + } else { + result = func0f0969d0(x / result); + result = 1.5707963705063f - result; + + if (z < 0) { + result = M_PI - result; + } + + if (result < 0) { + result = result + M_TAU; + } + } + } + + return result; +}