From a915dfcc73df268a64f806e973db98a25592b971 Mon Sep 17 00:00:00 2001 From: Tyler McGavran Date: Thu, 24 Aug 2023 15:45:13 -0400 Subject: [PATCH] 3 matches in math_util.c (#380) Signed-off-by: Taggerung --- asm/non_matchings/math_util/func_802B5D64.s | 108 ---------- asm/non_matchings/math_util/func_802B79F0.s | 135 ------------ asm/non_matchings/math_util/func_802B8414.s | 133 ------------ src/math_util.c | 226 +++++--------------- src/math_util.h | 7 +- 5 files changed, 62 insertions(+), 547 deletions(-) delete mode 100644 asm/non_matchings/math_util/func_802B5D64.s delete mode 100644 asm/non_matchings/math_util/func_802B79F0.s delete mode 100644 asm/non_matchings/math_util/func_802B8414.s diff --git a/asm/non_matchings/math_util/func_802B5D64.s b/asm/non_matchings/math_util/func_802B5D64.s deleted file mode 100644 index b97a4044e..000000000 --- a/asm/non_matchings/math_util/func_802B5D64.s +++ /dev/null @@ -1,108 +0,0 @@ -glabel func_802B5D64 -/* 11F374 802B5D64 0004CE02 */ srl $t9, $a0, 0x18 -/* 11F378 802B5D68 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 11F37C 802B5D6C 00194080 */ sll $t0, $t9, 2 -/* 11F380 802B5D70 3C098015 */ lui $t1, %hi(gSegmentTable) -/* 11F384 802B5D74 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* 11F388 802B5D78 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 11F38C 802B5D7C 01284821 */ addu $t1, $t1, $t0 -/* 11F390 802B5D80 8D290258 */ lw $t1, %lo(gSegmentTable)($t1) -/* 11F394 802B5D84 00815024 */ and $t2, $a0, $at -/* 11F398 802B5D88 AFB00014 */ sw $s0, 0x14($sp) -/* 11F39C 802B5D8C AFA40058 */ sw $a0, 0x58($sp) -/* 11F3A0 802B5D90 AFBF001C */ sw $ra, 0x1c($sp) -/* 11F3A4 802B5D94 AFB10018 */ sw $s1, 0x18($sp) -/* 11F3A8 802B5D98 3C018000 */ lui $at, 0x8000 -/* 11F3AC 802B5D9C 30C4FFFF */ andi $a0, $a2, 0xffff -/* 11F3B0 802B5DA0 012A8021 */ addu $s0, $t1, $t2 -/* 11F3B4 802B5DA4 00E08825 */ move $s1, $a3 -/* 11F3B8 802B5DA8 AFA5005C */ sw $a1, 0x5c($sp) -/* 11F3BC 802B5DAC AFA60060 */ sw $a2, 0x60($sp) -/* 11F3C0 802B5DB0 02018021 */ addu $s0, $s0, $at -/* 11F3C4 802B5DB4 0C0AE006 */ jal sins -/* 11F3C8 802B5DB8 AFA40020 */ sw $a0, 0x20($sp) -/* 11F3CC 802B5DBC 8FA40020 */ lw $a0, 0x20($sp) -/* 11F3D0 802B5DC0 0C0AE00E */ jal coss -/* 11F3D4 802B5DC4 E7A00048 */ swc1 $f0, 0x48($sp) -/* 11F3D8 802B5DC8 97A4005E */ lhu $a0, 0x5e($sp) -/* 11F3DC 802B5DCC E7A00044 */ swc1 $f0, 0x44($sp) -/* 11F3E0 802B5DD0 0C0AE006 */ jal sins -/* 11F3E4 802B5DD4 AFA40020 */ sw $a0, 0x20($sp) -/* 11F3E8 802B5DD8 8FA40020 */ lw $a0, 0x20($sp) -/* 11F3EC 802B5DDC 0C0AE00E */ jal coss -/* 11F3F0 802B5DE0 E7A00040 */ swc1 $f0, 0x40($sp) -/* 11F3F4 802B5DE4 C7AC0044 */ lwc1 $f12, 0x44($sp) -/* 11F3F8 802B5DE8 C7A40040 */ lwc1 $f4, 0x40($sp) -/* 11F3FC 802B5DEC 3C0142F0 */ li $at, 0x42F00000 # 120.000000 -/* 11F400 802B5DF0 44811000 */ mtc1 $at, $f2 -/* 11F404 802B5DF4 46046182 */ mul.s $f6, $f12, $f4 -/* 11F408 802B5DF8 C7B00048 */ lwc1 $f16, 0x48($sp) -/* 11F40C 802B5DFC 3C01C2F0 */ li $at, 0xC2F00000 # -120.000000 -/* 11F410 802B5E00 00001025 */ move $v0, $zero -/* 11F414 802B5E04 32240003 */ andi $a0, $s1, 3 -/* 11F418 802B5E08 46023202 */ mul.s $f8, $f6, $f2 -/* 11F41C 802B5E0C 00000000 */ nop -/* 11F420 802B5E10 46101482 */ mul.s $f18, $f2, $f16 -/* 11F424 802B5E14 00000000 */ nop -/* 11F428 802B5E18 46006182 */ mul.s $f6, $f12, $f0 -/* 11F42C 802B5E1C 4600428D */ trunc.w.s $f10, $f8 -/* 11F430 802B5E20 44814000 */ mtc1 $at, $f8 -/* 11F434 802B5E24 4600910D */ trunc.w.s $f4, $f18 -/* 11F438 802B5E28 440C5000 */ mfc1 $t4, $f10 -/* 11F43C 802B5E2C 46083282 */ mul.s $f10, $f6, $f8 -/* 11F440 802B5E30 440E2000 */ mfc1 $t6, $f4 -/* 11F444 802B5E34 A3AC002C */ sb $t4, 0x2c($sp) -/* 11F448 802B5E38 A3AE002D */ sb $t6, 0x2d($sp) -/* 11F44C 802B5E3C 4600540D */ trunc.w.s $f16, $f10 -/* 11F450 802B5E40 44198000 */ mfc1 $t9, $f16 -/* 11F454 802B5E44 1A200029 */ blez $s1, .L802B5EEC -/* 11F458 802B5E48 A3B9002E */ sb $t9, 0x2e($sp) -/* 11F45C 802B5E4C 1080000C */ beqz $a0, .L802B5E80 -/* 11F460 802B5E50 00801825 */ move $v1, $a0 -.L802B5E54: -/* 11F464 802B5E54 83A8002C */ lb $t0, 0x2c($sp) -/* 11F468 802B5E58 24420001 */ addiu $v0, $v0, 1 -/* 11F46C 802B5E5C 26100018 */ addiu $s0, $s0, 0x18 -/* 11F470 802B5E60 A208FFF8 */ sb $t0, -8($s0) -/* 11F474 802B5E64 83B8002D */ lb $t8, 0x2d($sp) -/* 11F478 802B5E68 A218FFF9 */ sb $t8, -7($s0) -/* 11F47C 802B5E6C 83A9002E */ lb $t1, 0x2e($sp) -/* 11F480 802B5E70 1462FFF8 */ bne $v1, $v0, .L802B5E54 -/* 11F484 802B5E74 A209FFFA */ sb $t1, -6($s0) -/* 11F488 802B5E78 5051001D */ beql $v0, $s1, .L802B5EF0 -/* 11F48C 802B5E7C 8FBF001C */ lw $ra, 0x1c($sp) -.L802B5E80: -/* 11F490 802B5E80 83AA002C */ lb $t2, 0x2c($sp) -/* 11F494 802B5E84 24420004 */ addiu $v0, $v0, 4 -/* 11F498 802B5E88 26100060 */ addiu $s0, $s0, 0x60 -/* 11F49C 802B5E8C A20AFFB0 */ sb $t2, -0x50($s0) -/* 11F4A0 802B5E90 83AB002D */ lb $t3, 0x2d($sp) -/* 11F4A4 802B5E94 A20BFFB1 */ sb $t3, -0x4f($s0) -/* 11F4A8 802B5E98 83AC002E */ lb $t4, 0x2e($sp) -/* 11F4AC 802B5E9C A20CFFB2 */ sb $t4, -0x4e($s0) -/* 11F4B0 802B5EA0 83AD002C */ lb $t5, 0x2c($sp) -/* 11F4B4 802B5EA4 A20DFFC8 */ sb $t5, -0x38($s0) -/* 11F4B8 802B5EA8 83AE002D */ lb $t6, 0x2d($sp) -/* 11F4BC 802B5EAC A20EFFC9 */ sb $t6, -0x37($s0) -/* 11F4C0 802B5EB0 83AF002E */ lb $t7, 0x2e($sp) -/* 11F4C4 802B5EB4 A20FFFCA */ sb $t7, -0x36($s0) -/* 11F4C8 802B5EB8 83B9002C */ lb $t9, 0x2c($sp) -/* 11F4CC 802B5EBC A219FFE0 */ sb $t9, -0x20($s0) -/* 11F4D0 802B5EC0 83A8002D */ lb $t0, 0x2d($sp) -/* 11F4D4 802B5EC4 A208FFE1 */ sb $t0, -0x1f($s0) -/* 11F4D8 802B5EC8 83B8002E */ lb $t8, 0x2e($sp) -/* 11F4DC 802B5ECC A218FFE2 */ sb $t8, -0x1e($s0) -/* 11F4E0 802B5ED0 83A9002C */ lb $t1, 0x2c($sp) -/* 11F4E4 802B5ED4 A209FFF8 */ sb $t1, -8($s0) -/* 11F4E8 802B5ED8 83AA002D */ lb $t2, 0x2d($sp) -/* 11F4EC 802B5EDC A20AFFF9 */ sb $t2, -7($s0) -/* 11F4F0 802B5EE0 83AB002E */ lb $t3, 0x2e($sp) -/* 11F4F4 802B5EE4 1451FFE6 */ bne $v0, $s1, .L802B5E80 -/* 11F4F8 802B5EE8 A20BFFFA */ sb $t3, -6($s0) -.L802B5EEC: -/* 11F4FC 802B5EEC 8FBF001C */ lw $ra, 0x1c($sp) -.L802B5EF0: -/* 11F500 802B5EF0 8FB00014 */ lw $s0, 0x14($sp) -/* 11F504 802B5EF4 8FB10018 */ lw $s1, 0x18($sp) -/* 11F508 802B5EF8 03E00008 */ jr $ra -/* 11F50C 802B5EFC 27BD0058 */ addiu $sp, $sp, 0x58 diff --git a/asm/non_matchings/math_util/func_802B79F0.s b/asm/non_matchings/math_util/func_802B79F0.s deleted file mode 100644 index 1367f847c..000000000 --- a/asm/non_matchings/math_util/func_802B79F0.s +++ /dev/null @@ -1,135 +0,0 @@ -.section .late_rodata - -glabel D_802B9FDC -.float -0.01600503 - -glabel D_802B9FE0 -.float 0.002834060 - -glabel D_802B9FE4 -.float -0.074954450 - -glabel D_802B9FE8 -.float 0.042587612 - -glabel D_802B9FEC -.float -0.142025709 - -glabel D_802B9FF0 -.float 0.106367543 - -glabel D_802B9FF4 -.float -0.333330661 - -glabel D_802B9FF8 -.double 1.3375206719956623e-08 - -glabel D_802BA000 -.double 1.5707963267948966 - -glabel D_802BA008 -.double 1.5707963267948966 - -glabel D_802BA010 -.double 50.123870849609375 - -.section .text - -glabel func_802B79F0 -/* 121000 802B79F0 46007021 */ cvt.d.s $f0, $f14 -/* 121004 802B79F4 460E6403 */ div.s $f16, $f12, $f14 -/* 121008 802B79F8 00001025 */ move $v0, $zero -/* 12100C 802B79FC 46200085 */ abs.d $f2, $f0 -/* 121010 802B7A00 46006021 */ cvt.d.s $f0, $f12 -/* 121014 802B7A04 46200005 */ abs.d $f0, $f0 -/* 121018 802B7A08 4620103C */ c.lt.d $f2, $f0 -/* 12101C 802B7A0C 00000000 */ nop -/* 121020 802B7A10 45000002 */ bc1f .L802B7A1C -/* 121024 802B7A14 00000000 */ nop -/* 121028 802B7A18 24020001 */ li $v0, 1 -.L802B7A1C: -/* 12102C 802B7A1C 10400002 */ beqz $v0, .L802B7A28 -/* 121030 802B7A20 00000000 */ nop -/* 121034 802B7A24 460C7403 */ div.s $f16, $f14, $f12 -.L802B7A28: -/* 121038 802B7A28 46108002 */ mul.s $f0, $f16, $f16 -/* 12103C 802B7A2C 3C01802C */ lui $at, %hi(D_802B9FDC) # $at, 0x802c -/* 121040 802B7A30 C4249FDC */ lwc1 $f4, %lo(D_802B9FDC)($at) -/* 121044 802B7A34 3C01802C */ lui $at, %hi(D_802B9FE0) # $at, 0x802c -/* 121048 802B7A38 C4269FE0 */ lwc1 $f6, %lo(D_802B9FE0)($at) -/* 12104C 802B7A3C 3C01802C */ lui $at, %hi(D_802B9FE4) # $at, 0x802c -/* 121050 802B7A40 46000082 */ mul.s $f2, $f0, $f0 -/* 121054 802B7A44 00000000 */ nop -/* 121058 802B7A48 46060202 */ mul.s $f8, $f0, $f6 -/* 12105C 802B7A4C C4269FE4 */ lwc1 $f6, %lo(D_802B9FE4)($at) -/* 121060 802B7A50 3C01802C */ lui $at, %hi(D_802B9FE8) # $at, 0x802c -/* 121064 802B7A54 46082280 */ add.s $f10, $f4, $f8 -/* 121068 802B7A58 C4289FE8 */ lwc1 $f8, %lo(D_802B9FE8)($at) -/* 12106C 802B7A5C 3C01802C */ lui $at, %hi(D_802B9FEC) # $at, 0x802c -/* 121070 802B7A60 460A1482 */ mul.s $f18, $f2, $f10 -/* 121074 802B7A64 46069100 */ add.s $f4, $f18, $f6 -/* 121078 802B7A68 46080282 */ mul.s $f10, $f0, $f8 -/* 12107C 802B7A6C 460A2480 */ add.s $f18, $f4, $f10 -/* 121080 802B7A70 46021182 */ mul.s $f6, $f2, $f2 -/* 121084 802B7A74 C4249FEC */ lwc1 $f4, %lo(D_802B9FEC)($at) -/* 121088 802B7A78 3C01802C */ lui $at, %hi(D_802B9FF0) # $at, 0x802c -/* 12108C 802B7A7C C42A9FF0 */ lwc1 $f10, %lo(D_802B9FF0)($at) -/* 121090 802B7A80 3C01802C */ lui $at, %hi(D_802B9FF4) # $at, 0x802c -/* 121094 802B7A84 46069202 */ mul.s $f8, $f18, $f6 -/* 121098 802B7A88 00000000 */ nop -/* 12109C 802B7A8C 460A0482 */ mul.s $f18, $f0, $f10 -/* 1210A0 802B7A90 46122180 */ add.s $f6, $f4, $f18 -/* 1210A4 802B7A94 C4329FF4 */ lwc1 $f18, %lo(D_802B9FF4)($at) -/* 1210A8 802B7A98 3C01802C */ lui $at, %hi(D_802B9FF8) # $at, 0x802c -/* 1210AC 802B7A9C 46023282 */ mul.s $f10, $f6, $f2 -/* 1210B0 802B7AA0 460A4100 */ add.s $f4, $f8, $f10 -/* 1210B4 802B7AA4 C4289FF8 */ lwc1 $f8, %lo(D_802B9FF8)($at) -/* 1210B8 802B7AA8 46080282 */ mul.s $f10, $f0, $f8 -/* 1210BC 802B7AAC 46122180 */ add.s $f6, $f4, $f18 -/* 1210C0 802B7AB0 46008482 */ mul.s $f18, $f16, $f0 -/* 1210C4 802B7AB4 460A3100 */ add.s $f4, $f6, $f10 -/* 1210C8 802B7AB8 46122202 */ mul.s $f8, $f4, $f18 -/* 1210CC 802B7ABC 10400013 */ beqz $v0, .L802B7B0C -/* 1210D0 802B7AC0 46088400 */ add.s $f16, $f16, $f8 -/* 1210D4 802B7AC4 44800000 */ mtc1 $zero, $f0 -/* 1210D8 802B7AC8 3C01802C */ lui $at, %hi(D_802BA008) -/* 1210DC 802B7ACC 4600603C */ c.lt.s $f12, $f0 -/* 1210E0 802B7AD0 00000000 */ nop -/* 1210E4 802B7AD4 45000008 */ bc1f .L802B7AF8 -/* 1210E8 802B7AD8 00000000 */ nop -/* 1210EC 802B7ADC 3C01802C */ lui $at, %hi(D_802BA000) -/* 1210F0 802B7AE0 D422A000 */ ldc1 $f2, %lo(D_802BA000)($at) -/* 1210F4 802B7AE4 460081A1 */ cvt.d.s $f6, $f16 -/* 1210F8 802B7AE8 46201087 */ neg.d $f2, $f2 -/* 1210FC 802B7AEC 46261281 */ sub.d $f10, $f2, $f6 -/* 121100 802B7AF0 03E00008 */ jr $ra -/* 121104 802B7AF4 46205020 */ cvt.s.d $f0, $f10 - -.L802B7AF8: -/* 121108 802B7AF8 D422A008 */ ldc1 $f2, %lo(D_802BA008)($at) -/* 12110C 802B7AFC 460081A1 */ cvt.d.s $f6, $f16 -/* 121110 802B7B00 46261281 */ sub.d $f10, $f2, $f6 -/* 121114 802B7B04 03E00008 */ jr $ra -/* 121118 802B7B08 46205020 */ cvt.s.d $f0, $f10 - -.L802B7B0C: -/* 12111C 802B7B0C 44800000 */ mtc1 $zero, $f0 -/* 121120 802B7B10 00000000 */ nop -/* 121124 802B7B14 460E003E */ c.le.s $f0, $f14 -/* 121128 802B7B18 00000000 */ nop -/* 12112C 802B7B1C 45020004 */ bc1fl .L802B7B30 -/* 121130 802B7B20 4600603C */ c.lt.s $f12, $f0 -/* 121134 802B7B24 03E00008 */ jr $ra -/* 121138 802B7B28 46008006 */ mov.s $f0, $f16 - -/* 12113C 802B7B2C 4600603C */ c.lt.s $f12, $f0 -.L802B7B30: -/* 121140 802B7B30 3C01802C */ lui $at, %hi(D_802BA010) # $at, 0x802c -/* 121144 802B7B34 C42EA010 */ lwc1 $f14, %lo(D_802BA010)($at) -/* 121148 802B7B38 45000002 */ bc1f .L802B7B44 -/* 12114C 802B7B3C 460E8080 */ add.s $f2, $f16, $f14 -/* 121150 802B7B40 460E8081 */ sub.s $f2, $f16, $f14 -.L802B7B44: -/* 121154 802B7B44 46001006 */ mov.s $f0, $f2 -/* 121158 802B7B48 03E00008 */ jr $ra -/* 12115C 802B7B4C 00000000 */ nop diff --git a/asm/non_matchings/math_util/func_802B8414.s b/asm/non_matchings/math_util/func_802B8414.s deleted file mode 100644 index a8ff26c5c..000000000 --- a/asm/non_matchings/math_util/func_802B8414.s +++ /dev/null @@ -1,133 +0,0 @@ -glabel func_802B8414 -/* 121A24 802B8414 0004CE02 */ srl $t9, $a0, 0x18 -/* 121A28 802B8418 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 121A2C 802B841C 00194080 */ sll $t0, $t9, 2 -/* 121A30 802B8420 3C098015 */ lui $t1, %hi(gSegmentTable) -/* 121A34 802B8424 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* 121A38 802B8428 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 121A3C 802B842C 01284821 */ addu $t1, $t1, $t0 -/* 121A40 802B8430 8D290258 */ lw $t1, %lo(gSegmentTable)($t1) -/* 121A44 802B8434 00815024 */ and $t2, $a0, $at -/* 121A48 802B8438 AFB00014 */ sw $s0, 0x14($sp) -/* 121A4C 802B843C AFA40058 */ sw $a0, 0x58($sp) -/* 121A50 802B8440 AFBF001C */ sw $ra, 0x1c($sp) -/* 121A54 802B8444 AFB10018 */ sw $s1, 0x18($sp) -/* 121A58 802B8448 3C018000 */ lui $at, 0x8000 -/* 121A5C 802B844C 30E4FFFF */ andi $a0, $a3, 0xffff -/* 121A60 802B8450 012A8021 */ addu $s0, $t1, $t2 -/* 121A64 802B8454 00A08825 */ move $s1, $a1 -/* 121A68 802B8458 AFA60060 */ sw $a2, 0x60($sp) -/* 121A6C 802B845C AFA70064 */ sw $a3, 0x64($sp) -/* 121A70 802B8460 02018021 */ addu $s0, $s0, $at -/* 121A74 802B8464 0C0AE006 */ jal sins -/* 121A78 802B8468 AFA40020 */ sw $a0, 0x20($sp) -/* 121A7C 802B846C 0C0AE00E */ jal coss -/* 121A80 802B8470 8FA40020 */ lw $a0, 0x20($sp) -/* 121A84 802B8474 97A40062 */ lhu $a0, 0x62($sp) -/* 121A88 802B8478 0C0AE006 */ jal sins -/* 121A8C 802B847C AFA40020 */ sw $a0, 0x20($sp) -/* 121A90 802B8480 0C0AE00E */ jal coss -/* 121A94 802B8484 8FA40020 */ lw $a0, 0x20($sp) -/* 121A98 802B8488 3C0142FE */ li $at, 0x42FE0000 # 127.000000 -/* 121A9C 802B848C 44810000 */ mtc1 $at, $f0 -/* 121AA0 802B8490 44801000 */ mtc1 $zero, $f2 -/* 121AA4 802B8494 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 121AA8 802B8498 44812000 */ mtc1 $at, $f4 -/* 121AAC 802B849C E7A20040 */ swc1 $f2, 0x40($sp) -/* 121AB0 802B84A0 E7A20044 */ swc1 $f2, 0x44($sp) -/* 121AB4 802B84A4 E7A40048 */ swc1 $f4, 0x48($sp) -/* 121AB8 802B84A8 C6280000 */ lwc1 $f8, ($s1) -/* 121ABC 802B84AC C7A60040 */ lwc1 $f6, 0x40($sp) -/* 121AC0 802B84B0 C6320010 */ lwc1 $f18, 0x10($s1) -/* 121AC4 802B84B4 C7B00044 */ lwc1 $f16, 0x44($sp) -/* 121AC8 802B84B8 46083282 */ mul.s $f10, $f6, $f8 -/* 121ACC 802B84BC 8FA40068 */ lw $a0, 0x68($sp) -/* 121AD0 802B84C0 00001025 */ move $v0, $zero -/* 121AD4 802B84C4 46128202 */ mul.s $f8, $f16, $f18 -/* 121AD8 802B84C8 30850003 */ andi $a1, $a0, 3 -/* 121ADC 802B84CC 46085480 */ add.s $f18, $f10, $f8 -/* 121AE0 802B84D0 C62A0020 */ lwc1 $f10, 0x20($s1) -/* 121AE4 802B84D4 46045202 */ mul.s $f8, $f10, $f4 -/* 121AE8 802B84D8 46124280 */ add.s $f10, $f8, $f18 -/* 121AEC 802B84DC 46005202 */ mul.s $f8, $f10, $f0 -/* 121AF0 802B84E0 4600448D */ trunc.w.s $f18, $f8 -/* 121AF4 802B84E4 440C9000 */ mfc1 $t4, $f18 -/* 121AF8 802B84E8 00000000 */ nop -/* 121AFC 802B84EC A3AC003C */ sb $t4, 0x3c($sp) -/* 121B00 802B84F0 C62A0004 */ lwc1 $f10, 4($s1) -/* 121B04 802B84F4 C6320014 */ lwc1 $f18, 0x14($s1) -/* 121B08 802B84F8 460A3202 */ mul.s $f8, $f6, $f10 -/* 121B0C 802B84FC 00000000 */ nop -/* 121B10 802B8500 46128282 */ mul.s $f10, $f16, $f18 -/* 121B14 802B8504 460A4480 */ add.s $f18, $f8, $f10 -/* 121B18 802B8508 C6280024 */ lwc1 $f8, 0x24($s1) -/* 121B1C 802B850C 46044282 */ mul.s $f10, $f8, $f4 -/* 121B20 802B8510 46125200 */ add.s $f8, $f10, $f18 -/* 121B24 802B8514 46004282 */ mul.s $f10, $f8, $f0 -/* 121B28 802B8518 4600548D */ trunc.w.s $f18, $f10 -/* 121B2C 802B851C 440E9000 */ mfc1 $t6, $f18 -/* 121B30 802B8520 00000000 */ nop -/* 121B34 802B8524 A3AE003D */ sb $t6, 0x3d($sp) -/* 121B38 802B8528 C6280008 */ lwc1 $f8, 8($s1) -/* 121B3C 802B852C C6320018 */ lwc1 $f18, 0x18($s1) -/* 121B40 802B8530 46083282 */ mul.s $f10, $f6, $f8 -/* 121B44 802B8534 00000000 */ nop -/* 121B48 802B8538 46128182 */ mul.s $f6, $f16, $f18 -/* 121B4C 802B853C C6300028 */ lwc1 $f16, 0x28($s1) -/* 121B50 802B8540 46048482 */ mul.s $f18, $f16, $f4 -/* 121B54 802B8544 46065200 */ add.s $f8, $f10, $f6 -/* 121B58 802B8548 46089280 */ add.s $f10, $f18, $f8 -/* 121B5C 802B854C 46005182 */ mul.s $f6, $f10, $f0 -/* 121B60 802B8550 4600340D */ trunc.w.s $f16, $f6 -/* 121B64 802B8554 44198000 */ mfc1 $t9, $f16 -/* 121B68 802B8558 18800029 */ blez $a0, .L802B8600 -/* 121B6C 802B855C A3B9003E */ sb $t9, 0x3e($sp) -/* 121B70 802B8560 10A0000C */ beqz $a1, .L802B8594 -/* 121B74 802B8564 00A01825 */ move $v1, $a1 -.L802B8568: -/* 121B78 802B8568 83A8003C */ lb $t0, 0x3c($sp) -/* 121B7C 802B856C 24420001 */ addiu $v0, $v0, 1 -/* 121B80 802B8570 26100018 */ addiu $s0, $s0, 0x18 -/* 121B84 802B8574 A208FFF8 */ sb $t0, -8($s0) -/* 121B88 802B8578 83B8003D */ lb $t8, 0x3d($sp) -/* 121B8C 802B857C A218FFF9 */ sb $t8, -7($s0) -/* 121B90 802B8580 83A9003E */ lb $t1, 0x3e($sp) -/* 121B94 802B8584 1462FFF8 */ bne $v1, $v0, .L802B8568 -/* 121B98 802B8588 A209FFFA */ sb $t1, -6($s0) -/* 121B9C 802B858C 5044001D */ beql $v0, $a0, .L802B8604 -/* 121BA0 802B8590 8FBF001C */ lw $ra, 0x1c($sp) -.L802B8594: -/* 121BA4 802B8594 83AA003C */ lb $t2, 0x3c($sp) -/* 121BA8 802B8598 24420004 */ addiu $v0, $v0, 4 -/* 121BAC 802B859C 26100060 */ addiu $s0, $s0, 0x60 -/* 121BB0 802B85A0 A20AFFB0 */ sb $t2, -0x50($s0) -/* 121BB4 802B85A4 83AB003D */ lb $t3, 0x3d($sp) -/* 121BB8 802B85A8 A20BFFB1 */ sb $t3, -0x4f($s0) -/* 121BBC 802B85AC 83AC003E */ lb $t4, 0x3e($sp) -/* 121BC0 802B85B0 A20CFFB2 */ sb $t4, -0x4e($s0) -/* 121BC4 802B85B4 83AD003C */ lb $t5, 0x3c($sp) -/* 121BC8 802B85B8 A20DFFC8 */ sb $t5, -0x38($s0) -/* 121BCC 802B85BC 83AE003D */ lb $t6, 0x3d($sp) -/* 121BD0 802B85C0 A20EFFC9 */ sb $t6, -0x37($s0) -/* 121BD4 802B85C4 83AF003E */ lb $t7, 0x3e($sp) -/* 121BD8 802B85C8 A20FFFCA */ sb $t7, -0x36($s0) -/* 121BDC 802B85CC 83B9003C */ lb $t9, 0x3c($sp) -/* 121BE0 802B85D0 A219FFE0 */ sb $t9, -0x20($s0) -/* 121BE4 802B85D4 83A8003D */ lb $t0, 0x3d($sp) -/* 121BE8 802B85D8 A208FFE1 */ sb $t0, -0x1f($s0) -/* 121BEC 802B85DC 83B8003E */ lb $t8, 0x3e($sp) -/* 121BF0 802B85E0 A218FFE2 */ sb $t8, -0x1e($s0) -/* 121BF4 802B85E4 83A9003C */ lb $t1, 0x3c($sp) -/* 121BF8 802B85E8 A209FFF8 */ sb $t1, -8($s0) -/* 121BFC 802B85EC 83AA003D */ lb $t2, 0x3d($sp) -/* 121C00 802B85F0 A20AFFF9 */ sb $t2, -7($s0) -/* 121C04 802B85F4 83AB003E */ lb $t3, 0x3e($sp) -/* 121C08 802B85F8 1444FFE6 */ bne $v0, $a0, .L802B8594 -/* 121C0C 802B85FC A20BFFFA */ sb $t3, -6($s0) -.L802B8600: -/* 121C10 802B8600 8FBF001C */ lw $ra, 0x1c($sp) -.L802B8604: -/* 121C14 802B8604 8FB00014 */ lw $s0, 0x14($sp) -/* 121C18 802B8608 8FB10018 */ lw $s1, 0x18($sp) -/* 121C1C 802B860C 03E00008 */ jr $ra -/* 121C20 802B8610 27BD0058 */ addiu $sp, $sp, 0x58 diff --git a/src/math_util.c b/src/math_util.c index 011d0af4c..679e569d9 100644 --- a/src/math_util.c +++ b/src/math_util.c @@ -7,7 +7,7 @@ #include #include -#pragma intrinsic (sqrtf) +#pragma intrinsic (sqrtf,fabs) s32 D_802B91C0[2] = { 13, 13 }; Vec3f D_802B91C8 = { 0.0f, 0.0f, 0.0f }; @@ -402,71 +402,34 @@ void func_802B5D30(s16 arg0, s16 arg1, s32 arg2) { func_802B5D64(0x9000000, arg0, arg1, arg2); } -#ifdef MIPS_TO_C -//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c -void func_802B5D64(u32 arg0, s16 arg1, s32 arg2, s32 arg3) { +void func_802B5D64(uintptr_t arg0, s16 arg1, s16 arg2, s32 arg3) { + s32 stackPadding0; + s32 stackPadding1; + s32 stackPadding2; f32 sp48; f32 sp44; f32 sp40; - s8 sp2E; - s8 sp2D; - s8 sp2C; - s32 sp20; + s32 stackPadding3; + s32 stackPadding4; f32 temp_f10; - s32 temp_a0; - s32 temp_a0_2; s32 var_v0; - void *var_s0; + s8 sp2C[3]; + Lights1 *var_s0; - temp_a0 = arg2 & 0xFFFF; - var_s0 = gSegmentTable[arg0 >> 0x18] + (arg0 & 0xFFFFFF) + 0x80000000; - sp20 = temp_a0; - sp48 = sins((u16) temp_a0); - sp44 = coss((u16) temp_a0); - sp20 = (s32) (u16) arg1; - sp40 = sins((u16) arg1); - var_v0 = 0; - temp_a0_2 = arg3 & 3; - temp_f10 = sp44 * coss((u16) arg1) * -120.0f; - sp2C = (s8) (s32) (sp44 * sp40 * 120.0f); - sp2D = (s8) (s32) (120.0f * sp48); - sp2E = (s8) (s32) temp_f10; - if (arg3 > 0) { - if (temp_a0_2 != 0) { - do { - var_v0 += 1; - var_s0 += 0x18; - var_s0->unk-8 = sp2C; - var_s0->unk-7 = sp2D; - var_s0->unk-6 = sp2E; - } while (temp_a0_2 != var_v0); - if (var_v0 != arg3) { - goto loop_4; - } - } else { - do { -loop_4: - var_v0 += 4; - var_s0 += 0x60; - var_s0->unk-50 = sp2C; - var_s0->unk-4F = sp2D; - var_s0->unk-4E = sp2E; - var_s0->unk-38 = sp2C; - var_s0->unk-37 = sp2D; - var_s0->unk-36 = sp2E; - var_s0->unk-20 = sp2C; - var_s0->unk-1F = sp2D; - var_s0->unk-1E = sp2E; - var_s0->unk-8 = sp2C; - var_s0->unk-7 = sp2D; - var_s0->unk-6 = sp2E; - } while (var_v0 != arg3); - } + var_s0 = VIRTUAL_TO_PHYSICAL2(gSegmentTable[arg0 >> 0x18] + (arg0 & 0xFFFFFF)); + sp48 = sins(arg2); + sp44 = coss(arg2); + sp40 = sins(arg1); + temp_f10 = coss(arg1); + sp2C[0] = sp44 * sp40 * 120.0f; + sp2C[1] = 120.0f * sp48; + sp2C[2] = sp44 * temp_f10 * -120.0f; + for (var_v0 = 0; var_v0 < arg3; var_v0++, var_s0++) { + var_s0->l[0].l.dir[0] = sp2C[0]; + var_s0->l[0].l.dir[1] = sp2C[1]; + var_s0->l[0].l.dir[2] = sp2C[2]; } } -#else -GLOBAL_ASM("asm/non_matchings/math_util/func_802B5D64.s") -#endif void func_802B5F00(Mat4 arg0, f32 arg1) { arg0[0][0] *= arg1; @@ -1074,23 +1037,9 @@ f32 func_802B79B8(f32 arg0, f32 arg1) { return atan2s(arg0, arg1); } -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -static f32 D_802B9FDC = -0.01600503f; -static f32 D_802B9FE0 = 0.00283406f; -static f32 D_802B9FE4 = -0.07495445f; -static f32 D_802B9FE8 = 0.04258761f; -static f32 D_802B9FEC = -0.14202571f; -static f32 D_802B9FF0 = 0.10636754f; -static f32 D_802B9FF4 = -0.33333066f; -static f32 D_802B9FF8 = 0.19992484f; -static f64 D_802BA000 = 1.5707963267948966; -static f64 D_802BA008 = 1.5707963267948966; -static f32 D_802BA010 = 3.1415927f; - f32 func_802B79F0(f32 arg0, f32 arg1) { + f64 halfpi; f32 temp_f0; - f32 temp_f14; f32 temp_f16; f32 temp_f2; f32 var_f16; @@ -1099,7 +1048,7 @@ f32 func_802B79F0(f32 arg0, f32 arg1) { var_f16 = arg0 / arg1; var_v0 = 0; - if (fabs((f64) arg1) < fabs((f64) arg0)) { + if (fabs(arg1) < fabs(arg0)) { var_v0 = 1; } if (var_v0 != 0) { @@ -1107,26 +1056,21 @@ f32 func_802B79F0(f32 arg0, f32 arg1) { } temp_f0 = var_f16 * var_f16; temp_f2 = temp_f0 * temp_f0; - temp_f16 = var_f16 + (((((temp_f2 * (D_802B9FDC + (temp_f0 * D_802B9FE0))) + D_802B9FE4 + (temp_f0 * D_802B9FE8)) * (temp_f2 * temp_f2)) + ((D_802B9FEC + (temp_f0 * D_802B9FF0)) * temp_f2) + D_802B9FF4 + (temp_f0 * D_802B9FF8)) * (var_f16 * temp_f0)); + var_f16 += ((((((((temp_f2 * ((-0.01600503f) + (temp_f0 * 0.00283406f))) + (-0.07495445f)) + (temp_f0 * 0.04258761f)) * (temp_f2 * temp_f2)) + (((-0.14202571f) + (temp_f0 * 0.10636754f)) * temp_f2)) + (-0.33333066f)) + (temp_f0 * 0.19992484f)) * (var_f16 * temp_f0)); + if (var_v0 != 0) { - if (arg0 < 0.0f) { - return (f32) (-D_802BA000 - (f64) temp_f16); - } - return (f32) (D_802BA008 - (f64) temp_f16); + halfpi = 1.5707963267948966; + return (arg0 < 0.0f ? -halfpi : halfpi) - var_f16; } if (arg1 >= 0.0f) { - return temp_f16; + return var_f16; } - temp_f14 = D_802BA010; - var_f2 = temp_f16 + temp_f14; + var_f2 = var_f16 + 3.1415927f; if (arg0 < 0.0f) { - var_f2 = temp_f16 - temp_f14; + var_f2 = var_f16 - 3.1415927f; } return var_f2; } -#else -GLOBAL_ASM("asm/non_matchings/math_util/func_802B79F0.s") -#endif UNUSED u16 func_802B7B50(f32 arg0, f32 arg1) { return ((func_802B79B8(arg0, arg1) * 32768.0f) / 3.141592653589793); @@ -1300,95 +1244,37 @@ f32 func_802B80D0(Vec3f arg0, Vec3f arg1, u16 arg2, f32 arg3, f32 arg4, f32 arg5 GLOBAL_ASM("asm/non_matchings/math_util/func_802B80D0.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -//This function did not have a glabel in the original assembly, as such it may -//be unused/unnamed -f32 sins(s32); /* extern */ -f32 coss(s32); /* extern */ -extern uintptr_t gSegmentTable; +// No idea if arg1 is actually a Mat4 or not, but since this function is unused +// its impossible to know with certainty either way +void func_802B8414(uintptr_t arg0, Mat4 arg1, s16 arg2, s16 arg3, s32 arg4) { + s32 stackPadding0; + s32 stackPadding1; + s32 stackPadding2; + Vec3f sp40; + s8 sp3C[3]; + s32 var_v0; + s32 stackPadding3; + s32 stackPadding4; + s32 stackPadding5; + Lights1 *var_s0; -void func_802B8414(u32 arg0, void *arg1, u16 arg2, s32 arg3, s32 arg4) { - f32 sp48; - f32 sp44; - f32 sp40; - s8 sp3E; - s8 sp3D; - s8 sp3C; - s32 sp20; - s32 temp_a0; - s32 temp_a1; - s32 temp_v0; - s32 temp_v0_2; - void *temp_s0; - void *temp_s0_2; - void *temp_s0_3; - void *phi_s0; - s32 phi_v0; - void *phi_s0_2; - s32 phi_v0_2; - - temp_a0 = arg3 & 0xFFFF; - temp_s0 = *(&gSegmentTable + ((arg0 >> 0x18) * 4)) + (arg0 & 0xFFFFFF) + 0x80000000; - sp20 = temp_a0; - sins(temp_a0); - coss(temp_a0); - sp20 = arg2; + var_s0 = VIRTUAL_TO_PHYSICAL2(gSegmentTable[arg0 >> 0x18] + (arg0 & 0xFFFFFF)); + sins(arg3); + coss(arg3); sins(arg2); coss(arg2); - sp40 = 0.0f; - sp44 = 0.0f; - sp48 = 1.0f; - temp_a1 = arg4 & 3; - sp3C = ((arg1->unk20 * 1.0f) + ((sp40 * arg1->unk0) + (sp44 * arg1->unk10))) * 127.0f; - sp3D = ((arg1->unk24 * 1.0f) + ((sp40 * arg1->unk4) + (sp44 * arg1->unk14))) * 127.0f; - sp3E = ((arg1->unk28 * 1.0f) + ((sp40 * arg1->unk8) + (sp44 * arg1->unk18))) * 127.0f; - phi_v0 = 0; - phi_v0_2 = 0; - if (arg4 > 0) { - phi_s0 = temp_s0; - phi_s0_2 = temp_s0; - if (temp_a1 != 0) { - do { - temp_v0 = phi_v0 + 1; - temp_s0_2 = phi_s0 + 0x18; - temp_s0_2->unk-8 = sp3C; - temp_s0_2->unk-7 = sp3D; - temp_s0_2->unk-6 = sp3E; - phi_s0 = temp_s0_2; - phi_v0 = temp_v0; - phi_s0_2 = temp_s0_2; - phi_v0_2 = temp_v0; - } while (temp_a1 != temp_v0); - if (temp_v0 != arg4) { - goto loop_4; - } - } else { - do { -loop_4: - temp_v0_2 = phi_v0_2 + 4; - temp_s0_3 = phi_s0_2 + 0x60; - temp_s0_3->unk-50 = sp3C; - temp_s0_3->unk-4F = sp3D; - temp_s0_3->unk-4E = sp3E; - temp_s0_3->unk-38 = sp3C; - temp_s0_3->unk-37 = sp3D; - temp_s0_3->unk-36 = sp3E; - temp_s0_3->unk-20 = sp3C; - temp_s0_3->unk-1F = sp3D; - temp_s0_3->unk-1E = sp3E; - temp_s0_3->unk-8 = sp3C; - temp_s0_3->unk-7 = sp3D; - temp_s0_3->unk-6 = sp3E; - phi_s0_2 = temp_s0_3; - phi_v0_2 = temp_v0_2; - } while (temp_v0_2 != arg4); - } + sp40[0] = 0.0f; + sp40[1] = 0.0f; + sp40[2] = 1.0f; + sp3C[0] = ((sp40[0] * arg1[0][0]) + (sp40[1] * arg1[1][0]) + (sp40[2] * arg1[2][0])) * 127.0f; + sp3C[1] = ((sp40[0] * arg1[0][1]) + (sp40[1] * arg1[1][1]) + (sp40[2] * arg1[2][1])) * 127.0f; + sp3C[2] = ((sp40[0] * arg1[0][2]) + (sp40[1] * arg1[1][2]) + (sp40[2] * arg1[2][2])) * 127.0f; + for (var_v0 = 0; var_v0 < arg4; var_v0++, var_s0++) { + var_s0->l[0].l.dir[0] = sp3C[0]; + var_s0->l[0].l.dir[1] = sp3C[1]; + var_s0->l[0].l.dir[2] = sp3C[2]; } } -#else -GLOBAL_ASM("asm/non_matchings/math_util/func_802B8414.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 792017ad9d422c2467bd42686f383a5c41f41c75 diff --git a/src/math_util.h b/src/math_util.h index f3f352989..0f6263505 100644 --- a/src/math_util.h +++ b/src/math_util.h @@ -13,6 +13,9 @@ #define sqr(x) ((x) * (x)) +// Here to appease the pragma gods +double fabs(double x); + void func_802B4FF0(); void func_802B5794(Mat4, Vec3f, Vec3f); s32 func_802B4FF8(Mat4, s32); @@ -36,7 +39,7 @@ void func_802B5A44(Mat4, s16); void func_802B5AAC(Mat4, s16); void func_802B5CAC(s16, s16, Vec3f); void func_802B5D30(s16, s16, s32); -void func_802B5D64(uintptr_t, s16, s32, s32); +void func_802B5D64(uintptr_t, s16, s16, s32); void func_802B5F00(Mat4, f32); void func_802B5F74(Mat4, Vec3f, Vec3s); void func_802B60B4(Mat4, Vec3s, Vec3s); @@ -54,6 +57,7 @@ void func_802B75F8(Mtx*, Mat4); u16 atan2_lookup(f32, f32); u16 atan2s(f32, f32); f32 func_802B79B8(f32, f32); +f32 func_802B79F0(f32, f32); u16 func_802B7B50(f32, f32); void func_802B7C18(f32); s16 func_802B7C40(f32); @@ -69,6 +73,7 @@ f32 sins(u16); f32 coss(u16); s32 func_802B8058(u16, u16, u16); f32 func_802B80D0(Vec3f, Vec3f, u16, f32, f32, f32); +void func_802B8414(uintptr_t, Mat4, s16, s16, s32); extern u16 gRandomSeed16;