From 2579d013144598401123890d4fefc19e7e1871c2 Mon Sep 17 00:00:00 2001 From: Fazana <52551480+FazanaJ@users.noreply.github.com> Date: Tue, 3 May 2022 20:59:56 +0100 Subject: [PATCH] match func_80058B84 --- asm/non_matchings/racer/func_80058B84.s | 123 ------------------------ src/racer.c | 32 +++++- 2 files changed, 31 insertions(+), 124 deletions(-) delete mode 100644 asm/non_matchings/racer/func_80058B84.s diff --git a/asm/non_matchings/racer/func_80058B84.s b/asm/non_matchings/racer/func_80058B84.s deleted file mode 100644 index 0fd51b1f..00000000 --- a/asm/non_matchings/racer/func_80058B84.s +++ /dev/null @@ -1,123 +0,0 @@ -glabel func_80058B84 -/* 059784 80058B84 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 059788 80058B88 AFB00018 */ sw $s0, 0x18($sp) -/* 05978C 80058B8C 3C108012 */ lui $s0, %hi(gCameraObject) # $s0, 0x8012 -/* 059790 80058B90 2610D508 */ addiu $s0, %lo(gCameraObject) # addiu $s0, $s0, -0x2af8 -/* 059794 80058B94 8E020000 */ lw $v0, ($s0) -/* 059798 80058B98 AFBF001C */ sw $ra, 0x1c($sp) -/* 05979C 80058B9C E7AC0030 */ swc1 $f12, 0x30($sp) -/* 0597A0 80058BA0 AFA60038 */ sw $a2, 0x38($sp) -/* 0597A4 80058BA4 844E0000 */ lh $t6, ($v0) -/* 0597A8 80058BA8 24180400 */ li $t8, 1024 -/* 0597AC 80058BAC 25CF0200 */ addiu $t7, $t6, 0x200 -/* 0597B0 80058BB0 A44F0000 */ sh $t7, ($v0) -/* 0597B4 80058BB4 8E190000 */ lw $t9, ($s0) -/* 0597B8 80058BB8 3C014316 */ li $at, 0x43160000 # 150.000000 -/* 0597BC 80058BBC A7380002 */ sh $t8, 2($t9) -/* 0597C0 80058BC0 8E080000 */ lw $t0, ($s0) -/* 0597C4 80058BC4 44812000 */ mtc1 $at, $f4 -/* 0597C8 80058BC8 A5000004 */ sh $zero, 4($t0) -/* 0597CC 80058BCC 8E090000 */ lw $t1, ($s0) -/* 0597D0 80058BD0 340C8000 */ li $t4, 32768 -/* 0597D4 80058BD4 E524001C */ swc1 $f4, 0x1c($t1) -/* 0597D8 80058BD8 8E0A0000 */ lw $t2, ($s0) -/* 0597DC 80058BDC 00000000 */ nop -/* 0597E0 80058BE0 854B0000 */ lh $t3, ($t2) -/* 0597E4 80058BE4 AFA50034 */ sw $a1, 0x34($sp) -/* 0597E8 80058BE8 018B2023 */ subu $a0, $t4, $t3 -/* 0597EC 80058BEC 00046C00 */ sll $t5, $a0, 0x10 -/* 0597F0 80058BF0 0C01C1F1 */ jal func_800707C4 -/* 0597F4 80058BF4 000D2403 */ sra $a0, $t5, 0x10 -/* 0597F8 80058BF8 8E020000 */ lw $v0, ($s0) -/* 0597FC 80058BFC 34188000 */ li $t8, 32768 -/* 059800 80058C00 C446001C */ lwc1 $f6, 0x1c($v0) -/* 059804 80058C04 00000000 */ nop -/* 059808 80058C08 46060202 */ mul.s $f8, $f0, $f6 -/* 05980C 80058C0C E7A80020 */ swc1 $f8, 0x20($sp) -/* 059810 80058C10 844F0000 */ lh $t7, ($v0) -/* 059814 80058C14 00000000 */ nop -/* 059818 80058C18 030F2023 */ subu $a0, $t8, $t7 -/* 05981C 80058C1C 0004CC00 */ sll $t9, $a0, 0x10 -/* 059820 80058C20 0C01C1FE */ jal func_800707F8 -/* 059824 80058C24 00192403 */ sra $a0, $t9, 0x10 -/* 059828 80058C28 8FA50034 */ lw $a1, 0x34($sp) -/* 05982C 80058C2C C7A60020 */ lwc1 $f6, 0x20($sp) -/* 059830 80058C30 C4A4000C */ lwc1 $f4, 0xc($a1) -/* 059834 80058C34 8E020000 */ lw $v0, ($s0) -/* 059838 80058C38 46062200 */ add.s $f8, $f4, $f6 -/* 05983C 80058C3C C44A001C */ lwc1 $f10, 0x1c($v0) -/* 059840 80058C40 E448000C */ swc1 $f8, 0xc($v0) -/* 059844 80058C44 460A0402 */ mul.s $f16, $f0, $f10 -/* 059848 80058C48 3C014234 */ li $at, 0x42340000 # 45.000000 -/* 05984C 80058C4C 44819000 */ mtc1 $at, $f18 -/* 059850 80058C50 8E020000 */ lw $v0, ($s0) -/* 059854 80058C54 C4AA0010 */ lwc1 $f10, 0x10($a1) -/* 059858 80058C58 C44E0010 */ lwc1 $f14, 0x10($v0) -/* 05985C 80058C5C 46125100 */ add.s $f4, $f10, $f18 -/* 059860 80058C60 3C013FD0 */ li $at, 0x3FD00000 # 1.625000 -/* 059864 80058C64 46047181 */ sub.s $f6, $f14, $f4 -/* 059868 80058C68 44815800 */ mtc1 $at, $f11 -/* 05986C 80058C6C 44805000 */ mtc1 $zero, $f10 -/* 059870 80058C70 46003221 */ cvt.d.s $f8, $f6 -/* 059874 80058C74 462A4102 */ mul.d $f4, $f8, $f10 -/* 059878 80058C78 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 05987C 80058C7C 44813800 */ mtc1 $at, $f7 -/* 059880 80058C80 44803000 */ mtc1 $zero, $f6 -/* 059884 80058C84 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 059888 80058C88 46202320 */ cvt.s.d $f12, $f4 -/* 05988C 80058C8C 460060A1 */ cvt.d.s $f2, $f12 -/* 059890 80058C90 4626103C */ c.lt.d $f2, $f6 -/* 059894 80058C94 00000000 */ nop -/* 059898 80058C98 4500000A */ bc1f .L80058CC4 -/* 05989C 80058C9C 00000000 */ nop -/* 0598A0 80058CA0 44815800 */ mtc1 $at, $f11 -/* 0598A4 80058CA4 44805000 */ mtc1 $zero, $f10 -/* 0598A8 80058CA8 46007221 */ cvt.d.s $f8, $f14 -/* 0598AC 80058CAC 462A1100 */ add.d $f4, $f2, $f10 -/* 0598B0 80058CB0 46244181 */ sub.d $f6, $f8, $f4 -/* 0598B4 80058CB4 462032A0 */ cvt.s.d $f10, $f6 -/* 0598B8 80058CB8 E44A0010 */ swc1 $f10, 0x10($v0) -/* 0598BC 80058CBC 8E020000 */ lw $v0, ($s0) -/* 0598C0 80058CC0 00000000 */ nop -.L80058CC4: -/* 0598C4 80058CC4 44804000 */ mtc1 $zero, $f8 -/* 0598C8 80058CC8 00000000 */ nop -/* 0598CC 80058CCC 460C403C */ c.lt.s $f8, $f12 -/* 0598D0 80058CD0 00000000 */ nop -/* 0598D4 80058CD4 45000007 */ bc1f .L80058CF4 -/* 0598D8 80058CD8 00000000 */ nop -/* 0598DC 80058CDC C4A40010 */ lwc1 $f4, 0x10($a1) -/* 0598E0 80058CE0 00000000 */ nop -/* 0598E4 80058CE4 46122180 */ add.s $f6, $f4, $f18 -/* 0598E8 80058CE8 E4460010 */ swc1 $f6, 0x10($v0) -/* 0598EC 80058CEC 8E020000 */ lw $v0, ($s0) -/* 0598F0 80058CF0 00000000 */ nop -.L80058CF4: -/* 0598F4 80058CF4 C4AA0014 */ lwc1 $f10, 0x14($a1) -/* 0598F8 80058CF8 00000000 */ nop -/* 0598FC 80058CFC 46105200 */ add.s $f8, $f10, $f16 -/* 059900 80058D00 E4480014 */ swc1 $f8, 0x14($v0) -/* 059904 80058D04 8E020000 */ lw $v0, ($s0) -/* 059908 80058D08 00000000 */ nop -/* 05990C 80058D0C C44C000C */ lwc1 $f12, 0xc($v0) -/* 059910 80058D10 C44E0010 */ lwc1 $f14, 0x10($v0) -/* 059914 80058D14 8C460014 */ lw $a2, 0x14($v0) -/* 059918 80058D18 0C00A7C6 */ jal get_level_segment_index_from_position -/* 05991C 80058D1C 00000000 */ nop -/* 059920 80058D20 2401FFFF */ li $at, -1 -/* 059924 80058D24 10410004 */ beq $v0, $at, .L80058D38 -/* 059928 80058D28 00000000 */ nop -/* 05992C 80058D2C 8E090000 */ lw $t1, ($s0) -/* 059930 80058D30 00000000 */ nop -/* 059934 80058D34 A5220034 */ sh $v0, 0x34($t1) -.L80058D38: -/* 059938 80058D38 8E0A0000 */ lw $t2, ($s0) -/* 05993C 80058D3C 8FAB0038 */ lw $t3, 0x38($sp) -/* 059940 80058D40 854C0000 */ lh $t4, ($t2) -/* 059944 80058D44 00000000 */ nop -/* 059948 80058D48 A56C0196 */ sh $t4, 0x196($t3) -/* 05994C 80058D4C 8FBF001C */ lw $ra, 0x1c($sp) -/* 059950 80058D50 8FB00018 */ lw $s0, 0x18($sp) -/* 059954 80058D54 03E00008 */ jr $ra -/* 059958 80058D58 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/src/racer.c b/src/racer.c index aed54782..e5aced07 100644 --- a/src/racer.c +++ b/src/racer.c @@ -19,6 +19,7 @@ #include "printf.h" #include "math_util.h" #include "unknown_0255E0.h" +#include "weather.h" #define MAX_NUMBER_OF_GHOST_NODES 360 @@ -1075,7 +1076,36 @@ void func_800580B4(Object *obj, Object_Racer *obj64, s32 arg2, f32 arg3) { } GLOBAL_ASM("asm/non_matchings/racer/func_800581E8.s") -GLOBAL_ASM("asm/non_matchings/racer/func_80058B84.s") + +void func_80058B84(f32 arg0, Object* obj, Object_Racer* arg2) { + s32 levelSeg; + f32 temp_f12; + f32 zOffset; + f32 xOffset; + + gCameraObject->trans.y_rotation += 0x200; + if (1); + gCameraObject->trans.x_rotation = 0x400; + gCameraObject->trans.z_rotation = 0; + gCameraObject->unk1C = 150.0f; + xOffset = func_800707C4(0x8000 - gCameraObject->trans.y_rotation) * gCameraObject->unk1C; + zOffset = func_800707F8(0x8000 - gCameraObject->trans.y_rotation) * gCameraObject->unk1C; + gCameraObject->trans.x_position = obj->segment.trans.x_position + xOffset; + temp_f12 = (gCameraObject->trans.y_position - (obj->segment.trans.y_position + 45.0f)) * 0.25; + if (temp_f12 < -2.0) { + gCameraObject->trans.y_position = (gCameraObject->trans.y_position - (temp_f12 + 2.0)); + } + if (temp_f12 > 0.0f) { + gCameraObject->trans.y_position = obj->segment.trans.y_position + 45.0f; + } + gCameraObject->trans.z_position = obj->segment.trans.z_position + zOffset; + levelSeg = get_level_segment_index_from_position(gCameraObject->trans.x_position, gCameraObject->trans.y_position, gCameraObject->trans.z_position); + if (levelSeg != -1) { + gCameraObject->unk34 = levelSeg; + } + arg2->unk196 = gCameraObject->trans.y_rotation; +} + GLOBAL_ASM("asm/non_matchings/racer/func_80058D5C.s") void func_80058F44(f32 arg0, struct Object *arg1, struct Object *arg2)