This commit is contained in:
Bl00D4NGEL
2024-09-29 03:13:01 +02:00
50 changed files with 484 additions and 479 deletions

View File

@@ -14,7 +14,7 @@ extern void func_802A6388(f32);
extern f32 chwadingboots_802D6E4C(Actor *);
extern void set_turbo_duration(f32);
extern f32 chtrainers_getDuration(Actor *);
extern int func_80259254(f32 vec[3], f32 x, f32 z, f32 val);
extern int ml_vec3f_point_within_horizontal_distance(f32 vec[3], f32 x, f32 z, f32 val);
extern void func_802EE354(Actor *, s32, s32, s32, f32, f32, f32, f32 arg8[3], s32, f32 arg10[2]);
extern void func_8035644C(s32);
extern void func_8035646C(s32 arg0);

View File

@@ -271,9 +271,7 @@ void baModel_setVisible(s32 arg0){
void baModel_802921D4(f32 arg0[3]){
if(player_getWaterState() == BSWATERGROUP_0_NONE){
D_8037C150.unk0 = 1;
D_8037C150.unk4[0] = arg0[0];
D_8037C150.unk4[1] = arg0[1];
D_8037C150.unk4[2] = arg0[2];
TUPLE_COPY(D_8037C150.unk4, arg0)
}
}

View File

@@ -3,8 +3,6 @@
#include "variables.h"
#include "core2/ba/physics.h"
#define _SQ3v1(v) (v[0] * v[0] + v[1] * v[1] + v[2] * v[2])
extern f32 ml_sin_deg(f32);
extern f32 ml_dotProduct_vec3f(f32[3], f32[3]);
extern void func_80256D0C(f32, f32, f32, f32, f32, f32 *, f32 *, f32 *);
@@ -118,7 +116,8 @@ void __baphysics_update_no_gravity(void){
//update velocity
ml_vec3f_diff_copy(sp24, baphysics_target_velocity, s_player_velocity);
ml_vec3f_scale(sp24, time_getDelta()*baphysics_acceleration);
if(_SQ3v1(sp24) < 0.02){
if (LENGTH_SQ_VEC3F(sp24) < 0.02) {
ml_vec3f_copy(s_player_velocity, baphysics_target_velocity);
}
else{

View File

@@ -90,7 +90,7 @@ f32 func_802D7038(Actor *this) {
void func_802D7124(Actor *actor, f32 arg1) {
f32 vp[3];
viewport_getPosition_vec3f(&vp);
viewport_getPosition_vec3f(vp);
if ((actor->position[0] - vp[0]) * (actor->position[0] - vp[0]) + (actor->position[2] - vp[2]) * (actor->position[2] - vp[2]) < 12250000.0f) {
func_802D729C(actor, arg1);
}

View File

@@ -6,15 +6,26 @@
extern f32 mapModel_getFloorY(f32[3]);
extern f32 func_80257204(f32, f32, f32, f32);
typedef struct {
f32 unk0;
f32 unk4;
} ActorLocal_Core2_D89E0;
typedef enum {
CH_BAT_STATE_ROOSTING = 1,
CH_BAT_STATE_EXIT_ROOST = 2,
CH_BAT_STATE_CHASE = 3,
CH_BAT_STATE_ROAM = 4,
CH_BAT_STATE_FLY_HOME = 5,
CH_BAT_STATE_ENTER_ROOST = 6,
CH_BAT_STATE_FALL = 7,
CH_BAT_STATE_DIE = 8
} ChBatState;
void func_80360828(Actor *this);
typedef struct {
f32 cooldown; //cooldown timer after attacking the player
f32 roost_yaw;
} ChBatLocal;
void chbat_update(Actor *this);
/* .data */
ActorAnimationInfo D_80373090[] = {
ActorAnimationInfo sChBatAnimations[] = {
{0, 0.0f},
{ ASSET_AE_ANIM_BAT_ROOST, 12.0f},
{ ASSET_AD_ANIM_BAT_TAKE_FLIGHT, 0.3f},
@@ -26,53 +37,53 @@ ActorAnimationInfo D_80373090[] = {
{ ASSET_2AA_ANIM_BAT_DIE, 0.85f},
};
ActorInfo D_803730D8 = {
ActorInfo gChBat = {
MARKER_127_BAT, ACTOR_163_BAT, ASSET_3CA_MODEL_BAT,
0x1, D_80373090,
func_80360828, func_80326224, actor_draw,
CH_BAT_STATE_ROOSTING, sChBatAnimations,
chbat_update, func_80326224, actor_draw,
2500, 0, 0.9f, 0
};
/* .code */
void func_8035F970(Actor *this){
subaddie_set_state(this, 1);
void chbat_roost(Actor *this){
subaddie_set_state(this, CH_BAT_STATE_ROOSTING);
actor_loopAnimation(this);
}
void func_8035F99C(Actor *this){
void chbat_exitRoost(Actor *this){
if(!volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE)){
subaddie_set_state_with_direction(this, 2, 0.01f, 1);
subaddie_set_state_with_direction(this, CH_BAT_STATE_EXIT_ROOST, 0.01f, 1);
actor_playAnimationOnce(this);
this->actor_specific_1_f = 5.0f;
FUNC_8030E8B4(SFX_419_UNKNOWN, 1.0f, 28000, this->position, 0x4e2, 0x9c4);
}
}
void func_8035FA0C(Actor *this){
subaddie_set_state(this, 3);
void chbat_chase(Actor *this){
subaddie_set_state(this, CH_BAT_STATE_CHASE);
actor_loopAnimation(this);
this->actor_specific_1_f = 5.0f;
}
void func_8035FA48(Actor *this){
subaddie_set_state(this, 4);
void chbat_roam(Actor *this){
subaddie_set_state(this, CH_BAT_STATE_ROAM);
actor_loopAnimation(this);
}
void func_8035FA74(Actor *this){
ActorLocal_Core2_D89E0 *local = (ActorLocal_Core2_D89E0 *)&this->local;
this->yaw_ideal = local->unk4;
subaddie_set_state(this, 5);
void chbat_flyHome(Actor *this){
ChBatLocal *local = (ChBatLocal *)&this->local;
this->yaw_ideal = local->roost_yaw;
subaddie_set_state(this, CH_BAT_STATE_FLY_HOME);
actor_loopAnimation(this);
}
void func_8035FAA8(Actor *this){
subaddie_set_state_with_direction(this, 6, 0.99f, 0);
void chbat_enterRoost(Actor *this){
subaddie_set_state_with_direction(this, CH_BAT_STATE_ENTER_ROOST, 0.99f, 0);
actor_playAnimationOnce(this);
}
void func_8035FAE0(Actor *this){
subaddie_set_state_with_direction(this, 7, 0.01f, 1);
void chBat_fall(Actor *this){
subaddie_set_state_with_direction(this, CH_BAT_STATE_FALL, 0.01f, 1);
actor_loopAnimation(this);
this->yaw += 180.0f;
this->actor_specific_1_f = 20.0f;
@@ -80,7 +91,7 @@ void func_8035FAE0(Actor *this){
}
int func_8035FB48(Actor * this, s32 dist){
int chbat_isWithinHorzontalRadiusOfHome(Actor * this, s32 dist){
f32 f0 = this->position_x - this->unk1C_x;
f32 f2 = this->position_z - this->unk1C_z;
if(f0*f0 + f2*f2 < dist*dist)
@@ -89,7 +100,7 @@ int func_8035FB48(Actor * this, s32 dist){
return 0;
}
bool func_8035FBA8(Actor *arg0, s32 arg1) {
bool chbat_nearHome(Actor *arg0, s32 arg1) {
if( (arg0->position[1] < ( arg0->unk1C[1] + 0.5))
&& (( arg0->unk1C[1] - 0.5) < arg0->position[1])
) {
@@ -98,17 +109,17 @@ bool func_8035FBA8(Actor *arg0, s32 arg1) {
return FALSE;
}
void func_8035FC20(Actor *this, f32 arg1, f32 arg2){
if(this->position[1] < arg1){
this->position[1] += arg2;
if(arg1 < this->position[1]){
this->position[1] = arg1;
void chBat_updateHeight(Actor *this, f32 target_height, f32 velocity){
if(this->position[1] < target_height){
this->position[1] += velocity;
if(target_height < this->position[1]){
this->position[1] = target_height;
}
}
else if(arg1 < this->position[1]){
this->position[1] -= arg2;
if(this->position[1] < arg1){
this->position[1] = arg1;
else if(target_height < this->position[1]){
this->position[1] -= velocity;
if(this->position[1] < target_height){
this->position[1] = target_height;
}
}
}
@@ -121,13 +132,8 @@ bool func_8035FC98(Actor *this, f32 arg1){
if(this->unk38_0)
return FALSE;
sp28[0] = this->position[0];
sp28[1] = this->position[1];
sp28[2] = this->position[2];
sp1C[0] = sp28[0];
sp1C[1] = sp28[1];
sp1C[2] = sp28[2];
TUPLE_COPY(sp28, this->position);
TUPLE_COPY(sp1C, sp28);
sp1C[1] += arg1;
if (func_80309B48(sp28, sp1C, sp34, 0x5E0000) != NULL)
@@ -145,7 +151,7 @@ bool func_8035FD28(Actor *this){
return TRUE;
}
bool func_8035FDA4(Actor *this) {
bool chbat_nearPlayer(Actor *this) {
f32 sp24[3];
player_getPosition(sp24);
@@ -205,17 +211,17 @@ void func_8035FFAC(Actor *this, f32 arg1){
}
}
void func_80360044(Actor *this) {
f32 var_f0;
void chbat_updateFlyingRoll(Actor *this) {
f32 d_yaw;
var_f0 = this->yaw_ideal - this->yaw;
if (var_f0 >= 180.0f) {
var_f0 -= 360.0f;
d_yaw = this->yaw_ideal - this->yaw;
if (d_yaw >= 180.0f) {
d_yaw -= 360.0f;
}
if (var_f0 < -180.0f) {
var_f0 += 360.0f;
if (d_yaw < -180.0f) {
d_yaw += 360.0f;
}
this->velocity[2] = -var_f0;
this->velocity[2] = -d_yaw;
if (( this->roll < this->velocity[2]) && ( this->roll < 55.0f)) {
this->roll += 2.0f;
}
@@ -224,7 +230,7 @@ void func_80360044(Actor *this) {
}
}
void func_80360130(Actor *this){
void chbat_updateRollTowardsZero(Actor *this){
if(0.0f < this->roll){
this->roll -= 2.0;
}
@@ -236,11 +242,11 @@ void func_80360130(Actor *this){
bool func_80360198(Actor *this) {
f32 var_f16;
f64 temp_f0;
f64 var_f0;
f64 var_f0_2;
f64 d_yaw;
f64 d_yaw_2;
func_80328FB0(this, 5.0f);
func_80360044(this);
chbat_updateFlyingRoll(this);
this->actor_specific_1_f += (this->velocity[1] * 0.45) - (0.001 * this->actor_specific_1_f);
if (this->actor_specific_1_f > 13.0) {
this->actor_specific_1_f = 13.0f;
@@ -279,24 +285,22 @@ f32 func_803603AC(Actor *this, s32 arg1, u8 arg2){
f32 dy;
f32 D1, D2;
f32 unused;
f32 sp20[3];
f32 player_position[3];
switch (arg2) {
case 1:
player_getPosition(sp20);
player_getPosition(player_position);
break;
case 2:
sp20[0] = this->unk1C[0];
sp20[1] = this->unk1C[1];
sp20[2] = this->unk1C[2];
TUPLE_COPY(player_position, this->unk1C);
break;
}
D1 = SQ(this->position[0] - sp20[0]);
D2 = SQ(this->position[2] - sp20[2]);
D1 = SQ(this->position[0] - player_position[0]);
D2 = SQ(this->position[2] - player_position[2]);
dy = this->position[1] - sp20[1] - arg1;
dy = this->position[1] - player_position[1] - arg1;
if(dy == 0.0 || D1 + D2 == 0.0)
return 0.0f;
@@ -322,18 +326,19 @@ int func_803604E8(Actor *this){
return 1;
}
bool func_8036054C(Actor *this) {
bool chbat_updateRoam(Actor *this) {
s32 phi_v0;
s32 phi_s1;
s32 phi_s2;
if (this->lifetime_value == 0.0f) {
// fly towards home if lifetime is done
this->yaw_ideal = func_80257204(this->position[0], this->position[2], this->unk1C[0], this->unk1C[2]);
func_8035FFAC(this, func_803603AC(this, -110, 2));
}
else{
func_80328FB0(this, 5.0f);
func_80360044(this);
func_80328FB0(this, 5.0f); //update yaw
chbat_updateFlyingRoll(this);
if (func_80329480(this) != 0) {
this->lifetime_value = 0.0f;
} else {
@@ -346,9 +351,9 @@ bool func_8036054C(Actor *this) {
phi_s1 = 0;
do{
if (this->unk38_0) {
phi_v0 = func_80329140(this, (s32) this->yaw_ideal, 0xC8);
phi_v0 = func_80329140(this, (s32) this->yaw_ideal, 200);
} else {
phi_v0 = func_80329078(this, (s32) this->yaw_ideal, 0xC8);
phi_v0 = func_80329078(this, (s32) this->yaw_ideal, 200);
}
if(phi_v0 == 0){
@@ -371,64 +376,62 @@ bool func_8036054C(Actor *this) {
return TRUE;
}
void func_80360790(ActorMarker *this_marker, ActorMarker *other_marker){
void chBat_dieCollision(ActorMarker *this_marker, ActorMarker *other_marker){
Actor *this = marker_getActor(this_marker);
ActorLocal_Core2_D89E0 *local = (ActorLocal_Core2_D89E0 *)&this->local;
func_8035FAE0(this);
local->unk0 = 0.0f;
ChBatLocal *local = (ChBatLocal *)&this->local;
chBat_fall(this);
local->cooldown = 0.0f;
this->marker->collidable = FALSE;
FUNC_8030E8B4(SFX_115_BUZZBOMB_DEATH, 1.3f, 26000, this->position, 1250, 2500);
}
void func_803607FC(ActorMarker *this_marker, ActorMarker *other_marker){
void chBat_attackCollision(ActorMarker *this_marker, ActorMarker *other_marker){
Actor *this = marker_getActor(this_marker);
ActorLocal_Core2_D89E0 *local = (ActorLocal_Core2_D89E0 *)&this->local;
local->unk0 = 0.8f;
ChBatLocal *local = (ChBatLocal *)&this->local;
local->cooldown = 0.8f;
}
void func_80360828(Actor *this){
f32 sp3C = time_getDelta();
ActorLocal_Core2_D89E0 *local = (ActorLocal_Core2_D89E0 *)&this->local;
void chbat_update(Actor *this){
f32 dt = time_getDelta();
ChBatLocal *local = (ChBatLocal *)&this->local;
f32 sp34;
if(!this->initialized){
this->initialized = TRUE;
marker_setCollisionScripts(this->marker, NULL, func_803607FC, func_80360790);
marker_setCollisionScripts(this->marker, NULL, chBat_attackCollision, chBat_dieCollision);
this->unk38_0 = FALSE;
this->actor_specific_1_f = 0.0f;
this->velocity_x = 0.0f;
this->unk1C_x = this->position_x;
this->unk1C_y = this->position_y;
this->unk1C_z = this->position_z;
local->unk4 = this->yaw;
TUPLE_COPY(this->unk1C, this->position); // set roost position
local->roost_yaw = this->yaw;
}
if(local->unk0 <= 0.0){
local->unk0 = 0.0f;
if(local->cooldown <= 0.0){
local->cooldown = 0.0f;
}else{//L80360910
local->unk0 -= sp3C;
local->cooldown -= dt;
return;
}
switch(this->state){
case 1: //L80360918
if(func_8035FDA4(this)){
func_8035F99C(this);
case CH_BAT_STATE_ROOSTING: //L80360918
if(chbat_nearPlayer(this)){
chbat_exitRoost(this);
}
break;
case 2: //L80360938
case CH_BAT_STATE_EXIT_ROOST: //L80360938
if( 0.98 < animctrl_getAnimTimer(this->animctrl)
|| !func_8035FD28(this)
){
func_8035FA0C(this);
chbat_chase(this);
}
break;
case 3: //L8036097C
case CH_BAT_STATE_CHASE: //L8036097C
animctrl_setDuration(this->animctrl, 1.2 - this->velocity_y);
if(!func_8035FDA4(this)){
func_8035FA48(this);
if(!chbat_nearPlayer(this)){
chbat_roam(this);
}
else if(!func_803604E8(this)){
func_8035FA48(this);
chbat_roam(this);
this->unk38_31 = 0x3C;
}
else{
@@ -442,45 +445,45 @@ void func_80360828(Actor *this){
func_8030E878(SFX_2_CLAW_SWIPE, randf2(1.0f, 1.2f), 10000, this->position, 833.0f, 2500.0f);
}
break;
case 4: //L80360A9C
if(func_8035FDA4(this)){
func_8035FA0C(this);
} else if(func_8035FB48(this, 0x14)){
func_8035FA74(this);
case CH_BAT_STATE_ROAM: //L80360A9C
if(chbat_nearPlayer(this)){
chbat_chase(this);
} else if(chbat_isWithinHorzontalRadiusOfHome(this, 20)){
chbat_flyHome(this);
} else{
func_8036054C(this);
chbat_updateRoam(this);
}//L80360AE8
if(actor_animationIsAt(this, 0.5f)){
func_8030E878(SFX_2_CLAW_SWIPE, randf2(1.0f, 1.2f), 10000, this->position, 833.0f, 2500.0f);
}
break;
case 5: //L80360B3C
if(func_8035FDA4(this)){
func_8035FA0C(this);
} else if(func_8035FBA8(this, 1)){
func_8035FAA8(this);
case CH_BAT_STATE_FLY_HOME: //L80360B3C
if(chbat_nearPlayer(this)){
chbat_chase(this);
} else if(chbat_nearHome(this, 1)){
chbat_enterRoost(this);
} else{
func_80328FB0(this, 5.0f);
func_8035FC20(this, this->unk1C_y, 2.0f);
func_80360130(this);
}//L80360BA0
chBat_updateHeight(this, this->unk1C_y, 2.0f);
chbat_updateRollTowardsZero(this);
}
if(actor_animationIsAt(this, 0.5f)){
func_8030E878(SFX_2_CLAW_SWIPE, randf2(1.0f, 1.2f), 10000, this->position, 833.0f, 2500.0f);
}
break;
case 6: //L80360BF4
case CH_BAT_STATE_ENTER_ROOST:
if(animctrl_getAnimTimer(this->animctrl) < 0.01){
func_8035F970(this);
chbat_roost(this);
}
break;
case 7: //L80360C28
case CH_BAT_STATE_FALL: //L80360C28
sp34 = time_getDelta();
func_8032CA80(this, this->unk38_0 ? 0x13 : 0x4);
if(func_8035FC98(this, this->velocity_x * sp34)){
this->position_y = mapModel_getFloorY(this->position);
subaddie_set_state_with_direction(this, 8, 0.01f, 1);
subaddie_set_state_with_direction(this, CH_BAT_STATE_DIE, 0.01f, 1);
actor_playAnimationOnce(this);
func_8030E6A4(SFX_1F_HITTING_AN_ENEMY_3, 1.2f, 32200);
}
@@ -489,7 +492,7 @@ void func_80360828(Actor *this){
this->velocity_x -= 1600.0f * sp34;
}
break;
case 8: //L80360CF0
case CH_BAT_STATE_DIE: //L80360CF0
if(actor_animationIsAt(this, 0.3f)){
func_80326310(this);
}

View File

@@ -4,7 +4,7 @@
void func_802D77D4(Actor *this);
extern void func_8028F738(f32[3], f32[3], f32, u32);
extern void player_setClimbParams(f32[3], f32[3], f32, u32);
extern f32 func_80258640(f32[3], f32[3]);
typedef struct {
@@ -78,7 +78,7 @@ void func_802D77D4(Actor *this) {
if (((sp4C[0] * sp4C[0]) + (sp4C[2] * sp4C[2])) < (sp3C * sp3C)) {
if ((this->position[1] < sp40[1]) && (sp40[1] <= local->unk0[1])) {
if (volatileFlag_get(VOLATILE_FLAG_2_FF_IN_MINIGAME) == 0) {
func_8028F738(this->position, local->unk0, (f32)this->unkF4_8, local->unkC);
player_setClimbParams(this->position, local->unk0, (f32)this->unkF4_8, local->unkC);
}
}
}

View File

@@ -2,7 +2,7 @@
#include "functions.h"
#include "variables.h"
extern bool func_80259254(f32[3], f32, f32, f32);
extern bool ml_vec3f_point_within_horizontal_distance(f32[3], f32, f32, f32);
/* .data */
ActorAnimationInfo chCrabAnimations[] ={
@@ -185,7 +185,7 @@ void __chCrab_die(ActorMarker *marker, ActorMarker *other){
this->unk138_27 = 1;
marker_despawn(marker);
if( map_get() == MAP_B_CC_CLANKERS_CAVERN
&& func_80259254(this->position, 13778.0f, 0.0f, 3000.0f)
&& ml_vec3f_point_within_horizontal_distance(this->position, 13778.0f, 0.0f, 3000.0f)
) {
this->depth_mode = MODEL_RENDER_DEPTH_COMPARE;
if( !jiggyscore_isCollected(JIGGY_16_CC_SNIPPETS)

View File

@@ -2,7 +2,7 @@
#include "functions.h"
#include "variables.h"
extern int func_802592C4(f32[3], f32[3], f32);
extern int ml_vec3f_within_horizontal_distance(f32[3], f32[3], f32);
extern void func_802EFA20(ParticleEmitter *, f32, f32);
extern void subaddie_set_state_with_direction(Actor *, s32, f32, s32);
extern void func_80328FB0(Actor *, f32);
@@ -198,7 +198,7 @@ int __chSnowman_CCW_playerInProtectedZone(void){
f32 player_position[3];
if(map_get() == MAP_46_CCW_WINTER){
player_getPosition(player_position);
if(func_802592C4(player_position, ccw_no_attack_zone, 900.0f))
if(ml_vec3f_within_horizontal_distance(player_position, ccw_no_attack_zone, 900.0f))
return 1;
}
return 0;

View File

@@ -57,7 +57,7 @@ void __chTermite_updateWalkSFX(Actor *this) {
f32 sp24[3];
f32 sp20;
viewport_getPosition_vec3f(&sp24);
viewport_getPosition_vec3f(sp24);
sp20 = ml_map_f( (300.0f - sp24[0])*(300.0f - sp24[0]) + (this->position[1] - sp24[1])*(this->position[1] - sp24[1]) + (-858.0f - sp24[2])*(-858.0f - sp24[2])
, 7617600.0f, 8236900.0f
, 8000.0f, 1000.0f

View File

@@ -8,7 +8,7 @@
#include <core1/viewport.h>
extern int func_80259254(f32 vec[3], f32 x, f32 z, f32 val);
extern int ml_vec3f_point_within_horizontal_distance(f32 vec[3], f32 x, f32 z, f32 val);
extern f32 player_getYaw(void);
/* .bss */
@@ -179,7 +179,7 @@ int func_8028B094(void){
int player_isInHorizontalRadius(f32 arg0[3], f32 arg1){
f32 sp1C[3];
_player_getPosition(sp1C);
return func_80259254(sp1C, arg0[0], arg0[2], arg1);
return ml_vec3f_point_within_horizontal_distance(sp1C, arg0[0], arg0[2], arg1);
}
s32 func_8028B120(void){return 0;}

View File

@@ -22,7 +22,7 @@ extern void func_8029B73C(f32 arg0[3], f32 arg1, f32 arg2, f32 arg3, f32 arg4);
bool func_8028F4B8(f32 arg0[3], f32 arg1, f32 arg2);
bool func_8028F620(f32 arg0[3], f32 arg1, f32 arg2);
void func_8028F85C(f32 arg0[3]);
void func_8028F8A4(f32 rotation[3]);
void player_setRotation(f32 rotation[3]);
void func_8028F918(s32 arg0);
@@ -46,15 +46,15 @@ f32 D_8037BFCC;
f32 D_8037BFD0;
/* .code */
bool func_8028DFF0(s32 arg0, s32 arg1[3]) {
bool func_8028DFF0(s32 arg0, s32 position[3]) {
if (arg0 >= 0x80) {
arg1[0] = func_802E4A98(arg0);
arg1[1] = func_802E4AAC(arg0);
arg1[2] = func_802E4AC0(arg0);
position[0] = func_802E4A98(arg0);
position[1] = func_802E4AAC(arg0);
position[2] = func_802E4AC0(arg0);
return TRUE;
}
else{
return _nodeProp_findPositionFromActorId(func_803084F0(arg0), arg1);
return _nodeProp_findPositionFromActorId(func_803084F0(arg0), position);
}
}
@@ -151,7 +151,7 @@ void func_8028E0F0(s32 arg0, s32 arg1[3]) {
bs_setState(badrone_goto(sp7C, 1.0f, func_8028E0B0, NULL));
return;
}
func_8028F85C(&sp7C);
func_8028F85C(sp7C);
func_80295A8C();
bsStoredState_setTrot(FALSE);
miscFlag_clear(MISC_FLAG_16);
@@ -192,7 +192,7 @@ void func_8028E4B0(void) {
return;
}
if (sp20 == 0x63) {
func_8028F85C(&D_8037BFC0);
func_8028F85C(D_8037BFC0);
yaw_set(D_8037BFCC);
D_8037BFBC = (s32) D_8037BFD0;
D_8037BFB8 = 1;
@@ -213,12 +213,12 @@ void func_8028E4B0(void) {
D_80363694--;
if (D_80363694 == 0) {
func_8028F85C(D_80363698);
func_8028F8A4(D_803636A4);
player_setRotation(D_803636A4);
}
}
if (D_803636B0) {
D_803636B0 = FALSE;
func_8028F85C(&D_803636B4);
func_8028F85C(D_803636B4);
}
}
@@ -668,7 +668,7 @@ bool player_setCarryObjectPoseInHorizontalRadius(f32 position[3], f32 radius, en
}
//sets carry actor if player is within a cylinder around a point
bool func_8028F364(f32 position[3], f32 radius, f32 vert_range, enum actor_e actor_id, Actor **arg4) {
bool player_setCarryObjectPoseInCylinder(f32 position[3], f32 radius, f32 vert_range, enum actor_e actor_id, Actor **arg4) {
if (player_isInVerticalRange(position, vert_range)) {
return player_setCarryObjectPoseInHorizontalRadius(position, radius, actor_id, arg4);
}
@@ -774,7 +774,7 @@ void player_stateTimer_set(enum state_timer_e timer_id, f32 value){
stateTimer_set(timer_id, value);
}
void func_8028F738(f32 bottom[3], f32 top[3], f32 radius, u32 arg3){
void player_setClimbParams(f32 bottom[3], f32 top[3], f32 radius, u32 arg3){
climbSet(bottom, top, radius, arg3);
}
@@ -824,7 +824,7 @@ void func_8028F85C(f32 arg0[3]){
cameraMode_update();
}
void func_8028F8A4(f32 rotation[3]){
void player_setRotation(f32 rotation[3]){
pitch_setIdeal(rotation[0]);
yaw_setIdeal(rotation[1]);
roll_setIdeal(rotation[2]);
@@ -875,8 +875,8 @@ void func_8028FA34(enum actor_e arg0, Actor *arg1){
func_8028DEEC(arg0, arg1);
}
void func_8028FA54(f32 arg0[3]){
set_throw_target_position(arg0);
void player_setThrowTargetPosition(f32 position[3]){
set_throw_target_position(position);
}
void func_8028FA74(f32 dst[3]){
@@ -897,7 +897,7 @@ void func_8028FAB0(f32 arg0[3]){
func_80298564(diff);
}
void func_8028FAEC(f32 rotation[3]){
void player_setIdealRotation(f32 rotation[3]){
pitch_setIdeal(rotation[0]);
yaw_setIdeal(rotation[1]);
roll_setIdeal(rotation[2]);

View File

@@ -4,7 +4,6 @@
#include <core1/viewport.h>
#define _SQ3(x, y, z) (((x) * (x)) + ((y) * (y)) + ((z) * (z)))
#define _SQ3v1(v) (v[0] * v[0] + v[1] * v[1] + v[2] * v[2])
/*.code*/
void func_802F87B0(struct6s *this){
@@ -28,8 +27,7 @@ void func_802F87B0(struct6s *this){
sp4C[1] = randf2(200.0f, 500.0f);
sp4C[2] = -f20;
if(gu_sqrtf(_SQ3v1((&this->unkC))) < 5.0f)
{
if (LENGTH_VEC3F((&this->unkC)) < 5.0f) {
ml_vec3f_yaw_rotate_copy(sp4C, sp4C, randf2(0.0f, 360.0f));
}
else{

View File

@@ -1759,7 +1759,7 @@ s32 func_80306EF4(s32 arg0[3], s32 arg1, u32 arg2) {
for(var_s0 = var_s1->unk8; var_s0 < var_s1->unk8 + var_s1->count; var_s0++){
if( (var_s0->unk10_3 & arg2)
&& (temp_s4 >= var_s0->position[1]) && (temp_s6 < var_s0->position[1])
&& (func_80259328(arg0, (void *) var_s0, var_s0->radius))
&& (ml_vec3w_within_horizontal_distance(arg0, (void *) var_s0, var_s0->radius))
) {
return var_s1 - D_8036A9C8;
}
@@ -1769,7 +1769,7 @@ s32 func_80306EF4(s32 arg0[3], s32 arg1, u32 arg2) {
for(var_s0 = var_s1->unk8; var_s0 < var_s1->unk8 + var_s1->count; var_s0++){
if( (var_s0->unk10_3 & arg2)
&& ((var_s0->unk10_3 & 2) || ((temp_s4 >= var_s0->position[1]) && (temp_s6 < var_s0->position[1])))
&& (func_80259328(arg0, (void *) var_s0, var_s0->radius))
&& (ml_vec3w_within_horizontal_distance(arg0, (void *) var_s0, var_s0->radius))
) {
return var_s1 - D_8036A9C8;
}
@@ -1865,7 +1865,7 @@ s32 func_80307504(f32 arg0[3], s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
if (arg4 & 1) {
if (var_s0->unk10_3 & arg4) {
if (!(max < var_s0->position[1]) && (min < var_s0->position[1])) {
if (func_80259328(sp4C, var_s0->position, var_s0->radius)) {
if (ml_vec3w_within_horizontal_distance(sp4C, var_s0->position, var_s0->radius)) {
return arg2;
}
}
@@ -1874,7 +1874,7 @@ s32 func_80307504(f32 arg0[3], s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
else{
if( (var_s0->unk10_3 & arg4))
if( ((var_s0->unk10_3 & 2) || (!(max < var_s0->position[1]) && (min < var_s0->position[1]))))
if( func_80259328(&sp4C, var_s0->position, var_s0->radius))
if (ml_vec3w_within_horizontal_distance(&sp4C, var_s0->position, var_s0->radius))
return arg2;
}
@@ -1882,7 +1882,7 @@ s32 func_80307504(f32 arg0[3], s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
for(var_s0 = temp_s1->unk8; var_s0 < temp_s1->unk8 + temp_s1->count; var_s0++){
if (var_s0->unk10_3 & arg4)
if (!(max < var_s0->position[1]) && (min < var_s0->position[1]))
if(func_80259328(&sp4C, var_s0, var_s0->radius))
if (ml_vec3w_within_horizontal_distance(&sp4C, var_s0, var_s0->radius))
return (var_s0 - temp_s1->unk8);
}
}
@@ -1890,7 +1890,7 @@ s32 func_80307504(f32 arg0[3], s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
for(var_s0 = temp_s1->unk8; var_s0 < temp_s1->unk8 + temp_s1->count; var_s0++){
if ((var_s0->unk10_3 & arg4))
if(((var_s0->unk10_3 & 2) || (!(max < var_s0->position[1]) && (min < var_s0->position[1]))))
if(func_80259328(&sp4C, var_s0, var_s0->radius))
if (ml_vec3w_within_horizontal_distance(&sp4C, var_s0, var_s0->radius))
return var_s0 - temp_s1->unk8;
}
}

View File

@@ -219,8 +219,8 @@ s32 func_8030CDE4(SfxSource *arg0){
f32 temp_f0;
f32 pad;
viewport_getPosition_vec3f(&sp44);
viewport_getLookVector(&sp38);
viewport_getPosition_vec3f(sp44);
viewport_getLookVector(sp38);
sp2C[0] = arg0->position[0] - sp44[0];
sp2C[1] = arg0->position[1] - sp44[1];
sp2C[2] = arg0->position[2] - sp44[2];
@@ -228,9 +228,9 @@ s32 func_8030CDE4(SfxSource *arg0){
if(sp2C[0]*sp2C[0] + sp2C[1]*sp2C[1] + sp2C[2]*sp2C[2] < 10.0f){
return 0x40;
}
ml_vec3f_normalize(&sp2C);
ml_vec3f_normalize(sp2C);
sp38[1] = 0.0f;
ml_vec3f_normalize(&sp38);
ml_vec3f_normalize(sp38);
temp_f0 = func_80256AB4(sp38[0], sp38[2], sp2C[0], sp2C[2]);
if(arg0->unk16){
arg0->unk18 += 0.07*((f32)(s32)(64.0f - (temp_f0 * 63.0f)) - arg0->unk18);

View File

@@ -163,7 +163,7 @@ void chMinigame_update(Actor *this){
marker_setFreeMethod(this->marker, __chMinigame_free);
func_8028FAB0(this->position);
this->unk1C[0] = 0.0f; this->unk1C[1] = this->yaw; this->unk1C[2] = 0.0f;
func_8028FAEC(this->unk1C);
player_setIdealRotation(this->unk1C);
this->has_met_before = FALSE;
if(this->unk10_12 >= 7){
marker_despawn(this->marker);

View File

@@ -45,7 +45,7 @@ void func_80323238(void){}
// =============================================BREAK ???
extern f32 func_80258708(f32 [3], f32[3]);
extern f32 ml_vec3f_length(f32 [3], f32[3]);
extern f32 ml_distanceSquared_vec3f(f32 [3], f32 [3]);
extern void func_80341180(f32, s32, s32, f32 *, f32 [3]);
@@ -74,11 +74,11 @@ f32 func_803232AC(f32 *arg0, f32 arg1, f32 arg2, s32 arg3, f32 arg4) {
while(var_f20 + arg4 < arg2){
var_f20 += arg4;
func_80341180(var_f20, arg3, 3, arg0, sp60);
var_f22 += func_80258708(sp6C, sp60);
var_f22 += ml_vec3f_length(sp6C, sp60);
ml_vec3f_copy(sp6C, sp60);
}
func_80341180(arg2, arg3, 3, arg0, sp60);
var_f22 += func_80258708(sp6C, sp60);
var_f22 += ml_vec3f_length(sp6C, sp60);
return var_f22;
}
@@ -196,7 +196,7 @@ f32 func_80323A48(f32 arg0[3], s32 arg1, f32 arg2, f32 arg3, f32 arg4) {
if (arg4 == 1.0) {
var_f24 = arg4;
func_80341180(var_f24, arg1, 3, arg0, spDC);
var_f22 = var_f26 + func_80258708(spF4, spDC);
var_f22 = var_f26 + ml_vec3f_length(spF4, spDC);
} else {
var_f24 += arg4;
var_f24 = var_f24 - (s32)var_f24;
@@ -210,17 +210,17 @@ f32 func_80323A48(f32 arg0[3], s32 arg1, f32 arg2, f32 arg3, f32 arg4) {
}
} else {
func_80341180(var_f24, arg1, 3, arg0, spDC);
var_f22 = var_f26 + func_80258708(spF4, spDC);
var_f22 = var_f26 + ml_vec3f_length(spF4, spDC);
}
} else {
if (arg4 == 1.0) {
if (var_f24 < 0.0) {
var_f24 = 0;
func_80341180(var_f24, arg1, 3, arg0, &spDC);
var_f22 = var_f26 + func_80258708(&spF4, &spDC);
var_f22 = var_f26 + ml_vec3f_length(&spF4, &spDC);
} else {
func_80341180(var_f24, arg1, 3, arg0, &spDC);
var_f22 = var_f26 + func_80258708(&spF4, &spDC);
var_f22 = var_f26 + ml_vec3f_length(&spF4, &spDC);
}
} else if (var_f24 < arg4) {
var_f24 -= arg4;
@@ -235,7 +235,7 @@ f32 func_80323A48(f32 arg0[3], s32 arg1, f32 arg2, f32 arg3, f32 arg4) {
var_f22 = var_f26 + gu_sqrtf(spD0[0]*spD0[0] + spD0[1]*spD0[1] + spD0[2]*spD0[2]);
} else {
func_80341180(var_f24, arg1, 3, arg0, &spDC);
var_f22 = var_f26 + func_80258708(&spF4, &spDC);
var_f22 = var_f26 + ml_vec3f_length(&spF4, &spDC);
}
}

View File

@@ -8,8 +8,8 @@
#define DIST_SQ_VEC3F(v1, v2) ((v1[0] - v2[0])*(v1[0] - v2[0]) + (v1[1] - v2[1])*(v1[1] - v2[1]) + (v1[2] - v2[2])*(v1[2] - v2[2]))
extern f32 func_80258708(f32[3], f32[3]);
extern bool func_80259384(f32[3], f32[3], f32);
extern f32 ml_vec3f_length(f32[3], f32[3]);
extern bool ml_vec3f_within_distance(f32[3], f32[3], f32);
extern void func_802D7124(Actor *, f32);
extern void func_802EE6CC(f32[3], s32[4], s32[4], s32, f32, f32, s32, s32, s32);
@@ -661,7 +661,7 @@ Actor *actorArray_findClosestActorFromActorId(f32 position[3], enum actor_e acto
&& (i_actor->modelCacheIndex != 0x108)
&& !i_actor->despawn_flag
) {
i_dist = func_80258708(position, i_actor->position);
i_dist = ml_vec3f_length(position, i_actor->position);
if (i_dist < min_dist) {
min_dist = i_dist;
closest_actor = i_actor;
@@ -736,7 +736,7 @@ bool func_803270B8(f32 arg0[3], f32 arg1, enum marker_collision_func_type_e arg2
if( !i_ptr->despawn_flag
&& i_ptr->marker->collidable
&& ((arg3 == NULL) || arg3(i_ptr))
&& func_80259384(i_ptr->position, arg0, arg1)
&& ml_vec3f_within_distance(i_ptr->position, arg0, arg1)
) {
if (i_ptr->marker->unk58 == NULL || i_ptr->marker->unk58(i_ptr->marker, arg4)
) {

View File

@@ -55,7 +55,7 @@ void func_8034F774(void){
sfxsource_setSfxId(D_803720A0.sfxsourceIdx, 0x3EC);
func_8030DD14(D_803720A0.sfxsourceIdx, 3);
func_8030DFF0(D_803720A0.sfxsourceIdx, 1);
sfxsource_set_position(D_803720A0.sfxsourceIdx, &sp44);
sfxsource_set_position(D_803720A0.sfxsourceIdx, sp44);
sfxsource_set_fade_distances(D_803720A0.sfxsourceIdx, 400.0f, 3200.0f);
func_8030DE44(D_803720A0.sfxsourceIdx, 2, 0.5f);
func_8030E2C4(D_803720A0.sfxsourceIdx);

View File

@@ -2,7 +2,7 @@
#include "functions.h"
#include "variables.h"
extern f32 func_80258780(f32[3], f32[3]);
extern f32 ml_vec3f_length_sq(f32[3], f32[3]);
typedef struct{
f32 unk0;
@@ -67,7 +67,7 @@ void func_80352114(Struct_core2_CB050_0 *arg0, s32 arg1, f32 arg2) {
player_getPosition(player_position);
if( (func_80294660() == 0x100)
&& func_8028F20C()
&& (func_80258780(player_position, arg0->unk4C) < 50000.0f)
&& (ml_vec3f_length_sq(player_position, arg0->unk4C) < 50000.0f)
) {
sp58 = arg0->unk4C[0] - player_position[0];
sp54 = arg0->unk4C[2] - player_position[2];

View File

@@ -7,7 +7,7 @@
extern bool func_80245314(f32[3], f32[3], f32, f32, u32);
extern int func_80244D94(f32[3], f32[3], f32[3], u32, f32);
extern int func_8024575C(f32[3], f32[3], f32, f32[3], s32, u32);
extern f32 func_80258708(f32[3], f32[3]);
extern f32 ml_vec3f_length(f32[3], f32[3]);
extern f32 func_80259198(f32, f32);
extern f32 func_8028E82C(void);
extern f32 player_getYaw(void);
@@ -102,7 +102,7 @@ bool func_802BC640(f32 arg0[3], f32 arg1[3], f32 arg2, s32 arg3) {
ml_vec3f_add(sp78, arg0, sp9C);
func_80244D94(arg0, sp78, sp88, 0x9E0000, 40.0f);
func_8024575C(arg0, sp78, 40.0f, sp88, 4, 0x9E0000);
if (phi_f26 < func_80258708(arg0, sp78)) {
if (phi_f26 < ml_vec3f_length(arg0, sp78)) {
ncDynamicCamera_setPosition(sp78);
ml_vec3f_clear(D_8037D9C8);
ml_vec3f_clear(D_8037D9E0);

View File

@@ -11,7 +11,7 @@
#define SNACKER_BB_DIALOG_0 VER_SELECT(0xe26, 0xa68, 0, 0)
#define SNACKER_BB_DIALOG_1 VER_SELECT(0xe33, 0xa75, 0, 0)
s32 func_80259254(f32 *, f32, f32, f32);
s32 ml_vec3f_point_within_horizontal_distance(f32 *, f32, f32, f32);
void ncFirstPersonCamera_getZoomedInRotation(f32 *);
extern u8 D_8037DCCA;
@@ -34,7 +34,7 @@ static s32 __snackerctl_player_within_distance(f32 x, f32 z, f32 dist){
f32 player_position[3];
_player_getPosition(player_position);
return func_80259254(player_position, x, z, dist);
return ml_vec3f_point_within_horizontal_distance(player_position, x, z, dist);
}
static SnackerCtlState __snackerctl_update_ttc(void){

View File

@@ -149,7 +149,7 @@ extern ActorInfo D_80372EE0;
extern ActorInfo chTermite; //ticker
extern ActorInfo D_80372FC0;
extern ActorInfo D_80372FE4;
extern ActorInfo D_803730D8; //nibbly
extern ActorInfo gChBat; //nibbly
extern ActorInfo D_80373100;
extern ActorInfo D_80373134;
extern ActorInfo D_80373158;
@@ -335,7 +335,7 @@ void spawnQueue_reset(void){
spawnableActorList_addIfMapVisited(&D_80372C18, actor_new, ACTOR_FLAG_UNKNOWN_0 | ACTOR_FLAG_UNKNOWN_3 | ACTOR_FLAG_UNKNOWN_5 | ACTOR_FLAG_UNKNOWN_7 | ACTOR_FLAG_UNKNOWN_8 | ACTOR_FLAG_UNKNOWN_12 | ACTOR_FLAG_UNKNOWN_17, MAP_1B_MMM_MAD_MONSTER_MANSION); //teehee
spawnableActorList_addIfMapVisited(&D_80372FC0, actor_new, ACTOR_FLAG_UNKNOWN_0 | ACTOR_FLAG_UNKNOWN_16 | ACTOR_FLAG_UNKNOWN_25, MAP_1B_MMM_MAD_MONSTER_MANSION);
spawnableActorList_addIfMapVisited(&D_80372FE4, actor_new, ACTOR_FLAG_UNKNOWN_0 | ACTOR_FLAG_UNKNOWN_10 | ACTOR_FLAG_UNKNOWN_16 | ACTOR_FLAG_UNKNOWN_25, MAP_1B_MMM_MAD_MONSTER_MANSION);
spawnableActorList_addIfMapVisited(&D_803730D8, actor_new, ACTOR_FLAG_UNKNOWN_0 | ACTOR_FLAG_UNKNOWN_5 | ACTOR_FLAG_UNKNOWN_21 |ACTOR_FLAG_UNKNOWN_25, MAP_1B_MMM_MAD_MONSTER_MANSION); //nibbly
spawnableActorList_addIfMapVisited(&gChBat, actor_new, ACTOR_FLAG_UNKNOWN_0 | ACTOR_FLAG_UNKNOWN_5 | ACTOR_FLAG_UNKNOWN_21 |ACTOR_FLAG_UNKNOWN_25, MAP_1B_MMM_MAD_MONSTER_MANSION); //nibbly
spawnableActorList_addIfMapVisited(&D_80367130, actor_new, ACTOR_FLAG_UNKNOWN_0 | ACTOR_FLAG_UNKNOWN_3 | ACTOR_FLAG_UNKNOWN_5 | ACTOR_FLAG_UNKNOWN_7 | ACTOR_FLAG_UNKNOWN_8 | ACTOR_FLAG_UNKNOWN_11 | ACTOR_FLAG_UNKNOWN_25, MAP_D_BGS_BUBBLEGLOOP_SWAMP); //buzzbomb
spawnableActorList_addIfMapVisited(&D_80372B80, actor_new, ACTOR_FLAG_UNKNOWN_0 | ACTOR_FLAG_UNKNOWN_6 | ACTOR_FLAG_UNKNOWN_8 | ACTOR_FLAG_UNKNOWN_17 | ACTOR_FLAG_UNKNOWN_25, MAP_27_FP_FREEZEEZY_PEAK);
spawnableActorList_addIfMapVisited(&chShrapnelDescription, actor_new, ACTOR_FLAG_UNKNOWN_0 | ACTOR_FLAG_UNKNOWN_8 | ACTOR_FLAG_UNKNOWN_25, MAP_7_TTC_TREASURE_TROVE_COVE); //scrapnel