Documented ch Tumblar
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
|
||||
void func_80351A04(Struct68s *arg0, s32 arg1);
|
||||
void func_80351A14(Struct68s *arg0, Struct68DrawMethod arg1);
|
||||
void func_8035179C(Struct68s* arg0, f32 arg1[3]);
|
||||
void func_8035179C_copyPosition(Struct68s* arg0, f32 arg1[3]);
|
||||
void func_80351814(Struct68s *arg0, f32 arg1[3]);
|
||||
f32 func_80351830(Struct68s *arg0);
|
||||
|
||||
|
@@ -2307,7 +2307,7 @@ enum mm_specific_flags {
|
||||
|
||||
enum mmm_specific_flags {
|
||||
MMM_SPECIFIC_FLAG_0_UNKNOWN,
|
||||
MMM_SPECIFIC_FLAG_1_UNKNOWN,
|
||||
MMM_SPECIFIC_FLAG_TUMBLAR_BROKEN,
|
||||
MMM_SPECIFIC_FLAG_2_UNKNOWN,
|
||||
MMM_SPECIFIC_FLAG_3_UNKNOWN,
|
||||
MMM_SPECIFIC_FLAG_4_UNKNOWN,
|
||||
@@ -4044,6 +4044,9 @@ enum asset_e
|
||||
ASSET_AD5_TEXT_UNKNOWN,
|
||||
ASSET_AD6_TEXT_UNKNOWN,
|
||||
|
||||
ASSET_ADA_TEXT_UNKNOWN = 0xada,
|
||||
ASSET_ADB_TEXT_UNKNOWN,
|
||||
|
||||
ASSET_ADD_TEXT_UNKNOWN = 0xadd,
|
||||
ASSET_ADE_TEXT_LOGGO_AS_BEAR,
|
||||
ASSET_ADF_TEXT_ENTER_LOGGO,
|
||||
|
@@ -121,7 +121,7 @@ void CC_func_80387A40(Struct_CC_13C0_1* arg0, Struct68s* arg1, f32 arg2) {
|
||||
}
|
||||
}
|
||||
if ((arg0->unk4 == 0) || (arg0->unk4 == 1)) {
|
||||
func_8035179C(arg1, sp38);
|
||||
func_8035179C_copyPosition(arg1, sp38);
|
||||
func_80351814(arg1, sp2C);
|
||||
sp44[0] = 0.0f;
|
||||
sp44[1] = 0.0f;
|
||||
|
@@ -287,7 +287,7 @@ void func_80388BDC(Actor *this) {
|
||||
f64 phi_f0;
|
||||
|
||||
func_802D3D74(this);
|
||||
mapSpecificFlags_set(MMM_SPECIFIC_FLAG_1_UNKNOWN, BOOL((this->yaw > 260.0f) && (this->yaw < 330.0f)));
|
||||
mapSpecificFlags_set(MMM_SPECIFIC_FLAG_TUMBLAR_BROKEN, BOOL((this->yaw > 260.0f) && (this->yaw < 330.0f)));
|
||||
if (!this->volatile_initialized) {
|
||||
if (this->yaw != 0.0f) {
|
||||
this->lifetime_value = 0.5f;
|
||||
|
@@ -181,7 +181,7 @@ void func_8038A82C(Struct_MMM_3D50_0 * arg0){
|
||||
if(arg0->unk2 == 'X'){
|
||||
MMM_func_8038A54C(arg0, 1);
|
||||
player_getPosition(sp44);
|
||||
func_8038AD10(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10, sp38);
|
||||
chTumblar_copyPosition(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10, sp38);
|
||||
sp38[1] = sp44[1];
|
||||
func_8028F620(sp38, 300.0f, -1500.0f);
|
||||
return;
|
||||
@@ -192,7 +192,7 @@ void func_8038A82C(Struct_MMM_3D50_0 * arg0){
|
||||
MMM_func_8038A54C(arg0, 3);
|
||||
if( iPtr->unk0[iPtr->unk4] == 0){
|
||||
func_8038A140(5);
|
||||
func_8038AF3C(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10);
|
||||
chTumblar_congratulate(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10);
|
||||
func_8025A6EC(COMUSIC_2D_PUZZLE_SOLVED_FANFARE, 32000);
|
||||
}
|
||||
else{
|
||||
@@ -249,7 +249,7 @@ void func_8038AA44(void){
|
||||
func_8038A750();
|
||||
if( MMM_D_8038C510.unk8 == 1
|
||||
&& MMM_D_8038C510.unkC != NULL
|
||||
&& func_8038AD4C(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10)
|
||||
&& chTumblar_isBanjoAbove(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10)
|
||||
){
|
||||
if(!levelSpecificFlags_get(0x2f)){
|
||||
levelSpecificFlags_set(0x2f, TRUE);
|
||||
@@ -265,9 +265,9 @@ void func_8038AA44(void){
|
||||
func_8038A140(4);
|
||||
}
|
||||
else if( MMM_D_8038C510.unkC != NULL
|
||||
&& func_8038AD4C(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10)
|
||||
&& chTumblar_isBanjoAbove(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10)
|
||||
){
|
||||
func_8038AD10(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10, sp28);
|
||||
chTumblar_copyPosition(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10, sp28);
|
||||
tmp_v0 = func_8033F3C0(MMM_D_8038C510.unk0, sp28);
|
||||
if(tmp_v0){
|
||||
sp24 = func_8038A26C(tmp_v0);
|
||||
@@ -286,7 +286,7 @@ void func_8038AA44(void){
|
||||
}//L8038AB7C
|
||||
|
||||
if( MMM_D_8038C510.unk8 == 5
|
||||
&& func_8038AD38(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10)
|
||||
&& chTumblar_isDisappeared(MMM_D_8038C510.unkC, MMM_D_8038C510.unk10)
|
||||
){
|
||||
func_8038A140(6);
|
||||
}
|
||||
|
@@ -3,16 +3,25 @@
|
||||
#include "variables.h"
|
||||
#include <core1/viewport.h>
|
||||
|
||||
/* extern functions */
|
||||
extern void sfxsource_setSampleRate(u8, s32);
|
||||
extern f32 func_80258640(f32[3], f32[3]);
|
||||
extern f32 ml_vec3f_horizontal_distance_zero_likely(f32[3], f32[3]);
|
||||
|
||||
/* data */
|
||||
enum chTumblar_state_e {
|
||||
TUMBLAR_STATE_0_IDLE,
|
||||
TUMBLAR_STATE_1_CONGRATULATING,
|
||||
TUMBLAR_STATE_2_BREAKING,
|
||||
TUMBLAR_STATE_3_DISAPPEARED
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
ActorMarker *unk0;
|
||||
u8 unk4;
|
||||
u8 pad5[3];
|
||||
f32 unk8;
|
||||
f32 unkC[3];
|
||||
}Struct_MMM_47D0_0;
|
||||
ActorMarker *jiggy_marker;
|
||||
u8 state;
|
||||
u8 unused[3];
|
||||
f32 timer;
|
||||
f32 velocity[3];
|
||||
} Struct_MMM_47D0_0;
|
||||
|
||||
/* .code */
|
||||
void MMM_func_8038ABC0(s32 arg0) {
|
||||
@@ -21,172 +30,198 @@ void MMM_func_8038ABC0(s32 arg0) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_8038AC04(void){
|
||||
if((*(u32*)PHYS_TO_K1(0x1D0)) - 0x356BAAAE){
|
||||
void func_8038AC04(void) {
|
||||
if ((*(u32 *) PHYS_TO_K1(0x1D0)) - 0x356BAAAE) {
|
||||
MMM_func_8038ABC0(0x820);
|
||||
}
|
||||
}
|
||||
|
||||
//BREAK???==========
|
||||
void func_8038AC40(Struct_MMM_47D0_0 *arg0, struct struct_68_s *arg1, f32 position[3], f32 rotation[3], f32 scale, BKModelBin *model_bin, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
u8 temp_v0;
|
||||
|
||||
if (arg0->unk4 != 3) {
|
||||
if ((arg0->unk4 == 0) || (arg0->unk4 == 1)) {
|
||||
void chTumblar_draw(Struct_MMM_47D0_0 *arg0, struct struct_68_s *arg1, f32 position[3], f32 rotation[3], f32 scale, BKModelBin *model_bin, Gfx **gfx, Mtx **mtx, Vtx **vtx) {
|
||||
if (arg0->state != TUMBLAR_STATE_3_DISAPPEARED) {
|
||||
if (arg0->state == TUMBLAR_STATE_0_IDLE || arg0->state == TUMBLAR_STATE_1_CONGRATULATING) {
|
||||
modelRender_setAlpha(0xFF);
|
||||
} else if (arg0->unk4 == 2) {
|
||||
modelRender_setAlpha((s32)((1 - ((f64)arg0->unk8 * 1)) * 255.0));
|
||||
}
|
||||
else if (arg0->state == TUMBLAR_STATE_2_BREAKING) {
|
||||
modelRender_setAlpha((s32)((1 - ((f64) arg0->timer * 1)) * 255.0));
|
||||
}
|
||||
|
||||
modelRender_setDepthMode(MODEL_RENDER_DEPTH_FULL);
|
||||
modelRender_draw(gfx, mtx, position, rotation, scale, NULL, model_bin);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8038AD10(s32 arg0, s32 arg1, f32 arg2[3]) {
|
||||
func_8035179C(arg1, arg2);
|
||||
void chTumblar_copyPosition(s32 arg0, s32 arg1, f32 arg2[3]) {
|
||||
func_8035179C_copyPosition(arg1, arg2);
|
||||
}
|
||||
|
||||
bool func_8038AD38(Struct_MMM_47D0_0 *arg0, s32 arg1){
|
||||
return arg0->unk4 == 3;
|
||||
bool chTumblar_isDisappeared(Struct_MMM_47D0_0 *arg0, s32 arg1) {
|
||||
return arg0->state == TUMBLAR_STATE_3_DISAPPEARED;
|
||||
}
|
||||
|
||||
bool func_8038AD4C(s32 arg0, s32 arg1) {
|
||||
bool chTumblar_isBanjoAbove(s32 arg0, s32 arg1) {
|
||||
f32 plyr_pos[3];
|
||||
f32 sp18[3];
|
||||
f32 position[3];
|
||||
|
||||
player_getPosition(plyr_pos);
|
||||
func_8035179C(arg1, sp18);
|
||||
return func_803518D4(arg1)
|
||||
&& (func_80258640(sp18, plyr_pos) < 40.0f)
|
||||
&& (player_getTransformation() == TRANSFORM_1_BANJO)
|
||||
&& (func_8028ECAC() == 0);
|
||||
func_8035179C_copyPosition(arg1, position);
|
||||
|
||||
return func_803518D4(arg1) &&
|
||||
ml_vec3f_horizontal_distance_zero_likely(position, plyr_pos) < 40.0f &&
|
||||
player_getTransformation() == TRANSFORM_1_BANJO &&
|
||||
func_8028ECAC() == 0;
|
||||
}
|
||||
|
||||
void MMM_func_8038ADF0(Struct_MMM_47D0_0 *arg0, Struct68s *arg1) {
|
||||
u8 sp3F;
|
||||
f32 sp38;
|
||||
void chTumblar_init(Struct_MMM_47D0_0 *arg0, Struct68s *arg1) {
|
||||
u8 sfxsource_index;
|
||||
f32 distance_to_jiggy;
|
||||
Actor *jiggy;
|
||||
f32 sp28[3];
|
||||
f32 position[3];
|
||||
|
||||
arg0->state = TUMBLAR_STATE_0_IDLE;
|
||||
arg0->timer = 0.0f;
|
||||
|
||||
arg0->velocity[0] = 0.0f;
|
||||
arg0->velocity[1] = 0.0f;
|
||||
arg0->velocity[2] = 0.0f;
|
||||
|
||||
arg0->unk4 = 0;
|
||||
arg0->unk8 = 0.0f;
|
||||
arg0->unkC[0] = 0.0f;
|
||||
arg0->unkC[1] = 0.0f;
|
||||
arg0->unkC[2] = 0.0f;
|
||||
func_8038AA30(arg0, arg1);
|
||||
func_80351A14(arg1, (Struct68DrawMethod)func_8038AC40);
|
||||
sp3F = func_80351758(arg1);
|
||||
sfxsource_setSfxId(sp3F, SFX_3EC_CCW_DOOR_OPENING);
|
||||
func_8030DD14(sp3F, 3);
|
||||
sfxsource_playSfxAtVolume(sp3F, 0.6f);
|
||||
sfxsource_setSampleRate(sp3F, 0);
|
||||
func_8030E2C4(sp3F);
|
||||
func_8035179C(arg1, sp28);
|
||||
sp38 = 500.0f;
|
||||
jiggy = actorArray_findClosestActorFromActorId(sp28, ACTOR_46_JIGGY, -1, &sp38);
|
||||
func_80351A14(arg1, (Struct68DrawMethod) chTumblar_draw);
|
||||
|
||||
sfxsource_index = func_80351758_getSfxsourceIndex(arg1);
|
||||
sfxsource_setSfxId(sfxsource_index, SFX_3EC_CCW_DOOR_OPENING);
|
||||
func_8030DD14(sfxsource_index, 3);
|
||||
sfxsource_playSfxAtVolume(sfxsource_index, 0.6f);
|
||||
sfxsource_setSampleRate(sfxsource_index, 0);
|
||||
func_8030E2C4(sfxsource_index);
|
||||
|
||||
func_8035179C_copyPosition(arg1, position);
|
||||
distance_to_jiggy = 500.0f;
|
||||
jiggy = actorArray_findClosestActorFromActorId(position, ACTOR_46_JIGGY, -1, &distance_to_jiggy);
|
||||
|
||||
if (jiggy != NULL) {
|
||||
arg0->unk0 = jiggy->marker;
|
||||
} else {
|
||||
arg0->unk0 = NULL;
|
||||
arg0->jiggy_marker = jiggy->marker;
|
||||
}
|
||||
else {
|
||||
arg0->jiggy_marker = NULL;
|
||||
}
|
||||
|
||||
if (arg0->unk0 != NULL) {
|
||||
arg0->unk0->collidable = FALSE;
|
||||
if (arg0->jiggy_marker != NULL) {
|
||||
arg0->jiggy_marker->collidable = FALSE;
|
||||
}
|
||||
|
||||
if (jiggyscore_isCollected(JIGGY_62_MMM_TUMBLAR)) {
|
||||
func_80351A04(arg1, 1);
|
||||
arg0->unk4 = 3;
|
||||
arg0->state = TUMBLAR_STATE_3_DISAPPEARED;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8038AF0C(ActorMarker *marker, enum asset_e text_id, s32 arg2) {
|
||||
mapSpecificFlags_set(MMM_SPECIFIC_FLAG_1_UNKNOWN, TRUE);
|
||||
void __chTumblar_congratulationTextCallback(ActorMarker *marker, enum asset_e text_id, s32 arg2) {
|
||||
mapSpecificFlags_set(MMM_SPECIFIC_FLAG_TUMBLAR_BROKEN, TRUE);
|
||||
}
|
||||
|
||||
void func_8038AF3C(Struct_MMM_47D0_0 *arg0, s32 arg1) {
|
||||
gcdialog_showText(0xADB, 4, NULL, arg0->unk0, func_8038AF0C, NULL);
|
||||
arg0->unk4 = 1;
|
||||
void chTumblar_congratulate(Struct_MMM_47D0_0 *arg0, s32 arg1) {
|
||||
gcdialog_showText(ASSET_ADB_TEXT_UNKNOWN, 4, NULL, arg0->jiggy_marker, __chTumblar_congratulationTextCallback, NULL);
|
||||
arg0->state = TUMBLAR_STATE_1_CONGRATULATING;
|
||||
}
|
||||
|
||||
void func_8038AF90(Struct_MMM_47D0_0 *arg0, Struct68s *arg1, f32 arg2) {
|
||||
f32 sp7C[3];
|
||||
f32 sp70[3];
|
||||
f32 sp64[3];
|
||||
Actor *temp_v0_2;
|
||||
f32 sp54[3];
|
||||
f32 sp48[3];
|
||||
f32 sp40[2];
|
||||
s32 sp3C;
|
||||
u8 sp38;
|
||||
void chTumblar_update(Struct_MMM_47D0_0 *arg0, Struct68s *arg1, f32 tick) {
|
||||
f32 viewport_position[3];
|
||||
f32 viewport_rotation[3];
|
||||
f32 direction[3];
|
||||
Actor *jiggy;
|
||||
f32 position[3];
|
||||
f32 plyr_pos[3];
|
||||
f32 joystick[2];
|
||||
s32 is_banjo_above;
|
||||
u8 sfxsource_index;
|
||||
|
||||
arg0->timer += tick;
|
||||
|
||||
arg0->unk8 += arg2;
|
||||
if (arg0->unk4 == 0) {
|
||||
func_8035179C(arg1, sp54);
|
||||
func_8024E71C(0, sp40);
|
||||
sp3C = func_8038AD4C(arg0, arg1);
|
||||
if (sp3C) {
|
||||
if (arg0->state == TUMBLAR_STATE_0_IDLE) {
|
||||
func_8035179C_copyPosition(arg1, position);
|
||||
controller_getJoystick(0, joystick);
|
||||
is_banjo_above = chTumblar_isBanjoAbove(arg0, arg1);
|
||||
|
||||
if (is_banjo_above) {
|
||||
func_8028F66C(BS_INTR_D_SURF);
|
||||
}
|
||||
if (sp3C && ((sp40[0] != 0.0f) || (sp40[1] != 0.0f))) {
|
||||
viewport_getRotation_vec3f(sp70);
|
||||
sp64[0] = sp40[0];
|
||||
sp64[1] = 0.0f;
|
||||
sp64[2] = -sp40[1];
|
||||
ml_vec3f_yaw_rotate_copy(sp64, sp64, sp70[1]);
|
||||
arg0->unkC[0] += sp64[0] * 2500.0f * arg2;
|
||||
arg0->unkC[2] += sp64[2] * 2500.0f * arg2;
|
||||
} else {
|
||||
arg0->unkC[0] *= 0.7;
|
||||
arg0->unkC[2] *= 0.7;
|
||||
|
||||
if (is_banjo_above && (joystick[0] != 0.0f || joystick[1] != 0.0f)) {
|
||||
viewport_getRotation_vec3f(viewport_rotation);
|
||||
|
||||
direction[0] = joystick[0];
|
||||
direction[1] = 0.0f;
|
||||
direction[2] = -joystick[1];
|
||||
|
||||
ml_vec3f_yaw_rotate_copy(direction, direction, viewport_rotation[1]);
|
||||
arg0->velocity[0] += direction[0] * 2500.0f * tick;
|
||||
arg0->velocity[2] += direction[2] * 2500.0f * tick;
|
||||
}
|
||||
if (LENGTH_VEC3F(arg0->unkC) > 400.0f) {
|
||||
ml_vec3f_set_length(arg0->unkC, 400.0f);
|
||||
else {
|
||||
arg0->velocity[0] *= 0.7;
|
||||
arg0->velocity[2] *= 0.7;
|
||||
}
|
||||
sp54[0] += arg0->unkC[0] * arg2;
|
||||
sp54[2] += arg0->unkC[2] * arg2;
|
||||
func_80351B28(arg1, sp54);
|
||||
func_8035179C(arg1, sp54);
|
||||
if (arg0->unk0 != NULL) {
|
||||
viewport_getPosition_vec3f(sp7C);
|
||||
sp64[0] = sp54[0] - sp7C[0];
|
||||
sp64[2] = sp54[2] - sp7C[2];
|
||||
sp64[1] = 0.0f;
|
||||
ml_vec3f_normalize(sp64);
|
||||
temp_v0_2 = marker_getActor(arg0->unk0);
|
||||
temp_v0_2->position[0] = sp54[0] + (sp64[0] * 20.0f);
|
||||
temp_v0_2->position[2] = sp54[2] + (sp64[2] * 20.0f);
|
||||
|
||||
if (LENGTH_VEC3F(arg0->velocity) > 400.0f) {
|
||||
ml_vec3f_set_length(arg0->velocity, 400.0f);
|
||||
}
|
||||
} else if (arg0->unk4 == 2) {
|
||||
if (arg0->unk8 >= 1.0f) {
|
||||
arg0->unk4 = 3U;
|
||||
if (arg0->unk0 != NULL) {
|
||||
arg0->unk0->collidable = TRUE;
|
||||
|
||||
position[0] += arg0->velocity[0] * tick;
|
||||
position[2] += arg0->velocity[2] * tick;
|
||||
|
||||
func_80351B28(arg1, position);
|
||||
func_8035179C_copyPosition(arg1, position);
|
||||
|
||||
if (arg0->jiggy_marker != NULL) {
|
||||
viewport_getPosition_vec3f(viewport_position);
|
||||
|
||||
direction[0] = position[0] - viewport_position[0];
|
||||
direction[2] = position[2] - viewport_position[2];
|
||||
direction[1] = 0.0f;
|
||||
ml_vec3f_normalize(direction);
|
||||
|
||||
jiggy = marker_getActor(arg0->jiggy_marker);
|
||||
jiggy->position[0] = position[0] + (direction[0] * 20.0f);
|
||||
jiggy->position[2] = position[2] + (direction[2] * 20.0f);
|
||||
}
|
||||
}
|
||||
else if (arg0->state == TUMBLAR_STATE_2_BREAKING) {
|
||||
if (arg0->timer >= 1.0f) {
|
||||
arg0->state = TUMBLAR_STATE_3_DISAPPEARED;
|
||||
|
||||
if (arg0->jiggy_marker != NULL) {
|
||||
arg0->jiggy_marker->collidable = TRUE;
|
||||
}
|
||||
|
||||
func_80351A04(arg1, 1);
|
||||
}
|
||||
arg0->unkC[0] *= 0.7;
|
||||
arg0->unkC[2] *= 0.7;
|
||||
|
||||
arg0->velocity[0] *= 0.7;
|
||||
arg0->velocity[2] *= 0.7;
|
||||
}
|
||||
if (arg0->unk4 == 1) {
|
||||
sp38 = func_80351758(arg1);
|
||||
sfxsource_setSampleRate(sp38, 0);
|
||||
} else {
|
||||
sp38 = func_80351758(arg1);
|
||||
sfxsource_setSampleRate(sp38, (s32) ((LENGTH_VEC3F(arg0->unkC) / 400.0) * 15000.0));
|
||||
|
||||
if (arg0->state == TUMBLAR_STATE_1_CONGRATULATING) {
|
||||
sfxsource_index = func_80351758_getSfxsourceIndex(arg1);
|
||||
sfxsource_setSampleRate(sfxsource_index, 0);
|
||||
}
|
||||
player_getPosition(sp48);
|
||||
func_8035179C(arg1, sp54);
|
||||
if (!mapSpecificFlags_get(MMM_SPECIFIC_FLAG_0_UNKNOWN) && (arg0->unk4 == 0) && (func_80258640(sp54, sp48) < 250.0f)){
|
||||
if(gcdialog_showText(0xADA, 0, NULL, NULL, NULL, NULL)) {
|
||||
else {
|
||||
sfxsource_index = func_80351758_getSfxsourceIndex(arg1);
|
||||
sfxsource_setSampleRate(sfxsource_index, (s32)((LENGTH_VEC3F(arg0->velocity) / 400.0) * 15000.0));
|
||||
}
|
||||
|
||||
player_getPosition(plyr_pos);
|
||||
func_8035179C_copyPosition(arg1, position);
|
||||
|
||||
if (!mapSpecificFlags_get(MMM_SPECIFIC_FLAG_0_UNKNOWN) && arg0->state == TUMBLAR_STATE_0_IDLE && ml_vec3f_horizontal_distance_zero_likely(position, plyr_pos) < 250.0f) {
|
||||
if (gcdialog_showText(ASSET_ADA_TEXT_UNKNOWN, 0, NULL, NULL, NULL, NULL)) {
|
||||
mapSpecificFlags_set(0, TRUE);
|
||||
}
|
||||
}
|
||||
if ((arg0->unk4 == 1) && mapSpecificFlags_get(MMM_SPECIFIC_FLAG_1_UNKNOWN)) {
|
||||
arg0->unk4 = 2U;
|
||||
arg0->unk8 = 0.0f;
|
||||
mapSpecificFlags_set(MMM_SPECIFIC_FLAG_1_UNKNOWN, FALSE);
|
||||
FUNC_8030E8B4(SFX_11B_TUMBLAR_DISAPPEARING_1, 1.0f, 30000, sp54, 500, 2500);
|
||||
|
||||
if (arg0->state == TUMBLAR_STATE_1_CONGRATULATING && mapSpecificFlags_get(MMM_SPECIFIC_FLAG_TUMBLAR_BROKEN)) {
|
||||
arg0->state = TUMBLAR_STATE_2_BREAKING;
|
||||
arg0->timer = 0.0f;
|
||||
mapSpecificFlags_set(MMM_SPECIFIC_FLAG_TUMBLAR_BROKEN, FALSE);
|
||||
FUNC_8030E8B4(SFX_11B_TUMBLAR_DISAPPEARING_1, 1.0f, 30000, position, 500, 2500);
|
||||
}
|
||||
}
|
||||
|
@@ -74,7 +74,7 @@ void func_8038B630(Struct5Fs *arg0, Struct68s *arg1){
|
||||
f32 sp20;
|
||||
|
||||
sp20 = alCents2Ratio(func_80389BBC()*100);
|
||||
phi_s0 = func_80351758(arg1);
|
||||
phi_s0 = func_80351758_getSfxsourceIndex(arg1);
|
||||
func_8030E394(phi_s0);
|
||||
sfxsource_playSfxAtVolume(phi_s0, sp20);
|
||||
sfxsource_setSfxId(phi_s0, 0x3f3);
|
||||
@@ -118,7 +118,7 @@ void func_8038B790(Struct5Fs *arg0, Struct68s *arg1, f32 arg2) {
|
||||
if (arg0->unk14 <= 0.0f) {
|
||||
func_80351954(arg1);
|
||||
} else if (arg0->unk14 <= 1.0f) {
|
||||
sfxsource_setSampleRate(func_80351758(arg1), (s32)(arg0->unk14 * 32767.0f));
|
||||
sfxsource_setSampleRate(func_80351758_getSfxsourceIndex(arg1), (s32)(arg0->unk14 * 32767.0f));
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -149,7 +149,7 @@ void func_8024E6E0(s32 controller_index, s32 *dst[4]){
|
||||
dst[3] = D_80281138[controller_index].unk24[3];
|
||||
}
|
||||
|
||||
void func_8024E71C(s32 controller_index, f32 dst[2]){
|
||||
void controller_getJoystick(s32 controller_index, f32 dst[2]){
|
||||
if(func_802E4A08()){
|
||||
dst[0] = D_80281250[controller_index].joystick[0];
|
||||
dst[1] = D_80281250[controller_index].joystick[1];
|
||||
|
@@ -345,14 +345,12 @@ void ml_vec3f_roll_rotate_copy(f32 dst[3], f32 src[3], f32 roll)
|
||||
dst[0] = val;
|
||||
}
|
||||
|
||||
void ml_vec3f_set_length(f32 arg0[3], f32 arg1)
|
||||
{
|
||||
f32 length = LENGTH_VEC3F(arg0);
|
||||
void ml_vec3f_set_length(f32 vec[3], f32 length) {
|
||||
f32 vec_length = LENGTH_VEC3F(vec);
|
||||
|
||||
if (length != 0)
|
||||
{
|
||||
f32 inv_length = arg1 / length;
|
||||
TUPLE_SCALE_COPY(arg0, arg0, inv_length)
|
||||
if (vec_length != 0) {
|
||||
f32 inv_length = length / vec_length;
|
||||
TUPLE_SCALE_COPY(vec, vec, inv_length)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -942,14 +940,13 @@ int func_802585E0(s32 vec[3], s32 minX, s32 minY, s32 minZ, s32 maxX, s32 maxY,
|
||||
&& vec[2] > minZ && vec[2] < maxZ;
|
||||
}
|
||||
|
||||
//ml_vec3f_horizontal_distance_zero_likely
|
||||
f32 func_80258640(f32 vec1[3], f32 vec2[3])
|
||||
{
|
||||
f32 ml_vec3f_horizontal_distance_zero_likely(f32 vec1[3], f32 vec2[3]) {
|
||||
f32 dX = vec1[0] - vec2[0];
|
||||
f32 dZ = vec1[2] - vec2[2];
|
||||
|
||||
if (dX != 0 || dZ != 0)
|
||||
if (dX != 0 || dZ != 0) {
|
||||
return gu_sqrtf(_SQ2(dX, dZ));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -14,7 +14,7 @@ void func_802409C0(f32 arg0[3], f32 arg1){
|
||||
f32 dt;
|
||||
|
||||
dt = time_getDelta()*arg1;
|
||||
func_8024E71C(0, sp28);
|
||||
controller_getJoystick(0, sp28);
|
||||
|
||||
sp30[0] = sp28[0] * dt;
|
||||
sp30[1] = 0.0f;
|
||||
@@ -46,7 +46,7 @@ void func_80240AC8(f32 arg0[3], f32 arg1){
|
||||
f32 dt;
|
||||
|
||||
dt = time_getDelta()*arg1;
|
||||
func_8024E71C(0, sp28);
|
||||
controller_getJoystick(0, sp28);
|
||||
|
||||
if(0.0f != sp28[0] || 0.0f != sp28[1]){
|
||||
D_80275860++;
|
||||
|
@@ -5,7 +5,7 @@
|
||||
|
||||
void func_802D77D4(Actor *this);
|
||||
extern void player_setClimbParams(f32[3], f32[3], f32, u32);
|
||||
extern f32 func_80258640(f32[3], f32[3]);
|
||||
extern f32 ml_vec3f_horizontal_distance_zero_likely(f32[3], f32[3]);
|
||||
|
||||
typedef struct {
|
||||
f32 unk0[3];
|
||||
@@ -40,8 +40,8 @@ s32 func_802D76E0(Actor *this, f32 *arg1) {
|
||||
return FALSE;
|
||||
}
|
||||
if (sp28 && temp_v0) {
|
||||
sp30 = func_80258640(this->position, sp40);
|
||||
if (func_80258640(this->position, sp34) < sp30) {
|
||||
sp30 = ml_vec3f_horizontal_distance_zero_likely(this->position, sp40);
|
||||
if (ml_vec3f_horizontal_distance_zero_likely(this->position, sp34) < sp30) {
|
||||
sp28 = 0;
|
||||
}
|
||||
}
|
||||
|
@@ -26,7 +26,7 @@ extern void warp_smExitBanjosHouse(s32, s32);
|
||||
extern void func_80335110(s32);
|
||||
|
||||
extern void func_8024E60C(s32, s32[3]);
|
||||
extern void func_8024E71C(s32, f32*);
|
||||
extern void controller_getJoystick(s32, f32*);
|
||||
|
||||
extern char *gcpausemenu_TimeToA(int);
|
||||
extern struct5Bs *func_803097A0(void);
|
||||
@@ -334,7 +334,7 @@ void func_802C4C14(Actor *this){
|
||||
else{//L802C4D24
|
||||
func_8024E60C(0, sp74);
|
||||
func_8024E55C(0, sp5C);
|
||||
func_8024E71C(0, &sp54);
|
||||
controller_getJoystick(0, &sp54);
|
||||
switch(this->state){
|
||||
case 2:
|
||||
case 5:
|
||||
|
@@ -3,7 +3,7 @@
|
||||
#include "variables.h"
|
||||
#include <core1/viewport.h>
|
||||
|
||||
extern void func_8024E71C(s32, f32*);
|
||||
extern void controller_getJoystick(s32, f32*);
|
||||
extern f32 ml_acosf(f32);
|
||||
extern f32 player_getYaw(void);
|
||||
extern void particleEmitter_setSphericalParticleVelocityRange(ParticleEmitter *this, f32 pitch_min, f32 yaw_min, f32 radial_min, f32 pitch_max, f32 yaw_max, f32 radial_max);
|
||||
@@ -79,7 +79,7 @@ void func_8029B11C(void) {
|
||||
}
|
||||
|
||||
void func_8029B174(void) {
|
||||
func_8024E71C(0, &D_8037D1A0.unk1C);
|
||||
controller_getJoystick(0, &D_8037D1A0.unk1C);
|
||||
if (D_8037D1A0.unk34) {
|
||||
D_8037D1A0.unk1C[0] = D_8037D1A0.unk1C[1] = 0.0f;
|
||||
}
|
||||
|
@@ -7,7 +7,7 @@
|
||||
#include "core2/ba/physics.h"
|
||||
#include <core1/viewport.h>
|
||||
|
||||
extern void func_8024E71C(s32, f32*);
|
||||
extern void controller_getJoystick(s32, f32*);
|
||||
extern f32 ml_acosf(f32);
|
||||
extern f32 player_getYaw(void);
|
||||
extern void particleEmitter_setSphericalParticleVelocityRange(ParticleEmitter *this, f32 pitch_min, f32 yaw_min, f32 radial_min, f32 pitch_max, f32 yaw_max, f32 radial_max);
|
||||
|
@@ -4,7 +4,7 @@
|
||||
|
||||
#include "SnS.h"
|
||||
|
||||
extern f32 func_80258640(f32 [3], f32[3]);
|
||||
extern f32 ml_vec3f_horizontal_distance_zero_likely(f32 [3], f32[3]);
|
||||
extern void func_8025A788(enum comusic_e, f32, f32);
|
||||
extern void func_8031CC40(enum map_e, s32);
|
||||
extern void fxRipple_802F363C(f32);
|
||||
@@ -565,13 +565,13 @@ void func_802D4680(Actor *this){
|
||||
player_getPosition(sp1C);
|
||||
switch(this->state){
|
||||
case 0:
|
||||
if(150.0f < func_80258640(this->position, sp1C)){
|
||||
if(150.0f < ml_vec3f_horizontal_distance_zero_likely(this->position, sp1C)){
|
||||
subaddie_set_state(this, 1);
|
||||
D_803676AC = 0;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if(func_80258640(this->position, sp1C) < 150.0f && func_8028F20C()){
|
||||
if(ml_vec3f_horizontal_distance_zero_likely(this->position, sp1C) < 150.0f && func_8028F20C()){
|
||||
if(func_8028ECAC() == 0 || func_8028ECAC() == BSGROUP_8_TROT){
|
||||
if(map_get() == MAP_8E_GL_FURNACE_FUN){
|
||||
volatileFlag_set(VOLATILE_FLAG_0_IN_FURNACE_FUN_QUIZ, 0);
|
||||
|
@@ -626,7 +626,7 @@ s32 getGameMode(void){
|
||||
|
||||
int func_802E4A08(void){
|
||||
return (D_8037E8E0.game_mode == GAME_MODE_6_FILE_PLAYBACK)
|
||||
|| (D_8037E8E0.game_mode == 5)
|
||||
|| (D_8037E8E0.game_mode == GAME_MODE_5_UNKNOWN)
|
||||
|| (D_8037E8E0.game_mode == GAME_MODE_7_ATTRACT_DEMO)
|
||||
|| (D_8037E8E0.game_mode == GAME_MODE_8_BOTTLES_BONUS)
|
||||
|| (D_8037E8E0.game_mode == GAME_MODE_9_BANJO_AND_KAZOOIE)
|
||||
|
@@ -488,7 +488,7 @@ void func_80319EA4(void) {
|
||||
return;
|
||||
|
||||
func_8024E55C(0, sp58);
|
||||
func_8024E71C(0, sp4C);
|
||||
controller_getJoystick(0, sp4C);
|
||||
for(phi_s0 = 0; phi_s0 < 4; phi_s0++){
|
||||
gczoombox_update(D_803830E0->unk24[phi_s0]);
|
||||
}
|
||||
|
@@ -41,7 +41,7 @@ Struct_Core2_C9F00_1 D_803725C0[] = {
|
||||
|
||||
|
||||
void func_80351DE0(Struct6Bs *, Struct68s *);
|
||||
extern void MMM_func_8038ADF0(void *, Struct68s *);
|
||||
extern void chTumblar_init(void *, Struct68s *);
|
||||
extern void func_80387940(void *, Struct68s *);
|
||||
extern void GV_func_80387960(void *, Struct68s *);
|
||||
extern void func_80387980(void *, Struct68s *);
|
||||
@@ -53,7 +53,7 @@ extern void CC_func_80387A20(void *, Struct68s *);
|
||||
extern void func_80351FE0(void *, Struct68s *);
|
||||
|
||||
void func_80351E60(Struct6Bs *, Struct68s *, f32);
|
||||
extern void func_8038AF90(void *, Struct68s *, f32);
|
||||
extern void chTumblar_update(void *, Struct68s *, f32);
|
||||
extern void func_8038B790(void *, Struct68s *, f32);
|
||||
extern void CCW_func_80387A40(void *, Struct68s *, f32);
|
||||
extern void func_80352114(void *, Struct68s *, f32);
|
||||
@@ -61,7 +61,7 @@ extern void func_80352114(void *, Struct68s *, f32);
|
||||
Struct_Core2_C9F00_0 D_803725F4[] = {
|
||||
{ NULL, NULL},
|
||||
{func_80351DE0, func_80351E60},
|
||||
{MMM_func_8038ADF0, func_8038AF90},
|
||||
{chTumblar_init, chTumblar_update},
|
||||
{ NULL, NULL},
|
||||
{ NULL, func_8038B790},
|
||||
{func_80387940, CCW_func_80387A40},
|
||||
@@ -280,10 +280,11 @@ bool func_80351724(void * arg0){
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
s32 func_80351758(Struct68s *arg0){
|
||||
if(arg0->unk0 == 0){
|
||||
s32 func_80351758_getSfxsourceIndex(Struct68s *arg0) {
|
||||
if (arg0->unk0 == NULL) {
|
||||
arg0->unk0 = sfxsource_createSfxsourceAndReturnIndex();
|
||||
}
|
||||
|
||||
return arg0->unk0;
|
||||
}
|
||||
|
||||
@@ -291,8 +292,8 @@ ActorMarker *func_80351794(Struct68s *arg0){
|
||||
return arg0->unk4;
|
||||
}
|
||||
|
||||
void func_8035179C(Struct68s* arg0, f32 arg1[3]) {
|
||||
TUPLE_COPY(arg1, arg0->position)
|
||||
void func_8035179C_copyPosition(Struct68s* arg0, f32 position[3]) {
|
||||
TUPLE_COPY(position, arg0->position)
|
||||
}
|
||||
|
||||
void * func_803517B8(s32 arg0){
|
||||
@@ -473,7 +474,7 @@ void func_80351DE0(Struct6Bs *arg0, Struct68s *arg1) {
|
||||
arg0->unk0 = randf2(80.0f, 100.0f);
|
||||
arg0->unk4[0] = arg0->unk4[1] = arg0->unk4[2] = 0.0f;
|
||||
arg0->unk10[0] = arg0->unk10[1] = arg0->unk10[2] = 0.0f;
|
||||
func_8035179C(arg1, arg0->unk1C);
|
||||
func_8035179C_copyPosition(arg1, arg0->unk1C);
|
||||
func_80351814(arg1, arg0->unk28);
|
||||
arg0->unk34 = 0.0f;
|
||||
}
|
||||
|
@@ -32,7 +32,7 @@ void func_80351FE0(Struct_core2_CB050_0 *arg0, Struct68s *arg1) {
|
||||
arg0->unk28[0] = arg0->unk28[1] = arg0->unk28[2] = 0.0f;
|
||||
arg0->unk34[0] = arg0->unk34[1] = arg0->unk34[2] = 0.0f;
|
||||
arg0->unk40[0] = arg0->unk40[1] = arg0->unk40[2] = 0.0f;
|
||||
func_8035179C(arg1, arg0->unk4C);
|
||||
func_8035179C_copyPosition(arg1, arg0->unk4C);
|
||||
func_80351814(arg1, arg0->unk58);
|
||||
arg0->unk64 = 0.0f;
|
||||
arg0->unk6C = 0;
|
||||
|
@@ -33,7 +33,7 @@ void func_80310D2C(void);
|
||||
s32 level_get(void);
|
||||
void func_8024E6E0(s32, void *);
|
||||
void func_8024E60C(s32, void *);
|
||||
void func_8024E71C(s32, void *);
|
||||
void controller_getJoystick(s32, void *);
|
||||
s32 getGameMode(void);
|
||||
|
||||
void func_802DC5B8(void);
|
||||
@@ -937,7 +937,7 @@ s32 gcPauseMenu_update(void) {
|
||||
}
|
||||
|
||||
func_8024E55C(0, face_button);
|
||||
func_8024E71C(0, joystick);
|
||||
controller_getJoystick(0, joystick);
|
||||
func_8024E60C(0, sp60);
|
||||
func_8024E6E0(0, sp50);
|
||||
func_80310D2C();
|
||||
|
@@ -2,7 +2,7 @@
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_80258640(f32[3], f32[3]);
|
||||
extern f32 ml_vec3f_horizontal_distance_zero_likely(f32[3], f32[3]);
|
||||
|
||||
typedef struct {
|
||||
s32 unk0;
|
||||
@@ -124,7 +124,7 @@ void chBrentilda_update(Actor *this) {
|
||||
player_getPosition(sp64);
|
||||
temp_f0 = sp64[1] - this->position[1];
|
||||
if ((temp_f0 > -100.0f) && (temp_f0 < 350.0f)) {
|
||||
phi_f2 = func_80258640(sp64, this->position);
|
||||
phi_f2 = ml_vec3f_horizontal_distance_zero_likely(sp64, this->position);
|
||||
} else {
|
||||
phi_f2 = 2000.0f;
|
||||
}
|
||||
|
Reference in New Issue
Block a user