Proof of concept

This commit is contained in:
LT_Schmiddy (Alex Schmid) 2024-11-14 16:12:10 -05:00
parent 0d0f64e32f
commit b49aebd8bb

View file

@ -6,6 +6,9 @@
#include "z64voice.h" #include "z64voice.h"
#include "audiothread_cmd.h" #include "audiothread_cmd.h"
//Input* sPlayerControlInput
void func_8083EA44(Player* this, f32 arg1);
s32 func_80847190(PlayState* play, Player* this, s32 arg2); s32 func_80847190(PlayState* play, Player* this, s32 arg2);
s16 func_80832754(Player* this, s32 arg1); s16 func_80832754(Player* this, s32 arg1);
s32 func_8082EF20(Player* this); s32 func_8082EF20(Player* this);
@ -130,6 +133,37 @@ RECOMP_PATCH s32 func_80847190(PlayState* play, Player* this, s32 arg2) {
this->actor.focus.rot.y = CLAMP(var_s0, -0x4AAA, 0x4AAA) + this->actor.shape.rot.y; this->actor.focus.rot.y = CLAMP(var_s0, -0x4AAA, 0x4AAA) + this->actor.shape.rot.y;
} }
// // Handle First Person Movement
//{
f32 movementSpeed = 8.25f; // account for form
if (this->currentMask == PLAYER_MASK_BUNNY) {
movementSpeed *= 1.5f;
}
//f32 relX = (sPlayerControlInput->rel.stick_x / 10);
//f32 relY = (sPlayerControlInput->rel.stick_y / 10);
f32 relX = (play->state.input[0].rel.stick_x / 10);
f32 relY = (play->state.input[0].rel.stick_y / 10);
// Normalize so that diagonal movement isn't faster
f32 relMag = sqrtf((relX * relX) + (relY * relY));
if (relMag > 1.0f) {
relX /= relMag;
relY /= relMag;
}
// Determine what left and right mean based on camera angle
f32 relX2 = relX * Math_CosS(this->actor.focus.rot.y) + relY * Math_SinS(this->actor.focus.rot.y);
f32 relY2 = relY * Math_CosS(this->actor.focus.rot.y) - relX * Math_SinS(this->actor.focus.rot.y);
// Calculate distance for footstep sound
f32 distance = sqrtf((relX2 * relX2) + (relY2 * relY2)) * movementSpeed;
func_8083EA44(this, distance / 4.5f);
this->actor.world.pos.x += (relX2 * movementSpeed) + this->actor.colChkInfo.displacement.x;
this->actor.world.pos.z += (relY2 * movementSpeed) + this->actor.colChkInfo.displacement.z;
//}
this->unk_AA6 |= 2; this->unk_AA6 |= 2;
return func_80832754(this, (play->unk_1887C != 0) || func_800B7128(this) || func_8082EF20(this)); return func_80832754(this, (play->unk_1887C != 0) || func_800B7128(this) || func_8082EF20(this));