From 064238629c20e1604940f3187cbd23283ab5fe54 Mon Sep 17 00:00:00 2001 From: tonyspumoni <94409037+tonyspumoni@users.noreply.github.com> Date: Sat, 29 Oct 2022 16:51:15 -0600 Subject: [PATCH] match func_8001D5E0, make rename.sh a little more portable (#265) --- asm/non_matchings/objects/func_8001D5E0.s | 68 ------------------- .../unknown_0255E0/func_80028CD0.s | 2 +- rename.sh | 2 +- src/camera.c | 2 +- src/menu.c | 2 +- src/objects.c | 18 ++++- src/objects.h | 2 +- src/unknown_0255E0.c | 2 +- 8 files changed, 21 insertions(+), 77 deletions(-) delete mode 100644 asm/non_matchings/objects/func_8001D5E0.s diff --git a/asm/non_matchings/objects/func_8001D5E0.s b/asm/non_matchings/objects/func_8001D5E0.s deleted file mode 100644 index 4ed6f492..00000000 --- a/asm/non_matchings/objects/func_8001D5E0.s +++ /dev/null @@ -1,68 +0,0 @@ -glabel func_8001D5E0 -/* 01E1E0 8001D5E0 460C6102 */ mul.s $f4, $f12, $f12 -/* 01E1E4 8001D5E4 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 01E1E8 8001D5E8 E7B6001C */ swc1 $f22, 0x1c($sp) -/* 01E1EC 8001D5EC 4486B000 */ mtc1 $a2, $f22 -/* 01E1F0 8001D5F0 460E7182 */ mul.s $f6, $f14, $f14 -/* 01E1F4 8001D5F4 E7B50010 */ swc1 $f21, 0x10($sp) -/* 01E1F8 8001D5F8 E7B40014 */ swc1 $f20, 0x14($sp) -/* 01E1FC 8001D5FC AFBF0024 */ sw $ra, 0x24($sp) -/* 01E200 8001D600 4616B282 */ mul.s $f10, $f22, $f22 -/* 01E204 8001D604 46062200 */ add.s $f8, $f4, $f6 -/* 01E208 8001D608 E7B70018 */ swc1 $f23, 0x18($sp) -/* 01E20C 8001D60C E7AE002C */ swc1 $f14, 0x2c($sp) -/* 01E210 8001D610 46006506 */ mov.s $f20, $f12 -/* 01E214 8001D614 0C0326B4 */ jal sqrtf -/* 01E218 8001D618 460A4300 */ add.s $f12, $f8, $f10 -/* 01E21C 8001D61C 44808000 */ mtc1 $zero, $f16 -/* 01E220 8001D620 C7AE002C */ lwc1 $f14, 0x2c($sp) -/* 01E224 8001D624 46100032 */ c.eq.s $f0, $f16 -/* 01E228 8001D628 3C01C600 */ li $at, 0xC6000000 # -8192.000000 -/* 01E22C 8001D62C 4501000A */ bc1t .L8001D658 -/* 01E230 8001D630 00000000 */ nop -/* 01E234 8001D634 44819000 */ mtc1 $at, $f18 -/* 01E238 8001D638 00000000 */ nop -/* 01E23C 8001D63C 46009083 */ div.s $f2, $f18, $f0 -/* 01E240 8001D640 4602A502 */ mul.s $f20, $f20, $f2 -/* 01E244 8001D644 00000000 */ nop -/* 01E248 8001D648 46027382 */ mul.s $f14, $f14, $f2 -/* 01E24C 8001D64C 00000000 */ nop -/* 01E250 8001D650 4602B582 */ mul.s $f22, $f22, $f2 -/* 01E254 8001D654 00000000 */ nop -.L8001D658: -/* 01E258 8001D658 444EF800 */ cfc1 $t6, $31 -/* 01E25C 8001D65C 3C028012 */ lui $v0, %hi(D_8011AFE8) # $v0, 0x8012 -/* 01E260 8001D660 35C10003 */ ori $at, $t6, 3 -/* 01E264 8001D664 38210002 */ xori $at, $at, 2 -/* 01E268 8001D668 44C1F800 */ ctc1 $at, $31 -/* 01E26C 8001D66C 8FBF0024 */ lw $ra, 0x24($sp) -/* 01E270 8001D670 4600A124 */ cvt.w.s $f4, $f20 -/* 01E274 8001D674 2442AFE8 */ addiu $v0, %lo(D_8011AFE8) # addiu $v0, $v0, -0x5018 -/* 01E278 8001D678 44CEF800 */ ctc1 $t6, $31 -/* 01E27C 8001D67C 440F2000 */ mfc1 $t7, $f4 -/* 01E280 8001D680 C7B40014 */ lwc1 $f20, 0x14($sp) -/* 01E284 8001D684 4458F800 */ cfc1 $t8, $31 -/* 01E288 8001D688 C7B50010 */ lwc1 $f21, 0x10($sp) -/* 01E28C 8001D68C 37010003 */ ori $at, $t8, 3 -/* 01E290 8001D690 38210002 */ xori $at, $at, 2 -/* 01E294 8001D694 44C1F800 */ ctc1 $at, $31 -/* 01E298 8001D698 C7B70018 */ lwc1 $f23, 0x18($sp) -/* 01E29C 8001D69C 460071A4 */ cvt.w.s $f6, $f14 -/* 01E2A0 8001D6A0 A44F0000 */ sh $t7, ($v0) -/* 01E2A4 8001D6A4 44D8F800 */ ctc1 $t8, $31 -/* 01E2A8 8001D6A8 44193000 */ mfc1 $t9, $f6 -/* 01E2AC 8001D6AC 00000000 */ nop -/* 01E2B0 8001D6B0 4448F800 */ cfc1 $t0, $31 -/* 01E2B4 8001D6B4 A4590002 */ sh $t9, 2($v0) -/* 01E2B8 8001D6B8 35010003 */ ori $at, $t0, 3 -/* 01E2BC 8001D6BC 38210002 */ xori $at, $at, 2 -/* 01E2C0 8001D6C0 44C1F800 */ ctc1 $at, $31 -/* 01E2C4 8001D6C4 00000000 */ nop -/* 01E2C8 8001D6C8 4600B224 */ cvt.w.s $f8, $f22 -/* 01E2CC 8001D6CC C7B6001C */ lwc1 $f22, 0x1c($sp) -/* 01E2D0 8001D6D0 44094000 */ mfc1 $t1, $f8 -/* 01E2D4 8001D6D4 44C8F800 */ ctc1 $t0, $31 -/* 01E2D8 8001D6D8 27BD0028 */ addiu $sp, $sp, 0x28 -/* 01E2DC 8001D6DC 03E00008 */ jr $ra -/* 01E2E0 8001D6E0 A4490004 */ sh $t1, 4($v0) - diff --git a/asm/non_matchings/unknown_0255E0/func_80028CD0.s b/asm/non_matchings/unknown_0255E0/func_80028CD0.s index 3187b6fc..1aa72f25 100644 --- a/asm/non_matchings/unknown_0255E0/func_80028CD0.s +++ b/asm/non_matchings/unknown_0255E0/func_80028CD0.s @@ -25,7 +25,7 @@ glabel func_80028CD0 /* 02992C 80028D2C 468042A0 */ cvt.s.w $f10, $f8 /* 029930 80028D30 44062000 */ mfc1 $a2, $f4 /* 029934 80028D34 46005383 */ div.s $f14, $f10, $f0 -/* 029938 80028D38 0C007578 */ jal func_8001D5E0 +/* 029938 80028D38 0C007578 */ jal set_and_normalize_D_8011AFE8 /* 02993C 80028D3C 46003303 */ div.s $f12, $f6, $f0 /* 029940 80028D40 3C038012 */ lui $v1, %hi(D_8011B0B0) # $v1, 0x8012 /* 029944 80028D44 8C63B0B0 */ lw $v1, %lo(D_8011B0B0)($v1) diff --git a/rename.sh b/rename.sh index 35fa7c0c..d0cbece2 100755 --- a/rename.sh +++ b/rename.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash shopt -s globstar diff --git a/src/camera.c b/src/camera.c index a03defe4..2df42538 100644 --- a/src/camera.c +++ b/src/camera.c @@ -271,7 +271,7 @@ void func_80066230(Gfx **dlist, Mtx **mats) { someStruct->trans.x_position = 0.0f; someStruct->trans.y_position = 0.0f; someStruct->trans.z_position = 0.0f; - func_8001D5E0(0.0f, 0.0f, -1.0f); + set_and_normalize_D_8011AFE8(0.0f, 0.0f, -1.0f); func_80066CDC(dlist, mats); someStruct->unk38.word = sp24; someStruct->trans.y_rotation = sp2A; diff --git a/src/menu.c b/src/menu.c index 74290174..14ccba4e 100644 --- a/src/menu.c +++ b/src/menu.c @@ -7445,7 +7445,7 @@ void func_8009BD5C(void) { temp_v0->unk10 = -32.0f; temp_v0->unk14 = -32.0f; - func_8001D5E0(0, 0, -1); + set_and_normalize_D_8011AFE8(0, 0, -1); func_80066CDC(&sMenuCurrDisplayList, &sMenuCurrHudMat); temp_v0->unk0 = sp2A; diff --git a/src/objects.c b/src/objects.c index e4c3d587..fa0506c9 100644 --- a/src/objects.c +++ b/src/objects.c @@ -244,8 +244,7 @@ s32 D_8011AF34; s32 D_8011AF38[10]; s32 D_8011AF60[2]; s32 D_8011AF68[32]; -s32 D_8011AFE8; -s16 D_8011AFEC; +VertexPosition D_8011AFE8; s16 D_8011AFEE; s32 D_8011AFF0; unk800179D0 *D_8011AFF4; @@ -1508,7 +1507,20 @@ void func_8001D258(f32 arg0, f32 arg1, s16 arg2, s16 arg3, s16 arg4) { GLOBAL_ASM("asm/non_matchings/objects/func_8001D2A0.s") GLOBAL_ASM("asm/non_matchings/objects/func_8001D4B4.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8001D5E0.s") + +void set_and_normalize_D_8011AFE8(f32 x, f32 y, f32 z) { + f32 vecLength = sqrtf((x * x) + (y * y) + (z * z)); + f32 normalizedLength; + if (vecLength != 0.0f) { + normalizedLength = -8192.0f / vecLength; + x *= normalizedLength; + y *= normalizedLength; + z *= normalizedLength; + } + D_8011AFE8.x = x; + D_8011AFE8.y = y; + D_8011AFE8.z = z; +} void calc_dyn_light_and_env_map_for_object(ObjectModel *model, Object *object, s32 arg2, f32 arg3) { s16 environmentMappingEnabled; diff --git a/src/objects.h b/src/objects.h index 4c8a4fbe..d01cd0b2 100644 --- a/src/objects.h +++ b/src/objects.h @@ -378,7 +378,7 @@ void gParticlePtrList_flush(void); void decrypt_magic_codes(u8 *arg0, s32 length); void func_80011960(Object*, s32, u32, Object_64*, u32, u32, u32, u32, f32); void func_80011AD0(Object *this); -void func_8001D5E0(f32 arg0, f32 arg1, f32 arg2); +void set_and_normalize_D_8011AFE8(f32 arg0, f32 arg1, f32 arg2); s32 func_80014814(s32 *); void func_80015348(s32, s32); Object *spawn_object(void *entry, s32); diff --git a/src/unknown_0255E0.c b/src/unknown_0255E0.c index 53476ccb..4185166d 100644 --- a/src/unknown_0255E0.c +++ b/src/unknown_0255E0.c @@ -1323,7 +1323,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80030DE0.s") UNUSED void func_80030FA0(void) { D_8011B0B0 = func_80069D20(); func_80031018(); - func_8001D5E0((f32) D_8011D468.x / 65536.0f, (f32) D_8011D468.y / 65536.0f, (f32) D_8011D468.z / 65536.0f); + set_and_normalize_D_8011AFE8((f32) D_8011D468.x / 65536.0f, (f32) D_8011D468.y / 65536.0f, (f32) D_8011D468.z / 65536.0f); } void func_80031018(void) {