From 862ef369dfee999aef481839e6e4424b1f83d742 Mon Sep 17 00:00:00 2001 From: Fazana <52551480+FazanaJ@users.noreply.github.com> Date: Tue, 3 May 2022 18:45:09 +0100 Subject: [PATCH] match func_80058F44 --- asm/non_matchings/racer/func_80058F44.s | 81 ------------------------- src/racer.c | 26 ++++---- 2 files changed, 15 insertions(+), 92 deletions(-) delete mode 100644 asm/non_matchings/racer/func_80058F44.s diff --git a/asm/non_matchings/racer/func_80058F44.s b/asm/non_matchings/racer/func_80058F44.s deleted file mode 100644 index 8f7a0d44..00000000 --- a/asm/non_matchings/racer/func_80058F44.s +++ /dev/null @@ -1,81 +0,0 @@ -glabel func_80058F44 -/* 059B44 80058F44 444EF800 */ cfc1 $t6, $31 -/* 059B48 80058F48 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 059B4C 80058F4C 35C10003 */ ori $at, $t6, 3 -/* 059B50 80058F50 38210002 */ xori $at, $at, 2 -/* 059B54 80058F54 44C1F800 */ ctc1 $at, $31 -/* 059B58 80058F58 AFBF0014 */ sw $ra, 0x14($sp) -/* 059B5C 80058F5C AFA60028 */ sw $a2, 0x28($sp) -/* 059B60 80058F60 3C038012 */ lui $v1, %hi(gCameraObject) # $v1, 0x8012 -/* 059B64 80058F64 8C63D508 */ lw $v1, %lo(gCameraObject)($v1) -/* 059B68 80058F68 46006124 */ cvt.w.s $f4, $f12 -/* 059B6C 80058F6C C4A8000C */ lwc1 $f8, 0xc($a1) -/* 059B70 80058F70 44CEF800 */ ctc1 $t6, $31 -/* 059B74 80058F74 C4B00014 */ lwc1 $f16, 0x14($a1) -/* 059B78 80058F78 C466000C */ lwc1 $f6, 0xc($v1) -/* 059B7C 80058F7C C46A0014 */ lwc1 $f10, 0x14($v1) -/* 059B80 80058F80 46083001 */ sub.s $f0, $f6, $f8 -/* 059B84 80058F84 44082000 */ mfc1 $t0, $f4 -/* 059B88 80058F88 46105081 */ sub.s $f2, $f10, $f16 -/* 059B8C 80058F8C AFA8001C */ sw $t0, 0x1c($sp) -/* 059B90 80058F90 444FF800 */ cfc1 $t7, $31 -/* 059B94 80058F94 00000000 */ nop -/* 059B98 80058F98 35E10003 */ ori $at, $t7, 3 -/* 059B9C 80058F9C 38210002 */ xori $at, $at, 2 -/* 059BA0 80058FA0 44C1F800 */ ctc1 $at, $31 -/* 059BA4 80058FA4 00000000 */ nop -/* 059BA8 80058FA8 460004A4 */ cvt.w.s $f18, $f0 -/* 059BAC 80058FAC 44CFF800 */ ctc1 $t7, $31 -/* 059BB0 80058FB0 44049000 */ mfc1 $a0, $f18 -/* 059BB4 80058FB4 00000000 */ nop -/* 059BB8 80058FB8 4458F800 */ cfc1 $t8, $31 -/* 059BBC 80058FBC 00000000 */ nop -/* 059BC0 80058FC0 37010003 */ ori $at, $t8, 3 -/* 059BC4 80058FC4 38210002 */ xori $at, $at, 2 -/* 059BC8 80058FC8 44C1F800 */ ctc1 $at, $31 -/* 059BCC 80058FCC 00000000 */ nop -/* 059BD0 80058FD0 46001124 */ cvt.w.s $f4, $f2 -/* 059BD4 80058FD4 44052000 */ mfc1 $a1, $f4 -/* 059BD8 80058FD8 44D8F800 */ ctc1 $t8, $31 -/* 059BDC 80058FDC 0C01C19B */ jal func_8007066C -/* 059BE0 80058FE0 00000000 */ nop -/* 059BE4 80058FE4 3C078012 */ lui $a3, %hi(gCameraObject) # $a3, 0x8012 -/* 059BE8 80058FE8 24E7D508 */ addiu $a3, %lo(gCameraObject) # addiu $a3, $a3, -0x2af8 -/* 059BEC 80058FEC 8CE30000 */ lw $v1, ($a3) -/* 059BF0 80058FF0 0002C823 */ negu $t9, $v0 -/* 059BF4 80058FF4 84640000 */ lh $a0, ($v1) -/* 059BF8 80058FF8 8FA8001C */ lw $t0, 0x1c($sp) -/* 059BFC 80058FFC 34018000 */ li $at, 32768 -/* 059C00 80059000 03244823 */ subu $t1, $t9, $a0 -/* 059C04 80059004 01215021 */ addu $t2, $t1, $at -/* 059C08 80059008 01480019 */ multu $t2, $t0 -/* 059C0C 8005900C 00005812 */ mflo $t3 -/* 059C10 80059010 000B6103 */ sra $t4, $t3, 4 -/* 059C14 80059014 008C6821 */ addu $t5, $a0, $t4 -/* 059C18 80059018 A46D0000 */ sh $t5, ($v1) -/* 059C1C 8005901C 8CE30000 */ lw $v1, ($a3) -/* 059C20 80059020 00000000 */ nop -/* 059C24 80059024 84650004 */ lh $a1, 4($v1) -/* 059C28 80059028 00000000 */ nop -/* 059C2C 8005902C 00A80019 */ multu $a1, $t0 -/* 059C30 80059030 00007012 */ mflo $t6 -/* 059C34 80059034 000E7903 */ sra $t7, $t6, 4 -/* 059C38 80059038 00AFC023 */ subu $t8, $a1, $t7 -/* 059C3C 8005903C A4780004 */ sh $t8, 4($v1) -/* 059C40 80059040 8CE30000 */ lw $v1, ($a3) -/* 059C44 80059044 8FB90028 */ lw $t9, 0x28($sp) -/* 059C48 80059048 C46C000C */ lwc1 $f12, 0xc($v1) -/* 059C4C 8005904C 8C660014 */ lw $a2, 0x14($v1) -/* 059C50 80059050 C72E003C */ lwc1 $f14, 0x3c($t9) -/* 059C54 80059054 0C00A7C6 */ jal get_level_segment_index_from_position -/* 059C58 80059058 00000000 */ nop -/* 059C5C 8005905C 3C078012 */ lui $a3, %hi(gCameraObject) # $a3, 0x8012 -/* 059C60 80059060 24E7D508 */ addiu $a3, %lo(gCameraObject) # addiu $a3, $a3, -0x2af8 -/* 059C64 80059064 8CE90000 */ lw $t1, ($a3) -/* 059C68 80059068 00000000 */ nop -/* 059C6C 8005906C A5220034 */ sh $v0, 0x34($t1) -/* 059C70 80059070 8FBF0014 */ lw $ra, 0x14($sp) -/* 059C74 80059074 27BD0020 */ addiu $sp, $sp, 0x20 -/* 059C78 80059078 03E00008 */ jr $ra -/* 059C7C 8005907C 00000000 */ nop - diff --git a/src/racer.c b/src/racer.c index 7674013e..4d929b96 100644 --- a/src/racer.c +++ b/src/racer.c @@ -18,6 +18,7 @@ #include "game.h" #include "printf.h" #include "math_util.h" +#include "unknown_0255E0.h" #define MAX_NUMBER_OF_GHOST_NODES 360 @@ -665,6 +666,7 @@ void func_80050754(Object *obj, Object_Racer *racer, f32 arg2) { racer->unk1F2 = 0; racer->lateral_velocity = 0.0f; } + /** * Applies visual rotational offets to vehicles. * Examples include planes when on the ground, or when crashing, or hovercraft when braking. @@ -1084,18 +1086,20 @@ GLOBAL_ASM("asm/non_matchings/racer/func_800581E8.s") GLOBAL_ASM("asm/non_matchings/racer/func_80058B84.s") GLOBAL_ASM("asm/non_matchings/racer/func_80058D5C.s") -#ifdef NON_EQUIVALENT -void func_80058F44(f32 arg0, Object *arg1, Object *arg2) { - s32 temp0, temp1; - temp0 = (s32)arg0; - temp1 = func_8007066C(gCameraObject->trans.x_position - arg1->segment.trans.x_position, gCameraObject->trans.z_position - arg1->segment.trans.z_position); - gCameraObject->y_rotation += (((-temp1 - gCameraObject->y_rotation) + 0x8000) * temp0) >> 4; - gCameraObject->z_rotation -= (gCameraObject->z_rotation * temp0) >> 4; - gCameraObject->unk34 = get_level_segment_index_from_position(gCameraObject->trans.x_position, arg2->segment.unk3C_a.unk3C_f, gCameraObject->trans.z_position); +void func_80058F44(f32 arg0, struct Object *arg1, struct Object *arg2) +{ + s32 temp_f4; + f32 diffX; + f32 diffZ; + temp_f4 = (s32) arg0; + diffX = gCameraObject->trans.x_position - arg1->segment.trans.x_position; + diffZ = gCameraObject->trans.z_position - arg1->segment.trans.z_position; + gCameraObject->trans.y_rotation += ((((-func_8007066C((s32) diffX, (s32) diffZ)) - + gCameraObject->trans.y_rotation) + 0x8000) * temp_f4) >> 4; + gCameraObject->trans.z_rotation -= (((s32) (gCameraObject->trans.z_rotation * temp_f4)) >> 4); + gCameraObject->unk34 = get_level_segment_index_from_position(gCameraObject->trans.x_position, + arg2->segment.unk3C_a.unk3C_f, gCameraObject->trans.z_position); } -#else -GLOBAL_ASM("asm/non_matchings/racer/func_80058F44.s") -#endif typedef struct Object_64_80059080 { u8 pad0[0x10];