From bf4ca947112976e0412d7bd41ff6eb385a60a173 Mon Sep 17 00:00:00 2001 From: Tyler McGavran Date: Fri, 15 Jul 2022 14:49:40 -0400 Subject: [PATCH] Match a variety of functions (#245) Signed-off-by: Taggerung --- .../code_8001F980/func_80021E10.s | 81 -- .../code_80280650/func_80280A28.s | 75 -- .../code_80281FA0/func_80284AE8.s | 9 +- asm/non_matchings/math_util/func_802B5F74.s | 81 -- asm/non_matchings/math_util/func_802B60B4.s | 89 -- asm/non_matchings/math_util/func_802B6214.s | 89 -- asm/non_matchings/math_util/func_802B6BC0.s | 105 -- asm/non_matchings/math_util/func_802B6D58.s | 304 ------ data/data_credits_128480_2.s | 8 +- include/types.h | 63 -- src/code_800029B0.c | 50 +- src/code_8001F980.c | 69 +- src/code_8001F980.h | 2 + src/code_800B45E0.c | 44 +- src/code_80280650.c | 143 +-- src/code_80280650.h | 104 ++ src/code_80281FA0.c | 114 ++- src/math_util.c | 965 +++++++----------- src/math_util.h | 39 +- 19 files changed, 734 insertions(+), 1700 deletions(-) delete mode 100644 asm/non_matchings/code_8001F980/func_80021E10.s delete mode 100644 asm/non_matchings/code_80280650/func_80280A28.s delete mode 100644 asm/non_matchings/math_util/func_802B5F74.s delete mode 100644 asm/non_matchings/math_util/func_802B60B4.s delete mode 100644 asm/non_matchings/math_util/func_802B6214.s delete mode 100644 asm/non_matchings/math_util/func_802B6BC0.s delete mode 100644 asm/non_matchings/math_util/func_802B6D58.s create mode 100644 src/code_80280650.h diff --git a/asm/non_matchings/code_8001F980/func_80021E10.s b/asm/non_matchings/code_8001F980/func_80021E10.s deleted file mode 100644 index d2c86b7dd..000000000 --- a/asm/non_matchings/code_8001F980/func_80021E10.s +++ /dev/null @@ -1,81 +0,0 @@ -glabel func_80021E10 -/* 022A10 80021E10 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 022A14 80021E14 AFB0001C */ sw $s0, 0x1c($sp) -/* 022A18 80021E18 00808025 */ move $s0, $a0 -/* 022A1C 80021E1C AFBF0024 */ sw $ra, 0x24($sp) -/* 022A20 80021E20 AFB10020 */ sw $s1, 0x20($sp) -/* 022A24 80021E24 F7B40010 */ sdc1 $f20, 0x10($sp) -/* 022A28 80021E28 AFA5004C */ sw $a1, 0x4c($sp) -/* 022A2C 80021E2C 00C08825 */ move $s1, $a2 -/* 022A30 80021E30 0C0AE006 */ jal sins -/* 022A34 80021E34 94C40000 */ lhu $a0, ($a2) -/* 022A38 80021E38 E7A00038 */ swc1 $f0, 0x38($sp) -/* 022A3C 80021E3C 0C0AE00E */ jal coss -/* 022A40 80021E40 96240000 */ lhu $a0, ($s1) -/* 022A44 80021E44 46000506 */ mov.s $f20, $f0 -/* 022A48 80021E48 0C0AE006 */ jal sins -/* 022A4C 80021E4C 96240002 */ lhu $a0, 2($s1) -/* 022A50 80021E50 96240002 */ lhu $a0, 2($s1) -/* 022A54 80021E54 0C0AE00E */ jal coss -/* 022A58 80021E58 E7A00030 */ swc1 $f0, 0x30($sp) -/* 022A5C 80021E5C 96240004 */ lhu $a0, 4($s1) -/* 022A60 80021E60 0C0AE006 */ jal sins -/* 022A64 80021E64 E7A0002C */ swc1 $f0, 0x2c($sp) -/* 022A68 80021E68 96240004 */ lhu $a0, 4($s1) -/* 022A6C 80021E6C 0C0AE00E */ jal coss -/* 022A70 80021E70 E7A00028 */ swc1 $f0, 0x28($sp) -/* 022A74 80021E74 C7AE0030 */ lwc1 $f14, 0x30($sp) -/* 022A78 80021E78 C7B20038 */ lwc1 $f18, 0x38($sp) -/* 022A7C 80021E7C C7B0002C */ lwc1 $f16, 0x2c($sp) -/* 022A80 80021E80 C7A20028 */ lwc1 $f2, 0x28($sp) -/* 022A84 80021E84 460E9302 */ mul.s $f12, $f18, $f14 -/* 022A88 80021E88 46008287 */ neg.s $f10, $f16 -/* 022A8C 80021E8C 8FA2004C */ lw $v0, 0x4c($sp) -/* 022A90 80021E90 46008102 */ mul.s $f4, $f16, $f0 -/* 022A94 80021E94 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 022A98 80021E98 46026182 */ mul.s $f6, $f12, $f2 -/* 022A9C 80021E9C 46062200 */ add.s $f8, $f4, $f6 -/* 022AA0 80021EA0 46025102 */ mul.s $f4, $f10, $f2 -/* 022AA4 80021EA4 00000000 */ nop -/* 022AA8 80021EA8 46006182 */ mul.s $f6, $f12, $f0 -/* 022AAC 80021EAC E6080000 */ swc1 $f8, ($s0) -/* 022AB0 80021EB0 460EA282 */ mul.s $f10, $f20, $f14 -/* 022AB4 80021EB4 46062200 */ add.s $f8, $f4, $f6 -/* 022AB8 80021EB8 4602A182 */ mul.s $f6, $f20, $f2 -/* 022ABC 80021EBC E60A0020 */ swc1 $f10, 0x20($s0) -/* 022AC0 80021EC0 46009287 */ neg.s $f10, $f18 -/* 022AC4 80021EC4 E6080010 */ swc1 $f8, 0x10($s0) -/* 022AC8 80021EC8 4600A202 */ mul.s $f8, $f20, $f0 -/* 022ACC 80021ECC C4440000 */ lwc1 $f4, ($v0) -/* 022AD0 80021ED0 E60A0024 */ swc1 $f10, 0x24($s0) -/* 022AD4 80021ED4 46109302 */ mul.s $f12, $f18, $f16 -/* 022AD8 80021ED8 E6060004 */ swc1 $f6, 4($s0) -/* 022ADC 80021EDC E6040030 */ swc1 $f4, 0x30($s0) -/* 022AE0 80021EE0 46007187 */ neg.s $f6, $f14 -/* 022AE4 80021EE4 E6080014 */ swc1 $f8, 0x14($s0) -/* 022AE8 80021EE8 46003202 */ mul.s $f8, $f6, $f0 -/* 022AEC 80021EEC C4440004 */ lwc1 $f4, 4($v0) -/* 022AF0 80021EF0 46026282 */ mul.s $f10, $f12, $f2 -/* 022AF4 80021EF4 E6040034 */ swc1 $f4, 0x34($s0) -/* 022AF8 80021EF8 46027182 */ mul.s $f6, $f14, $f2 -/* 022AFC 80021EFC 460A4100 */ add.s $f4, $f8, $f10 -/* 022B00 80021F00 46006202 */ mul.s $f8, $f12, $f0 -/* 022B04 80021F04 44800000 */ mtc1 $zero, $f0 -/* 022B08 80021F08 E6040008 */ swc1 $f4, 8($s0) -/* 022B0C 80021F0C 4610A102 */ mul.s $f4, $f20, $f16 -/* 022B10 80021F10 46083280 */ add.s $f10, $f6, $f8 -/* 022B14 80021F14 44814000 */ mtc1 $at, $f8 -/* 022B18 80021F18 E6040028 */ swc1 $f4, 0x28($s0) -/* 022B1C 80021F1C E60A0018 */ swc1 $f10, 0x18($s0) -/* 022B20 80021F20 C4460008 */ lwc1 $f6, 8($v0) -/* 022B24 80021F24 E600000C */ swc1 $f0, 0xc($s0) -/* 022B28 80021F28 E600001C */ swc1 $f0, 0x1c($s0) -/* 022B2C 80021F2C E600002C */ swc1 $f0, 0x2c($s0) -/* 022B30 80021F30 E608003C */ swc1 $f8, 0x3c($s0) -/* 022B34 80021F34 E6060038 */ swc1 $f6, 0x38($s0) -/* 022B38 80021F38 8FBF0024 */ lw $ra, 0x24($sp) -/* 022B3C 80021F3C 8FB10020 */ lw $s1, 0x20($sp) -/* 022B40 80021F40 8FB0001C */ lw $s0, 0x1c($sp) -/* 022B44 80021F44 D7B40010 */ ldc1 $f20, 0x10($sp) -/* 022B48 80021F48 03E00008 */ jr $ra -/* 022B4C 80021F4C 27BD0048 */ addiu $sp, $sp, 0x48 diff --git a/asm/non_matchings/code_80280650/func_80280A28.s b/asm/non_matchings/code_80280650/func_80280A28.s deleted file mode 100644 index 60625588b..000000000 --- a/asm/non_matchings/code_80280650/func_80280A28.s +++ /dev/null @@ -1,75 +0,0 @@ -glabel func_80280A28 -/* 124068 80280A28 27BDFFA0 */ addiu $sp, $sp, -0x60 -/* 12406C 80280A2C 44866000 */ mtc1 $a2, $f12 -/* 124070 80280A30 AFA50064 */ sw $a1, 0x64($sp) -/* 124074 80280A34 00802825 */ move $a1, $a0 -/* 124078 80280A38 AFBF0014 */ sw $ra, 0x14($sp) -/* 12407C 80280A3C AFA40060 */ sw $a0, 0x60($sp) -/* 124080 80280A40 8FA60064 */ lw $a2, 0x64($sp) -/* 124084 80280A44 27A40020 */ addiu $a0, $sp, 0x20 -/* 124088 80280A48 0C008784 */ jal func_80021E10 -/* 12408C 80280A4C E7AC0068 */ swc1 $f12, 0x68($sp) -/* 124090 80280A50 3C028028 */ lui $v0, %hi(D_80287500) # $v0, 0x8028 -/* 124094 80280A54 24427500 */ addiu $v0, %lo(D_80287500) # addiu $v0, $v0, 0x7500 -/* 124098 80280A58 C7AC0068 */ lwc1 $f12, 0x68($sp) -/* 12409C 80280A5C C4440000 */ lwc1 $f4, ($v0) -/* 1240A0 80280A60 C4480010 */ lwc1 $f8, 0x10($v0) -/* 1240A4 80280A64 C4500020 */ lwc1 $f16, 0x20($v0) -/* 1240A8 80280A68 460C2182 */ mul.s $f6, $f4, $f12 -/* 1240AC 80280A6C C4440004 */ lwc1 $f4, 4($v0) -/* 1240B0 80280A70 3C0F8016 */ lui $t7, %hi(D_80164AF0) # $t7, 0x8016 -/* 1240B4 80280A74 460C4282 */ mul.s $f10, $f8, $f12 -/* 1240B8 80280A78 C4480014 */ lwc1 $f8, 0x14($v0) -/* 1240BC 80280A7C 85EF4AF0 */ lh $t7, %lo(D_80164AF0)($t7) -/* 1240C0 80280A80 460C8482 */ mul.s $f18, $f16, $f12 -/* 1240C4 80280A84 E7A60020 */ swc1 $f6, 0x20($sp) -/* 1240C8 80280A88 C4500024 */ lwc1 $f16, 0x24($v0) -/* 1240CC 80280A8C 460C2182 */ mul.s $f6, $f4, $f12 -/* 1240D0 80280A90 E7AA0024 */ swc1 $f10, 0x24($sp) -/* 1240D4 80280A94 C4440008 */ lwc1 $f4, 8($v0) -/* 1240D8 80280A98 460C4282 */ mul.s $f10, $f8, $f12 -/* 1240DC 80280A9C E7B20028 */ swc1 $f18, 0x28($sp) -/* 1240E0 80280AA0 C4480018 */ lwc1 $f8, 0x18($v0) -/* 1240E4 80280AA4 460C8482 */ mul.s $f18, $f16, $f12 -/* 1240E8 80280AA8 E7A60030 */ swc1 $f6, 0x30($sp) -/* 1240EC 80280AAC C4500028 */ lwc1 $f16, 0x28($v0) -/* 1240F0 80280AB0 460C2182 */ mul.s $f6, $f4, $f12 -/* 1240F4 80280AB4 E7AA0034 */ swc1 $f10, 0x34($sp) -/* 1240F8 80280AB8 3C0E8015 */ lui $t6, %hi(gGfxPool) # $t6, 0x8015 -/* 1240FC 80280ABC 460C4282 */ mul.s $f10, $f8, $f12 -/* 124100 80280AC0 E7B20038 */ swc1 $f18, 0x38($sp) -/* 124104 80280AC4 8DCEEF40 */ lw $t6, %lo(gGfxPool)($t6) -/* 124108 80280AC8 460C8482 */ mul.s $f18, $f16, $f12 -/* 12410C 80280ACC 000FC180 */ sll $t8, $t7, 6 -/* 124110 80280AD0 3401FAC0 */ li $at, 64192 -/* 124114 80280AD4 01D82021 */ addu $a0, $t6, $t8 -/* 124118 80280AD8 E7A60040 */ swc1 $f6, 0x40($sp) -/* 12411C 80280ADC E7AA0044 */ swc1 $f10, 0x44($sp) -/* 124120 80280AE0 00812021 */ addu $a0, $a0, $at -/* 124124 80280AE4 E7B20048 */ swc1 $f18, 0x48($sp) -/* 124128 80280AE8 0C008860 */ jal func_80022180 -/* 12412C 80280AEC 27A50020 */ addiu $a1, $sp, 0x20 -/* 124130 80280AF0 3C048015 */ lui $a0, %hi(gDisplayListHead) # $a0, 0x8015 -/* 124134 80280AF4 24840298 */ addiu $a0, %lo(gDisplayListHead) # addiu $a0, $a0, 0x298 -/* 124138 80280AF8 8C830000 */ lw $v1, ($a0) -/* 12413C 80280AFC 3C080102 */ lui $t0, (0x01020040 >> 16) # lui $t0, 0x102 -/* 124140 80280B00 35080040 */ ori $t0, (0x01020040 & 0xFFFF) # ori $t0, $t0, 0x40 -/* 124144 80280B04 24790008 */ addiu $t9, $v1, 8 -/* 124148 80280B08 AC990000 */ sw $t9, ($a0) -/* 12414C 80280B0C 3C0A8016 */ lui $t2, %hi(D_80164AF0) # $t2, 0x8016 -/* 124150 80280B10 AC680000 */ sw $t0, ($v1) -/* 124154 80280B14 854A4AF0 */ lh $t2, %lo(D_80164AF0)($t2) -/* 124158 80280B18 3C098015 */ lui $t1, %hi(gGfxPool) # $t1, 0x8015 -/* 12415C 80280B1C 8D29EF40 */ lw $t1, %lo(gGfxPool)($t1) -/* 124160 80280B20 000A5980 */ sll $t3, $t2, 6 -/* 124164 80280B24 3401FAC0 */ li $at, 64192 -/* 124168 80280B28 012B6021 */ addu $t4, $t1, $t3 -/* 12416C 80280B2C 01816821 */ addu $t5, $t4, $at -/* 124170 80280B30 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff -/* 124174 80280B34 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 124178 80280B38 01A17824 */ and $t7, $t5, $at -/* 12417C 80280B3C AC6F0004 */ sw $t7, 4($v1) -/* 124180 80280B40 8FBF0014 */ lw $ra, 0x14($sp) -/* 124184 80280B44 27BD0060 */ addiu $sp, $sp, 0x60 -/* 124188 80280B48 03E00008 */ jr $ra -/* 12418C 80280B4C 00000000 */ nop diff --git a/asm/non_matchings/code_80281FA0/func_80284AE8.s b/asm/non_matchings/code_80281FA0/func_80284AE8.s index 1dbb3d864..94297aaec 100644 --- a/asm/non_matchings/code_80281FA0/func_80284AE8.s +++ b/asm/non_matchings/code_80281FA0/func_80284AE8.s @@ -7,11 +7,12 @@ glabel func_80284AE8 /* 12813C 80284AFC 2DC10005 */ sltiu $at, $t6, 5 /* 128140 80284B00 10200043 */ beqz $at, .L80284C10 /* 128144 80284B04 000E7080 */ sll $t6, $t6, 2 -/* 128148 80284B08 3C018028 */ lui $at, %hi(D_80287480) #0x8028 +/* 128148 80284B08 3C018028 */ lui $at, %hi(jpt_80287480) #0x8028 /* 12814C 80284B0C 002E0821 */ addu $at, $at, $t6 -/* 128150 80284B10 8C2E7480 */ lw $t6, %lo(D_80287480)($at) # 0x7480($at) +/* 128150 80284B10 8C2E7480 */ lw $t6, %lo(jpt_80287480)($at) # 0x7480($at) /* 128154 80284B14 01C00008 */ jr $t6 /* 128158 80284B18 00000000 */ nop +glabel L80284B1C /* 12815C 80284B1C 3C0F8028 */ lui $t7, %hi(D_802876D0) # $t7, 0x8028 /* 128160 80284B20 85EF76D0 */ lh $t7, %lo(D_802876D0)($t7) /* 128164 80284B24 3C198028 */ lui $t9, %hi(D_80285D10) # $t9, 0x8028 @@ -24,6 +25,7 @@ glabel func_80284AE8 /* 128180 80284B40 A7A8001A */ sh $t0, 0x1a($sp) /* 128184 80284B44 10000033 */ b .L80284C14 /* 128188 80284B48 87B8001A */ lh $t8, 0x1a($sp) +glabel L80284B4C /* 12818C 80284B4C 3C098028 */ lui $t1, %hi(D_802876D0) # $t1, 0x8028 /* 128190 80284B50 852976D0 */ lh $t1, %lo(D_802876D0)($t1) /* 128194 80284B54 3C0B8028 */ lui $t3, %hi(D_80285D10) # $t3, 0x8028 @@ -36,6 +38,7 @@ glabel func_80284AE8 /* 1281B0 80284B70 A7AC001A */ sh $t4, 0x1a($sp) /* 1281B4 80284B74 10000027 */ b .L80284C14 /* 1281B8 80284B78 87B8001A */ lh $t8, 0x1a($sp) +glabel L80284B7C /* 1281BC 80284B7C 3C0D8028 */ lui $t5, %hi(D_802876D0) # $t5, 0x8028 /* 1281C0 80284B80 85AD76D0 */ lh $t5, %lo(D_802876D0)($t5) /* 1281C4 80284B84 3C0F8028 */ lui $t7, %hi(D_80285D10) # $t7, 0x8028 @@ -48,6 +51,7 @@ glabel func_80284AE8 /* 1281E0 80284BA0 A7B8001A */ sh $t8, 0x1a($sp) /* 1281E4 80284BA4 1000001B */ b .L80284C14 /* 1281E8 80284BA8 87B8001A */ lh $t8, 0x1a($sp) +glabel L80284BAC /* 1281EC 80284BAC 3C088028 */ lui $t0, %hi(D_802876D0) # $t0, 0x8028 /* 1281F0 80284BB0 850876D0 */ lh $t0, %lo(D_802876D0)($t0) /* 1281F4 80284BB4 3C0A8028 */ lui $t2, %hi(D_80285D58) # $t2, 0x8028 @@ -63,6 +67,7 @@ glabel func_80284AE8 /* 12821C 80284BDC 8FA40028 */ lw $a0, 0x28($sp) /* 128220 80284BE0 1000000C */ b .L80284C14 /* 128224 80284BE4 87B8001A */ lh $t8, 0x1a($sp) +glabel L80284BE8 /* 128228 80284BE8 3C0C8028 */ lui $t4, %hi(D_802876D0) # $t4, 0x8028 /* 12822C 80284BEC 858C76D0 */ lh $t4, %lo(D_802876D0)($t4) /* 128230 80284BF0 3C0E8028 */ lui $t6, %hi(D_80286B5C) # $t6, 0x8028 diff --git a/asm/non_matchings/math_util/func_802B5F74.s b/asm/non_matchings/math_util/func_802B5F74.s deleted file mode 100644 index 030abbf14..000000000 --- a/asm/non_matchings/math_util/func_802B5F74.s +++ /dev/null @@ -1,81 +0,0 @@ -glabel func_802B5F74 -/* 11F584 802B5F74 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 11F588 802B5F78 AFB0001C */ sw $s0, 0x1c($sp) -/* 11F58C 802B5F7C 00808025 */ move $s0, $a0 -/* 11F590 802B5F80 AFBF0024 */ sw $ra, 0x24($sp) -/* 11F594 802B5F84 AFB10020 */ sw $s1, 0x20($sp) -/* 11F598 802B5F88 F7B40010 */ sdc1 $f20, 0x10($sp) -/* 11F59C 802B5F8C AFA50044 */ sw $a1, 0x44($sp) -/* 11F5A0 802B5F90 00C08825 */ move $s1, $a2 -/* 11F5A4 802B5F94 0C0AE006 */ jal sins -/* 11F5A8 802B5F98 94C40000 */ lhu $a0, ($a2) -/* 11F5AC 802B5F9C E7A0003C */ swc1 $f0, 0x3c($sp) -/* 11F5B0 802B5FA0 0C0AE00E */ jal coss -/* 11F5B4 802B5FA4 96240000 */ lhu $a0, ($s1) -/* 11F5B8 802B5FA8 46000506 */ mov.s $f20, $f0 -/* 11F5BC 802B5FAC 0C0AE006 */ jal sins -/* 11F5C0 802B5FB0 96240002 */ lhu $a0, 2($s1) -/* 11F5C4 802B5FB4 96240002 */ lhu $a0, 2($s1) -/* 11F5C8 802B5FB8 0C0AE00E */ jal coss -/* 11F5CC 802B5FBC E7A00034 */ swc1 $f0, 0x34($sp) -/* 11F5D0 802B5FC0 96240004 */ lhu $a0, 4($s1) -/* 11F5D4 802B5FC4 0C0AE006 */ jal sins -/* 11F5D8 802B5FC8 E7A00030 */ swc1 $f0, 0x30($sp) -/* 11F5DC 802B5FCC 96240004 */ lhu $a0, 4($s1) -/* 11F5E0 802B5FD0 0C0AE00E */ jal coss -/* 11F5E4 802B5FD4 E7A0002C */ swc1 $f0, 0x2c($sp) -/* 11F5E8 802B5FD8 C7AE0034 */ lwc1 $f14, 0x34($sp) -/* 11F5EC 802B5FDC C7B2003C */ lwc1 $f18, 0x3c($sp) -/* 11F5F0 802B5FE0 C7B00030 */ lwc1 $f16, 0x30($sp) -/* 11F5F4 802B5FE4 C7A2002C */ lwc1 $f2, 0x2c($sp) -/* 11F5F8 802B5FE8 460E9302 */ mul.s $f12, $f18, $f14 -/* 11F5FC 802B5FEC 46008287 */ neg.s $f10, $f16 -/* 11F600 802B5FF0 8FA20044 */ lw $v0, 0x44($sp) -/* 11F604 802B5FF4 46008102 */ mul.s $f4, $f16, $f0 -/* 11F608 802B5FF8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 11F60C 802B5FFC 46026182 */ mul.s $f6, $f12, $f2 -/* 11F610 802B6000 46062200 */ add.s $f8, $f4, $f6 -/* 11F614 802B6004 46025102 */ mul.s $f4, $f10, $f2 -/* 11F618 802B6008 00000000 */ nop -/* 11F61C 802B600C 46006182 */ mul.s $f6, $f12, $f0 -/* 11F620 802B6010 E6080000 */ swc1 $f8, ($s0) -/* 11F624 802B6014 460EA282 */ mul.s $f10, $f20, $f14 -/* 11F628 802B6018 46062200 */ add.s $f8, $f4, $f6 -/* 11F62C 802B601C 4602A182 */ mul.s $f6, $f20, $f2 -/* 11F630 802B6020 E60A0020 */ swc1 $f10, 0x20($s0) -/* 11F634 802B6024 46009287 */ neg.s $f10, $f18 -/* 11F638 802B6028 E6080010 */ swc1 $f8, 0x10($s0) -/* 11F63C 802B602C 4600A202 */ mul.s $f8, $f20, $f0 -/* 11F640 802B6030 C4440000 */ lwc1 $f4, ($v0) -/* 11F644 802B6034 E60A0024 */ swc1 $f10, 0x24($s0) -/* 11F648 802B6038 46109302 */ mul.s $f12, $f18, $f16 -/* 11F64C 802B603C E6060004 */ swc1 $f6, 4($s0) -/* 11F650 802B6040 E6040030 */ swc1 $f4, 0x30($s0) -/* 11F654 802B6044 46007187 */ neg.s $f6, $f14 -/* 11F658 802B6048 E6080014 */ swc1 $f8, 0x14($s0) -/* 11F65C 802B604C 46003202 */ mul.s $f8, $f6, $f0 -/* 11F660 802B6050 C4440004 */ lwc1 $f4, 4($v0) -/* 11F664 802B6054 46026282 */ mul.s $f10, $f12, $f2 -/* 11F668 802B6058 E6040034 */ swc1 $f4, 0x34($s0) -/* 11F66C 802B605C 46027182 */ mul.s $f6, $f14, $f2 -/* 11F670 802B6060 460A4100 */ add.s $f4, $f8, $f10 -/* 11F674 802B6064 46006202 */ mul.s $f8, $f12, $f0 -/* 11F678 802B6068 44800000 */ mtc1 $zero, $f0 -/* 11F67C 802B606C E6040008 */ swc1 $f4, 8($s0) -/* 11F680 802B6070 4610A102 */ mul.s $f4, $f20, $f16 -/* 11F684 802B6074 46083280 */ add.s $f10, $f6, $f8 -/* 11F688 802B6078 44814000 */ mtc1 $at, $f8 -/* 11F68C 802B607C E6040028 */ swc1 $f4, 0x28($s0) -/* 11F690 802B6080 E60A0018 */ swc1 $f10, 0x18($s0) -/* 11F694 802B6084 C4460008 */ lwc1 $f6, 8($v0) -/* 11F698 802B6088 E600000C */ swc1 $f0, 0xc($s0) -/* 11F69C 802B608C E600001C */ swc1 $f0, 0x1c($s0) -/* 11F6A0 802B6090 E600002C */ swc1 $f0, 0x2c($s0) -/* 11F6A4 802B6094 E608003C */ swc1 $f8, 0x3c($s0) -/* 11F6A8 802B6098 E6060038 */ swc1 $f6, 0x38($s0) -/* 11F6AC 802B609C 8FBF0024 */ lw $ra, 0x24($sp) -/* 11F6B0 802B60A0 8FB10020 */ lw $s1, 0x20($sp) -/* 11F6B4 802B60A4 8FB0001C */ lw $s0, 0x1c($sp) -/* 11F6B8 802B60A8 D7B40010 */ ldc1 $f20, 0x10($sp) -/* 11F6BC 802B60AC 03E00008 */ jr $ra -/* 11F6C0 802B60B0 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/asm/non_matchings/math_util/func_802B60B4.s b/asm/non_matchings/math_util/func_802B60B4.s deleted file mode 100644 index b9f3f445b..000000000 --- a/asm/non_matchings/math_util/func_802B60B4.s +++ /dev/null @@ -1,89 +0,0 @@ -glabel func_802B60B4 -/* 11F6C4 802B60B4 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 11F6C8 802B60B8 AFB0001C */ sw $s0, 0x1c($sp) -/* 11F6CC 802B60BC 00808025 */ move $s0, $a0 -/* 11F6D0 802B60C0 AFBF0024 */ sw $ra, 0x24($sp) -/* 11F6D4 802B60C4 AFB10020 */ sw $s1, 0x20($sp) -/* 11F6D8 802B60C8 F7B40010 */ sdc1 $f20, 0x10($sp) -/* 11F6DC 802B60CC AFA50044 */ sw $a1, 0x44($sp) -/* 11F6E0 802B60D0 00C08825 */ move $s1, $a2 -/* 11F6E4 802B60D4 0C0AE006 */ jal sins -/* 11F6E8 802B60D8 94C40000 */ lhu $a0, ($a2) -/* 11F6EC 802B60DC E7A0003C */ swc1 $f0, 0x3c($sp) -/* 11F6F0 802B60E0 0C0AE00E */ jal coss -/* 11F6F4 802B60E4 96240000 */ lhu $a0, ($s1) -/* 11F6F8 802B60E8 46000506 */ mov.s $f20, $f0 -/* 11F6FC 802B60EC 0C0AE006 */ jal sins -/* 11F700 802B60F0 96240002 */ lhu $a0, 2($s1) -/* 11F704 802B60F4 96240002 */ lhu $a0, 2($s1) -/* 11F708 802B60F8 0C0AE00E */ jal coss -/* 11F70C 802B60FC E7A00034 */ swc1 $f0, 0x34($sp) -/* 11F710 802B6100 96240004 */ lhu $a0, 4($s1) -/* 11F714 802B6104 0C0AE006 */ jal sins -/* 11F718 802B6108 E7A00030 */ swc1 $f0, 0x30($sp) -/* 11F71C 802B610C 96240004 */ lhu $a0, 4($s1) -/* 11F720 802B6110 0C0AE00E */ jal coss -/* 11F724 802B6114 E7A0002C */ swc1 $f0, 0x2c($sp) -/* 11F728 802B6118 C7AE0034 */ lwc1 $f14, 0x34($sp) -/* 11F72C 802B611C C7B2003C */ lwc1 $f18, 0x3c($sp) -/* 11F730 802B6120 C7B00030 */ lwc1 $f16, 0x30($sp) -/* 11F734 802B6124 C7A2002C */ lwc1 $f2, 0x2c($sp) -/* 11F738 802B6128 460E9302 */ mul.s $f12, $f18, $f14 -/* 11F73C 802B612C 46008287 */ neg.s $f10, $f16 -/* 11F740 802B6130 8FA20044 */ lw $v0, 0x44($sp) -/* 11F744 802B6134 46008102 */ mul.s $f4, $f16, $f0 -/* 11F748 802B6138 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 11F74C 802B613C 46026182 */ mul.s $f6, $f12, $f2 -/* 11F750 802B6140 46062200 */ add.s $f8, $f4, $f6 -/* 11F754 802B6144 46025102 */ mul.s $f4, $f10, $f2 -/* 11F758 802B6148 00000000 */ nop -/* 11F75C 802B614C 46006182 */ mul.s $f6, $f12, $f0 -/* 11F760 802B6150 E6080000 */ swc1 $f8, ($s0) -/* 11F764 802B6154 460EA282 */ mul.s $f10, $f20, $f14 -/* 11F768 802B6158 46062200 */ add.s $f8, $f4, $f6 -/* 11F76C 802B615C E60A0008 */ swc1 $f10, 8($s0) -/* 11F770 802B6160 E6080004 */ swc1 $f8, 4($s0) -/* 11F774 802B6164 844E0000 */ lh $t6, ($v0) -/* 11F778 802B6168 4602A202 */ mul.s $f8, $f20, $f2 -/* 11F77C 802B616C 448E2000 */ mtc1 $t6, $f4 -/* 11F780 802B6170 4600A282 */ mul.s $f10, $f20, $f0 -/* 11F784 802B6174 E6080010 */ swc1 $f8, 0x10($s0) -/* 11F788 802B6178 46109302 */ mul.s $f12, $f18, $f16 -/* 11F78C 802B617C E60A0014 */ swc1 $f10, 0x14($s0) -/* 11F790 802B6180 46007287 */ neg.s $f10, $f14 -/* 11F794 802B6184 468021A0 */ cvt.s.w $f6, $f4 -/* 11F798 802B6188 46009107 */ neg.s $f4, $f18 -/* 11F79C 802B618C E606000C */ swc1 $f6, 0xc($s0) -/* 11F7A0 802B6190 E6040018 */ swc1 $f4, 0x18($s0) -/* 11F7A4 802B6194 844F0002 */ lh $t7, 2($v0) -/* 11F7A8 802B6198 46005102 */ mul.s $f4, $f10, $f0 -/* 11F7AC 802B619C 448F3000 */ mtc1 $t7, $f6 -/* 11F7B0 802B61A0 00000000 */ nop -/* 11F7B4 802B61A4 46803220 */ cvt.s.w $f8, $f6 -/* 11F7B8 802B61A8 46026182 */ mul.s $f6, $f12, $f2 -/* 11F7BC 802B61AC 00000000 */ nop -/* 11F7C0 802B61B0 46027282 */ mul.s $f10, $f14, $f2 -/* 11F7C4 802B61B4 E608001C */ swc1 $f8, 0x1c($s0) -/* 11F7C8 802B61B8 46062200 */ add.s $f8, $f4, $f6 -/* 11F7CC 802B61BC 46006102 */ mul.s $f4, $f12, $f0 -/* 11F7D0 802B61C0 44800000 */ mtc1 $zero, $f0 -/* 11F7D4 802B61C4 E6080020 */ swc1 $f8, 0x20($s0) -/* 11F7D8 802B61C8 4610A202 */ mul.s $f8, $f20, $f16 -/* 11F7DC 802B61CC 46045180 */ add.s $f6, $f10, $f4 -/* 11F7E0 802B61D0 E6080028 */ swc1 $f8, 0x28($s0) -/* 11F7E4 802B61D4 E6060024 */ swc1 $f6, 0x24($s0) -/* 11F7E8 802B61D8 84580004 */ lh $t8, 4($v0) -/* 11F7EC 802B61DC 44813000 */ mtc1 $at, $f6 -/* 11F7F0 802B61E0 E6000030 */ swc1 $f0, 0x30($s0) -/* 11F7F4 802B61E4 44985000 */ mtc1 $t8, $f10 -/* 11F7F8 802B61E8 E6000034 */ swc1 $f0, 0x34($s0) -/* 11F7FC 802B61EC E6000038 */ swc1 $f0, 0x38($s0) -/* 11F800 802B61F0 46805120 */ cvt.s.w $f4, $f10 -/* 11F804 802B61F4 E606003C */ swc1 $f6, 0x3c($s0) -/* 11F808 802B61F8 E604002C */ swc1 $f4, 0x2c($s0) -/* 11F80C 802B61FC 8FBF0024 */ lw $ra, 0x24($sp) -/* 11F810 802B6200 8FB10020 */ lw $s1, 0x20($sp) -/* 11F814 802B6204 8FB0001C */ lw $s0, 0x1c($sp) -/* 11F818 802B6208 D7B40010 */ ldc1 $f20, 0x10($sp) -/* 11F81C 802B620C 03E00008 */ jr $ra -/* 11F820 802B6210 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/asm/non_matchings/math_util/func_802B6214.s b/asm/non_matchings/math_util/func_802B6214.s deleted file mode 100644 index 8bb8a387a..000000000 --- a/asm/non_matchings/math_util/func_802B6214.s +++ /dev/null @@ -1,89 +0,0 @@ -glabel func_802B6214 -/* 11F824 802B6214 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 11F828 802B6218 AFB0001C */ sw $s0, 0x1c($sp) -/* 11F82C 802B621C 00808025 */ move $s0, $a0 -/* 11F830 802B6220 AFBF0024 */ sw $ra, 0x24($sp) -/* 11F834 802B6224 AFB10020 */ sw $s1, 0x20($sp) -/* 11F838 802B6228 F7B40010 */ sdc1 $f20, 0x10($sp) -/* 11F83C 802B622C AFA50044 */ sw $a1, 0x44($sp) -/* 11F840 802B6230 00C08825 */ move $s1, $a2 -/* 11F844 802B6234 0C0AE006 */ jal sins -/* 11F848 802B6238 94C40000 */ lhu $a0, ($a2) -/* 11F84C 802B623C E7A0003C */ swc1 $f0, 0x3c($sp) -/* 11F850 802B6240 0C0AE00E */ jal coss -/* 11F854 802B6244 96240000 */ lhu $a0, ($s1) -/* 11F858 802B6248 46000506 */ mov.s $f20, $f0 -/* 11F85C 802B624C 0C0AE006 */ jal sins -/* 11F860 802B6250 96240002 */ lhu $a0, 2($s1) -/* 11F864 802B6254 96240002 */ lhu $a0, 2($s1) -/* 11F868 802B6258 0C0AE00E */ jal coss -/* 11F86C 802B625C E7A00034 */ swc1 $f0, 0x34($sp) -/* 11F870 802B6260 96240004 */ lhu $a0, 4($s1) -/* 11F874 802B6264 0C0AE006 */ jal sins -/* 11F878 802B6268 E7A00030 */ swc1 $f0, 0x30($sp) -/* 11F87C 802B626C 96240004 */ lhu $a0, 4($s1) -/* 11F880 802B6270 0C0AE00E */ jal coss -/* 11F884 802B6274 E7A0002C */ swc1 $f0, 0x2c($sp) -/* 11F888 802B6278 C7AE0034 */ lwc1 $f14, 0x34($sp) -/* 11F88C 802B627C C7B2003C */ lwc1 $f18, 0x3c($sp) -/* 11F890 802B6280 C7B00030 */ lwc1 $f16, 0x30($sp) -/* 11F894 802B6284 C7A2002C */ lwc1 $f2, 0x2c($sp) -/* 11F898 802B6288 460E9302 */ mul.s $f12, $f18, $f14 -/* 11F89C 802B628C 46008287 */ neg.s $f10, $f16 -/* 11F8A0 802B6290 8FA20044 */ lw $v0, 0x44($sp) -/* 11F8A4 802B6294 46008102 */ mul.s $f4, $f16, $f0 -/* 11F8A8 802B6298 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 11F8AC 802B629C 46026182 */ mul.s $f6, $f12, $f2 -/* 11F8B0 802B62A0 46062200 */ add.s $f8, $f4, $f6 -/* 11F8B4 802B62A4 46025102 */ mul.s $f4, $f10, $f2 -/* 11F8B8 802B62A8 00000000 */ nop -/* 11F8BC 802B62AC 46006182 */ mul.s $f6, $f12, $f0 -/* 11F8C0 802B62B0 E6080000 */ swc1 $f8, ($s0) -/* 11F8C4 802B62B4 460EA282 */ mul.s $f10, $f20, $f14 -/* 11F8C8 802B62B8 46062200 */ add.s $f8, $f4, $f6 -/* 11F8CC 802B62BC E60A0020 */ swc1 $f10, 0x20($s0) -/* 11F8D0 802B62C0 E6080010 */ swc1 $f8, 0x10($s0) -/* 11F8D4 802B62C4 844E0000 */ lh $t6, ($v0) -/* 11F8D8 802B62C8 4602A202 */ mul.s $f8, $f20, $f2 -/* 11F8DC 802B62CC 448E2000 */ mtc1 $t6, $f4 -/* 11F8E0 802B62D0 4600A282 */ mul.s $f10, $f20, $f0 -/* 11F8E4 802B62D4 E6080004 */ swc1 $f8, 4($s0) -/* 11F8E8 802B62D8 46109302 */ mul.s $f12, $f18, $f16 -/* 11F8EC 802B62DC E60A0014 */ swc1 $f10, 0x14($s0) -/* 11F8F0 802B62E0 46007287 */ neg.s $f10, $f14 -/* 11F8F4 802B62E4 468021A0 */ cvt.s.w $f6, $f4 -/* 11F8F8 802B62E8 46009107 */ neg.s $f4, $f18 -/* 11F8FC 802B62EC E6060030 */ swc1 $f6, 0x30($s0) -/* 11F900 802B62F0 E6040024 */ swc1 $f4, 0x24($s0) -/* 11F904 802B62F4 844F0002 */ lh $t7, 2($v0) -/* 11F908 802B62F8 46005102 */ mul.s $f4, $f10, $f0 -/* 11F90C 802B62FC 448F3000 */ mtc1 $t7, $f6 -/* 11F910 802B6300 00000000 */ nop -/* 11F914 802B6304 46803220 */ cvt.s.w $f8, $f6 -/* 11F918 802B6308 46026182 */ mul.s $f6, $f12, $f2 -/* 11F91C 802B630C 00000000 */ nop -/* 11F920 802B6310 46027282 */ mul.s $f10, $f14, $f2 -/* 11F924 802B6314 E6080034 */ swc1 $f8, 0x34($s0) -/* 11F928 802B6318 46062200 */ add.s $f8, $f4, $f6 -/* 11F92C 802B631C 46006102 */ mul.s $f4, $f12, $f0 -/* 11F930 802B6320 44800000 */ mtc1 $zero, $f0 -/* 11F934 802B6324 E6080008 */ swc1 $f8, 8($s0) -/* 11F938 802B6328 4610A202 */ mul.s $f8, $f20, $f16 -/* 11F93C 802B632C 46045180 */ add.s $f6, $f10, $f4 -/* 11F940 802B6330 E6080028 */ swc1 $f8, 0x28($s0) -/* 11F944 802B6334 E6060018 */ swc1 $f6, 0x18($s0) -/* 11F948 802B6338 84580004 */ lh $t8, 4($v0) -/* 11F94C 802B633C 44813000 */ mtc1 $at, $f6 -/* 11F950 802B6340 E600000C */ swc1 $f0, 0xc($s0) -/* 11F954 802B6344 44985000 */ mtc1 $t8, $f10 -/* 11F958 802B6348 E600001C */ swc1 $f0, 0x1c($s0) -/* 11F95C 802B634C E600002C */ swc1 $f0, 0x2c($s0) -/* 11F960 802B6350 46805120 */ cvt.s.w $f4, $f10 -/* 11F964 802B6354 E606003C */ swc1 $f6, 0x3c($s0) -/* 11F968 802B6358 E6040038 */ swc1 $f4, 0x38($s0) -/* 11F96C 802B635C 8FBF0024 */ lw $ra, 0x24($sp) -/* 11F970 802B6360 8FB10020 */ lw $s1, 0x20($sp) -/* 11F974 802B6364 8FB0001C */ lw $s0, 0x1c($sp) -/* 11F978 802B6368 D7B40010 */ ldc1 $f20, 0x10($sp) -/* 11F97C 802B636C 03E00008 */ jr $ra -/* 11F980 802B6370 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/asm/non_matchings/math_util/func_802B6BC0.s b/asm/non_matchings/math_util/func_802B6BC0.s deleted file mode 100644 index f48881ae0..000000000 --- a/asm/non_matchings/math_util/func_802B6BC0.s +++ /dev/null @@ -1,105 +0,0 @@ -glabel func_802B6BC0 -/* 1201D0 802B6BC0 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 1201D4 802B6BC4 44867000 */ mtc1 $a2, $f14 -/* 1201D8 802B6BC8 00803025 */ move $a2, $a0 -/* 1201DC 802B6BCC AFA40040 */ sw $a0, 0x40($sp) -/* 1201E0 802B6BD0 AFBF001C */ sw $ra, 0x1c($sp) -/* 1201E4 802B6BD4 30A4FFFF */ andi $a0, $a1, 0xffff -/* 1201E8 802B6BD8 F7B40010 */ sdc1 $f20, 0x10($sp) -/* 1201EC 802B6BDC AFA50044 */ sw $a1, 0x44($sp) -/* 1201F0 802B6BE0 AFA7004C */ sw $a3, 0x4c($sp) -/* 1201F4 802B6BE4 AFA4002C */ sw $a0, 0x2c($sp) -/* 1201F8 802B6BE8 AFA60040 */ sw $a2, 0x40($sp) -/* 1201FC 802B6BEC 0C0AE006 */ jal sins -/* 120200 802B6BF0 E7AE0048 */ swc1 $f14, 0x48($sp) -/* 120204 802B6BF4 8FA4002C */ lw $a0, 0x2c($sp) -/* 120208 802B6BF8 0C0AE00E */ jal coss -/* 12020C 802B6BFC E7A0003C */ swc1 $f0, 0x3c($sp) -/* 120210 802B6C00 C7AE0048 */ lwc1 $f14, 0x48($sp) -/* 120214 802B6C04 C7B40050 */ lwc1 $f20, 0x50($sp) -/* 120218 802B6C08 46000486 */ mov.s $f18, $f0 -/* 12021C 802B6C0C 460E7102 */ mul.s $f4, $f14, $f14 -/* 120220 802B6C10 44801000 */ mtc1 $zero, $f2 -/* 120224 802B6C14 8FA60040 */ lw $a2, 0x40($sp) -/* 120228 802B6C18 4614A182 */ mul.s $f6, $f20, $f20 -/* 12022C 802B6C1C C7B0003C */ lwc1 $f16, 0x3c($sp) -/* 120230 802B6C20 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 120234 802B6C24 46062000 */ add.s $f0, $f4, $f6 -/* 120238 802B6C28 46000004 */ sqrt.s $f0, $f0 -/* 12023C 802B6C2C 46020032 */ c.eq.s $f0, $f2 -/* 120240 802B6C30 00000000 */ nop -/* 120244 802B6C34 45030039 */ bc1tl .L802B6D1C -/* 120248 802B6C38 44810000 */ mtc1 $at, $f0 -/* 12024C 802B6C3C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 120250 802B6C40 44814000 */ mtc1 $at, $f8 -/* 120254 802B6C44 C7A4004C */ lwc1 $f4, 0x4c($sp) -/* 120258 802B6C48 4600A287 */ neg.s $f10, $f20 -/* 12025C 802B6C4C 46004303 */ div.s $f12, $f8, $f0 -/* 120260 802B6C50 E7AA002C */ swc1 $f10, 0x2c($sp) -/* 120264 802B6C54 C7A8002C */ lwc1 $f8, 0x2c($sp) -/* 120268 802B6C58 46048182 */ mul.s $f6, $f16, $f4 -/* 12026C 802B6C5C E7A60028 */ swc1 $f6, 0x28($sp) -/* 120270 802B6C60 C7A40028 */ lwc1 $f4, 0x28($sp) -/* 120274 802B6C64 46124282 */ mul.s $f10, $f8, $f18 -/* 120278 802B6C68 E7AC0030 */ swc1 $f12, 0x30($sp) -/* 12027C 802B6C6C 460E2182 */ mul.s $f6, $f4, $f14 -/* 120280 802B6C70 46065201 */ sub.s $f8, $f10, $f6 -/* 120284 802B6C74 460C4102 */ mul.s $f4, $f8, $f12 -/* 120288 802B6C78 E4C40000 */ swc1 $f4, ($a2) -/* 12028C 802B6C7C C7AA004C */ lwc1 $f10, 0x4c($sp) -/* 120290 802B6C80 460A9182 */ mul.s $f6, $f18, $f10 -/* 120294 802B6C84 E7A60024 */ swc1 $f6, 0x24($sp) -/* 120298 802B6C88 4610A202 */ mul.s $f8, $f20, $f16 -/* 12029C 802B6C8C C7A40024 */ lwc1 $f4, 0x24($sp) -/* 1202A0 802B6C90 460E2282 */ mul.s $f10, $f4, $f14 -/* 1202A4 802B6C94 460A4181 */ sub.s $f6, $f8, $f10 -/* 1202A8 802B6C98 46007207 */ neg.s $f8, $f14 -/* 1202AC 802B6C9C 460C3102 */ mul.s $f4, $f6, $f12 -/* 1202B0 802B6CA0 E4C80018 */ swc1 $f8, 0x18($a2) -/* 1202B4 802B6CA4 46008282 */ mul.s $f10, $f16, $f0 -/* 1202B8 802B6CA8 00000000 */ nop -/* 1202BC 802B6CAC 46009182 */ mul.s $f6, $f18, $f0 -/* 1202C0 802B6CB0 E4C4000C */ swc1 $f4, 0xc($a2) -/* 1202C4 802B6CB4 E4CA0004 */ swc1 $f10, 4($a2) -/* 1202C8 802B6CB8 460E9282 */ mul.s $f10, $f18, $f14 -/* 1202CC 802B6CBC E4C60010 */ swc1 $f6, 0x10($a2) -/* 1202D0 802B6CC0 C7A4004C */ lwc1 $f4, 0x4c($sp) -/* 1202D4 802B6CC4 C7A00030 */ lwc1 $f0, 0x30($sp) -/* 1202D8 802B6CC8 46002207 */ neg.s $f8, $f4 -/* 1202DC 802B6CCC E4C8001C */ swc1 $f8, 0x1c($a2) -/* 1202E0 802B6CD0 C7A60028 */ lwc1 $f6, 0x28($sp) -/* 1202E4 802B6CD4 46143102 */ mul.s $f4, $f6, $f20 -/* 1202E8 802B6CD8 46045201 */ sub.s $f8, $f10, $f4 -/* 1202EC 802B6CDC 46008287 */ neg.s $f10, $f16 -/* 1202F0 802B6CE0 46004182 */ mul.s $f6, $f8, $f0 -/* 1202F4 802B6CE4 E4C60008 */ swc1 $f6, 8($a2) -/* 1202F8 802B6CE8 460E5102 */ mul.s $f4, $f10, $f14 -/* 1202FC 802B6CEC C7A80024 */ lwc1 $f8, 0x24($sp) -/* 120300 802B6CF0 46144182 */ mul.s $f6, $f8, $f20 -/* 120304 802B6CF4 46062281 */ sub.s $f10, $f4, $f6 -/* 120308 802B6CF8 46005202 */ mul.s $f8, $f10, $f0 -/* 12030C 802B6CFC E4C80014 */ swc1 $f8, 0x14($a2) -/* 120310 802B6D00 C7A4002C */ lwc1 $f4, 0x2c($sp) -/* 120314 802B6D04 E4C2000C */ swc1 $f2, 0xc($a2) -/* 120318 802B6D08 E4C20018 */ swc1 $f2, 0x18($a2) -/* 12031C 802B6D0C E4C20024 */ swc1 $f2, 0x24($a2) -/* 120320 802B6D10 1000000C */ b .L802B6D44 -/* 120324 802B6D14 E4C40020 */ swc1 $f4, 0x20($a2) -/* 120328 802B6D18 44810000 */ mtc1 $at, $f0 -.L802B6D1C: -/* 12032C 802B6D1C E4C20004 */ swc1 $f2, 4($a2) -/* 120330 802B6D20 E4C2001C */ swc1 $f2, 0x1c($a2) -/* 120334 802B6D24 E4C20008 */ swc1 $f2, 8($a2) -/* 120338 802B6D28 E4C20014 */ swc1 $f2, 0x14($a2) -/* 12033C 802B6D2C E4C2000C */ swc1 $f2, 0xc($a2) -/* 120340 802B6D30 E4C20018 */ swc1 $f2, 0x18($a2) -/* 120344 802B6D34 E4C20024 */ swc1 $f2, 0x24($a2) -/* 120348 802B6D38 E4C00000 */ swc1 $f0, ($a2) -/* 12034C 802B6D3C E4C00010 */ swc1 $f0, 0x10($a2) -/* 120350 802B6D40 E4C00020 */ swc1 $f0, 0x20($a2) -.L802B6D44: -/* 120354 802B6D44 8FBF001C */ lw $ra, 0x1c($sp) -/* 120358 802B6D48 D7B40010 */ ldc1 $f20, 0x10($sp) -/* 12035C 802B6D4C 27BD0040 */ addiu $sp, $sp, 0x40 -/* 120360 802B6D50 03E00008 */ jr $ra -/* 120364 802B6D54 00000000 */ nop diff --git a/asm/non_matchings/math_util/func_802B6D58.s b/asm/non_matchings/math_util/func_802B6D58.s deleted file mode 100644 index 9657fedb3..000000000 --- a/asm/non_matchings/math_util/func_802B6D58.s +++ /dev/null @@ -1,304 +0,0 @@ -glabel func_802B6D58 -/* 120368 802B6D58 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 12036C 802B6D5C AFB0001C */ sw $s0, 0x1c($sp) -/* 120370 802B6D60 00808025 */ move $s0, $a0 -/* 120374 802B6D64 AFBF0024 */ sw $ra, 0x24($sp) -/* 120378 802B6D68 AFB10020 */ sw $s1, 0x20($sp) -/* 12037C 802B6D6C F7B40010 */ sdc1 $f20, 0x10($sp) -/* 120380 802B6D70 AFA50044 */ sw $a1, 0x44($sp) -/* 120384 802B6D74 24040001 */ li $a0, 1 -/* 120388 802B6D78 444EF800 */ cfc1 $t6, $31 -/* 12038C 802B6D7C 44C4F800 */ ctc1 $a0, $31 -/* 120390 802B6D80 C4C40000 */ lwc1 $f4, ($a2) -/* 120394 802B6D84 00C08825 */ move $s1, $a2 -/* 120398 802B6D88 460021A4 */ cvt.w.s $f6, $f4 -/* 12039C 802B6D8C 4444F800 */ cfc1 $a0, $31 -/* 1203A0 802B6D90 00000000 */ nop -/* 1203A4 802B6D94 30840078 */ andi $a0, $a0, 0x78 -/* 1203A8 802B6D98 10800012 */ beqz $a0, .L802B6DE4 -/* 1203AC 802B6D9C 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 1203B0 802B6DA0 44813000 */ mtc1 $at, $f6 -/* 1203B4 802B6DA4 24040001 */ li $a0, 1 -/* 1203B8 802B6DA8 46062181 */ sub.s $f6, $f4, $f6 -/* 1203BC 802B6DAC 44C4F800 */ ctc1 $a0, $31 -/* 1203C0 802B6DB0 00000000 */ nop -/* 1203C4 802B6DB4 460031A4 */ cvt.w.s $f6, $f6 -/* 1203C8 802B6DB8 4444F800 */ cfc1 $a0, $31 -/* 1203CC 802B6DBC 00000000 */ nop -/* 1203D0 802B6DC0 30840078 */ andi $a0, $a0, 0x78 -/* 1203D4 802B6DC4 14800005 */ bnez $a0, .L802B6DDC -/* 1203D8 802B6DC8 00000000 */ nop -/* 1203DC 802B6DCC 44043000 */ mfc1 $a0, $f6 -/* 1203E0 802B6DD0 3C018000 */ lui $at, 0x8000 -/* 1203E4 802B6DD4 10000007 */ b .L802B6DF4 -/* 1203E8 802B6DD8 00812025 */ or $a0, $a0, $at -.L802B6DDC: -/* 1203EC 802B6DDC 10000005 */ b .L802B6DF4 -/* 1203F0 802B6DE0 2404FFFF */ li $a0, -1 -.L802B6DE4: -/* 1203F4 802B6DE4 44043000 */ mfc1 $a0, $f6 -/* 1203F8 802B6DE8 00000000 */ nop -/* 1203FC 802B6DEC 0480FFFB */ bltz $a0, .L802B6DDC -/* 120400 802B6DF0 00000000 */ nop -.L802B6DF4: -/* 120404 802B6DF4 44CEF800 */ ctc1 $t6, $31 -/* 120408 802B6DF8 308FFFFF */ andi $t7, $a0, 0xffff -/* 12040C 802B6DFC 0C0AE006 */ jal sins -/* 120410 802B6E00 01E02025 */ move $a0, $t7 -/* 120414 802B6E04 E7A0003C */ swc1 $f0, 0x3c($sp) -/* 120418 802B6E08 4458F800 */ cfc1 $t8, $31 -/* 12041C 802B6E0C 24040001 */ li $a0, 1 -/* 120420 802B6E10 44C4F800 */ ctc1 $a0, $31 -/* 120424 802B6E14 C6280000 */ lwc1 $f8, ($s1) -/* 120428 802B6E18 460042A4 */ cvt.w.s $f10, $f8 -/* 12042C 802B6E1C 4444F800 */ cfc1 $a0, $31 -/* 120430 802B6E20 00000000 */ nop -/* 120434 802B6E24 30840078 */ andi $a0, $a0, 0x78 -/* 120438 802B6E28 10800012 */ beqz $a0, .L802B6E74 -/* 12043C 802B6E2C 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 120440 802B6E30 44815000 */ mtc1 $at, $f10 -/* 120444 802B6E34 24040001 */ li $a0, 1 -/* 120448 802B6E38 460A4281 */ sub.s $f10, $f8, $f10 -/* 12044C 802B6E3C 44C4F800 */ ctc1 $a0, $31 -/* 120450 802B6E40 00000000 */ nop -/* 120454 802B6E44 460052A4 */ cvt.w.s $f10, $f10 -/* 120458 802B6E48 4444F800 */ cfc1 $a0, $31 -/* 12045C 802B6E4C 00000000 */ nop -/* 120460 802B6E50 30840078 */ andi $a0, $a0, 0x78 -/* 120464 802B6E54 14800005 */ bnez $a0, .L802B6E6C -/* 120468 802B6E58 00000000 */ nop -/* 12046C 802B6E5C 44045000 */ mfc1 $a0, $f10 -/* 120470 802B6E60 3C018000 */ lui $at, 0x8000 -/* 120474 802B6E64 10000007 */ b .L802B6E84 -/* 120478 802B6E68 00812025 */ or $a0, $a0, $at -.L802B6E6C: -/* 12047C 802B6E6C 10000005 */ b .L802B6E84 -/* 120480 802B6E70 2404FFFF */ li $a0, -1 -.L802B6E74: -/* 120484 802B6E74 44045000 */ mfc1 $a0, $f10 -/* 120488 802B6E78 00000000 */ nop -/* 12048C 802B6E7C 0480FFFB */ bltz $a0, .L802B6E6C -/* 120490 802B6E80 00000000 */ nop -.L802B6E84: -/* 120494 802B6E84 44D8F800 */ ctc1 $t8, $31 -/* 120498 802B6E88 3099FFFF */ andi $t9, $a0, 0xffff -/* 12049C 802B6E8C 0C0AE00E */ jal coss -/* 1204A0 802B6E90 03202025 */ move $a0, $t9 -/* 1204A4 802B6E94 46000506 */ mov.s $f20, $f0 -/* 1204A8 802B6E98 4448F800 */ cfc1 $t0, $31 -/* 1204AC 802B6E9C 24040001 */ li $a0, 1 -/* 1204B0 802B6EA0 44C4F800 */ ctc1 $a0, $31 -/* 1204B4 802B6EA4 C6240004 */ lwc1 $f4, 4($s1) -/* 1204B8 802B6EA8 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 1204BC 802B6EAC 460021A4 */ cvt.w.s $f6, $f4 -/* 1204C0 802B6EB0 4444F800 */ cfc1 $a0, $31 -/* 1204C4 802B6EB4 00000000 */ nop -/* 1204C8 802B6EB8 30840078 */ andi $a0, $a0, 0x78 -/* 1204CC 802B6EBC 50800013 */ beql $a0, $zero, .L802B6F0C -/* 1204D0 802B6EC0 44043000 */ mfc1 $a0, $f6 -/* 1204D4 802B6EC4 44813000 */ mtc1 $at, $f6 -/* 1204D8 802B6EC8 24040001 */ li $a0, 1 -/* 1204DC 802B6ECC 46062181 */ sub.s $f6, $f4, $f6 -/* 1204E0 802B6ED0 44C4F800 */ ctc1 $a0, $31 -/* 1204E4 802B6ED4 00000000 */ nop -/* 1204E8 802B6ED8 460031A4 */ cvt.w.s $f6, $f6 -/* 1204EC 802B6EDC 4444F800 */ cfc1 $a0, $31 -/* 1204F0 802B6EE0 00000000 */ nop -/* 1204F4 802B6EE4 30840078 */ andi $a0, $a0, 0x78 -/* 1204F8 802B6EE8 14800005 */ bnez $a0, .L802B6F00 -/* 1204FC 802B6EEC 00000000 */ nop -/* 120500 802B6EF0 44043000 */ mfc1 $a0, $f6 -/* 120504 802B6EF4 3C018000 */ lui $at, 0x8000 -/* 120508 802B6EF8 10000007 */ b .L802B6F18 -/* 12050C 802B6EFC 00812025 */ or $a0, $a0, $at -.L802B6F00: -/* 120510 802B6F00 10000005 */ b .L802B6F18 -/* 120514 802B6F04 2404FFFF */ li $a0, -1 -/* 120518 802B6F08 44043000 */ mfc1 $a0, $f6 -.L802B6F0C: -/* 12051C 802B6F0C 00000000 */ nop -/* 120520 802B6F10 0480FFFB */ bltz $a0, .L802B6F00 -/* 120524 802B6F14 00000000 */ nop -.L802B6F18: -/* 120528 802B6F18 44C8F800 */ ctc1 $t0, $31 -/* 12052C 802B6F1C 3089FFFF */ andi $t1, $a0, 0xffff -/* 120530 802B6F20 0C0AE006 */ jal sins -/* 120534 802B6F24 01202025 */ move $a0, $t1 -/* 120538 802B6F28 46000386 */ mov.s $f14, $f0 -/* 12053C 802B6F2C 444AF800 */ cfc1 $t2, $31 -/* 120540 802B6F30 24040001 */ li $a0, 1 -/* 120544 802B6F34 44C4F800 */ ctc1 $a0, $31 -/* 120548 802B6F38 C6280004 */ lwc1 $f8, 4($s1) -/* 12054C 802B6F3C 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 120550 802B6F40 460042A4 */ cvt.w.s $f10, $f8 -/* 120554 802B6F44 4444F800 */ cfc1 $a0, $31 -/* 120558 802B6F48 00000000 */ nop -/* 12055C 802B6F4C 30840078 */ andi $a0, $a0, 0x78 -/* 120560 802B6F50 50800013 */ beql $a0, $zero, .L802B6FA0 -/* 120564 802B6F54 44045000 */ mfc1 $a0, $f10 -/* 120568 802B6F58 44815000 */ mtc1 $at, $f10 -/* 12056C 802B6F5C 24040001 */ li $a0, 1 -/* 120570 802B6F60 460A4281 */ sub.s $f10, $f8, $f10 -/* 120574 802B6F64 44C4F800 */ ctc1 $a0, $31 -/* 120578 802B6F68 00000000 */ nop -/* 12057C 802B6F6C 460052A4 */ cvt.w.s $f10, $f10 -/* 120580 802B6F70 4444F800 */ cfc1 $a0, $31 -/* 120584 802B6F74 00000000 */ nop -/* 120588 802B6F78 30840078 */ andi $a0, $a0, 0x78 -/* 12058C 802B6F7C 14800005 */ bnez $a0, .L802B6F94 -/* 120590 802B6F80 00000000 */ nop -/* 120594 802B6F84 44045000 */ mfc1 $a0, $f10 -/* 120598 802B6F88 3C018000 */ lui $at, 0x8000 -/* 12059C 802B6F8C 10000007 */ b .L802B6FAC -/* 1205A0 802B6F90 00812025 */ or $a0, $a0, $at -.L802B6F94: -/* 1205A4 802B6F94 10000005 */ b .L802B6FAC -/* 1205A8 802B6F98 2404FFFF */ li $a0, -1 -/* 1205AC 802B6F9C 44045000 */ mfc1 $a0, $f10 -.L802B6FA0: -/* 1205B0 802B6FA0 00000000 */ nop -/* 1205B4 802B6FA4 0480FFFB */ bltz $a0, .L802B6F94 -/* 1205B8 802B6FA8 00000000 */ nop -.L802B6FAC: -/* 1205BC 802B6FAC 44CAF800 */ ctc1 $t2, $31 -/* 1205C0 802B6FB0 308BFFFF */ andi $t3, $a0, 0xffff -/* 1205C4 802B6FB4 01602025 */ move $a0, $t3 -/* 1205C8 802B6FB8 0C0AE00E */ jal coss -/* 1205CC 802B6FBC E7AE0034 */ swc1 $f14, 0x34($sp) -/* 1205D0 802B6FC0 46000406 */ mov.s $f16, $f0 -/* 1205D4 802B6FC4 444CF800 */ cfc1 $t4, $31 -/* 1205D8 802B6FC8 24040001 */ li $a0, 1 -/* 1205DC 802B6FCC 44C4F800 */ ctc1 $a0, $31 -/* 1205E0 802B6FD0 C6240008 */ lwc1 $f4, 8($s1) -/* 1205E4 802B6FD4 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 1205E8 802B6FD8 460021A4 */ cvt.w.s $f6, $f4 -/* 1205EC 802B6FDC 4444F800 */ cfc1 $a0, $31 -/* 1205F0 802B6FE0 00000000 */ nop -/* 1205F4 802B6FE4 30840078 */ andi $a0, $a0, 0x78 -/* 1205F8 802B6FE8 50800013 */ beql $a0, $zero, .L802B7038 -/* 1205FC 802B6FEC 44043000 */ mfc1 $a0, $f6 -/* 120600 802B6FF0 44813000 */ mtc1 $at, $f6 -/* 120604 802B6FF4 24040001 */ li $a0, 1 -/* 120608 802B6FF8 46062181 */ sub.s $f6, $f4, $f6 -/* 12060C 802B6FFC 44C4F800 */ ctc1 $a0, $31 -/* 120610 802B7000 00000000 */ nop -/* 120614 802B7004 460031A4 */ cvt.w.s $f6, $f6 -/* 120618 802B7008 4444F800 */ cfc1 $a0, $31 -/* 12061C 802B700C 00000000 */ nop -/* 120620 802B7010 30840078 */ andi $a0, $a0, 0x78 -/* 120624 802B7014 14800005 */ bnez $a0, .L802B702C -/* 120628 802B7018 00000000 */ nop -/* 12062C 802B701C 44043000 */ mfc1 $a0, $f6 -/* 120630 802B7020 3C018000 */ lui $at, 0x8000 -/* 120634 802B7024 10000007 */ b .L802B7044 -/* 120638 802B7028 00812025 */ or $a0, $a0, $at -.L802B702C: -/* 12063C 802B702C 10000005 */ b .L802B7044 -/* 120640 802B7030 2404FFFF */ li $a0, -1 -/* 120644 802B7034 44043000 */ mfc1 $a0, $f6 -.L802B7038: -/* 120648 802B7038 00000000 */ nop -/* 12064C 802B703C 0480FFFB */ bltz $a0, .L802B702C -/* 120650 802B7040 00000000 */ nop -.L802B7044: -/* 120654 802B7044 44CCF800 */ ctc1 $t4, $31 -/* 120658 802B7048 308DFFFF */ andi $t5, $a0, 0xffff -/* 12065C 802B704C 01A02025 */ move $a0, $t5 -/* 120660 802B7050 0C0AE006 */ jal sins -/* 120664 802B7054 E7B00030 */ swc1 $f16, 0x30($sp) -/* 120668 802B7058 46000086 */ mov.s $f2, $f0 -/* 12066C 802B705C 444EF800 */ cfc1 $t6, $31 -/* 120670 802B7060 24040001 */ li $a0, 1 -/* 120674 802B7064 44C4F800 */ ctc1 $a0, $31 -/* 120678 802B7068 C6280008 */ lwc1 $f8, 8($s1) -/* 12067C 802B706C 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 120680 802B7070 460042A4 */ cvt.w.s $f10, $f8 -/* 120684 802B7074 4444F800 */ cfc1 $a0, $31 -/* 120688 802B7078 00000000 */ nop -/* 12068C 802B707C 30840078 */ andi $a0, $a0, 0x78 -/* 120690 802B7080 50800013 */ beql $a0, $zero, .L802B70D0 -/* 120694 802B7084 44045000 */ mfc1 $a0, $f10 -/* 120698 802B7088 44815000 */ mtc1 $at, $f10 -/* 12069C 802B708C 24040001 */ li $a0, 1 -/* 1206A0 802B7090 460A4281 */ sub.s $f10, $f8, $f10 -/* 1206A4 802B7094 44C4F800 */ ctc1 $a0, $31 -/* 1206A8 802B7098 00000000 */ nop -/* 1206AC 802B709C 460052A4 */ cvt.w.s $f10, $f10 -/* 1206B0 802B70A0 4444F800 */ cfc1 $a0, $31 -/* 1206B4 802B70A4 00000000 */ nop -/* 1206B8 802B70A8 30840078 */ andi $a0, $a0, 0x78 -/* 1206BC 802B70AC 14800005 */ bnez $a0, .L802B70C4 -/* 1206C0 802B70B0 00000000 */ nop -/* 1206C4 802B70B4 44045000 */ mfc1 $a0, $f10 -/* 1206C8 802B70B8 3C018000 */ lui $at, 0x8000 -/* 1206CC 802B70BC 10000007 */ b .L802B70DC -/* 1206D0 802B70C0 00812025 */ or $a0, $a0, $at -.L802B70C4: -/* 1206D4 802B70C4 10000005 */ b .L802B70DC -/* 1206D8 802B70C8 2404FFFF */ li $a0, -1 -/* 1206DC 802B70CC 44045000 */ mfc1 $a0, $f10 -.L802B70D0: -/* 1206E0 802B70D0 00000000 */ nop -/* 1206E4 802B70D4 0480FFFB */ bltz $a0, .L802B70C4 -/* 1206E8 802B70D8 00000000 */ nop -.L802B70DC: -/* 1206EC 802B70DC 44CEF800 */ ctc1 $t6, $31 -/* 1206F0 802B70E0 308FFFFF */ andi $t7, $a0, 0xffff -/* 1206F4 802B70E4 01E02025 */ move $a0, $t7 -/* 1206F8 802B70E8 0C0AE00E */ jal coss -/* 1206FC 802B70EC E7A2002C */ swc1 $f2, 0x2c($sp) -/* 120700 802B70F0 C7AE0034 */ lwc1 $f14, 0x34($sp) -/* 120704 802B70F4 C7B2003C */ lwc1 $f18, 0x3c($sp) -/* 120708 802B70F8 C7B00030 */ lwc1 $f16, 0x30($sp) -/* 12070C 802B70FC C7A2002C */ lwc1 $f2, 0x2c($sp) -/* 120710 802B7100 460E9302 */ mul.s $f12, $f18, $f14 -/* 120714 802B7104 46008287 */ neg.s $f10, $f16 -/* 120718 802B7108 8FA20044 */ lw $v0, 0x44($sp) -/* 12071C 802B710C 46008102 */ mul.s $f4, $f16, $f0 -/* 120720 802B7110 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 120724 802B7114 46026182 */ mul.s $f6, $f12, $f2 -/* 120728 802B7118 46062200 */ add.s $f8, $f4, $f6 -/* 12072C 802B711C 46025102 */ mul.s $f4, $f10, $f2 -/* 120730 802B7120 00000000 */ nop -/* 120734 802B7124 46006182 */ mul.s $f6, $f12, $f0 -/* 120738 802B7128 E6080000 */ swc1 $f8, ($s0) -/* 12073C 802B712C 460EA282 */ mul.s $f10, $f20, $f14 -/* 120740 802B7130 46062200 */ add.s $f8, $f4, $f6 -/* 120744 802B7134 4602A182 */ mul.s $f6, $f20, $f2 -/* 120748 802B7138 E60A0020 */ swc1 $f10, 0x20($s0) -/* 12074C 802B713C 46009287 */ neg.s $f10, $f18 -/* 120750 802B7140 E6080010 */ swc1 $f8, 0x10($s0) -/* 120754 802B7144 4600A202 */ mul.s $f8, $f20, $f0 -/* 120758 802B7148 C4440000 */ lwc1 $f4, ($v0) -/* 12075C 802B714C E60A0024 */ swc1 $f10, 0x24($s0) -/* 120760 802B7150 46109302 */ mul.s $f12, $f18, $f16 -/* 120764 802B7154 E6060004 */ swc1 $f6, 4($s0) -/* 120768 802B7158 E6040030 */ swc1 $f4, 0x30($s0) -/* 12076C 802B715C 46007187 */ neg.s $f6, $f14 -/* 120770 802B7160 E6080014 */ swc1 $f8, 0x14($s0) -/* 120774 802B7164 46003202 */ mul.s $f8, $f6, $f0 -/* 120778 802B7168 C4440004 */ lwc1 $f4, 4($v0) -/* 12077C 802B716C 46026282 */ mul.s $f10, $f12, $f2 -/* 120780 802B7170 E6040034 */ swc1 $f4, 0x34($s0) -/* 120784 802B7174 46027182 */ mul.s $f6, $f14, $f2 -/* 120788 802B7178 460A4100 */ add.s $f4, $f8, $f10 -/* 12078C 802B717C 46006202 */ mul.s $f8, $f12, $f0 -/* 120790 802B7180 44800000 */ mtc1 $zero, $f0 -/* 120794 802B7184 E6040008 */ swc1 $f4, 8($s0) -/* 120798 802B7188 4610A102 */ mul.s $f4, $f20, $f16 -/* 12079C 802B718C 46083280 */ add.s $f10, $f6, $f8 -/* 1207A0 802B7190 44814000 */ mtc1 $at, $f8 -/* 1207A4 802B7194 E6040028 */ swc1 $f4, 0x28($s0) -/* 1207A8 802B7198 E60A0018 */ swc1 $f10, 0x18($s0) -/* 1207AC 802B719C C4460008 */ lwc1 $f6, 8($v0) -/* 1207B0 802B71A0 E600000C */ swc1 $f0, 0xc($s0) -/* 1207B4 802B71A4 E600001C */ swc1 $f0, 0x1c($s0) -/* 1207B8 802B71A8 E600002C */ swc1 $f0, 0x2c($s0) -/* 1207BC 802B71AC E608003C */ swc1 $f8, 0x3c($s0) -/* 1207C0 802B71B0 E6060038 */ swc1 $f6, 0x38($s0) -/* 1207C4 802B71B4 8FBF0024 */ lw $ra, 0x24($sp) -/* 1207C8 802B71B8 8FB10020 */ lw $s1, 0x20($sp) -/* 1207CC 802B71BC 8FB0001C */ lw $s0, 0x1c($sp) -/* 1207D0 802B71C0 D7B40010 */ ldc1 $f20, 0x10($sp) -/* 1207D4 802B71C4 03E00008 */ jr $ra -/* 1207D8 802B71C8 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/data/data_credits_128480_2.s b/data/data_credits_128480_2.s index fd4520673..c161f38b1 100644 --- a/data/data_credits_128480_2.s +++ b/data/data_credits_128480_2.s @@ -240,9 +240,9 @@ glabel D_80287478 glabel D_8028747C .word 0xC52EC000 -glabel D_80287480 -.word 0x80284B1C, 0x80284B4C, 0x80284B7C -.word 0x80284BAC -.word 0x80284BE8 +glabel jpt_80287480 +.word L80284B1C, L80284B4C, L80284B7C +.word L80284BAC +.word L80284BE8 .word 0x00000000 .word 0x00000000, 0x00000000 diff --git a/include/types.h b/include/types.h index 6ed9196a7..89f400392 100644 --- a/include/types.h +++ b/include/types.h @@ -67,69 +67,6 @@ struct UnkStruct_800DC5EC { s32 pad2; }; -struct UnkStruct_80280658 { - s32 unk0; - s16 unk4; - s16 unk6; - s8 unk8; - s8 unk9; - s16 unkA; - s16 unkC; - s16 unkE; - f32 unk10; - f32 unk14; - f32 unk18; - f32 unk1C; - f32 unk20; - f32 unk24; - struct UnkStruct_80280658_2 *unk28; - s32 unk2C; - s32 unk30; - f32 unk34; - f32 unk38; - s32 unk3C; - s32 unk40; - s32 unk44; - s32 unk48; -}; - -struct UnkStruct_80280658_2 { - s16 unk0; - s16 unk2; - s16 unk4; - s16 unk6; - s8 unk8; - s8 unk9; - s8 unkA; - f32 unkC; -}; - -struct UnkStruct_8028088C { - s32 unk0; - s16 unk4; - s16 unk6; - s8 unk8; - s8 unk9; - s16 unkA; - s16 unkC; - s16 unkE; - f32 unk10; - f32 unk14; - f32 unk18; - f32 unk1C; - f32 unk20; - f32 unk24; - struct UnkStruct_80280658_2 *unk28; - s16 unk2C; - s16 unk2E; - s16 unk30; - s16 unk32; - s16 unk34; - s16 unk36; - s32 unk38; - s32 unk3C; -}; - // Camera path struct? Or something like that. For GP race won scene? struct UnkStruct_80287500 { Vec3f unk0; // xyz coordinates? diff --git a/src/code_800029B0.c b/src/code_800029B0.c index 2bd23a0aa..453ac52ec 100644 --- a/src/code_800029B0.c +++ b/src/code_800029B0.c @@ -3,19 +3,13 @@ #include "types.h" #include "variables.h" #include "waypoints.h" +#include "actors.h" +#include "actor_types.h" #include extern void func_800C8F44(u16 arg0); extern u16 D_800DC5A8; -struct UnkStruct8015F8D0 { - f32 unk0; - f32 unk4; - f32 unk8; -}; - -extern struct UnkStruct8015F8D0 D_8015F8D0; - extern struct Controller *gControllerOne[]; extern s32 D_800DC510; @@ -67,10 +61,7 @@ extern u32 *D_06014330; extern f32 gCourseDirection; -extern u16 gNumPermanentActors; - -extern s16 D_800DC5BC, D_800DC5C8; -extern u16 gNumActors; +extern s16 D_800DC5C8; s32 D_800DC5E0 = 32; @@ -154,18 +145,18 @@ void setup_race(void) { func_8029E158(); if (gModeSelection != BATTLE) { - D_8015F8D0.unk4 = (f32) (D_80164490->wayPointY - 15);; - D_8015F8D0.unk8 = D_80164490->wayPointZ; + D_8015F8D0[1] = (f32) (D_80164490->wayPointY - 15);; + D_8015F8D0[2] = D_80164490->wayPointZ; if (gCurrentCourseId == COURSE_TOADS_TURNPIKE) { - D_8015F8D0.unk0 = (gIsMirrorMode != 0) ? + D_8015F8D0[0] = (gIsMirrorMode != 0) ? D_80164490->wayPointX + 138.0f : D_80164490->wayPointX - 138.0f; } else if (gCurrentCourseId == COURSE_WARIO_STADIUM) { - D_8015F8D0.unk0 = (gIsMirrorMode != 0) ? + D_8015F8D0[0] = (gIsMirrorMode != 0) ? D_80164490->wayPointX + 12.0f : D_80164490->wayPointX - 12.0f; } else { - D_8015F8D0.unk0 = D_80164490->wayPointX; + D_8015F8D0[0] = D_80164490->wayPointX; } } if (D_800DC51C == 0) { @@ -232,10 +223,9 @@ void clear_nmi_buffer(void) { } void func_80003040(void) { - u32 pad[2]; - f32 sp34; - s32 sp28[3] = {0}; - s16 sp20[3] = {0}; + Vec3f position; + Vec3f velocity = {0, 0, 0}; + Vec3s rotation = {0, 0, 0}; D_800DC5BC = 0; D_800DC5C8 = 0; @@ -258,9 +248,9 @@ void func_80003040(void) { func_802AF8BC(0x7000878, -0x80, 0, 0, 0); break; case COURSE_YOSHI_VALLEY: - vec3f_set(&sp34, -2300.0f, 0.0f, 634.0f); - sp34 *= gCourseDirection; - func_8029EC88(&sp34, &sp20, &sp28, 9); + vec3f_set(position, -2300.0f, 0.0f, 634.0f); + position[0] *= gCourseDirection; + func_8029EC88(position, rotation, velocity, ACTOR_YOSHI_VALLEY_EGG); break; case COURSE_MOO_MOO_FARM: func_802A84F4(&D_0F04FE28, 0x3E8, 0x800); @@ -287,12 +277,12 @@ void func_80003040(void) { func_802AF8BC(0x7001318, -1, 0xFF, 0xFF, 0); break; case COURSE_WARIO_STADIUM: - vec3f_set(&sp34, -131.0f, 83.0f, 286.0f); - func_8029EC88(&sp34, &sp20, &sp28, 0x23); - vec3f_set(&sp34, -2353.0f, 72.0f, -1608.0f); - func_8029EC88(&sp34, &sp20, &sp28, 0x23); - vec3f_set(&sp34, -2622.0f, 79.0f, 739.0f); - func_8029EC88(&sp34, &sp20, &sp28, 0x23); + vec3f_set(position, -131.0f, 83.0f, 286.0f); + func_8029EC88(position, rotation, velocity, ACTOR_WARIO_STADIUM_SIGN); + vec3f_set(position, -2353.0f, 72.0f, -1608.0f); + func_8029EC88(position, rotation, velocity, ACTOR_WARIO_STADIUM_SIGN); + vec3f_set(position, -2622.0f, 79.0f, 739.0f); + func_8029EC88(position, rotation, velocity, ACTOR_WARIO_STADIUM_SIGN); func_802AF8BC(0x7000C50, 0x64, 0xFF, 0xFF, 0xFF); func_802AF8BC(0x7000BD8, 0x64, 0xFF, 0xFF, 0xFF); func_802AF8BC(0x7000B60, 0x64, 0xFF, 0xFF, 0xFF); diff --git a/src/code_8001F980.c b/src/code_8001F980.c index 7c726d86a..94d33a8f3 100644 --- a/src/code_8001F980.c +++ b/src/code_8001F980.c @@ -4,6 +4,7 @@ #include #include "types.h" #include "variables.h" +#include "math_util.h" #include "code_8001F980.h" #include "code_80057C60.h" @@ -868,48 +869,38 @@ void func_80021DA8(void) { func_8006E940(gPlayerFour, 3, 3); } -#ifdef MIPS_TO_C -//generated by m2c commit 685418adfeb3794409e47b45ac5cab60b17d23fd -void func_80021E10(Mat4 arg0, f32 *arg1, s16 *arg2) { - f32 sp38; - f32 sp30; - f32 sp2C; - f32 sp28; - f32 temp_f0; - f32 temp_f12; - f32 temp_f12_2; - f32 temp_f20; - f32 temp_f6; +void func_80021E10(Mat4 arg0, Vec3f arg1, Vec3s arg2) { + f32 stackPadding[3]; + f32 sin1; + f32 cos1; + f32 sin2; + f32 cos2; + f32 sin3; + f32 cos3; - sp38 = sins((u16) arg2->unk0); - temp_f20 = coss((u16) arg2->unk0); - sp30 = sins(arg2->unk2); - sp2C = coss(arg2->unk2); - sp28 = sins(arg2->unk4); - temp_f0 = coss(arg2->unk4); - temp_f12 = sp38 * sp30; - temp_f6 = temp_f12 * temp_f0; - arg0[0][0] = (sp2C * temp_f0) + (temp_f12 * sp28); - arg0->unk20 = (f32) (temp_f20 * sp30); - arg0->unk10 = (f32) ((-sp2C * sp28) + temp_f6); - arg0->unk24 = (f32) -sp38; - temp_f12_2 = sp38 * sp2C; - arg0[0][1] = temp_f20 * sp28; - arg0->unk30 = (f32) arg1->unk0; - arg0->unk14 = (f32) (temp_f20 * temp_f0); - arg0->unk34 = (f32) arg1->unk4; - arg0[0][2] = (-sp30 * temp_f0) + (temp_f12_2 * sp28); - arg0->unk28 = (f32) (temp_f20 * sp2C); - arg0->unk18 = (f32) ((sp30 * sp28) + (temp_f12_2 * temp_f0)); + sin1 = sins(arg2[0]); + cos1 = coss(arg2[0]); + sin2 = sins(arg2[1]); + cos2 = coss(arg2[1]); + sin3 = sins(arg2[2]); + cos3 = coss(arg2[2]); + arg0[0][0] = (cos2 * cos3) + ((sin1 * sin2) * sin3); + arg0[1][0] = (-cos2 * sin3) + ((sin1 * sin2) * cos3); + arg0[2][0] = cos1 * sin2; + arg0[3][0] = arg1[0]; + arg0[0][1] = cos1 * sin3; + arg0[1][1] = cos1 * cos3; + arg0[2][1] = -sin1; + arg0[3][1] = arg1[1]; + arg0[0][2] = (-sin2 * cos3) + ((sin1 * cos2) * sin3); + arg0[1][2] = (sin2 * sin3) + ((sin1 * cos2) * cos3); + arg0[2][2] = cos1 * cos2; + arg0[3][2] = arg1[2]; arg0[0][3] = 0.0f; - arg0->unk1C = 0.0f; - arg0->unk2C = 0.0f; - arg0->unk3C = 1.0f; - arg0->unk38 = (f32) arg1->unk8; + arg0[1][3] = 0.0f; + arg0[2][3] = 0.0f; + arg0[3][3] = 1.0f; } -#else -GLOBAL_ASM("asm/non_matchings/code_8001F980/func_80021E10.s") -#endif UNUSED void func_80021F50(Mat4 arg0, Vec3f arg1) { arg0[3][0] += arg1[0]; diff --git a/src/code_8001F980.h b/src/code_8001F980.h index 4e7d88828..eb81e5e74 100644 --- a/src/code_8001F980.h +++ b/src/code_8001F980.h @@ -16,6 +16,8 @@ void func_800219BC(); void func_80021C78(); void func_80021D40(); void func_80021DA8(); +void func_80021E10(Mat4, Vec3f, Vec3s); +void func_80021F50(Mat4, Vec3f); void func_80021F84(Mat4, f32); void func_80021FF8(Mtx*, Mat4); void func_80022180(Mtx*, Mat4); diff --git a/src/code_800B45E0.c b/src/code_800B45E0.c index 6f080404e..8ef13c337 100644 --- a/src/code_800B45E0.c +++ b/src/code_800B45E0.c @@ -1277,31 +1277,35 @@ void func_800B6798(void) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern ? D_8018EE10; - -s32 func_800B6828(s32 arg0) { - s32 temp_a1; +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de +u8 func_800B6828(s32 arg0) { s32 temp_a2; + s32 temp_lo; s32 temp_v1; - void *temp_v0; - s32 phi_a1; - s32 phi_v1; - void *phi_a3; + s32 var_a1; + s32 var_v1; + struct_8018EE10_entry *temp_v0; + u8 temp_t1; + u8 temp_t4; + u8 temp_t7; + void *var_a3; - temp_v0 = (arg0 << 7) + &D_8018EE10; + temp_v0 = &D_8018EE10[arg0]; temp_a2 = arg0 + 1; - phi_a1 = 3; - phi_v1 = (temp_v0->unk0 * temp_a2) + (temp_v0->unk1 * temp_a2) + 1 + (temp_v0->unk2 * temp_a2) + 2; - phi_a3 = temp_v0 + 3; + var_a3 = temp_v0 + 3; + var_a1 = 3; + var_v1 = (temp_v0->unk0 * temp_a2) + (temp_v0->unk1 * temp_a2) + 1 + (temp_v0->unk2 * temp_a2) + 2; do { - temp_a1 = phi_a1 + 4; - temp_v1 = phi_v1 + ((phi_a3->unk0 * temp_a2) + phi_a1) + ((phi_a3->unk1 * temp_a2) + phi_a1) + 1 + ((phi_a3->unk2 * temp_a2) + phi_a1) + 2 + ((phi_a3->unk3 * temp_a2) + phi_a1) + 3; - phi_a1 = temp_a1; - phi_v1 = temp_v1; - phi_a3 += 4; - } while (temp_a1 != 0x43); - return temp_v1 & 0xFF; + temp_t7 = var_a3->unk1; + temp_t1 = var_a3->unk2; + temp_lo = var_a3->unk0 * temp_a2; + temp_t4 = var_a3->unk3; + var_a3 += 4; + temp_v1 = var_v1 + (temp_lo + var_a1) + ((temp_t7 * temp_a2) + var_a1) + 1 + ((temp_t1 * temp_a2) + var_a1) + 2 + ((temp_t4 * temp_a2) + var_a1); + var_a1 += 4; + var_v1 = temp_v1 + 3; + } while (var_a1 != 0x43); + return var_v1 & 0xFF; } #else GLOBAL_ASM("asm/non_matchings/menus/func_800B6828.s") diff --git a/src/code_80280650.c b/src/code_80280650.c index 0957e2c0a..66c42dcae 100644 --- a/src/code_80280650.c +++ b/src/code_80280650.c @@ -3,10 +3,8 @@ #include #include #include "main.h" - -extern struct UnkStruct_80280658 *D_802874F8; -extern Gfx *gDisplayListHead; -extern struct GfxPool *gGfxPool; +#include "code_8001F980.h" +#include "code_80280650.h" void func_80280650(void) { @@ -54,37 +52,33 @@ struct UnkStruct_80280658 *func_80280734(struct UnkStruct_80280658 *arg0) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern u16 D_80284E60; +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de +static u16 D_80284E60 = 0; u16 func_8028076C(void) { s32 temp_a1; s32 temp_t5; s32 temp_t8; - s32 temp_v0_2; + s32 temp_v0; u16 temp_t4; - u16 temp_v0; - u16 phi_v0; + u16 var_v0; - //temp_v0 = D_80284E60; - phi_v0 = D_80284E60; - - if (D_80284E60 == 0x560A) { + var_v0 = D_80284E60; + if (var_v0 == 0x560A) { D_80284E60 = 0; - phi_v0 = 0 & 0xFFFF; + var_v0 = 0 & 0xFFFF; } - - temp_t8 = (phi_v0 << 8) ^ phi_v0; + temp_t8 = (var_v0 << 8) ^ var_v0; temp_a1 = temp_t8 & 0xFF; - temp_t4 = (temp_a1 << 8) + ((temp_t8 & 0xFF00) >> 8); + temp_t4 = (temp_a1 << 8) + ((s32) (temp_t8 & 0xFF00) >> 8); temp_t5 = ((temp_a1 * 2) ^ temp_t4) & 0xFFFF; D_80284E60 = temp_t4; - if ((temp_t5 & 1) == 0) { - D_80284E60 = ((temp_t5 >> 1) ^ 0xFF80) & 0xFFFF; - if (D_80284E60 == 0xAA55) { + if (!(temp_t5 & 1)) { + temp_v0 = ((temp_t5 >> 1) ^ 0xFF80) & 0xFFFF; + if (temp_v0 == 0xAA55) { D_80284E60 = 0; } else { - D_80284E60 = D_80284E60 ^ 0x1FF4; + D_80284E60 = temp_v0 ^ 0x1FF4; } } else { D_80284E60 = (temp_t5 >> 1) ^ 0xFF80 ^ 0x8180; @@ -95,14 +89,10 @@ u16 func_8028076C(void) { GLOBAL_ASM("asm/non_matchings/code_80280650/func_8028076C.s") #endif -u16 func_8028076C(); - f32 func_8028080C(void) { return func_8028076C() / 65536.0f; } -f32 func_8028080C(); - f32 func_80280850(f32 arg0) { return (func_8028080C() * arg0) - (arg0 * 0.5f); } @@ -146,11 +136,6 @@ s32 D_80284E40[] = { 0x00FF4080, 0x008040FF, 0x0040FF40, 0x00FFFF40 }; -extern struct UnkStruct_80280658 *D_80284E7C; -extern f32 D_80286B74; -extern f32 D_80286B78; -extern f32 D_80286B7C; - void func_8028093C(struct UnkStruct_80280658 *arg0) { struct UnkStruct_80280658 *temp_v0; f32 temp_f0; @@ -174,36 +159,22 @@ void func_8028093C(struct UnkStruct_80280658 *arg0) { } } -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_80021E10(f32, f32 *, s32, s32); // extern -void func_80022180(f32, struct GfxPool*, f32*); // extern -extern s16 D_80164AF0; -extern struct UnkStruct_80287500 *D_80287500; -= +void func_80280A28(Vec3f arg0, Vec3s arg1, f32 arg2) { + Mat4 sp20; -void func_80280A28(s32 arg0, s32 arg1, f32 arg2) { - - f32 sp20[14]; - Gfx *temp_v1; - - func_80021E10(arg2, &sp20, arg0, arg1); - sp20[0] = D_80287500->unk0[0] * arg2; - sp20[1] = D_80287500->unk10 * arg2; - sp20[2] = D_80287500->unk20 * arg2; - sp20[3] = D_80287500->unk0[1] * arg2; - sp20[4] = D_80287500->unk14 * arg2; - sp20[5] = D_80287500->unk24 * arg2; - sp20[6] = D_80287500->unk0[2] * arg2; - sp20[7] = D_80287500->unk18 * arg2; - sp20[8] = D_80287500->unk28 * arg2; - func_80022180(arg2, &gGfxPool->mtxPool[D_80164AF0 + 0x3EB], &sp20); - - gSPMatrix(gDisplayListHead, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[D_80164AF0 + 0x3EB]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + func_80021E10(sp20, arg0, arg1); + sp20[0][0] = D_80287500[0][0] * arg2; + sp20[0][1] = D_80287500[1][0] * arg2; + sp20[0][2] = D_80287500[2][0] * arg2; + sp20[1][0] = D_80287500[0][1] * arg2; + sp20[1][1] = D_80287500[1][1] * arg2; + sp20[1][2] = D_80287500[2][1] * arg2; + sp20[2][0] = D_80287500[0][2] * arg2; + sp20[2][1] = D_80287500[1][2] * arg2; + sp20[2][2] = D_80287500[2][2] * arg2; + func_80022180(&gGfxPool->mtxPool[D_80164AF0 + 0x3EB], sp20); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[D_80164AF0 + 0x3EB]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280A28.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 @@ -379,10 +350,6 @@ void func_80280FA8(s32 arg0) { } -struct UnkStruct_80280658 *func_80280734(struct UnkStruct_80280658*); -extern s32 D_80284E88; -extern s32 D_802874E0; - void func_80280FB0(void) { D_802874E0 = 0; @@ -391,8 +358,6 @@ void func_80280FB0(void) { func_80280734(&D_80284E88); } -extern s8 D_802874F4; - void func_80280FFC(void) { D_802874F4 = 1; } @@ -482,48 +447,39 @@ GLOBAL_ASM("asm/non_matchings/code_80280650/func_8028118C.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_8028101C(?, s32, ?); // extern -? func_8028118C(?, s32, ?); // extern -? guLookAtF(? *, s32, s32, s32, f32, f32, f32, f32, f32, f32); // extern -extern ? cameras; -extern f32 D_801646F4; +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de +? func_8028101C(?, s32, ?); /* extern */ +? func_8028118C(?, s32, ?); /* extern */ +? guLookAtF(? *, f32, f32, f32, f32, f32, f32, f32, f32, f32); /* extern */ extern s16 D_802874C4; extern s32 D_802874E0; -extern s8 D_802874F5; extern ? D_80287500; void func_802812C8(void) { f32 temp_f0; - s32 temp_v0; - s32 temp_v0_2; - s32 phi_v0; - s32 phi_v0_2; + s32 var_v0; - guLookAtF(&D_80287500, cameras.unk0, cameras.unk4, cameras.unk8, cameras.unkC, cameras.unk10, cameras.unk14, cameras.unk18, cameras.unk1C, cameras.unk20); + guLookAtF(&D_80287500, cameras->pos[0], cameras->pos[1], cameras->pos[2], cameras->lookAt[0], cameras->lookAt[1], cameras->lookAt[2], cameras->up[0], cameras->up[1], cameras->up[2]); if (D_802874F5 < 3) { - temp_v0 = D_802874E0; - phi_v0 = temp_v0; - if (temp_v0 < 0x12C) { - temp_f0 = D_80164700; - func_8028118C(-0xE0E, ((temp_f0 - D_801646F4) * 1.5f) + temp_f0, -0x258); - phi_v0 = D_802874E0; + var_v0 = D_802874E0; + if (var_v0 < 0x12C) { + temp_f0 = cameras->lookAt[1]; + func_8028118C(-0xE0E, (s32) (((temp_f0 - cameras->pos[1]) * 1.5f) + temp_f0), -0x258); + var_v0 = D_802874E0; } - phi_v0_2 = phi_v0; - if (phi_v0 == 0x78) { - func_8028101C(-0xC6C, D_802874C4 + 210.0f, -0x1EF); + if (var_v0 == 0x00000078) { + func_8028101C(-0xC6C, (s32) ((f32) D_802874C4 + 210.0f), -0x1EF); goto block_7; } } else { - temp_v0_2 = D_802874E0; - phi_v0_2 = temp_v0_2; - if (temp_v0_2 == 2) { - func_8028101C(-0xC6C, D_802874C4 + 210.0f, -0x1EF); + var_v0 = D_802874E0; + if (var_v0 == 2) { + func_8028101C(-0xC6C, (s32) ((f32) D_802874C4 + 210.0f), -0x1EF); block_7: - phi_v0_2 = D_802874E0; + var_v0 = D_802874E0; } } - D_802874E0 = phi_v0_2 + 1; + D_802874E0 = var_v0 + 1; } #else GLOBAL_ASM("asm/non_matchings/code_80280650/func_802812C8.s") @@ -571,8 +527,6 @@ loop_2: GLOBAL_ASM("asm/non_matchings/code_80280650/func_80281438.s") #endif -extern s32 D_802874D4; - void func_8028150C(void) { D_802874D4 = gDisplayListHead; } @@ -597,9 +551,6 @@ void func_80281540(void) { } -extern s16 D_80150112; -extern s32 D_802874FC; - void ending_sequence_loop(void) { D_80150112 = 0; D_802874FC = 0; diff --git a/src/code_80280650.h b/src/code_80280650.h new file mode 100644 index 000000000..a4d1232a7 --- /dev/null +++ b/src/code_80280650.h @@ -0,0 +1,104 @@ +#ifndef CODE_80280650_H +#define CODE_80280650_H + +struct UnkStruct_80280658 { + s32 unk0; + s16 unk4; + s16 unk6; + s8 unk8; + s8 unk9; + s16 unkA; + s16 unkC; + s16 unkE; + f32 unk10; + f32 unk14; + f32 unk18; + f32 unk1C; + f32 unk20; + f32 unk24; + struct UnkStruct_80280658_2 *unk28; + s32 unk2C; + s32 unk30; + f32 unk34; + f32 unk38; + s32 unk3C; + s32 unk40; + s32 unk44; + s32 unk48; +}; + +struct UnkStruct_80280658_2 { + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + s8 unk8; + s8 unk9; + s8 unkA; + f32 unkC; +}; + +struct UnkStruct_8028088C { + s32 unk0; + s16 unk4; + s16 unk6; + s8 unk8; + s8 unk9; + s16 unkA; + s16 unkC; + s16 unkE; + f32 unk10; + f32 unk14; + f32 unk18; + f32 unk1C; + f32 unk20; + f32 unk24; + struct UnkStruct_80280658_2 *unk28; + s16 unk2C; + s16 unk2E; + s16 unk30; + s16 unk32; + s16 unk34; + s16 unk36; + s32 unk38; + s32 unk3C; +}; + +void func_80280650(); +void func_80280658(struct UnkStruct_80280658*); +struct UnkStruct_80280658 *func_802806C8(); +struct UnkStruct_80280658 *func_80280734(struct UnkStruct_80280658*); +u16 func_8028076C(); +f32 func_8028080C(); +f32 func_80280850(f32); +void func_80280884(); +void func_8028093C(struct UnkStruct_80280658*); +void func_80280A28(Vec3f, Vec3s, f32); +void func_80280FA0(s32); +void func_80280FA8(s32); +void func_80280FB0(); +void func_80280FFC(); +void func_8028100C(s32, s32, s32); +void func_8028150C(); +void func_80281520(); +void func_80281528(); +void func_80281530(); +void func_80281538(); +void func_80281540(); +void func_80281548(); + +extern struct UnkStruct_80280658 *D_802874F8; +extern struct UnkStruct_80280658 *D_80284E7C; +extern f32 D_80286B74; +extern f32 D_80286B78; +extern f32 D_80286B7C; +extern s32 D_80284E88; +extern s32 D_802874E0; +extern s8 D_802874F4; +extern s32 D_802874D4; +extern s16 D_80150112; +extern s32 D_802874FC; +extern Mat4 D_80287500; +extern s16 D_80164AF0; + +#endif diff --git a/src/code_80281FA0.c b/src/code_80281FA0.c index 8d319d16c..5cc7a27f6 100644 --- a/src/code_80281FA0.c +++ b/src/code_80281FA0.c @@ -455,27 +455,20 @@ void func_80282F00(s16 *arg0, s16 arg1) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? vec3f_set_dupe(?32 *, ?32, ?32, ?32); // extern -s32 func_80282364(void *, ?, s16); // extern -? func_80282454(?32 *, ?32 *, s32 *, s16 *, s16 *); // extern -? func_80282504(?32 *, ?32 *, s32, s16, s32); // extern -? func_80282F00(void *, s16); // extern -f32 sins(u16); // extern - -void func_80282F44(s32 arg0, void *arg1, void *arg2) { - s32 sp5C; +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de +void func_80282F44(s32 arg0, void *arg1, Camera *camera) { + f32 sp5C; s16 sp52; s16 sp50; - ?32 sp44; - ?32 sp38; + f32 sp44; + f32 sp38; s32 sp30; s16 *temp_v0; s32 temp_t9; void *temp_s0; - vec3f_set_dupe(&sp44, arg2->unk0, arg2->unk4, arg2->unk8); - vec3f_set_dupe(&sp38, arg2->unkC, arg2->unk10, arg2->unk14); + vec3f_set_dupe(&sp44, camera->pos[0], camera->pos[1], camera->pos[2]); + vec3f_set_dupe(&sp38, camera->lookAt[0], camera->lookAt[1], camera->lookAt[2]); if ((arg0 == 0) || (arg0 == 1)) { if ((arg1->unk48 != 0) || (arg1->unk4A != 0)) { func_80282454(&sp44, &sp38, &sp5C, &sp50, &sp52); @@ -483,18 +476,18 @@ void func_80282F44(s32 arg0, void *arg1, void *arg2) { temp_s0 = arg1 + temp_t9; sp30 = temp_t9; temp_v0 = sp30 + &sp50; - *temp_v0 = *temp_v0 + (temp_s0->unk48 * sins(temp_s0->unk4E)); + *temp_v0 = (s16) (s32) ((f32) *temp_v0 + ((f32) temp_s0->unk48 * sins(temp_s0->unk4E))); if ((sp50 < 0x3800) && (sp50 >= -0x37FF)) { - func_80282504(&sp44, &sp38, sp5C, sp50, sp52); + func_80282504(&sp44, &sp38, sp5C, sp50, (s16) (s32) sp52); } func_80282F00(temp_s0 + 0x4E, temp_s0->unk54); if (func_80282364(temp_s0 + 0x48, 0, temp_s0->unk5A) == 0) { - temp_s0->unk4E = 0; + temp_s0->unk4E = 0U; } } - arg2->unkC = sp38; - arg2->unk10 = sp3C; - arg2->unk14 = sp40; + camera->lookAt[0] = sp38; + camera->lookAt[1] = sp3C; + camera->lookAt[2] = sp40; } } #else @@ -1214,15 +1207,82 @@ GLOBAL_ASM("asm/non_matchings/code_80281FA0/func_802847CC.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -/* -Failed to decompile function func_80284AE8: +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de +struct _struct_D_80286B5C_0x8 { + /* 0x0 */ ? (*unk0)(); /* inferred */ + /* 0x4 */ s16 unk4; /* inferred */ + /* 0x6 */ char pad6[2]; +}; /* size = 0x8 */ -Unable to determine jump table for jr instruction at func_80284AE8.s line 13. +? func_802847CC(); /* extern */ +static ? D_80285D10; /* unable to generate initializer */ +static ? D_80285D58; /* unable to generate initializer */ +static struct _struct_D_80286B5C_0x8 D_80286B5C[2] = { { func_802847CC, 0x7FFF }, { NULL, 0 } }; -There must be a read of a variable in the same block as -the instruction, which has a name starting with "jtbl"/"jpt_". -*/ +void func_80284AE8(void *arg0) { + s16 sp1A; + s16 temp_v0_3; + struct _struct_D_80286B5C_0x8 *temp_v0_7; + u8 temp_v0; + void *temp_v0_2; + void *temp_v0_4; + void *temp_v0_5; + void *temp_v0_6; + + temp_v0 = arg0->unk1C; + switch (temp_v0) { /* irregular */ + case 2: + temp_v0_2 = (D_802876D0 * 8) + &D_80285D10; + sp1A = temp_v0_2->unk4; + temp_v0_2->unk0(); + default: +block_8: + if ((sp1A != 0) && (temp_v0_3 = D_802876D2, ((temp_v0_3 & 0xC000) == 0))) { + if (temp_v0_3 < 0x3FFF) { + D_802876D2 = temp_v0_3 + 1; + } + if (sp1A == D_802876D2) { + D_802876D2 = 0; + D_802876D0 += 1; + func_8028240C(); + return; + } + } else { + if (D_802876D2 & 0x4000) { + D_802876D2 = 0; + func_8028240C(); + return; + } + D_802876D8 = 0; + D_802876D0 = 0; + D_802876D2 = 0; + func_8028240C(); + return; + } + break; + case 3: + temp_v0_4 = (D_802876D0 * 8) + &D_80285D10; + sp1A = temp_v0_4->unk4; + temp_v0_4->unk0(); + goto block_8; + case 4: + temp_v0_5 = (D_802876D0 * 8) + &D_80285D10; + sp1A = temp_v0_5->unk4; + temp_v0_5->unk0(); + goto block_8; + case 5: + temp_v0_6 = (D_802876D0 * 8) + &D_80285D58; + sp1A = temp_v0_6->unk4; + temp_v0_6->unk0(); + func_80283C58((s32) arg0); + goto block_8; + case 6: + temp_v0_7 = &D_80286B5C[D_802876D0]; + sp1A = temp_v0_7->unk4; + temp_v0_7->unk0(); + goto block_8; + } +} #else GLOBAL_ASM("asm/non_matchings/code_80281FA0/func_80284AE8.s") #endif diff --git a/src/math_util.c b/src/math_util.c index f4a03e829..c76959e7d 100644 --- a/src/math_util.c +++ b/src/math_util.c @@ -10,35 +10,13 @@ #pragma intrinsic (sqrtf) #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_802B6434(Vec3f arg0, Mat4 arg1); -void *vec3f_copy(Vec3f, Vec3f); -// weird stuff going on. But this is an unused func... So who cares. -UNUSED s32 func_802B4F60(UNUSED s32 arg0, Vec3f arg2, UNUSED f32 arg3, UNUSED f32 arg4) { - Mat4 sp30; - f32 sp2C; - f32 pad; - Vec3f sp1C; - - vec3f_copy(sp1C, arg2); - sp2C = sp30[1][3]; // permuter - sp2C = (((sp1C[0] * sp30[0][3]) + (((0, sp1C[1])) * sp2C)) + (sp1C[2] * sp30[2][3])) + sp30[3][3]; - - //sp2C = (sp1C[0] * sp30[0][3]) + (sp1C[1] * sp30[1][3]) + (sp1C[2] * sp30[2][3]) + sp30[3][3]; - func_802B6434(sp1C, sp30); - - if (sp2C <= 0) { - return 0; - } - return 1; -} -/* -s32 func_802B4F60(s32 arg0, f32* arg1, ? arg2, ? arg3) { +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de +s32 func_802B4F60(s32 arg0, f32 *arg2, f32 arg3, f32 arg4) { f32 sp2C; f32 sp1C; - ? var_v0; + s32 var_v0; - vec3f_copy(&sp1C, arg1); + vec3f_copy(&sp1C, arg2); sp2C = sp6C + ((sp30[3] * sp1C) + (sp4C * sp20) + (sp5C * sp24)); func_802B6434(&sp1C, (f32 (*)[4]) &sp30[0]); var_v0 = 1; @@ -47,12 +25,11 @@ s32 func_802B4F60(s32 arg0, f32* arg1, ? arg2, ? arg3) { } return var_v0; } -*/ #else GLOBAL_ASM("asm/non_matchings/math_util/func_802B4F60.s") #endif -UNUSED func_802B4FF0() { +UNUSED void func_802B4FF0() { } @@ -156,30 +133,26 @@ UNUSED void *sm64_vec3f_set(Vec3f dest, f32 x, f32 y, f32 z) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -UNUSED void func_802B5350(void *arg0, void *arg1) { - s32 temp_v0; - void *temp_a2; - void *temp_v1; - void *phi_a2; - void *phi_v1; - s32 phi_v0; +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de +void func_802B5350(f32 (*arg0)[4], f32 (*arg1)[4]) { + f32 (*var_a2)[4]; + f32 (*var_v1)[4]; + f32 temp_f6; + s32 var_v0; - phi_a2 = arg0; - phi_v1 = arg1; - phi_v0 = 0; + var_a2 = arg0; + var_v0 = 0; + var_v1 = arg1; do { - temp_v0 = phi_v0 + 1; - temp_v1 = phi_v1 + 0x10; - temp_v1->unk-10 = phi_a2->unk0; - temp_a2 = phi_a2 + 0x10; - temp_v1->unk-C = phi_a2->unk4; - temp_v1->unk-8 = temp_a2->unk-8; - temp_v1->unk-4 = temp_a2->unk-4; - phi_a2 = temp_a2; - phi_v1 = temp_v1; - phi_v0 = temp_v0; - } while (temp_v0 != 4); + var_v0 += 1; + var_v1 += 0x10; + var_v1->unk-10 = (f32) var_a2[0][0]; + temp_f6 = var_a2[0][1]; + var_a2 += 0x10; + var_v1->unk-C = temp_f6; + var_v1->unk-8 = (f32) var_a2->unk-8; + var_v1->unk-4 = (f32) var_a2->unk-4; + } while (var_v0 != 4); } #else GLOBAL_ASM("asm/non_matchings/math_util/func_802B5350.s") @@ -269,9 +242,8 @@ void func_802B5564(Mat4 arg0, u16 *arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, } #ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -// Similar to sm64's mtxf_lookat -void func_802B5794(void* arg0, void* arg1, void* arg2) { +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de +void func_802B5794(f32 (*arg0)[4], f32 *arg1, f32 *arg2) { f32 sp4C; f32 sp48; f32 sp30; @@ -315,18 +287,18 @@ void func_802B5794(void* arg0, void* arg1, void* arg2) { temp_f10 = temp_f18_2 * temp_f22_2; sp4C = temp_f16_3 * temp_f22_2; sp48 = temp_f10; - arg0->unk0 = temp_f28; + arg0[0][0] = temp_f28; arg0->unk10 = 0.0f; arg0->unk20 = sp30; arg0->unk30 = (f32) -((arg1->unk8 * sp30) + ((arg1->unk0 * temp_f28) + (arg1->unk4 * 0.0f))); - arg0->unk4 = temp_f20_2; + arg0[0][1] = temp_f20_2; arg0->unk24 = sp48; arg0->unk14 = sp4C; - arg0->unk8 = temp_f12_2; + arg0[0][2] = temp_f12_2; arg0->unk18 = temp_f14_2; arg0->unk28 = temp_f2_2; arg0->unk34 = (f32) -((arg1->unk8 * sp48) + ((arg1->unk0 * temp_f20_2) + (arg1->unk4 * sp4C))); - arg0->unkC = 0.0f; + arg0[0][3] = 0.0f; arg0->unk1C = 0.0f; arg0->unk2C = 0.0f; arg0->unk3C = 1.0f; @@ -370,11 +342,8 @@ void func_802B5AAC(Mat4 arg0, s16 arg1) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -//f32 sins(u16); /* extern */ -//f32 coss(u16); /* extern */ - -void func_802B5B14(Vec3f arg0, Vec3s arg1) { +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de +void func_802B5B14(f32 *arg0, s16 *arg1) { f32 sp70; f32 sp6C; f32 sp68; @@ -386,35 +355,31 @@ void func_802B5B14(Vec3f arg0, Vec3s arg1) { f32 sp48; f32 sp40; f32 sp3C; - f32 sp38 = sins(arg1[0]); - f32 sp30 = sins(arg1[1]); - f32 sp2C = coss(arg1[1]); - f32 sp28 = sins(arg1[2]); - f32 temp_f0 = coss(arg1[2]); - f32 temp_f20 = coss(arg1[0]); + f32 sp38; + f32 sp30; + f32 sp2C; + f32 sp28; + f32 temp_f0; f32 temp_f10; - //f32 temp_f12; + f32 temp_f12; f32 temp_f18; + f32 temp_f20; f32 temp_f4; f32 temp_f6; - //sp38 = sins(arg1->unk0); - //temp_f20 = coss(arg1->unk0); - //sp30 = sins(arg1->unk2); - //sp2C = coss(arg1->unk2); - //sp28 = sins(arg1->unk4); - //temp_f0 = coss(arg1->unk4); - //temp_f4 = arg0[0]; - //temp_f12 = sp38 * sp30; - //sp3C = temp_f4; - - sp3C = arg0[0]; - sp40 = arg0[1]; - - - temp_f6 = (sp2C * temp_f0) + (sp38 * sp30 * sp28); + sp38 = sins((u16) arg1->unk0); + temp_f20 = coss((u16) arg1->unk0); + sp30 = sins(arg1->unk2); + sp2C = coss(arg1->unk2); + sp28 = sins(arg1->unk4); + temp_f0 = coss(arg1->unk4); + temp_f4 = arg0->unk0; + temp_f12 = sp38 * sp30; + sp3C = temp_f4; + sp40 = arg0->unk4; + temp_f6 = (sp2C * temp_f0) + (temp_f12 * sp28); sp48 = temp_f6; - sp58 = (-sp2C * sp28) + (sp38 * sp30 * temp_f0); + sp58 = (-sp2C * sp28) + (temp_f12 * temp_f0); sp68 = temp_f20 * sp30; sp4C = temp_f20 * sp28; temp_f18 = sp38 * sp2C; @@ -424,9 +389,9 @@ void func_802B5B14(Vec3f arg0, Vec3s arg1) { sp50 = temp_f10; sp60 = (sp30 * sp28) + (temp_f18 * temp_f0); sp70 = temp_f20 * sp2C; - arg0[0] = (temp_f10 * sp40) + ((sp3C * temp_f6) + (sp40 * sp4C)); - arg0[1] = (sp60 * sp40) + ((sp3C * sp58) + (sp40 * sp5C)); - arg0[2] = (sp70 * sp40) + ((sp3C * sp68) + (sp40 * sp6C)); + arg0->unk0 = (temp_f10 * sp40) + ((temp_f4 * temp_f6) + (sp40 * sp4C)); + arg0->unk4 = (f32) ((sp60 * sp40) + ((temp_f4 * sp58) + (sp40 * sp5C))); + arg0->unk8 = (f32) ((sp70 * sp40) + ((sp3C * sp68) + (sp40 * sp6C))); } #else GLOBAL_ASM("asm/non_matchings/math_util/func_802B5B14.s") @@ -545,147 +510,101 @@ void func_802B5F00(Mat4 arg0, f32 arg1) { arg0[2][2] *= arg1; } -#ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -f32 sins(u16); /* extern */ -f32 coss(u16); /* extern */ - void func_802B5F74(Mat4 arg0, Vec3f arg1, Vec3s arg2) { - f32 sp3C; - f32 sp34; - f32 sp30; - f32 sp2C; - f32 temp_f0; - f32 temp_f12; - f32 temp_f12_2; - f32 temp_f20; - f32 temp_f6; + f32 sine1; + f32 cosine1; + f32 sine2; + f32 cosine2; + f32 sine3; + f32 cosine3; - sp3C = sins(arg2->unk0); - temp_f20 = coss(arg2->unk0); - sp34 = sins(arg2->unk2); - sp30 = coss(arg2->unk2); - sp2C = sins(arg2->unk4); - temp_f0 = coss(arg2->unk4); - temp_f12 = sp3C * sp34; - temp_f6 = temp_f12 * temp_f0; - arg0->unk0 = (sp30 * temp_f0) + (temp_f12 * sp2C); - arg0->unk20 = temp_f20 * sp34; - arg0->unk10 = (-sp30 * sp2C) + temp_f6; - arg0->unk24 = -sp3C; - temp_f12_2 = sp3C * sp30; - arg0->unk4 = temp_f20 * sp2C; - arg0->unk30 = arg1->unk0; - arg0->unk14 = temp_f20 * temp_f0; - arg0->unk34 = arg1->unk4; - arg0->unk8 = (-sp34 * temp_f0) + (temp_f12_2 * sp2C); - arg0->unk28 = temp_f20 * sp30; - arg0->unk18 = (sp34 * sp2C) + (temp_f12_2 * temp_f0); - arg0->unkC = 0.0f; - arg0->unk1C = 0.0f; - arg0->unk2C = 0.0f; - arg0->unk3C = 1.0f; - arg0->unk38 = arg1->unk8; + sine1 = sins(arg2[0]); + cosine1 = coss(arg2[0]); + sine2 = sins(arg2[1]); + cosine2 = coss(arg2[1]); + sine3 = sins(arg2[2]); + cosine3 = coss(arg2[2]); + arg0[0][0] = (cosine2 * cosine3) + ((sine1 * sine2) * sine3); + arg0[1][0] = (-cosine2 * sine3) + ((sine1 * sine2) * cosine3); + arg0[2][0] = cosine1 * sine2; + arg0[3][0] = arg1[0]; + arg0[0][1] = cosine1 * sine3; + arg0[1][1] = cosine1 * cosine3; + arg0[2][1] = -sine1; + arg0[3][1] = arg1[1]; + arg0[0][2] = (-sine2 * cosine3) + ((sine1 * cosine2) * sine3); + arg0[1][2] = (sine2 * sine3) + ((sine1 * cosine2) * cosine3); + arg0[2][2] = cosine1 * cosine2; + arg0[3][2] = arg1[2]; + arg0[0][3] = 0.0f; + arg0[1][3] = 0.0f; + arg0[2][3] = 0.0f; + arg0[3][3] = 1.0f; } -#else -GLOBAL_ASM("asm/non_matchings/math_util/func_802B5F74.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(u16); /* extern */ -f32 coss(u16); /* extern */ +UNUSED void func_802B60B4(Mat4 arg0, Vec3s arg1, Vec3s arg2) { + f32 sine1; + f32 cosine1; + f32 sine2; + f32 cosine2; + f32 sine3; + f32 cosine3; -void func_802B60B4(void *arg0, void *arg1, void *arg2) { - f32 sp3C; - f32 sp34; - f32 sp30; - f32 sp2C; - f32 temp_f0; - f32 temp_f12; - f32 temp_f12_2; - f32 temp_f20; - f32 temp_f6; - - sp3C = sins(arg2->unk0); - temp_f20 = coss(arg2->unk0); - sp34 = sins(arg2->unk2); - sp30 = coss(arg2->unk2); - sp2C = sins(arg2->unk4); - temp_f0 = coss(arg2->unk4); - temp_f12 = sp3C * sp34; - temp_f6 = temp_f12 * temp_f0; - arg0->unk0 = (sp30 * temp_f0) + (temp_f12 * sp2C); - arg0->unk8 = temp_f20 * sp34; - arg0->unk4 = (-sp30 * sp2C) + temp_f6; - arg0->unk10 = temp_f20 * sp2C; - temp_f12_2 = sp3C * sp30; - arg0->unk14 = temp_f20 * temp_f0; - arg0->unkC = arg1->unk0; - arg0->unk18 = -sp3C; - arg0->unk1C = arg1->unk2; - arg0->unk20 = (-sp34 * temp_f0) + (temp_f12_2 * sp2C); - arg0->unk28 = temp_f20 * sp30; - arg0->unk24 = (sp34 * sp2C) + (temp_f12_2 * temp_f0); - arg0->unk30 = 0.0f; - arg0->unk34 = 0.0f; - arg0->unk38 = 0.0f; - arg0->unk3C = 1.0f; - arg0->unk2C = arg1->unk4; + sine1 = sins(arg2[0]); + cosine1 = coss(arg2[0]); + sine2 = sins(arg2[1]); + cosine2 = coss(arg2[1]); + sine3 = sins(arg2[2]); + cosine3 = coss(arg2[2]); + arg0[0][0] = (cosine2 * cosine3) + ((sine1 * sine2) * sine3); + arg0[0][1] = (-cosine2 * sine3) + ((sine1 * sine2) * cosine3); + arg0[0][2] = cosine1 * sine2; + arg0[0][3] = (f32) arg1[0]; + arg0[1][0] = (f32) (cosine1 * sine3); + arg0[1][1] = (f32) (cosine1 * cosine3); + arg0[1][2] = (f32) -sine1; + arg0[1][3] = (f32) arg1[1]; + arg0[2][0] = (f32) ((-sine2 * cosine3) + ((sine1 * cosine2) * sine3)); + arg0[2][1] = (f32) ((sine2 * sine3) + ((sine1 * cosine2) * cosine3)); + arg0[2][2] = (f32) (cosine1 * cosine2); + arg0[2][3] = (f32) arg1[2]; + arg0[3][0] = 0.0f; + arg0[3][1] = 0.0f; + arg0[3][2] = 0.0f; + arg0[3][3] = 1.0f; } -#else -GLOBAL_ASM("asm/non_matchings/math_util/func_802B60B4.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(u16); /* extern */ -f32 coss(u16); /* extern */ +UNUSED void func_802B6214(Mat4 arg0, Vec3s arg1, Vec3s arg2) { + f32 sine1; + f32 cosine1; + f32 sine2; + f32 cosine2; + f32 sine3; + f32 cosine3; -void func_802B6214(void *arg0, void *arg1, void *arg2) { - f32 sp3C; - f32 sp34; - f32 sp30; - f32 sp2C; - f32 temp_f0; - f32 temp_f12; - f32 temp_f12_2; - f32 temp_f20; - f32 temp_f6; - - sp3C = sins(arg2->unk0); - temp_f20 = coss(arg2->unk0); - sp34 = sins(arg2->unk2); - sp30 = coss(arg2->unk2); - sp2C = sins(arg2->unk4); - temp_f0 = coss(arg2->unk4); - temp_f12 = sp3C * sp34; - temp_f6 = temp_f12 * temp_f0; - arg0->unk0 = (sp30 * temp_f0) + (temp_f12 * sp2C); - arg0->unk20 = temp_f20 * sp34; - arg0->unk10 = (-sp30 * sp2C) + temp_f6; - arg0->unk4 = temp_f20 * sp2C; - temp_f12_2 = sp3C * sp30; - arg0->unk14 = temp_f20 * temp_f0; - arg0->unk30 = arg1->unk0; - arg0->unk24 = -sp3C; - arg0->unk34 = arg1->unk2; - arg0->unk8 = (-sp34 * temp_f0) + (temp_f12_2 * sp2C); - arg0->unk28 = temp_f20 * sp30; - arg0->unk18 = (sp34 * sp2C) + (temp_f12_2 * temp_f0); - arg0->unkC = 0.0f; - arg0->unk1C = 0.0f; - arg0->unk2C = 0.0f; - arg0->unk3C = 1.0f; - arg0->unk38 = arg1->unk4; + sine1 = sins(arg2[0]); + cosine1 = coss(arg2[0]); + sine2 = sins(arg2[1]); + cosine2 = coss(arg2[1]); + sine3 = sins(arg2[2]); + cosine3 = coss(arg2[2]); + arg0[0][0] = (cosine2 * cosine3) + ((sine1 * sine2) * sine3); + arg0[1][0] = (-cosine2 * sine3) + ((sine1 * sine2) * cosine3); + arg0[2][0] = cosine1 * sine2; + arg0[3][0] = arg1[0]; + arg0[0][1] = cosine1 * sine3; + arg0[1][1] = cosine1 * cosine3; + arg0[2][1] = -sine1; + arg0[3][1] = arg1[1]; + arg0[0][2] = (-sine2 * cosine3) + ((sine1 * cosine2) * sine3); + arg0[1][2] = (sine2 * sine3) + ((sine1 * cosine2) * cosine3); + arg0[2][2] = cosine1 * cosine2; + arg0[3][2] = arg1[2]; + arg0[0][3] = 0.0f; + arg0[1][3] = 0.0f; + arg0[2][3] = 0.0f; + arg0[3][3] = 1.0f; } -#else -GLOBAL_ASM("asm/non_matchings/math_util/func_802B6214.s") -#endif UNUSED void func_802B6374(Vec3f arg0) { f32 temp_f0; @@ -743,15 +662,12 @@ void func_802B64C4(Vec3f arg0, s16 arg1) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de ? func_802B6A84(f32, ?, f32 *, s16, f32, ?, f32); /* extern */ -f32 func_802B7CE8(f32, f32, s32); /* extern */ -f32 sins(u16); /* extern */ -f32 coss(u16); /* extern */ static f64 D_802B9FB8 = 3.141592653589793; static f64 D_802B9FC0 = 360.0; -void func_802B6540(void *arg0, f32 arg1, f32 arg2, f32 arg3, u16 arg4) { +void func_802B6540(f32 (*arg0)[4], f32 arg1, f32 arg2, f32 arg3, u16 arg4) { f32 spAC; f32 spA8; f32 spA4; @@ -765,22 +681,18 @@ void func_802B6540(void *arg0, f32 arg1, f32 arg2, f32 arg3, u16 arg4) { f32 sp68; f32 sp40; s32 sp38; + f32 *var_a3; + f32 *var_a3_2; + f32 *var_v1; + f32 *var_v1_2; f32 temp_f0; f32 temp_f0_2; - s32 temp_a0; - s32 temp_a0_2; - s32 temp_v0; - s32 temp_v0_2; - s32 phi_a0; - s32 phi_v0; - f32 *phi_v1; - s32 phi_a0_2; - s32 phi_v0_2; - f32 *phi_v1_2; - f32 *phi_a3; - f32 *phi_a3_2; + s32 var_a0; + s32 var_a0_2; + s32 var_v0; + s32 var_v0_2; - sp38 = arg4; + sp38 = (s32) arg4; sp40 = sins(arg4); temp_f0 = coss(arg4); sp8C = temp_f0; @@ -793,161 +705,140 @@ void func_802B6540(void *arg0, f32 arg1, f32 arg2, f32 arg3, u16 arg4) { sp98 = 0.0f; sp90 = 0.0f; if (arg2 == 1.0f) { - phi_a0 = 0; - phi_a3 = &sp68; + var_a0 = 0; + var_a3 = &sp68; do { - phi_v0 = 0; - phi_v1 = phi_a3; + var_v0 = 0; + var_v1 = var_a3; loop_3: - if ((phi_a0 * 4) == phi_v0) { - *phi_v1 = 1.0f; + if ((var_a0 * 4) == var_v0) { + *var_v1 = 1.0f; } else { - *phi_v1 = 0.0f; + *var_v1 = 0.0f; } - temp_v0 = phi_v0 + 4; - phi_v0 = temp_v0; - phi_v1 += 4; - if (temp_v0 != 0xC) { + var_v0 += 4; + var_v1 += 4; + if (var_v0 != 0xC) { goto loop_3; } - temp_a0 = phi_a0 + 1; - phi_a0 = temp_a0; - phi_a3 += 0xC; - } while (temp_a0 != 3); + var_a0 += 1; + var_a3 += 0xC; + } while (var_a0 != 3); } else { - phi_a0_2 = 0; - phi_a3_2 = &sp68; + var_a0_2 = 0; + var_a3_2 = &sp68; if (arg2 == -1.0f) { do { - phi_v0_2 = 0; - phi_v1_2 = phi_a3_2; + var_v0_2 = 0; + var_v1_2 = var_a3_2; loop_12: - if ((phi_a0_2 * 4) == phi_v0_2) { - *phi_v1_2 = 1.0f; + if ((var_a0_2 * 4) == var_v0_2) { + *var_v1_2 = 1.0f; } else { - *phi_v1_2 = 0.0f; + *var_v1_2 = 0.0f; } - temp_v0_2 = phi_v0_2 + 4; - phi_v0_2 = temp_v0_2; - phi_v1_2 += 4; - if (temp_v0_2 != 0xC) { + var_v0_2 += 4; + var_v1_2 += 4; + if (var_v0_2 != 0xC) { goto loop_12; } - temp_a0_2 = phi_a0_2 + 1; - phi_a0_2 = temp_a0_2; - phi_a3_2 += 0xC; - } while (temp_a0_2 != 3); + var_a0_2 += 1; + var_a3_2 += 0xC; + } while (var_a0_2 != 3); sp78 = -1.0f; } else { temp_f0_2 = sqrtf((arg1 * arg1) + (arg3 * arg3)); - func_802B6A84(arg1, 0, &sp68, -(D_802B9FC0 - ((func_802B7CE8(arg2, 0.0f, 0) * 180.0f) / D_802B9FB8)), -arg3 / temp_f0_2, 0, arg1 / temp_f0_2); + func_802B6A84(arg1, 0, &sp68, (s16) (s32) (f32) -(D_802B9FC0 - ((f64) (func_802B7CE8(arg2) * 180.0f) / D_802B9FB8)), -arg3 / temp_f0_2, 0, arg1 / temp_f0_2); } } - arg0->unk0 = (sp80 * sp94) + ((sp8C * sp68) + (sp90 * sp74)); - arg0->unkC = (sp80 * spA0) + ((sp98 * sp68) + (sp9C * sp74)); - arg0->unk18 = (sp80 * spAC) + ((spA4 * sp68) + (spA8 * sp74)); - arg0->unk4 = (sp84 * sp94) + ((sp8C * sp6C) + (sp90 * sp78)); - arg0->unk10 = (sp84 * spA0) + ((sp98 * sp6C) + (sp9C * sp78)); - arg0->unk1C = (sp84 * spAC) + ((spA4 * sp6C) + (spA8 * sp78)); - arg0->unk8 = (sp88 * sp94) + ((sp8C * sp70) + (sp90 * sp7C)); - arg0->unk14 = (sp88 * spA0) + ((sp98 * sp70) + (sp9C * sp7C)); - arg0->unk20 = (sp88 * spAC) + ((spA4 * sp70) + (spA8 * sp7C)); + arg0[0][0] = (sp80 * sp94) + ((sp8C * sp68) + (sp90 * sp74)); + arg0[0][3] = (sp80 * spA0) + ((sp98 * sp68) + (sp9C * sp74)); + arg0->unk18 = (f32) ((sp80 * spAC) + ((spA4 * sp68) + (spA8 * sp74))); + arg0[0][1] = (sp84 * sp94) + ((sp8C * sp6C) + (sp90 * sp78)); + arg0->unk10 = (f32) ((sp84 * spA0) + ((sp98 * sp6C) + (sp9C * sp78))); + arg0->unk1C = (f32) ((sp84 * spAC) + ((spA4 * sp6C) + (spA8 * sp78))); + arg0[0][2] = (sp88 * sp94) + ((sp8C * sp70) + (sp90 * sp7C)); + arg0->unk14 = (f32) ((sp88 * spA0) + ((sp98 * sp70) + (sp9C * sp7C))); + arg0->unk20 = (f32) ((sp88 * spAC) + ((spA4 * sp70) + (spA8 * sp7C))); } #else GLOBAL_ASM("asm/non_matchings/math_util/func_802B6540.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -? func_802B6A84(f32, f32, f32 *, s16, f32, ?, f32); /* extern */ -f32 func_802B7CE8(f32, f32, s32, f32 *); /* extern */ +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de +? func_802B6A84(f32, f32, f32 (*)[4], s16, f32, ?, f32); /* extern */ static f64 D_802B9FC8 = 3.141592653589793; static f64 D_802B9FD0 = 360.0; -void func_802B68F8(f32 *arg0, f32 arg1, f32 arg2, f32 arg3) { +void func_802B68F8(f32 (*arg0)[4], f32 arg1, f32 arg2, f32 arg3) { + f32 (*var_a3)[4]; + f32 (*var_a3_2)[4]; + f32 (*var_v1)[4]; + f32 (*var_v1_2)[4]; f32 temp_f0; - f32 temp_f14; - s32 temp_a0; - s32 temp_a0_2; - s32 temp_v0; - s32 temp_v0_2; - s32 phi_a0; - s32 phi_v0; - f32 *phi_v1; - s32 phi_a0_2; - s32 phi_v0_2; - f32 *phi_v1_2; - f32 *phi_a3; - f32 *phi_a3_2; + s32 var_a0; + s32 var_a0_2; + s32 var_v0; + s32 var_v0_2; - temp_f14 = arg1; if (arg2 == 1.0f) { - phi_a0 = 0; - phi_a3 = arg0; + var_a0 = 0; + var_a3 = arg0; do { - phi_v0 = 0; - phi_v1 = phi_a3; + var_v0 = 0; + var_v1 = var_a3; loop_3: - if ((phi_a0 * 4) == phi_v0) { - *phi_v1 = 1.0f; + if ((var_a0 * 4) == var_v0) { + var_v1[0][0] = 1.0f; } else { - *phi_v1 = 0.0f; + var_v1[0][0] = 0.0f; } - temp_v0 = phi_v0 + 4; - phi_v0 = temp_v0; - phi_v1 += 4; - if (temp_v0 != 0xC) { + var_v0 += 4; + var_v1 += 4; + if (var_v0 != 0xC) { goto loop_3; } - temp_a0 = phi_a0 + 1; - phi_a0 = temp_a0; - phi_a3 += 0xC; - } while (temp_a0 != 3); + var_a0 += 1; + var_a3 += 0xC; + } while (var_a0 != 3); return; } - phi_a0_2 = 0; - phi_a3_2 = arg0; + var_a0_2 = 0; + var_a3_2 = arg0; if (arg2 == -1.0f) { do { - phi_v0_2 = 0; - phi_v1_2 = phi_a3_2; + var_v0_2 = 0; + var_v1_2 = var_a3_2; loop_12: - if ((phi_a0_2 * 4) == phi_v0_2) { - *phi_v1_2 = 1.0f; + if ((var_a0_2 * 4) == var_v0_2) { + var_v1_2[0][0] = 1.0f; } else { - *phi_v1_2 = 0.0f; + var_v1_2[0][0] = 0.0f; } - temp_v0_2 = phi_v0_2 + 4; - phi_v0_2 = temp_v0_2; - phi_v1_2 += 4; - if (temp_v0_2 != 0xC) { + var_v0_2 += 4; + var_v1_2 += 4; + if (var_v0_2 != 0xC) { goto loop_12; } - temp_a0_2 = phi_a0_2 + 1; - phi_a0_2 = temp_a0_2; - phi_a3_2 += 0xC; - } while (temp_a0_2 != 3); + var_a0_2 += 1; + var_a3_2 += 0xC; + } while (var_a0_2 != 3); arg0->unk10 = -1.0f; return; } - arg1 = temp_f14; temp_f0 = sqrtf((arg1 * arg1) + (arg3 * arg3)); - func_802B6A84(arg3, arg1, arg0, -(D_802B9FD0 - ((func_802B7CE8(arg2, temp_f14, 0, arg0) * 180.0f) / D_802B9FC8)), -arg3 / temp_f0, 0, arg1 / temp_f0); + func_802B6A84(arg3, arg1, arg0, (s16) (s32) (f32) -(D_802B9FD0 - ((f64) (func_802B7CE8(arg2) * 180.0f) / D_802B9FC8)), -arg3 / temp_f0, 0, arg1 / temp_f0); } #else GLOBAL_ASM("asm/non_matchings/math_util/func_802B68F8.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, void *); /* extern */ -f32 coss(s32); /* extern */ - -void func_802B6A84(void *arg0, s32 arg1, f32 arg2, f32 arg3, f32 arg4) { +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de +void func_802B6A84(Mat4 arg0, s32 arg1, f32 arg2, f32 arg3, f32 arg4) { f32 sp54; - s32 sp34; + s32 sp34; /* compiler-managed */ f32 sp30; f32 sp2C; f32 temp_f0; @@ -961,159 +852,105 @@ void func_802B6A84(void *arg0, s32 arg1, f32 arg2, f32 arg3, f32 arg4) { f32 temp_f2_2; f32 temp_f6; s32 temp_a0; - void *temp_a2; - temp_a2 = arg0; temp_a0 = arg1 & 0xFFFF; sp34 = temp_a0; - arg0 = temp_a2; - sp54 = sins(temp_a0, temp_a2); - temp_f0 = coss(temp_a0); + sp54 = sins((u16) temp_a0); + temp_f0 = coss((u16) temp_a0); temp_f12 = arg2 * arg2; temp_f6 = 1.0f - temp_f0; - arg0->unk0 = ((1.0f - temp_f12) * temp_f0) + temp_f12; - sp34 = (bitwise s32) temp_f6; + arg0[0][0] = ((1.0f - temp_f12) * temp_f0) + temp_f12; + sp34 = temp_f6; temp_f2 = arg3 * arg4 * temp_f6; temp_f14 = arg2 * sp54; temp_f16 = arg3 * arg3; - arg0->unk1C = temp_f2 - temp_f14; - arg0->unk14 = temp_f14 + temp_f2; - arg0->unk10 = ((1.0f - temp_f16) * temp_f0) + temp_f16; + arg0->unk1C = (f32) (temp_f2 - temp_f14); + arg0->unk14 = (f32) (temp_f14 + temp_f2); + arg0->unk10 = (f32) (((1.0f - temp_f16) * temp_f0) + temp_f16); sp2C = arg3 * sp54; - temp_f10 = arg4 * arg2 * (bitwise f32) sp34; + temp_f10 = arg4 * arg2 * sp34; sp30 = temp_f10; - arg0->unk18 = sp2C + temp_f10; + arg0->unk18 = (f32) (sp2C + temp_f10); temp_f12_2 = arg4 * arg4; - arg0->unk8 = sp30 - sp2C; - arg0->unk20 = ((1.0f - temp_f12_2) * temp_f0) + temp_f12_2; - temp_f2_2 = arg2 * arg3 * (bitwise f32) sp34; + arg0[0][2] = sp30 - sp2C; + arg0->unk20 = (f32) (((1.0f - temp_f12_2) * temp_f0) + temp_f12_2); + temp_f2_2 = arg2 * arg3 * sp34; temp_f14_2 = arg4 * sp54; - arg0->unkC = temp_f2_2 - temp_f14_2; - arg0->unk4 = temp_f14_2 + temp_f2_2; + arg0[0][3] = temp_f2_2 - temp_f14_2; + arg0[0][1] = temp_f14_2 + temp_f2_2; } #else GLOBAL_ASM("asm/non_matchings/math_util/func_802B6A84.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(f32, s32, void *); /* extern */ -f32 coss(s32); /* extern */ - -void func_802B6BC0(void *arg0, s32 arg1, f32 arg2, f32 arg3, f32 arg4) { - f32 sp3C; - f32 sp30; - s32 sp2C; - f32 sp28; - f32 sp24; +void func_802B6BC0(Mat4 arg0, s16 arg1, f32 arg2, f32 arg3, f32 arg4) { + f32 sine; + f32 cosine; f32 temp_f0; f32 temp_f12; - f32 temp_f14; - f32 temp_f18; - f32 temp_f6; - s32 temp_a0; - void *temp_a2; - temp_f14 = arg2; - temp_a2 = arg0; - temp_a0 = arg1 & 0xFFFF; - sp2C = temp_a0; - arg0 = temp_a2; - arg2 = temp_f14; - sp3C = sins(temp_f14, temp_a0, temp_a2); - temp_f18 = coss(temp_a0); + sine = sins(arg1); + cosine = coss(arg1); temp_f0 = sqrtf((arg2 * arg2) + (arg4 * arg4)); if (temp_f0 != 0.0f) { temp_f12 = 1.0f / temp_f0; - sp2C = (bitwise s32) -arg4; - temp_f6 = sp3C * arg3; - sp28 = temp_f6; - sp30 = temp_f12; - arg0->unk0 = (((bitwise f32) sp2C * temp_f18) - (sp28 * arg2)) * temp_f12; - sp24 = temp_f18 * arg3; - arg0->unk18 = -arg2; - arg0->unkC = ((arg4 * sp3C) - (sp24 * arg2)) * temp_f12; - arg0->unk4 = sp3C * temp_f0; - arg0->unk10 = temp_f18 * temp_f0; - arg0->unk1C = -arg3; - arg0->unk8 = ((temp_f18 * arg2) - (temp_f6 * arg4)) * sp30; - arg0->unk14 = ((-sp3C * arg2) - (sp24 * arg4)) * sp30; - arg0->unkC = 0.0f; - arg0->unk18 = 0.0f; - arg0->unk24 = 0.0f; - arg0->unk20 = sp2C; - return; + arg0[0][0] = ((-arg4 * cosine) - ((sine * arg3) * arg2)) * temp_f12; + arg0[0][3] = ((arg4 * sine) - ((cosine * arg3) * arg2)) * temp_f12; + arg0[1][2] = -arg2; + arg0[0][1] = sine * temp_f0; + arg0[1][0] = cosine * temp_f0; + arg0[1][3] = -arg3; + arg0[0][2] = ((cosine * arg2) - ((sine * arg3) * arg4)) * temp_f12; + arg0[1][1] = ((-sine * arg2) - ((cosine * arg3) * arg4)) * temp_f12; + arg0[2][0] = -arg4; + arg0[0][3] = 0.0f; + arg0[1][2] = 0.0f; + arg0[2][1] = 0.0f; + } else { + arg0[0][1] = 0.0f; + arg0[1][3] = 0.0f; + arg0[0][2] = 0.0f; + arg0[1][1] = 0.0f; + arg0[0][3] = 0.0f; + arg0[1][2] = 0.0f; + arg0[2][1] = 0.0f; + arg0[0][0] = 1.0f; + arg0[1][0] = 1.0f; + arg0[2][0] = 1.0f; } - arg0->unk4 = 0.0f; - arg0->unk1C = 0.0f; - arg0->unk8 = 0.0f; - arg0->unk14 = 0.0f; - arg0->unkC = 0.0f; - arg0->unk18 = 0.0f; - arg0->unk24 = 0.0f; - arg0->unk0 = 1.0f; - arg0->unk10 = 1.0f; - arg0->unk20 = (bitwise s32) 1.0f; } -#else -GLOBAL_ASM("asm/non_matchings/math_util/func_802B6BC0.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 */ +void func_802B6D58(Mat4 arg0, Vec3f arg1, Vec3f arg2) { + f32 sine1; + f32 cosine1; + f32 sine2; + f32 cosine2; + f32 sine3; + f32 cosine3; -void func_802B6D58(void *arg0, void *arg1, void *arg2) { - f32 sp3C; - f32 sp34; - f32 sp30; - f32 sp2C; - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f0_3; - f32 temp_f0_4; - f32 temp_f12; - f32 temp_f12_2; - f32 temp_f20; - f32 temp_f6; - - sp3C = sins(arg2->unk0 & 0xFFFF); - temp_f20 = coss(arg2->unk0 & 0xFFFF); - temp_f0 = sins(arg2->unk4 & 0xFFFF); - sp34 = temp_f0; - temp_f0_2 = coss(arg2->unk4 & 0xFFFF); - sp30 = temp_f0_2; - temp_f0_3 = sins(arg2->unk8 & 0xFFFF); - sp2C = temp_f0_3; - temp_f0_4 = coss(arg2->unk8 & 0xFFFF); - temp_f12 = sp3C * temp_f0; - temp_f6 = temp_f12 * temp_f0_4; - arg0->unk0 = (temp_f0_2 * temp_f0_4) + (temp_f12 * temp_f0_3); - arg0->unk20 = temp_f20 * temp_f0; - arg0->unk10 = (-temp_f0_2 * temp_f0_3) + temp_f6; - arg0->unk24 = -sp3C; - temp_f12_2 = sp3C * temp_f0_2; - arg0->unk4 = temp_f20 * temp_f0_3; - arg0->unk30 = arg1->unk0; - arg0->unk14 = temp_f20 * temp_f0_4; - arg0->unk34 = arg1->unk4; - arg0->unk8 = (-temp_f0 * temp_f0_4) + (temp_f12_2 * temp_f0_3); - arg0->unk28 = temp_f20 * temp_f0_2; - arg0->unk18 = (temp_f0 * temp_f0_3) + (temp_f12_2 * temp_f0_4); - arg0->unkC = 0.0f; - arg0->unk1C = 0.0f; - arg0->unk2C = 0.0f; - arg0->unk3C = 1.0f; - arg0->unk38 = arg1->unk8; + sine1 = sins(arg2[0]); + cosine1 = coss(arg2[0]); + sine2 = sins(arg2[1]); + cosine2 = coss(arg2[1]); + sine3 = sins(arg2[2]); + cosine3 = coss(arg2[2]); + arg0[0][0] = (cosine2 * cosine3) + ((sine1 * sine2) * sine3); + arg0[1][0] = (-cosine2 * sine3) + (sine1 * sine2) * cosine3; + arg0[2][0] = cosine1 * sine2; + arg0[3][0] = arg1[0]; + arg0[0][1] = cosine1 * sine3; + arg0[1][1] = cosine1 * cosine3; + arg0[2][1] = -sine1; + arg0[3][1] = arg1[1]; + arg0[0][2] = (-sine2 * cosine3) + ((sine1 * cosine2) * sine3); + arg0[1][2] = (sine2 * sine3) + ((sine1 * cosine2) * cosine3); + arg0[2][2] = cosine1 * cosine2; + arg0[3][2] = arg1[2]; + arg0[0][3] = 0.0f; + arg0[1][3] = 0.0f; + arg0[2][3] = 0.0f; + arg0[3][3] = 1.0f; } -#else -GLOBAL_ASM("asm/non_matchings/math_util/func_802B6D58.s") -#endif void func_802B71CC(Mat4 arg0, Mat4 arg1, Mat4 arg2) { Mat4 product; @@ -1137,87 +974,59 @@ void func_802B71CC(Mat4 arg0, Mat4 arg1, Mat4 arg2) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -void func_802B75F8(void *arg0, f32 *arg1) { +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de +void func_802B75F8(Mtx *arg0, Mat4 arg1) { s32 sp14; - f32 *temp_a2; - f32 temp_f18; - f32 temp_f18_2; - s32 *temp_a0; - s32 temp_a3; - void *temp_a2_2; - void *temp_v0; - void *temp_v0_2; - void *temp_v1; - void *temp_v1_2; - void *temp_v1_3; - f32 phi_f18; - void *phi_v0; - void *phi_v1; - f32 *phi_a2; - s32 phi_a3; - f32 phi_f18_2; - void *phi_v0_2; - void *phi_v1_2; - f32 *phi_a2_2; + Mtx *var_v0; + f32 (*temp_a2)[4]; + f32 (*var_a2)[4]; + f32 var_f18; + s32 *temp_v0; + s32 *temp_v1; + s32 *var_v1; + s32 var_a3; - temp_v1 = arg0 + 0x20; - temp_a0 = &sp14; - temp_f18 = *arg1 * 65536.0f; - phi_f18 = temp_f18; - phi_v0 = arg0; - phi_v1 = temp_v1; - phi_a2 = arg1; - phi_a3 = 4; - phi_f18_2 = temp_f18; - phi_v0_2 = arg0; - phi_v1_2 = temp_v1; - phi_a2_2 = arg1; + var_v0 = arg0; + var_v1 = arg0->m[2]; + var_a2 = arg1; + var_a3 = 4; + var_f18 = var_a2[0][0] * 65536.0f; if (4 != 0x10) { do { - temp_a3 = phi_a3 + 4; - temp_a2 = phi_a2 + 0x10; - temp_v0 = phi_v0 + 8; - temp_v1_2 = phi_v1 + 8; - sp14 = phi_f18; - temp_v0->unk-8 = temp_a0->unk0; - temp_v1_2->unk-8 = temp_a0->unk2; - sp14 = temp_a2->unk-C * 65536.0f; - temp_v0->unk-6 = temp_a0->unk0; - temp_v1_2->unk-6 = temp_a0->unk2; - sp14 = temp_a2->unk-8 * 65536.0f; - temp_v0->unk-4 = temp_a0->unk0; - temp_v1_2->unk-4 = temp_a0->unk2; - sp14 = temp_a2->unk-4 * 65536.0f; - temp_v0->unk-2 = temp_a0->unk0; - temp_v1_2->unk-2 = temp_a0->unk2; - temp_f18_2 = temp_a2->unk0 * 65536.0f; - phi_f18 = temp_f18_2; - phi_v0 = temp_v0; - phi_v1 = temp_v1_2; - phi_a2 = temp_a2; - phi_a3 = temp_a3; - phi_f18_2 = temp_f18_2; - phi_v0_2 = temp_v0; - phi_v1_2 = temp_v1_2; - phi_a2_2 = temp_a2; - } while (temp_a3 != 0x10); + var_a3 += 4; + var_a2 += 0x10; + var_v0 += 8; + var_v1 += 8; + sp14 = (s32) var_f18; + var_v0->unk-8 = (s16) sp14.unk0; + var_v1->unk-8 = (s16) sp14.unk2; + sp14 = (s32) (var_a2->unk-C * 65536.0f); + var_v0->unk-6 = (s16) sp14.unk0; + var_v1->unk-6 = (s16) sp14.unk2; + sp14 = (s32) (var_a2->unk-8 * 65536.0f); + var_v0->unk-4 = (s16) sp14.unk0; + var_v1->unk-4 = (s16) sp14.unk2; + sp14 = (s32) (var_a2->unk-4 * 65536.0f); + var_v0->unk-2 = (s16) sp14.unk0; + var_v1->unk-2 = (s16) sp14.unk2; + var_f18 = var_a2[0][0] * 65536.0f; + } while (var_a3 != 0x10); } - temp_a2_2 = phi_a2_2 + 0x10; - temp_v0_2 = phi_v0_2 + 8; - temp_v1_3 = phi_v1_2 + 8; - sp14 = phi_f18_2; - temp_v0_2->unk-8 = temp_a0->unk0; - temp_v1_3->unk-8 = temp_a0->unk2; - sp14 = temp_a2_2->unk-C * 65536.0f; - temp_v0_2->unk-6 = temp_a0->unk0; - temp_v1_3->unk-6 = temp_a0->unk2; - sp14 = temp_a2_2->unk-8 * 65536.0f; - temp_v0_2->unk-4 = temp_a0->unk0; - temp_v1_3->unk-4 = temp_a0->unk2; - sp14 = temp_a2_2->unk-4 * 65536.0f; - temp_v0_2->unk-2 = temp_a0->unk0; - temp_v1_3->unk-2 = temp_a0->unk2; + temp_a2 = var_a2 + 0x10; + temp_v0 = &var_v0->m[0][2]; + temp_v1 = var_v1 + 8; + sp14 = (s32) var_f18; + temp_v0->unk-8 = (s16) sp14.unk0; + temp_v1->unk-8 = (s16) sp14.unk2; + sp14 = (s32) (temp_a2->unk-C * 65536.0f); + temp_v0->unk-6 = (s16) sp14.unk0; + temp_v1->unk-6 = (s16) sp14.unk2; + sp14 = (s32) (temp_a2->unk-8 * 65536.0f); + temp_v0->unk-4 = (s16) sp14.unk0; + temp_v1->unk-4 = (s16) sp14.unk2; + sp14 = (s32) (temp_a2->unk-4 * 65536.0f); + temp_v0->unk-2 = (s16) sp14.unk0; + temp_v1->unk-2 = (s16) sp14.unk2; } #else GLOBAL_ASM("asm/non_matchings/math_util/func_802B75F8.s") @@ -1250,7 +1059,6 @@ u16 atan2_lookup(f32 y, f32 x) { return ret; } -u16 atan2_lookup(f32 y, f32 x); /** * Compute the angle from (0, 0) to (x, y) as a u16. Given that terrain is in * the xz-plane, this is commonly called with (z, x) to get a yaw angle. @@ -1298,9 +1106,7 @@ f32 func_802B79B8(f32 arg0, f32 arg1) { } #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 +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de static f32 D_802B9FDC = -0.01600503f; static f32 D_802B9FE0 = 0.00283406f; static f32 D_802B9FE4 = -0.07495445f; @@ -1318,36 +1124,36 @@ f32 func_802B79F0(f32 arg0, f32 arg1) { f32 temp_f14; f32 temp_f16; f32 temp_f2; - s32 phi_v0; - f32 phi_f16; - f32 phi_f2; + f32 var_f16; + f32 var_f2; + s32 var_v0; - phi_v0 = 0; - phi_f16 = arg0 / arg1; - if (fabs(arg1) < fabs(arg0)) { - phi_v0 = 1; + var_f16 = arg0 / arg1; + var_v0 = 0; + if (fabs((f64) arg1) < fabs((f64) arg0)) { + var_v0 = 1; } - if (phi_v0 != 0) { - phi_f16 = arg1 / arg0; + if (var_v0 != 0) { + var_f16 = arg1 / arg0; } - temp_f0 = phi_f16 * phi_f16; + temp_f0 = var_f16 * var_f16; temp_f2 = temp_f0 * temp_f0; - temp_f16 = phi_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)) * (phi_f16 * temp_f0)); - if (phi_v0 != 0) { + 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)); + if (var_v0 != 0) { if (arg0 < 0.0f) { - return -D_802BA000 - temp_f16; + return (f32) (-D_802BA000 - (f64) temp_f16); } - return D_802BA008 - temp_f16; + return (f32) (D_802BA008 - (f64) temp_f16); } if (arg1 >= 0.0f) { return temp_f16; } temp_f14 = D_802BA010; - phi_f2 = temp_f16 + temp_f14; + var_f2 = temp_f16 + temp_f14; if (arg0 < 0.0f) { - phi_f2 = temp_f16 - temp_f14; + var_f2 = temp_f16 - temp_f14; } - return phi_f2; + return var_f2; } #else GLOBAL_ASM("asm/non_matchings/math_util/func_802B79F0.s") @@ -1375,8 +1181,8 @@ s16 func_802B7CA8(f32 arg0) { return atan2s(arg0, sqrtf(1.0 - (arg0 * arg0))); } -void func_802B7CE8(f32 arg0) { - func_802B79B8(sqrtf(1.0 - (arg0 * arg0)), arg0); +f32 func_802B7CE8(f32 arg0) { + return func_802B79B8(sqrtf(1.0 - (arg0 * arg0)), arg0); } UNUSED s16 func_802B7D28(f32 arg0) { @@ -1459,34 +1265,26 @@ s32 func_802B8058(u16 arg0, u16 arg1, u16 arg2) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -s32 func_802B5224(f32, f32, u16); /* extern */ -u16 func_802B7CA8(f32, f32); /* extern */ -s32 func_802B8058(s32, s32, u16, u16); /* extern */ - +//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de f32 func_802B80D0(Vec3f arg0, Vec3f arg1, u16 arg2, f32 arg3, f32 arg4, f32 arg5) { u16 sp5E; - u16 sp5A; + s16 sp5A; s32 sp28; s32 sp24; s32 sp20; f32 temp_f0; f32 temp_f0_2; - f32 temp_f14; f32 temp_f20; f32 temp_f2; f32 temp_f2_2; + s16 temp_v0; s32 temp_t6; s32 temp_t7; s32 temp_v1; s32 temp_v1_2; u16 temp_a2; - u16 temp_a3; - u16 temp_v0; - temp_f14 = arg3; temp_f0 = arg1->unk0 - arg0->unk0; - temp_a3 = arg2; temp_f0_2 = temp_f0 * temp_f0; if (arg5 < temp_f0_2) { return -1.0f; @@ -1497,39 +1295,37 @@ f32 func_802B80D0(Vec3f arg0, Vec3f arg1, u16 arg2, f32 arg3, f32 arg4, f32 arg5 return -1.0f; } temp_f20 = temp_f0_2 + temp_f2_2; - if (temp_f20 < temp_f14) { + if (temp_f20 < arg3) { return temp_f20; } if (arg5 < temp_f20) { return -1.0f; } - arg2 = temp_a3; - arg3 = temp_f14; - temp_a2 = func_802B5224(arg5, temp_f14, temp_a3) & 0xFFFF; + arg2 = arg2; + temp_a2 = func_802B5224(arg0, arg1) & 0xFFFF; if (arg3 == 0.0f) { - temp_v1 = (arg4 * 0xB6) & 0xFFFF; - if (func_802B8058((arg2 + temp_v1) & 0xFFFF, (arg2 - temp_v1) & 0xFFFF, temp_a2, arg2) == 1) { + temp_v1 = ((u32) arg4 * 0xB6) & 0xFFFF; + if (func_802B8058((arg2 + temp_v1) & 0xFFFF, (arg2 - temp_v1) & 0xFFFF, temp_a2) == 1) { return temp_f20; } return -1.0f; } - temp_v1_2 = (arg4 * 0xB6) & 0xFFFF; + temp_v1_2 = ((u32) arg4 * 0xB6) & 0xFFFF; temp_t7 = (arg2 - temp_v1_2) & 0xFFFF; temp_t6 = (arg2 + temp_v1_2) & 0xFFFF; sp24 = temp_t6; sp20 = temp_t7; sp5E = temp_a2; - arg3 = arg3; - if (func_802B8058(temp_t6, temp_t7, temp_a2, arg2) == 1) { + if (func_802B8058((u16) temp_t6, (u16) temp_t7, temp_a2) == 1) { return temp_f20; } - temp_v0 = func_802B7CA8(arg3 / temp_f20, arg3); + temp_v0 = func_802B7CA8(arg3 / temp_f20); sp5A = temp_v0; - sp28 = sp5E; - if (func_802B8058(unksp26, unksp22, (sp5E + temp_v0) & 0xFFFF, sp5E) == 1) { + sp28 = (s32) sp5E; + if (func_802B8058(unksp26, unksp22, (sp5E + temp_v0) & 0xFFFF) == 1) { return temp_f20; } - if (func_802B8058(unksp26, unksp22, (sp5E - sp5A) & 0xFFFF, sp5E) == 1) { + if (func_802B8058(unksp26, unksp22, (sp5E - (u16) sp5A) & 0xFFFF) == 1) { return temp_f20; } return -1.0f; @@ -1650,7 +1446,6 @@ UNUSED void func_802B8614(Player *player) { f64 temp_f6; temp_f6 = (f64) player->boundingBoxCorners[1].cornerX; - sp78 = temp_f6; sp70 = (f64) player->boundingBoxCorners[1].cornerGroundY; sp68 = (f64) player->boundingBoxCorners[1].cornerZ; temp_f30 = (f64) player->boundingBoxCorners[0].cornerX; diff --git a/src/math_util.h b/src/math_util.h index eb1dc4a70..0289a2e02 100644 --- a/src/math_util.h +++ b/src/math_util.h @@ -14,6 +14,7 @@ #define sqr(x) ((x) * (x)) +void func_802B4FF0(); s32 func_802B4FF8(Mat4, s32); f32 func_802B51E8(Vec3f, Vec3f); u32 func_802B5224(Vec3f, Vec3f); @@ -23,17 +24,28 @@ void vec3s_set(Vec3s, s16, s16, s16); void *vec3f_copy(Vec3f, Vec3f); void vec3s_copy(Vec3s, Vec3s); void *sm64_vec3f_set(Vec3f, f32, f32, f32); +void func_802B5398(s32*, s32*, s32); void mtxf_identity(Mat4); -//void func_802B5398(Mat4, Mat4, s32); void func_802B5450(Mat4, Mat4, Mat4); void func_802B54EC(Mat4, Mat4, Mat4); void mtxf_translate(Mat4, Vec3f); +void func_802B5564(Mat4, u16*, f32, f32, f32, f32, f32); void func_802B59DC(Mat4, s16); -void func_802B5F74(Mat4, Vec3f, Vec3s); -f32 func_802B80D0(Vec3f, Vec3f, u16, f32, f32, f32); +void func_802B5A44(Mat4, s16); +void func_802B5AAC(Mat4, s16); +void func_802B5CAC(s16, s16, Vec3f); +void func_802B5D30(s16, s16, s32); void func_802B5F00(Mat4, f32); +void func_802B5F74(Mat4, Vec3f, Vec3s); +void func_802B60B4(Mat4, Vec3s, Vec3s); +void func_802B6214(Mat4, Vec3s, Vec3s); +void func_802B6374(Vec3f); void func_802B63B8(Vec3f, Mat3); +void func_802B6434(Vec3f, Mat4); +void func_802B64B0(s32, s32, s32, s32); void func_802B64C4(Vec3f, s16); +void func_802B6BC0(Mat4, s16, f32, f32, f32); +void func_802B6D58(Mat4, Vec3f, Vec3f); void func_802B71CC(Mat4, Mat4, Mat4); void func_802B75F8(Mtx*, Mat4); u16 atan2_lookup(f32, f32); @@ -44,13 +56,20 @@ void func_802B7C18(f32); s16 func_802B7C40(f32); void func_802B7C6C(f32); s16 func_802B7CA8(f32); -void func_802B7CE8(f32); -s16 func_802B7D28(f32); -u16 random_u16(); -u16 random_int(u16); -s16 func_802B7F34(f32, f32, f32, f32); +f32 func_802B7CE8(f32); +s16 func_802B7D28(f32); +u16 random_u16(); +u16 random_int(u16); +s16 func_802B7F34(f32, f32, f32, f32); void func_802B7F7C(Vec3f, Vec3f, Vec3s); -f32 sins(u16); -f32 coss(u16); +f32 sins(u16); +f32 coss(u16); +s32 func_802B8058(u16, u16, u16); +f32 func_802B80D0(Vec3f, Vec3f, u16, f32, f32, f32); + +extern f64 D_802B9FB0; // = 0.017453292222222222; +extern f32 D_802B9FD8; // = 1000000.0f; +extern f64 D_802BA018; // = 3.141592653589793; +extern u16 gRandomSeed16; #endif // MATH_UTIL_H