The first commit
This commit is contained in:
351
src/core2/animctrl.c
Normal file
351
src/core2/animctrl.c
Normal file
@@ -0,0 +1,351 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
#include "core2/animctrl.h"
|
||||
#include "animation.h"
|
||||
|
||||
extern u32 D_A0000238;
|
||||
|
||||
/* .code */
|
||||
void animctrl_80286F90(AnimCtrl *this){
|
||||
Animation *anim;
|
||||
f32 duration;
|
||||
|
||||
if(this->smooth_transition){
|
||||
anim = animctrl_getAnimPtr(this);
|
||||
duration = anim_getDuration(anim);
|
||||
if( duration < 1.0f ){
|
||||
anim_setDuration(anim, min_f(1.0f, time_getDelta()/animctrl_getTransistionDuration(this) + duration));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void __animctrl_update_looped(AnimCtrl *this){
|
||||
Animation *anim;
|
||||
f32 delta;
|
||||
f32 tmp;
|
||||
|
||||
anim = animctrl_getAnimPtr(this);
|
||||
animctrl_80286F90(this);
|
||||
this->timer = anim_getTimer(anim);
|
||||
delta = time_getDelta() / animctrl_getDuration(this);
|
||||
if(this->playback_direction == 0){
|
||||
delta = -delta;
|
||||
}
|
||||
tmp = this->timer + delta;
|
||||
if(tmp < 0.0f){
|
||||
tmp += 1.0f;
|
||||
}
|
||||
tmp -= (f32)(s32)tmp;//0.0f to 1.0f
|
||||
anim_setTimer(anim, tmp);
|
||||
}
|
||||
|
||||
void func_802870E0(AnimCtrl *this){
|
||||
Animation *anim;
|
||||
f32 delta;
|
||||
f32 tmpf14;
|
||||
f32 f_range;
|
||||
f32 f_percent;
|
||||
|
||||
anim = animctrl_getAnimPtr(this);
|
||||
animctrl_80286F90(this);
|
||||
this->timer = anim_getTimer(anim);;
|
||||
delta = time_getDelta() / animctrl_getDuration(this);
|
||||
if(this->playback_direction == 0){
|
||||
delta = -delta;
|
||||
}
|
||||
tmpf14 = this->timer + delta;
|
||||
if(this->subrange_end <= tmpf14){
|
||||
f_range = this->subrange_end - this->subrange_start;
|
||||
f_percent = (tmpf14 - this->subrange_start)/f_range;
|
||||
tmpf14 = this->subrange_start + (f_percent - (f32)(s32)f_percent)*f_range;
|
||||
}
|
||||
anim_setTimer(anim, tmpf14);
|
||||
}
|
||||
|
||||
void func_802871A4(AnimCtrl *this){
|
||||
Animation *anim;
|
||||
f32 phi_f0;
|
||||
f32 phi_f2;
|
||||
|
||||
|
||||
anim = animctrl_getAnimPtr(this);
|
||||
animctrl_80286F90(this);
|
||||
this->timer = anim_getTimer(anim);
|
||||
phi_f2 = time_getDelta() / animctrl_getDuration(this);
|
||||
if (this->playback_direction == 0) {
|
||||
phi_f2 = -phi_f2;
|
||||
}
|
||||
phi_f0 = this->timer + phi_f2;
|
||||
|
||||
|
||||
if (phi_f0 < 0.0f) {
|
||||
phi_f0 = 0.0f;
|
||||
animctrl_setPlaybackType(this, ANIMCTRL_STOPPED);
|
||||
|
||||
} else {
|
||||
if ((this->subrange_end < phi_f0) || (0.999999 < (f64) phi_f0)) {
|
||||
if(this->subrange_end < phi_f0)
|
||||
phi_f0 = this->subrange_end;
|
||||
if(0.999999 < (f64) phi_f0)
|
||||
phi_f0 = 0.9999989867210388f; // D_80373E00
|
||||
animctrl_setPlaybackType(this, ANIMCTRL_STOPPED);
|
||||
} else {
|
||||
phi_f0 = phi_f0 - (f32) (s32) phi_f0;
|
||||
}
|
||||
}
|
||||
anim_setTimer(anim, phi_f0);
|
||||
}
|
||||
|
||||
AnimCtrl *animctrl_new(s32 arg0){ //new
|
||||
ActorAnimCtrl *this;
|
||||
|
||||
this = (ActorAnimCtrl *)malloc( func_80289680() + 0x28);
|
||||
this->animctrl.animation = &this->animation;
|
||||
func_802896EC(&this->animation, 1);
|
||||
this->animctrl.playback_type = 0;
|
||||
this->animctrl.index = 0;
|
||||
this->animctrl.unk25 = 1;
|
||||
this->animctrl.timer = 0.0f;
|
||||
this->animctrl.unk18 = 0.0f;
|
||||
func_80287784(&this->animctrl, func_8030C77C());
|
||||
animctrl_setSubRange(&this->animctrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(&this->animctrl, 2.0f);
|
||||
animctrl_setTransitionDuration(&this->animctrl, 0.2f);
|
||||
animctrl_setSmoothTransition(&this->animctrl, 1);
|
||||
animctrl_setDirection(&this->animctrl, mvmt_dir_forwards);
|
||||
return &this->animctrl;
|
||||
}
|
||||
|
||||
void animctrl_free(AnimCtrl * this){ //free
|
||||
func_802896A0(this->animation);
|
||||
free(this);
|
||||
}
|
||||
|
||||
void animctrl_update(AnimCtrl *this){//update
|
||||
switch (this->playback_type)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case ANIMCTRL_ONCE: //once
|
||||
func_802871A4(this);
|
||||
break;
|
||||
case ANIMCTRL_LOOP: //loop
|
||||
__animctrl_update_looped(this);
|
||||
break;
|
||||
case ANIMCTRL_SUBRANGE_LOOP:
|
||||
func_802870E0(this);
|
||||
break;
|
||||
case ANIMCTRL_STOPPED: //stopped
|
||||
animctrl_80286F90(this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
AnimCtrl *animctrl_defrag(AnimCtrl *this){ //realloc
|
||||
ActorAnimCtrl *full_struct;
|
||||
full_struct = (ActorAnimCtrl *)defrag(this);
|
||||
full_struct->animctrl.animation = &full_struct->animation;
|
||||
return &full_struct->animctrl;
|
||||
}
|
||||
|
||||
void animctrl_setIndex(AnimCtrl *this, enum asset_e index){
|
||||
this->index = index;
|
||||
}
|
||||
|
||||
Animation *animctrl_getAnimPtr(AnimCtrl *this){
|
||||
return this->animation;
|
||||
}
|
||||
|
||||
void func_8028746C(AnimCtrl *this, void (* arg1)(s32,s32)){
|
||||
anim_80289790(this->animation, arg1);
|
||||
}
|
||||
|
||||
void func_8028748C(AnimCtrl *this, s32 arg1){
|
||||
anim_80289798(this->animation, arg1);
|
||||
}
|
||||
|
||||
void animctrl_reset(AnimCtrl *this){
|
||||
this->playback_type = ANIMCTRL_LOOP;
|
||||
this->unk25 = 1;
|
||||
this->timer = 0.0;
|
||||
this->unk18 = 0.0;
|
||||
animctrl_setSmoothTransition(this, 1);
|
||||
animctrl_setSubRange(this, 0.0, 1.0);
|
||||
animctrl_setDuration(this, 2.0);
|
||||
animctrl_setTransitionDuration(this, 0.2);
|
||||
animctrl_setDirection(this, mvmt_dir_forwards);
|
||||
}
|
||||
|
||||
void func_8028752C(AnimCtrl *this){
|
||||
if(this->unk25){
|
||||
if(this->playback_direction)
|
||||
anim_setTimer(this->animation, 0.0f);
|
||||
else
|
||||
anim_setTimer(this->animation, 0.99999899f);
|
||||
}
|
||||
else
|
||||
anim_setTimer(this->animation, this->unk18);
|
||||
this->timer = anim_getTimer(this->animation);
|
||||
}
|
||||
|
||||
void _func_802875AC(AnimCtrl * this, char *file, s32 line){
|
||||
if(this->smooth_transition && anim_getIndex(this->animation) != 0){
|
||||
func_80289674(this->animation);
|
||||
anim_setIndex(this->animation, this->index);
|
||||
func_8028752C(this);
|
||||
anim_setDuration(this->animation, 0.0f);
|
||||
} else{
|
||||
anim_8028980C(this->animation);
|
||||
anim_setIndex(this->animation, this->index);
|
||||
func_8028752C(this);
|
||||
anim_setDuration(this->animation, 1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
void animctrl_setAnimTimer(AnimCtrl *this, f32 timer){
|
||||
anim_setTimer(this->animation, timer);
|
||||
}
|
||||
|
||||
void animctrl_setPlaybackType(AnimCtrl *this, enum animctrl_playback_e arg1){
|
||||
this->playback_type = arg1;
|
||||
}
|
||||
|
||||
void animctrl_setDirection(AnimCtrl *this, s32 arg1){
|
||||
this->playback_direction = arg1;
|
||||
}
|
||||
|
||||
void animctrl_setSmoothTransition(AnimCtrl *this, s32 arg1){
|
||||
this->smooth_transition = arg1;
|
||||
}
|
||||
|
||||
void animctrl_setDuration(AnimCtrl *this, f32 arg1){
|
||||
if(IO_READ(0x238) - 0x10000003){
|
||||
arg1 += 3.0f;
|
||||
}
|
||||
this->animation_duration = arg1;
|
||||
}
|
||||
|
||||
void animctrl_setTransitionDuration(AnimCtrl *this, f32 arg1){
|
||||
this->transition_duration = arg1;
|
||||
}
|
||||
|
||||
void animctrl_setSubRange(AnimCtrl *this, f32 start, f32 end){
|
||||
this->subrange_start = start - (f32)(s32)start;
|
||||
this->subrange_end = (end != 1.0)? end - (f32)(s32)end : end;
|
||||
|
||||
}
|
||||
|
||||
void animctrl_getSubRange(AnimCtrl *this, f32 *startPtr, f32 *endPtr){
|
||||
*startPtr = this->subrange_start;
|
||||
*endPtr = this->subrange_end;
|
||||
}
|
||||
|
||||
void func_8028774C(AnimCtrl *this, f32 arg1){
|
||||
if(arg1 == 1.0)
|
||||
arg1 = 0.9999989867210388f; // D_80373E18
|
||||
|
||||
this->unk18 = arg1;
|
||||
this->unk25 = 0;
|
||||
}
|
||||
|
||||
void func_80287784(AnimCtrl *this, s32 arg1){
|
||||
this->unk23 = arg1;
|
||||
this->unk24 = 0;
|
||||
}
|
||||
|
||||
enum asset_e animctrl_getIndex(AnimCtrl *this){
|
||||
return anim_getIndex(this->animation);
|
||||
}
|
||||
|
||||
enum animctrl_playback_e animctrl_getPlaybackType(AnimCtrl *this){
|
||||
return this->playback_type;
|
||||
}
|
||||
|
||||
s32 animctrl_isPlayedForwards(AnimCtrl *this){
|
||||
return this->playback_direction;
|
||||
}
|
||||
|
||||
s32 animctrl_isSmoothTransistion(AnimCtrl *this){
|
||||
return this->smooth_transition;
|
||||
}
|
||||
|
||||
f32 animctrl_getDuration(AnimCtrl *this){
|
||||
return this->animation_duration;
|
||||
}
|
||||
|
||||
f32 animctrl_getTransistionDuration(AnimCtrl *this){
|
||||
return this->transition_duration;
|
||||
}
|
||||
|
||||
f32 animctrl_getAnimTimer(AnimCtrl *this){
|
||||
return anim_getTimer(this->animation);
|
||||
}
|
||||
|
||||
f32 animctrl_getTimer(AnimCtrl *this){
|
||||
return this->timer;
|
||||
}
|
||||
|
||||
void animctrl_setTimer(AnimCtrl *this, f32 arg1){
|
||||
this->timer = arg1;
|
||||
}
|
||||
|
||||
s32 animctrl_8028780C(AnimCtrl *this, s32 arg1){
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 func_8028781C(AnimCtrl *this, f32 *arg1, s32 arg2){
|
||||
s32 map;
|
||||
map = map_get();
|
||||
if( map != MAP_1E_CS_START_NINTENDO
|
||||
&& map != MAP_1F_CS_START_RAREWARE
|
||||
&& map != MAP_20_CS_END_NOT_100
|
||||
&& this->unk23 !=0
|
||||
&& arg1 != NULL
|
||||
){
|
||||
this->unk24 = this->unk24 -1;
|
||||
if(this->unk24 == 0xFF){
|
||||
this->unk24 = animctrl_8028780C(arg1, arg2);
|
||||
}
|
||||
else{
|
||||
anim_802897A0(this->animation);
|
||||
return;
|
||||
}
|
||||
}
|
||||
func_802895F8(this->animation);
|
||||
}
|
||||
|
||||
s32 animctrl_isStopped(AnimCtrl *this){
|
||||
return animctrl_getPlaybackType(this) == ANIMCTRL_STOPPED;
|
||||
}
|
||||
|
||||
int animctrl_isAt(AnimCtrl *this, f32 arg1){
|
||||
int retval;
|
||||
f32 f0 = anim_getTimer(this->animation);
|
||||
|
||||
if(f0 == this->timer){
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
if(this->playback_direction != 0){ //forward direction
|
||||
if(this->timer < f0){
|
||||
return this->timer <= arg1 && arg1 < f0; //arg1 between last animation time and new animation time
|
||||
}else{
|
||||
return this->timer <= arg1 || arg1 < f0; //animation just looped, arg1 outside of loop
|
||||
}
|
||||
}else{
|
||||
if(f0 < this->timer){
|
||||
return arg1 <= this->timer && f0 < arg1;
|
||||
}else{
|
||||
return arg1 <= this->timer || f0 < arg1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
s32 animctrl_isContiguous(AnimCtrl *this){
|
||||
return (s32)this->animation - (s32) this == 0x28;
|
||||
}
|
||||
485
src/core2/bs/ant.c
Normal file
485
src/core2/bs/ant.c
Normal file
@@ -0,0 +1,485 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void func_80293D48(f32,f32);
|
||||
|
||||
/* .data */
|
||||
const f32 D_80364960 = 30.0f;
|
||||
const f32 D_80364964 = 500.0f;
|
||||
const f32 D_80364968 = 0.44f;
|
||||
const f32 D_8036496C = 0.2f;
|
||||
const f32 D_80364970 = 693.5f; //ant initial jump y velocity
|
||||
const f32 D_80364974 = -1200.0f; //ant jump gravity
|
||||
u8 D_80364978 = 0;
|
||||
s16 D_8036497C[3] = {
|
||||
SFX_54_BANJO_HOO_1,
|
||||
SFX_55_BANJO_HOO_2,
|
||||
SFX_56_BANJO_HUI
|
||||
};
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037D290;
|
||||
u8 D_8037D294;
|
||||
s32 D_8037D298;
|
||||
|
||||
/* .code */
|
||||
void func_8029E3E0(void){
|
||||
func_8030EB88(D_8036497C[D_80364978], 1.75f, 1.85f);
|
||||
if(++D_80364978 > 2)
|
||||
D_80364978 = 0;
|
||||
}
|
||||
|
||||
void func_8029E448(int arg0){
|
||||
func_8030EAAC(SFX_3D_TICKER_WALKING, arg0 ? 0.96f : 1.04f, 14000, 8);
|
||||
|
||||
}
|
||||
|
||||
void func_8029E48C(void){
|
||||
f32 sp1C = func_8029B30C();
|
||||
|
||||
if(func_8029B300() == 0){
|
||||
func_80297970(0.0f);
|
||||
}
|
||||
else{
|
||||
func_80297970(func_80257C48(sp1C, D_80364960, D_80364964));
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029E4EC(void){
|
||||
if(!bsant_inSet(bs_getNextState())){
|
||||
func_8029B0C0();
|
||||
func_8029E070(0);
|
||||
func_8029E064(0);
|
||||
miscflag_clear(3);
|
||||
miscflag_clear(4);
|
||||
func_80293D74();
|
||||
}
|
||||
func_80289F10(1);
|
||||
}
|
||||
|
||||
void func_8029E554(void){
|
||||
if(!bsant_inSet(bs_getPrevState()))
|
||||
func_80293D48(50.0f, 25.0f);
|
||||
}
|
||||
|
||||
int bsant_inSet(s32 move_indx){
|
||||
return (move_indx == BS_35_ANT_IDLE)
|
||||
|| (move_indx == BS_ANT_WALK)
|
||||
|| (move_indx == BS_ANT_JUMP)
|
||||
|| (move_indx == BS_38_ANT_FALL)
|
||||
|| (move_indx == BS_3E_ANT_OW)
|
||||
|| (move_indx == BS_43_ANT_DIE)
|
||||
|| (move_indx == 0x8e)
|
||||
|| (move_indx == BS_ANT_DRONE);
|
||||
}
|
||||
|
||||
void bsant_idle_init(void){
|
||||
func_8029E554();
|
||||
func_8028A010(ANIM_TERMITE_IDLE, 1.2f);
|
||||
func_8029C7F4(1,1,1,2);
|
||||
func_80297970(0.0f);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
roll_setAngularVelocity(1000.0f, 12.0f);
|
||||
miscflag_set(3);
|
||||
miscflag_set(4);
|
||||
func_802900B4();
|
||||
}
|
||||
|
||||
void bsant_idle_update(void){
|
||||
enum bs_e new_state = 0;
|
||||
func_80299628(0);
|
||||
|
||||
if(func_8028B094())
|
||||
new_state = BS_38_ANT_FALL;
|
||||
|
||||
if(func_80294F78())
|
||||
new_state = func_802926C0();
|
||||
|
||||
if(func_8029B300() > 0)
|
||||
new_state = BS_ANT_WALK;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
new_state = BS_ANT_JUMP;
|
||||
|
||||
bs_setState(new_state);
|
||||
}
|
||||
|
||||
void bsant_idle_end(void){
|
||||
func_802900FC();
|
||||
func_8029E4EC();
|
||||
}
|
||||
|
||||
void bsant_walk_init(void){
|
||||
func_8029E554();
|
||||
func_8028A010(ANIM_TERMITE_WALK, 0.8f);
|
||||
func_8029C7F4(2,1,1,2);
|
||||
func_80289EC8(D_80364960, D_80364964, D_80364968, D_8036496C);
|
||||
func_802900B4();
|
||||
}
|
||||
|
||||
void bsant_walk_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
func_80299628(0);
|
||||
func_8029E48C();
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.7781f))
|
||||
func_8029E448(0);
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.2781f))
|
||||
func_8029E448(1);
|
||||
|
||||
if(func_8029B300() == 0 && func_80297C04(1.0f))
|
||||
sp1C = BS_35_ANT_IDLE;
|
||||
|
||||
if(func_8028B094())
|
||||
sp1C = BS_38_ANT_FALL;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
sp1C = BS_ANT_JUMP;
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bsant_walk_end(void){
|
||||
func_8029E4EC();
|
||||
func_802900FC();
|
||||
}
|
||||
|
||||
void bsant_jump_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
func_8029E554();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_TERMITE_JUMP);
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
animctrl_setTransitionDuration(aCtrl, 0.1f);
|
||||
func_8028774C(aCtrl, 0.2987f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.4423f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsant.c", 0x17c);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
if(func_8029B2E8() != 0.0f)
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_8029E48C();
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
player_setYVelocity(D_80364970);
|
||||
gravity_set(D_80364974);
|
||||
func_8029E3E0();
|
||||
D_8037D294 = 0;
|
||||
}
|
||||
|
||||
void bsant_jump_update(void){
|
||||
enum bs_e sp2C = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
f32 sp1C[3];
|
||||
|
||||
func_8029E48C();
|
||||
_get_velocity(sp1C);
|
||||
|
||||
if(button_released(BUTTON_A) && 0.0f < sp1C[1])
|
||||
gravity_reset();
|
||||
|
||||
switch(D_8037D294){
|
||||
case 0://L8029EA88
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
animctrl_setDuration(aCtrl, 5.0f);
|
||||
func_8028A37C(0.5026f);
|
||||
D_8037D294 = 1;
|
||||
}
|
||||
break;
|
||||
case 1://L8029EABC
|
||||
if(func_8028B254(0x82)){
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
func_8028A37C(1.0f);
|
||||
D_8037D294 = 2;
|
||||
}
|
||||
break;
|
||||
case 2://L8029EAF4
|
||||
func_80299628(0);
|
||||
if(func_8028B2E8()){
|
||||
func_8029C5E8();
|
||||
D_8037D294 = 3;
|
||||
}
|
||||
break;
|
||||
case 3://L8029EB24
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
sp2C = BS_35_ANT_IDLE;
|
||||
break;
|
||||
}//L8029EB38
|
||||
if(func_8028B2E8()){
|
||||
func_80297970(0.0f);
|
||||
if(func_8029B300() > 0)
|
||||
sp2C = BS_ANT_WALK;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
sp2C = BS_ANT_JUMP;
|
||||
}
|
||||
|
||||
bs_setState(sp2C);
|
||||
}
|
||||
|
||||
void bsant_jump_end(void){
|
||||
gravity_reset();
|
||||
func_8029E4EC();
|
||||
}
|
||||
|
||||
void bsant_fall_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
func_8029E554();
|
||||
D_8037D298 = 0;
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_TERMITE_JUMP);
|
||||
animctrl_setDuration(aCtrl, 1.9f);
|
||||
func_8028774C(aCtrl, 0.4423f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_STOPPED);
|
||||
func_802875AC(aCtrl, "bsant.c", 0x208);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
D_8037D294 = 0;
|
||||
}
|
||||
|
||||
void bsant_fall_update(void){
|
||||
enum bs_e sp2C = 0;
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp1C[3];
|
||||
|
||||
func_80299628(0);
|
||||
if(D_8037D298)
|
||||
func_8029E48C();
|
||||
|
||||
_get_velocity(sp1C);
|
||||
switch(D_8037D294){
|
||||
case 0:
|
||||
if(func_8028B254(0x5A)){
|
||||
animctrl_setDuration(aCtrl, 2.0f);
|
||||
func_8028A37C(1.0f);
|
||||
D_8037D294 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if(func_8028B2E8()){
|
||||
if(miscflag_isTrue(0x19))
|
||||
sp2C = func_80292738();
|
||||
else
|
||||
sp2C = BS_35_ANT_IDLE;
|
||||
}
|
||||
bs_setState(sp2C);
|
||||
}
|
||||
|
||||
void bsant_fall_end(void){
|
||||
func_8029E4EC();
|
||||
}
|
||||
|
||||
static void __bsant_recoil_init(int take_damage){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp38;
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
|
||||
func_8029E554();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_TERMITE_OW);
|
||||
animctrl_setDuration(aCtrl, 1.4f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.4899f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsant.c", 0x272);
|
||||
if(take_damage == 1)
|
||||
func_8030E58C(SFX_38_BANJO_AYE_1, 1.8f);
|
||||
else
|
||||
func_8030E58C(SFX_56_BANJO_HUI, 1.8f);
|
||||
|
||||
_player_getPosition(sp2C);
|
||||
func_80294980(sp20);
|
||||
func_80257F18(sp20, sp2C, &sp38);
|
||||
yaw_setIdeal(mlNormalizeAngle(sp38 + 180.0f));
|
||||
yaw_applyIdeal();
|
||||
func_80297970(200.0f);
|
||||
func_8029797C(sp38);
|
||||
func_802979AC(sp38, func_80297A64());
|
||||
func_8029C7F4(1,1,2,3);
|
||||
player_setYVelocity(510.0f);
|
||||
gravity_set(-1200.0f);
|
||||
func_8028D5DC();
|
||||
func_80292E48();
|
||||
D_8037D294 = 0;
|
||||
}
|
||||
|
||||
static void __bsant_recoil_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
|
||||
if(baanim_isAt(0.5f))
|
||||
func_80292EA4();
|
||||
|
||||
switch(D_8037D294){
|
||||
case 0:
|
||||
if(func_8028B254(0x5a)){
|
||||
func_8028A37C(1.0f);
|
||||
D_8037D294 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
|
||||
if(func_8028B2E8())
|
||||
sp1C = BS_35_ANT_IDLE;
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
static void __bsant_recoil_end(void){
|
||||
func_80297CA8();
|
||||
gravity_reset();
|
||||
func_8028D5F4();
|
||||
func_80292EA4();
|
||||
func_8029E4EC();
|
||||
}
|
||||
|
||||
void bsant_ow_init(void){
|
||||
__bsant_recoil_init(1);
|
||||
}
|
||||
|
||||
void bsant_ow_update(void){
|
||||
__bsant_recoil_update();
|
||||
}
|
||||
|
||||
void bsant_ow_end(void){
|
||||
__bsant_recoil_end();
|
||||
}
|
||||
|
||||
void bsant_bounce_init(void){
|
||||
__bsant_recoil_init(2);
|
||||
}
|
||||
|
||||
void bsant_bounce_update(void){
|
||||
__bsant_recoil_update();
|
||||
}
|
||||
|
||||
void bsant_bounce_end(void){
|
||||
__bsant_recoil_end();
|
||||
}
|
||||
|
||||
void bsant_die_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp38;
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
func_8029E554();
|
||||
func_8029B930();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, 0);
|
||||
animctrl_setIndex(aCtrl, ANIM_TERMITE_DIE);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.523f);
|
||||
animctrl_setDuration(aCtrl, 1.6f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsant.c", 0x2f6);
|
||||
func_8030E58C(SFX_36_BANJO_DOH, 1.8f);
|
||||
_player_getPosition(sp2C);
|
||||
func_80294980(sp20);
|
||||
func_80257F18(sp20, sp2C, &sp38);
|
||||
D_8037D290 = 250.0f;
|
||||
yaw_setIdeal(mlNormalizeAngle(sp38 + 180.0f));
|
||||
yaw_applyIdeal();
|
||||
func_80297970(D_8037D290);
|
||||
func_8029797C(sp38);
|
||||
func_802979AC(sp38, func_80297A64());
|
||||
func_8029C7F4(1,1,2,3);
|
||||
player_setYVelocity(510.0f);
|
||||
gravity_set(-1200.0f);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
func_802914CC(0xd);
|
||||
func_802BF2C0(30.0f);
|
||||
func_8029C984();
|
||||
D_8037D294 = 0;
|
||||
func_8028D5DC();
|
||||
func_80292E48();
|
||||
func_8029E3C0(0, 2.9f);
|
||||
}
|
||||
|
||||
void bsant_die_update(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
func_80297970(D_8037D290);
|
||||
func_80299628(0);
|
||||
switch(D_8037D294){
|
||||
case 0://L8029F270
|
||||
if(func_8028B2E8()){
|
||||
func_8028A37C(1.0f);
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 18000);
|
||||
FUNC_8030E624(SFX_39_BANJO_AYE_2, 1.8f, 18000);
|
||||
D_8037D290 = 0.0f;
|
||||
D_8037D294 = 1;
|
||||
}
|
||||
break;
|
||||
case 1://L8029F2C0
|
||||
if(animctrl_isAt(aCtrl, 0.72f)){
|
||||
D_8037D290 = 0.0f;
|
||||
D_8037D294 = 2;
|
||||
}
|
||||
break;
|
||||
case 2://L8029F2F0
|
||||
if(animctrl_isAt(aCtrl, 0.77f)){
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 18000);
|
||||
FUNC_8030E624(SFX_38_BANJO_AYE_1, 1.8f, 18000);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if(func_8029E1A8(0))
|
||||
func_8029B890();
|
||||
|
||||
bs_setState(0);
|
||||
}
|
||||
|
||||
void bsant_die_end(void){
|
||||
func_8024BD08(0);
|
||||
gravity_reset();
|
||||
pitch_setIdeal(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
func_80291548();
|
||||
func_80292EA4();
|
||||
}
|
||||
|
||||
void func_8029F398(void){
|
||||
func_8029E554();
|
||||
func_8028A010(ANIM_TERMITE_IDLE, 2.0f);
|
||||
func_8029C7F4(1,1,3,2);
|
||||
func_80297970(0.0f);
|
||||
func_8029C674();
|
||||
func_802B3A50();
|
||||
}
|
||||
|
||||
void func_8029F3F4(void){
|
||||
enum bs_e sp1C = 0;
|
||||
func_802B3A50();
|
||||
func_80299628(0);
|
||||
func_8029C6D0();
|
||||
if(!func_80298850())
|
||||
sp1C = BS_35_ANT_IDLE;
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void func_8029F440(void){
|
||||
func_8029C748();
|
||||
func_8029E4EC();
|
||||
}
|
||||
|
||||
void bsant_drone_init(void){
|
||||
func_8029E554();
|
||||
bsdrone_init();
|
||||
}
|
||||
|
||||
void bsant_drone_update(void){
|
||||
bsdrone_update();
|
||||
}
|
||||
|
||||
void bsant_drone_end(void){
|
||||
bsdrone_end();
|
||||
func_8029E4EC();
|
||||
}
|
||||
184
src/core2/bs/bBarge.c
Normal file
184
src/core2/bs/bBarge.c
Normal file
@@ -0,0 +1,184 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void func_8029797C(f32);
|
||||
f32 func_80297A64(void);
|
||||
void func_80297970(f32);
|
||||
f32 func_80297A7C(void);
|
||||
|
||||
s32 func_8029E2E0(s32, f32);
|
||||
void func_80292864(f32, f32);
|
||||
void func_802979AC(f32, f32);
|
||||
void func_8029E3C0(s32, f32);
|
||||
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037D2A0;
|
||||
u8 D_8037D2A4;
|
||||
u8 D_8037D2A5;
|
||||
u8 D_8037D2A6;
|
||||
|
||||
/* .code */
|
||||
s32 func_8029F4E0(Actor * arg0){
|
||||
return arg0->unk138_31 == 0;
|
||||
}
|
||||
|
||||
void func_8029F4F0(void){
|
||||
u8 val;
|
||||
f32 tmp_f;
|
||||
if(func_8029E1A8(2)){
|
||||
func_8029AE74(0);
|
||||
func_8029E3C0(2, 0.12f);
|
||||
}
|
||||
if( (++D_8037D2A4) >= 3)
|
||||
D_8037D2A4 = 0;
|
||||
|
||||
switch(D_8037D2A4){
|
||||
case 0:
|
||||
tmp_f = (func_80297A7C() + 180.0f);
|
||||
func_80292864(tmp_f - 70.0f, 20.0f);
|
||||
break;
|
||||
case 1:
|
||||
tmp_f = (func_80297A7C() + 180.0f);
|
||||
func_80292864(tmp_f - 10.0f, 20.0f);
|
||||
break;
|
||||
case 2:
|
||||
tmp_f = (func_80297A7C() + 180.0f);
|
||||
func_80292864(tmp_f + 50.0f, 20.0f);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029F60C(void){
|
||||
f32 plyrPos[3];
|
||||
_player_getPosition(&plyrPos);
|
||||
func_8032728C(plyrPos, 50.0f, 2, func_8029F4E0);
|
||||
}
|
||||
|
||||
|
||||
s32 bsbbarge_hitboxActive(void){
|
||||
return D_8037D2A6;
|
||||
}
|
||||
|
||||
void bsbarge_init(void){
|
||||
AnimCtrl *plyrMvmnt;
|
||||
|
||||
plyrMvmnt = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(plyrMvmnt);
|
||||
animctrl_setSmoothTransition(plyrMvmnt, 0);
|
||||
animctrl_setIndex(plyrMvmnt, ANIM_BANJO_BBARGE);
|
||||
animctrl_setDuration(plyrMvmnt, 1.0f);
|
||||
animctrl_setSubRange(plyrMvmnt, 0, 0.375f);
|
||||
animctrl_setPlaybackType(plyrMvmnt, ANIMCTRL_ONCE);
|
||||
func_802875AC(plyrMvmnt, "bsbbarge.c", 0x98);
|
||||
D_8037D2A4 = 0;
|
||||
func_8029C7F4(1,1,3,3);
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_80297970(func_80297A64()*0.3);
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
func_8029E070(1);
|
||||
D_8037D2A6 = 0;
|
||||
D_8037D2A5 = 0;
|
||||
miscflag_clear(0xA);
|
||||
miscflag_clear(0xB);
|
||||
miscflag_clear(0xC);
|
||||
func_8029E3C0(2, 0.01f);
|
||||
|
||||
}
|
||||
|
||||
void bsbarge_update(void){
|
||||
s32 sp24;
|
||||
AnimCtrl *plyrMvmnt;
|
||||
|
||||
sp24 = 0;
|
||||
plyrMvmnt = _player_getAnimCtrlPtr();
|
||||
if(button_released(BUTTON_B))
|
||||
miscflag_set(0xA);
|
||||
switch(D_8037D2A5){
|
||||
case 0:
|
||||
if(animctrl_isAt(plyrMvmnt, 0.1392f))
|
||||
func_80299BD4();
|
||||
|
||||
if(!animctrl_isStopped(plyrMvmnt))
|
||||
break;
|
||||
|
||||
if(miscflag_isFalse(0xA)){
|
||||
miscflag_set(0xC);
|
||||
D_8037D2A0 = 850.0f;
|
||||
}else{
|
||||
D_8037D2A0 = 500.0f;
|
||||
}
|
||||
func_8029E3C0(1, 0.01f);
|
||||
D_8037D2A5 = 1;
|
||||
break;
|
||||
case 1:
|
||||
func_8029E1A8(1);
|
||||
if(miscflag_isFalse(0xB) && func_8029E2E0(1, 0.1f)){
|
||||
if(miscflag_isTrue(0xC)){
|
||||
func_8030E560(SFX_4_KAZOOIE_RUUUUUH, 30000);
|
||||
}else{
|
||||
func_8030E560(SFX_43_KAZOOIE_RUH, 30000);
|
||||
}
|
||||
miscflag_set(0xB);
|
||||
}
|
||||
if(!func_8029E384(1))
|
||||
break;
|
||||
|
||||
animctrl_setDuration(plyrMvmnt, 1.0f);
|
||||
func_8028A37C(0.565f);
|
||||
func_80297970(D_8037D2A0);
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
func_8030E760(SFX_2_CLAW_SWIPE, 0.558f, 22000);
|
||||
D_8037D2A5 = 2;
|
||||
func_8029F4F0();
|
||||
D_8037D2A6 = 1;
|
||||
break;
|
||||
case 2:
|
||||
func_80297970(D_8037D2A0);
|
||||
if(animctrl_isStopped(plyrMvmnt)){
|
||||
animctrl_setDuration(plyrMvmnt, 2.0f);
|
||||
func_8028A37C(0.6f);
|
||||
func_8029E3C0(0, 0.1f);
|
||||
D_8037D2A5 = 3;
|
||||
}
|
||||
func_8029F4F0();
|
||||
break;
|
||||
case 3:
|
||||
func_8029E1A8(0);
|
||||
if(miscflag_isFalse(0xC) || func_8029E384(0)){
|
||||
D_8037D2A0 -= 80.0f;
|
||||
}
|
||||
func_80297970(D_8037D2A0);
|
||||
if(D_8037D2A0 < 200.0f){
|
||||
animctrl_setDuration(plyrMvmnt, 1.5f);
|
||||
func_8028A37C(1.0f);
|
||||
D_8037D2A5 = 4;
|
||||
}
|
||||
func_8029F4F0();
|
||||
break;
|
||||
case 4:
|
||||
if(!func_8028B2E8())
|
||||
sp24 = BS_2F_FALL;
|
||||
if(animctrl_isAt(plyrMvmnt, 0.7f)){
|
||||
D_8037D2A0 = 0.0f;
|
||||
D_8037D2A6 = 0;
|
||||
}
|
||||
func_80297970(D_8037D2A0);
|
||||
if(animctrl_isAt(plyrMvmnt, 0.9193f))
|
||||
sp24 = BS_20_LANDING;
|
||||
break;
|
||||
}
|
||||
if(D_8037D2A6)
|
||||
func_8029F60C();
|
||||
|
||||
if(player_inWater())
|
||||
sp24 = BS_4C_LANDING_IN_WATER;
|
||||
bs_setState(sp24);
|
||||
}
|
||||
|
||||
void bsbarge_end(void){
|
||||
ability_use(5);
|
||||
func_8029E070(0);
|
||||
D_8037D2A6 = 0;
|
||||
}
|
||||
65
src/core2/bs/bEggAss.c
Normal file
65
src/core2/bs/bEggAss.c
Normal file
@@ -0,0 +1,65 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D2E0;
|
||||
u8 D_8037D2E1;
|
||||
|
||||
/* .code */
|
||||
void bseggass_init(void){
|
||||
func_8028A274(0x2B, 1.0f);
|
||||
func_8029C7F4(1,3,1,3);
|
||||
func_80299234(350.0f, 14.0f);
|
||||
func_80297970(0.0f);
|
||||
func_8029E058(1);
|
||||
D_8037D2E0 = (D_8037D2E1 = 1);
|
||||
func_802952A8(5,0);
|
||||
}
|
||||
|
||||
void bseggass_update(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *plyr_mvmt;
|
||||
s32 has_eggs;
|
||||
s32 sp28;
|
||||
s32 fill1;
|
||||
s32 fill2;
|
||||
|
||||
next_state = 0;
|
||||
plyr_mvmt = _player_getAnimCtrlPtr();
|
||||
has_eggs = (item_empty(ITEM_D_EGGS) == 0);
|
||||
if (should_poop_egg()) {
|
||||
if (has_eggs)
|
||||
D_8037D2E0 = func_80258948(D_8037D2E0 + 1, 3);
|
||||
else
|
||||
func_80346C10(&sp28, -1, 0, ITEM_D_EGGS, 0);
|
||||
}
|
||||
if (has_eggs) {
|
||||
if (animctrl_isAt(plyr_mvmt, 0.3837f)) {
|
||||
func_8030E760(SFX_3E_POOP_NOISE, 1.4f, 28000);
|
||||
func_8033E3F0(COMMON_PARTICLE_4_EGG_ASS, 1);
|
||||
item_dec(ITEM_D_EGGS);
|
||||
ability_use(7);
|
||||
}
|
||||
if ((animctrl_isAt(plyr_mvmt, 0.4885f)) && (D_8037D2E1 < D_8037D2E0)) {
|
||||
func_8028774C(plyr_mvmt, 0.349f);
|
||||
func_802875AC(plyr_mvmt, "bsbeggass.c", 0x5E);
|
||||
D_8037D2E1++;
|
||||
}
|
||||
}
|
||||
if (animctrl_isStopped(plyr_mvmt)) {
|
||||
next_state = (button_held(BUTTON_Z))? BS_CROUCH : BS_1_IDLE;
|
||||
} else if (0.6 < (f64) animctrl_getAnimTimer(plyr_mvmt)) {
|
||||
next_state = func_802ADCD4(0);
|
||||
}
|
||||
if (func_8028B094())
|
||||
next_state = BS_2F_FALL;
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
|
||||
void bseggass_end(void){
|
||||
func_802952A8(5, 1);
|
||||
gravity_reset();
|
||||
func_8029E058(0);
|
||||
}
|
||||
73
src/core2/bs/bEggHead.c
Normal file
73
src/core2/bs/bEggHead.c
Normal file
@@ -0,0 +1,73 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void func_80299234(f32, f32);
|
||||
void func_802875AC(AnimCtrl *, char*, s32);
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D2F0;
|
||||
u8 D_8037D2F1;
|
||||
|
||||
/* .code */
|
||||
void bsegghead_init(void){
|
||||
func_8028A274(0x2A, 1.0f);
|
||||
func_8029C7F4(1,3,1,3);
|
||||
func_80299234(350.0f, 14.0f);
|
||||
func_80297970(0.0f);
|
||||
func_8029E070(1);
|
||||
D_8037D2F0 = (D_8037D2F1 = 1);
|
||||
func_802952A8(2,0);
|
||||
}
|
||||
|
||||
void bsegghead_update(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *aCtrl;
|
||||
s32 has_eggs;
|
||||
s32 sp28;
|
||||
s32 fill1;
|
||||
s32 fill2;
|
||||
|
||||
next_state = 0;
|
||||
aCtrl = _player_getAnimCtrlPtr();
|
||||
has_eggs = (item_empty(ITEM_D_EGGS) == 0);
|
||||
if (should_shoot_egg()) {
|
||||
if (has_eggs)
|
||||
D_8037D2F0 = func_80258948(D_8037D2F0 + 1, 3);
|
||||
else
|
||||
func_80346C10(&sp28, -1, 0, ITEM_D_EGGS, 0);
|
||||
}
|
||||
if (has_eggs) {
|
||||
if (animctrl_isAt(aCtrl, 0.1f))
|
||||
func_8030E760(SFX_46_KAZOOIE_CHOKING_UP, 1.0f, 0x7fff);
|
||||
|
||||
if (animctrl_isAt(aCtrl, 0.4f))
|
||||
func_8030E760(SFX_57_KAZOOIE_HEGH, 1.0f, 0x7fff);
|
||||
|
||||
if (animctrl_isAt(aCtrl, 0.4704f)){
|
||||
func_8033E3F0(COMMON_PARTICLE_1_EGG_HEAD, 1);
|
||||
item_dec(ITEM_D_EGGS);
|
||||
ability_use(7);
|
||||
}
|
||||
if ((animctrl_isAt(aCtrl, 0.5919f)) && (D_8037D2F1 < D_8037D2F0)) {
|
||||
func_8028774C(aCtrl, 0.3878f);
|
||||
func_802875AC(aCtrl, "bsbegghead.c", 0x62);
|
||||
D_8037D2F1++;
|
||||
}
|
||||
}
|
||||
if (animctrl_isStopped(aCtrl)) {
|
||||
next_state = (button_held(BUTTON_Z))? BS_CROUCH : BS_1_IDLE;
|
||||
|
||||
} else if (0.65 < (f64) animctrl_getAnimTimer(aCtrl)) {
|
||||
next_state = func_802ADCD4(0);
|
||||
}
|
||||
if (func_8028B094())
|
||||
next_state = BS_2F_FALL;
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bsegghead_end(void){
|
||||
func_802952A8(2, 1);
|
||||
gravity_reset();
|
||||
func_8029E070(0);
|
||||
}
|
||||
199
src/core2/bs/bFlap.c
Normal file
199
src/core2/bs/bFlap.c
Normal file
@@ -0,0 +1,199 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
f32 func_802A2858(void);
|
||||
|
||||
/*.data*/
|
||||
const f32 D_80364A10 = 280.0f;
|
||||
const f32 D_80364A14 = -1100.0f;
|
||||
const f32 D_80364A18 = -399.9f;
|
||||
|
||||
/*.bss*/
|
||||
u8 D_8037D300;
|
||||
u8 D_8037D301;
|
||||
f32 D_8037D304;
|
||||
f32 D_8037D308;
|
||||
u8 D_8037D30C;
|
||||
|
||||
void bsbflap_init(void) {
|
||||
func_8028A274(0x18, 0.3f);
|
||||
func_8029C7F4(1, 1, 1, 2);
|
||||
if (func_8029B2E8() != 0.0f) {
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
}
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802B6FA8();
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
player_setYVelocity(0.0f);
|
||||
gravity_set(D_80364A14);
|
||||
func_8029E070(1);
|
||||
miscflag_set(0x12);
|
||||
func_8029E3C0(0, 2.5f);
|
||||
D_8037D30C = func_8030D90C();
|
||||
func_80299BD4();
|
||||
D_8037D301 = 0;
|
||||
D_8037D308 = 0.0f;
|
||||
D_8037D300 = 0;
|
||||
}
|
||||
|
||||
void func_802A2790(s32 arg0, f32 arg1, s32 arg2) {
|
||||
func_8030E394(D_8037D30C);
|
||||
sfxsource_setSfxId(D_8037D30C, arg0);
|
||||
func_8030DBB4(D_8037D30C, arg1);
|
||||
sfxsource_setSampleRate(D_8037D30C, arg2);
|
||||
func_8030DD90(D_8037D30C, 0);
|
||||
func_8030DD14(D_8037D30C, 3);
|
||||
func_8030E2C4(D_8037D30C);
|
||||
}
|
||||
|
||||
void func_802A2810(void) {
|
||||
AnimCtrl *plyrMvPtr;
|
||||
plyrMvPtr = _player_getAnimCtrlPtr();
|
||||
if (animctrl_isAt(plyrMvPtr, 0.9f)) {
|
||||
D_8037D301++;
|
||||
}
|
||||
}
|
||||
|
||||
f32 func_802A2858(void){
|
||||
switch (D_8037D301)
|
||||
{
|
||||
case 0:
|
||||
return 0.15f;
|
||||
case 1:
|
||||
return 0.2f;
|
||||
case 2:
|
||||
return 0.27f;
|
||||
case 3:
|
||||
return 0.38f;
|
||||
case 4:
|
||||
return 0.4f;
|
||||
default:
|
||||
return 0.7f;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802A28CC(void){
|
||||
AnimCtrl *sp1c = _player_getAnimCtrlPtr();
|
||||
animctrl_setDuration(sp1c, func_802A2858());
|
||||
}
|
||||
|
||||
void func_802A2900(void){
|
||||
D_8037D304 = D_8037D308;
|
||||
D_8037D308 += time_getDelta();
|
||||
}
|
||||
|
||||
int func_802A293C(f32 arg0){
|
||||
return ((D_8037D304 <= arg0) && (arg0 < D_8037D308));
|
||||
}
|
||||
|
||||
void func_802A298C(void){
|
||||
AnimCtrl * sp1c;
|
||||
sp1c = _player_getAnimCtrlPtr();
|
||||
if(func_802A293C(0.08f)){
|
||||
func_802A2790(0x4e, 1.24f, 0x4e20);
|
||||
}
|
||||
|
||||
if((0.7 < D_8037D308) && animctrl_isAt(sp1c, 0.5698f)){
|
||||
func_802A2790(0x47, 1.0f, 0x55f0);
|
||||
}
|
||||
}
|
||||
|
||||
void bsbflap_update(void){
|
||||
s32 sp1c;
|
||||
AnimCtrl * sp18;
|
||||
|
||||
sp1c = 0;
|
||||
sp18 = _player_getAnimCtrlPtr();
|
||||
func_802B6FA8();
|
||||
switch(D_8037D300){
|
||||
case 0:
|
||||
func_80293350();
|
||||
func_802A2900();
|
||||
func_802A298C();
|
||||
if(animctrl_isAt(sp18, 0.9f)){
|
||||
animctrl_setSmoothTransition(sp18, 0);
|
||||
animctrl_setIndex(sp18, ANIM_BANJO_BFLAP);
|
||||
animctrl_setDuration(sp18, func_802A2858());
|
||||
animctrl_setPlaybackType(sp18, ANIMCTRL_LOOP);
|
||||
func_8028774C(sp18, 0.0f);
|
||||
func_802875AC(sp18, "bsbflap.c", 0xe1);
|
||||
player_setYVelocity(D_80364A10);
|
||||
gravity_set(D_80364A14);
|
||||
func_80297BF8(D_80364A18);
|
||||
D_8037D300 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
func_80293350();
|
||||
func_802A2900();
|
||||
func_802A2810();
|
||||
func_802A28CC();
|
||||
func_802A298C();
|
||||
if(0.67 <= D_8037D308){
|
||||
D_8037D300 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
func_80293350();
|
||||
func_802A2900();
|
||||
func_802A2810();
|
||||
func_802A28CC();
|
||||
func_802A298C();
|
||||
if(D_8037D301 == 4)
|
||||
D_8037D300 = 3;
|
||||
if(button_released(BUTTON_A)){
|
||||
gravity_reset();
|
||||
func_80297B94();
|
||||
animctrl_setDuration(sp18, 1.0f);
|
||||
D_8037D300 = 4;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
func_80293350();
|
||||
func_802A2900();
|
||||
func_802A2810();
|
||||
func_802A28CC();
|
||||
func_802A298C();
|
||||
if(button_released(BUTTON_A)){
|
||||
gravity_reset();
|
||||
func_80297B94();
|
||||
animctrl_setDuration(sp18, 1.0f);
|
||||
func_80293240(2);
|
||||
D_8037D300 = 4;
|
||||
}
|
||||
else{
|
||||
func_80297970(func_80297A64() * 0.35);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if(func_8028B424())
|
||||
sp1c = BS_3D_FALL_TUMBLING;
|
||||
break;
|
||||
}//L802A2C94
|
||||
func_8029E1A8(0);
|
||||
if(func_8029E384(0))
|
||||
sp1c = BS_2F_FALL;
|
||||
|
||||
if(should_beak_bust())
|
||||
sp1c = BS_F_BBUSTER;
|
||||
|
||||
if(func_8028B2E8()){
|
||||
func_8029C5E8();
|
||||
sp1c = BS_2_WALK_SLOW;
|
||||
}
|
||||
|
||||
if(player_inWater())
|
||||
sp1c = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
bs_setState(sp1c);
|
||||
}
|
||||
|
||||
void bsbflap_end(void) {
|
||||
ability_use(1);
|
||||
gravity_reset();
|
||||
func_80297B94();
|
||||
func_8029E090(0, 0.2f);
|
||||
func_8030DA44(D_8037D30C);
|
||||
}
|
||||
167
src/core2/bs/bFlip.c
Normal file
167
src/core2/bs/bFlip.c
Normal file
@@ -0,0 +1,167 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .data */
|
||||
const f32 D_80364A20 = 920.0f;
|
||||
const f32 D_80364A24 = -1200.0f;
|
||||
const f32 D_80364A28 = -533.3f;
|
||||
const f32 D_80364A2C = 80.0f;
|
||||
const f32 D_80364A30 = 200.0f;
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D310;
|
||||
|
||||
|
||||
/* .code */
|
||||
void _bsbflip_802A2D60(void){
|
||||
f32 sp1C;
|
||||
sp1C = func_8029B30C();
|
||||
if(!func_8029B300())
|
||||
func_80297970(0.0f);
|
||||
else
|
||||
func_80297970(func_80257C48(sp1C, D_80364A2C, D_80364A30));
|
||||
}
|
||||
|
||||
void _bsbflip_802A2DC0(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp20[3];
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_BFLIP);
|
||||
animctrl_setDuration(aCtrl, 2.2f);
|
||||
func_8028774C(aCtrl, 0.8566f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsbflip.c", 0x69); //nice
|
||||
func_802978DC(3);
|
||||
func_80297970(0.0f);
|
||||
ml_vec3f_clear(sp20);
|
||||
func_80297A0C(sp20);
|
||||
func_8029C5E8();
|
||||
}
|
||||
|
||||
void bsbflip_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, 0);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_BFLIP);
|
||||
animctrl_setDuration(aCtrl, 2.3f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.7866f);
|
||||
func_8028774C(aCtrl, 0.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsbflip.c", 0x80);
|
||||
func_8029C7F4(1,1,2,3);
|
||||
func_8029B324(0, 0.03f);
|
||||
func_8029B324(1, 1.0f);
|
||||
func_8029E070(1);
|
||||
func_80299BD4();
|
||||
D_8037D310 = 0;
|
||||
}
|
||||
|
||||
void bsbflip_update(void){
|
||||
enum bs_e sp24 = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
if( animctrl_isAt(aCtrl, 0.2394f)
|
||||
&& animctrl_getPlaybackType(aCtrl) != 2
|
||||
&& animctrl_getIndex(aCtrl) == 0x4B
|
||||
){
|
||||
func_8030E760(SFX_2_CLAW_SWIPE, 0.558f, 22000);
|
||||
}
|
||||
|
||||
switch(D_8037D310){
|
||||
case 0://L802A2FD4
|
||||
if(animctrl_isAt(aCtrl, 0.1837f)){
|
||||
if(func_8029B2E8() != 0.0f){
|
||||
func_802991A8(2);
|
||||
func_8029957C(3);
|
||||
if(func_8029B2E8){ //!!! BUG !!!
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
}
|
||||
func_80299254(1.0f);
|
||||
func_802978DC(6);
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_80297970(200.0f);
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
}else{//L802A3098
|
||||
func_802978DC(6);
|
||||
func_80297970(0.0f);
|
||||
}
|
||||
player_setYVelocity(D_80364A20);
|
||||
gravity_set(D_80364A24);
|
||||
func_80297BF8(D_80364A28);
|
||||
animctrl_setDuration(aCtrl, 1.9f);
|
||||
func_8030E4E4(SFX_33_BANJO_AHOO);
|
||||
D_8037D310 = 1;
|
||||
}
|
||||
break;
|
||||
case 1://L802A30F8
|
||||
_bsbflip_802A2D60();
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, 0);
|
||||
animctrl_setIndex(aCtrl, 0x4C);
|
||||
animctrl_setDuration(aCtrl, 0.13f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_LOOP);
|
||||
func_802875AC(aCtrl, "bsbflip.c", 0xd9);
|
||||
D_8037D310 = 2;
|
||||
}//L802A316C
|
||||
if(should_beak_bust()){
|
||||
sp24 =BS_F_BBUSTER;
|
||||
}
|
||||
break;
|
||||
case 2://L802A3184
|
||||
if(func_8028B424())
|
||||
sp24 = BS_3D_FALL_TUMBLING;
|
||||
if(button_released(BUTTON_A)){
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, 0);
|
||||
animctrl_setIndex(aCtrl, 0x61);
|
||||
animctrl_setDuration(aCtrl, 0.8f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsbflip.c", 0xee);
|
||||
func_80297B94();
|
||||
D_8037D310 = 3;
|
||||
}//L802A320C
|
||||
if(func_8028B2E8()){
|
||||
_bsbflip_802A2DC0();
|
||||
sp24 = func_8029C9C0(sp24);
|
||||
D_8037D310 = 4;
|
||||
}
|
||||
else if(should_beak_bust()){
|
||||
sp24 = BS_F_BBUSTER;
|
||||
}
|
||||
break;
|
||||
case 3://L802A3258
|
||||
if(func_8028B424())
|
||||
sp24 = BS_3D_FALL_TUMBLING;
|
||||
if(func_8028B2E8()){
|
||||
func_8029E070(0);
|
||||
_bsbflip_802A2DC0();
|
||||
sp24 = func_8029C9C0(sp24);
|
||||
D_8037D310 = 4;
|
||||
}
|
||||
else if(should_beak_bust()){
|
||||
sp24 = BS_F_BBUSTER;
|
||||
}
|
||||
break;
|
||||
case 4://L802A32C0
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
sp24 = BS_2_WALK_SLOW;
|
||||
sp24 = func_8029C9C0(sp24);
|
||||
break;
|
||||
}//L802A32E0
|
||||
|
||||
if(player_inWater())
|
||||
sp24 = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
bs_setState(sp24);
|
||||
}
|
||||
|
||||
void bsbflip_end(void){
|
||||
ability_use(2);
|
||||
gravity_reset();
|
||||
func_80297B94();
|
||||
func_8029E070(0);
|
||||
func_8029B0C0();
|
||||
}
|
||||
823
src/core2/bs/bFly.c
Normal file
823
src/core2/bs/bFly.c
Normal file
@@ -0,0 +1,823 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern void func_8028FDC8(f32);
|
||||
extern void func_802921BC(f32);
|
||||
extern f32 func_8029B2D0(void);
|
||||
extern void func_802BFE50(f32, f32, f32);
|
||||
extern void func_80354030(f32[3], f32);
|
||||
|
||||
|
||||
/* .data */
|
||||
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037D320;
|
||||
f32 D_8037D324;
|
||||
f32 D_8037D328[3];
|
||||
f32 D_8037D338[3];
|
||||
u8 D_8037D344;
|
||||
u8 D_8037D345;
|
||||
u8 D_8037D346;
|
||||
u8 D_8037D347;
|
||||
|
||||
/* .code */
|
||||
int func_802A3350(void){
|
||||
if(!func_8028B2E8())
|
||||
return 0;
|
||||
if(func_80294684() & 8){
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void func_802A339C(f32 arg0[3], f32 arg1[3], f32 arg2){
|
||||
func_8024C5A8(arg0);
|
||||
ml_vec3f_scale(arg0, arg2);
|
||||
func_8024C764(arg1);
|
||||
}
|
||||
|
||||
void func_802A33D8(void){
|
||||
pitch_setAngVel(500.0f, 1.2f);
|
||||
}
|
||||
|
||||
void func_802A3404(void){
|
||||
pitch_setAngVel(1000.0f, 2.2f);
|
||||
}
|
||||
|
||||
void func_802A3430(void){
|
||||
func_802921BC(60.0f);
|
||||
func_802991A8(3);
|
||||
func_80299234(500.0f, 2.0f);
|
||||
roll_setAngularVelocity(500.0f, 2.0f);
|
||||
func_802A33D8();
|
||||
func_80293D48(60.0f, 45.0f);
|
||||
func_80294378(4);
|
||||
func_8028FEF0();
|
||||
func_8028FFBC(1);
|
||||
}
|
||||
|
||||
void func_802A34C8(void){
|
||||
if(!bsbfly_inSet(bs_getNextState())){
|
||||
gravity_reset();
|
||||
func_80297B94();
|
||||
func_8029E070(0);
|
||||
func_802921BC(0.0f);
|
||||
func_8029CB84();
|
||||
func_802991A8(1);
|
||||
func_80291548();
|
||||
func_80293D74();
|
||||
func_80294378(1);
|
||||
func_8028FFBC(0);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802A354C(void){
|
||||
f32 yaw_range;
|
||||
f32 roll_range;
|
||||
f32 sp2C;
|
||||
|
||||
sp2C = func_8029B2D0();
|
||||
if(button_held(BUTTON_R)){
|
||||
func_80299234(500.0f, 30.0f);
|
||||
yaw_range = 6.0f;
|
||||
roll_range = 85.0f;
|
||||
}
|
||||
else{
|
||||
func_80299234(500.0f, 2.0f);
|
||||
yaw_range = 3.0f;
|
||||
roll_range = 75.0f;
|
||||
}
|
||||
roll_setIdeal(ml_map_f(sp2C, -1.0f, 1.0f, -roll_range, roll_range));
|
||||
yaw_setIdeal(mlNormalizeAngle(yaw_getIdeal() + ml_map_f(sp2C, -1.0f, 1.0f, yaw_range, -yaw_range)));
|
||||
}
|
||||
|
||||
void func_802A3648(void){
|
||||
f32 tmp_f0 = func_8029B2DC();
|
||||
|
||||
if(tmp_f0 < 0.0f)
|
||||
pitch_setIdeal(ml_map_f(tmp_f0, -1.0f, 0.0f, 300.0f, 360.0f));
|
||||
else
|
||||
pitch_setIdeal(ml_map_f(tmp_f0, 0.0f, 1.0f, 0.0f, 80.0f));
|
||||
|
||||
|
||||
}
|
||||
|
||||
void func_802A36D0(void){
|
||||
f32 plyr_pos[3];
|
||||
|
||||
_player_getPosition(plyr_pos);
|
||||
plyr_pos[0] += randf2(-30.0f, 30.0f);
|
||||
plyr_pos[1] += 50.0f + randf2(0.0f, 30.0f);
|
||||
plyr_pos[2] += randf2(-30.0f, 30.0f);
|
||||
func_803541C0(5);
|
||||
func_803541CC(0x50);
|
||||
func_80354030(plyr_pos, 0.5f);
|
||||
|
||||
}
|
||||
|
||||
int bsbfly_inSet(enum bs_e arg0){
|
||||
return arg0 == BS_BOMB
|
||||
|| arg0 == BS_57_BOMB_END
|
||||
|| arg0 == BS_18_FLY_KNOCKBACK
|
||||
|| arg0 == BS_59_BFLY_UNK59
|
||||
|| arg0 == BS_FLY_OW
|
||||
|| arg0 == BS_BFLY_UNK76
|
||||
|| arg0 == BS_24_FLY
|
||||
|| arg0 == BS_BFLY_UNK99;
|
||||
}
|
||||
|
||||
int func_802A37F8(void){
|
||||
return bsbfly_inSet(bs_getState());
|
||||
}
|
||||
|
||||
void bsbfly_enter_init(void){
|
||||
func_8028A274(ANIM_BANJO_FLY_ENTER, 1.4f);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
if(func_8029B2E8() != 0.0f)
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_80297A0C(0);
|
||||
func_80297970(0.0f);
|
||||
gravity_set(-1200.0f);
|
||||
func_8029E070(1);
|
||||
func_80299BD4();
|
||||
D_8037D344 = 0;
|
||||
D_8037D346 = 0;
|
||||
}
|
||||
|
||||
void bsbfly_enter_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
switch(D_8037D344){
|
||||
case 0:
|
||||
if(animctrl_isAt(aCtrl, 0.2416f)){
|
||||
animctrl_setDuration(aCtrl, 2.4f);
|
||||
player_setYVelocity(1600.0f);
|
||||
func_8030E58C(SFX_C_TAKING_FLIGHT_LIFTOFF, 0.7f);
|
||||
D_8037D344 = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
func_802A36D0();
|
||||
if(func_80297AAC() < 0.0f)
|
||||
sp1C = BS_24_FLY;
|
||||
break;
|
||||
}
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bsbfly_enter_end(void){
|
||||
ability_use(8);
|
||||
func_8029E070(0);
|
||||
}
|
||||
|
||||
void bsbfly_init(void){
|
||||
func_8028A010(ANIM_BANJO_FLY, 0.62f);
|
||||
func_8029C7F4(1,1,3,3);
|
||||
if(miscflag_isTrue(9)){
|
||||
func_80297970(0.0f);
|
||||
}else{
|
||||
func_80297970(600.0f);
|
||||
}
|
||||
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_8029E070(1);
|
||||
gravity_set(-300.0f);
|
||||
func_80297BF8(-99.9f);
|
||||
func_802914CC(4);
|
||||
func_802A3430();
|
||||
D_8037D320 = 1.0f;
|
||||
D_8037D344 = 0;
|
||||
D_8037D347 = 0;
|
||||
}
|
||||
|
||||
void bsbfly_update(void){
|
||||
enum bs_e sp54 = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
int sp4C;
|
||||
f32 sp40[3];
|
||||
f32 sp3C;
|
||||
f32 sp38;
|
||||
f32 sp34;
|
||||
int sp30;
|
||||
enum bs_e sp2C;
|
||||
|
||||
|
||||
func_802A354C();
|
||||
func_802A3648();
|
||||
sp3C = pitch_get();
|
||||
sp2C = 0;
|
||||
if(button_pressed(BUTTON_A))
|
||||
D_8037D347 = 1;
|
||||
|
||||
if(D_8037D347 && func_8023DB5C()%3 == 0){
|
||||
D_8037D347 = 0;
|
||||
func_80346C10(&sp2C, 0, BS_1_IDLE, ITEM_F_RED_FEATHER, 1);
|
||||
}
|
||||
|
||||
if(sp2C || D_8037D346){
|
||||
if(sp2C){
|
||||
animctrl_setDuration(aCtrl, 0.3f);
|
||||
func_802D8BE4(0);
|
||||
}
|
||||
if(D_8037D346){
|
||||
D_8037D346 = 0;
|
||||
func_8028FDC8(0.35f);
|
||||
}else{
|
||||
func_8028FDC8(1.0f);
|
||||
}
|
||||
}//L802A3BB4
|
||||
|
||||
sp30 = func_8028FD30();
|
||||
switch(D_8037D344){
|
||||
case 0:
|
||||
if(sp30)
|
||||
D_8037D344 = 1;
|
||||
break;
|
||||
case 1://L802A3BF4
|
||||
sp34 = mlNormalizeAngle(pitch_getIdeal() - 30.0f);
|
||||
if((80.0f < sp34 && sp34 < 300.0f))
|
||||
sp34 = 300.0f;
|
||||
pitch_setIdeal(sp34);
|
||||
func_802A3404();
|
||||
if(sp30){
|
||||
player_setYVelocity(sp30 * 400.0);
|
||||
}
|
||||
if(!sp30){
|
||||
animctrl_setDuration(aCtrl, 0.62f);
|
||||
func_802A33D8();
|
||||
D_8037D344 = 0;
|
||||
}
|
||||
break;
|
||||
}//L802A3CB8
|
||||
if(animctrl_isAt(aCtrl, 0.1358f)){
|
||||
func_8030EBC8(SFX_2_CLAW_SWIPE, 0.6f, 0.7f, 0x2710, 0x2ee0);
|
||||
}
|
||||
gravity_set(-300.0f);
|
||||
if(miscflag_isTrue(9)){
|
||||
func_80297BF8(0.0f);
|
||||
func_80297A0C(0);
|
||||
sp38 = 0.0f;
|
||||
}
|
||||
else if(sp3C <= 80.0f){
|
||||
func_80297BF8(ml_map_f(sp3C, 60.0f, 80.0f, -99.9f, -1000.33));
|
||||
gravity_set(ml_map_f(sp3C, 60.0f, 80.0f, -300.0f, -700.0f));
|
||||
sp38 = ml_map_f(sp3C, 60.0f, 80.0f, 600.0f, 60.0f);
|
||||
}
|
||||
else{
|
||||
func_80297BF8(ml_map_f(sp3C, 300.0f, 310.0f, -399.99f, -99.9f));
|
||||
sp38 = ml_map_f(sp3C, 300.0f, 340.0f, 0.0f, 600.0f);
|
||||
}//L802A3E18
|
||||
|
||||
sp4C = func_802946F0();
|
||||
func_8029445C(sp40);
|
||||
|
||||
if(sp4C && -1.0 < sp40[1])
|
||||
sp38 = 0.0f;
|
||||
|
||||
func_8029797C(yaw_get());
|
||||
func_80297970(sp38);
|
||||
|
||||
if(should_beak_bust())
|
||||
sp54 = BS_F_BBUSTER;
|
||||
|
||||
D_8037D320 = max_f(D_8037D320 - time_getDelta(), 0.0f);
|
||||
if( D_8037D320 == 0.0f
|
||||
&& button_pressed(BUTTON_B)
|
||||
&& can_beak_bomb()
|
||||
){
|
||||
sp2C = 0;
|
||||
func_80346C10(&sp2C, 0, 1, ITEM_F_RED_FEATHER, 1);
|
||||
if(sp2C)
|
||||
sp54 = BS_BOMB;
|
||||
}
|
||||
|
||||
if(player_inWater())
|
||||
sp54 = BS_2D_SWIM_IDLE;
|
||||
|
||||
if(func_802A3350())
|
||||
sp54 = BS_1_IDLE;
|
||||
|
||||
func_8028FFF0();
|
||||
bs_setState(sp54);
|
||||
}
|
||||
|
||||
void func_802A3F70(void){
|
||||
func_802A34C8();
|
||||
}
|
||||
|
||||
|
||||
int bsbfly_bombHitboxActive(void){
|
||||
return D_8037D345;
|
||||
}
|
||||
|
||||
//bsbfly_bomb_init
|
||||
void func_802A3F9C(void){
|
||||
f32 sp1C[3];
|
||||
func_8028A180(ASSET_43_ANIM_BANJO_BEAKBOMB_START, 1.0f);
|
||||
func_8029C7F4(1,1,3,7);
|
||||
func_802A339C(D_8037D338, sp1C, 4200.0f);
|
||||
yaw_setIdeal(sp1C[1] + 180.0f);
|
||||
pitch_setIdeal(sp1C[0]);
|
||||
roll_setIdeal(0.0f);
|
||||
func_80297A0C(D_8037D338);
|
||||
pitch_setIdeal(sp1C[0]);
|
||||
func_8029E070(1);
|
||||
func_802914CC(4);
|
||||
func_802BFE74(1);
|
||||
func_802A3430();
|
||||
FUNC_8030E624(SFX_52_BANJO_YAH_OH, 1.0f, 28000);
|
||||
D_8037D345 = 0;
|
||||
_player_getPosition(D_8037D328);
|
||||
D_8037D344 = 0;
|
||||
func_802D8BE4(0);
|
||||
}
|
||||
|
||||
void func_802A4078(void){
|
||||
f32 plyr_pos[3];
|
||||
|
||||
_player_getPosition(plyr_pos);
|
||||
plyr_pos[0] += D_8037D338[0];
|
||||
plyr_pos[1] += D_8037D338[1];
|
||||
plyr_pos[2] += D_8037D338[2];
|
||||
func_80294A64(plyr_pos);
|
||||
func_8030E6D4(SFX_13_BEAKBUSTER_GROUND);
|
||||
}
|
||||
|
||||
s32 func_802A40E0(void){
|
||||
func_802A4078();
|
||||
item_dec(ITEM_14_HEALTH);
|
||||
if(item_getCount(ITEM_14_HEALTH))
|
||||
return BS_59_BFLY_UNK59;
|
||||
else
|
||||
return BS_41_DIE;
|
||||
}
|
||||
|
||||
void func_802A411C(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *sp58;
|
||||
Struct60s *phi_v0;
|
||||
f32 sp48[3];
|
||||
s32 sp44;
|
||||
s32 sp40;
|
||||
f32 sp34[3];
|
||||
f32 sp28[3];
|
||||
f32 sp24;
|
||||
|
||||
next_state = 0;
|
||||
sp58 = _player_getAnimCtrlPtr();
|
||||
switch (D_8037D344) {
|
||||
case 0:
|
||||
if (animctrl_isAt(sp58, 0.6905f)) {
|
||||
func_802978DC(8);
|
||||
func_802914CC(5);
|
||||
func_802BF590(&D_8037D338);
|
||||
animctrl_setDuration(sp58, 0.05f);
|
||||
func_80299CF4(SFX_50_KAZOOIE_RRRUH, 1.3f, 0x7FFF);
|
||||
D_8037D345 = 1;
|
||||
D_8037D324 = 0.0f;
|
||||
D_8037D344 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
func_802A36D0();
|
||||
D_8037D324 += time_getDelta();
|
||||
sp40 = func_8028B2E8();
|
||||
if (player_inWater()) {
|
||||
next_state = BS_4C_LANDING_IN_WATER;
|
||||
}
|
||||
if ((func_80294530()) || (sp40)) {
|
||||
if (sp40) {
|
||||
func_80294480(sp34);
|
||||
phi_v0 = func_8029463C();
|
||||
} else {
|
||||
func_802944D0(sp34);
|
||||
phi_v0 = func_802946F0();
|
||||
}
|
||||
if (phi_v0 != NULL) {
|
||||
sp44 = phi_v0->unk8;
|
||||
} else {
|
||||
sp44 = 0;
|
||||
}
|
||||
ml_vec3f_copy(sp28, &D_8037D338);
|
||||
ml_vec3f_normalize(sp28);
|
||||
sp24 = mlAbsF(sp34[0] * sp28[0] + sp34[1] * sp28[1] + sp34[2] * sp28[2]);
|
||||
if (miscflag_isTrue(8) || ((sp44 & 0x80) != 0)) {
|
||||
func_802A4078();
|
||||
next_state = BS_18_FLY_KNOCKBACK;
|
||||
} else if (0.4 < sp24) {
|
||||
if (0.65 > sp34[1]) {
|
||||
next_state = func_802A40E0();
|
||||
} else {
|
||||
next_state = BS_58;
|
||||
}
|
||||
} else if (sp40 != 0) {
|
||||
next_state = BS_58;
|
||||
}
|
||||
}
|
||||
_player_getPosition(sp48);
|
||||
ml_vec3f_diff(sp48, D_8037D328);
|
||||
if (sp48[0]*sp48[0] + sp48[1]*sp48[1] + sp48[2]*sp48[2] > 16000000.0f) {
|
||||
next_state = BS_57_BOMB_END;
|
||||
}
|
||||
if (animctrl_isStopped(sp58) != 0) {
|
||||
animctrl_setIndex(sp58, 0x47);
|
||||
animctrl_setDuration(sp58, 0.3f);
|
||||
animctrl_setPlaybackType(sp58, ANIMCTRL_LOOP);
|
||||
func_802875AC(sp58, "bsbfly.c", 0x361);
|
||||
}
|
||||
break;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802A4404(void){
|
||||
func_80299E6C();
|
||||
D_8037D345 = 0;
|
||||
func_802A34C8();
|
||||
}
|
||||
|
||||
void func_802A4430(void){
|
||||
AnimCtrl *plyr_animctrl;
|
||||
|
||||
plyr_animctrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(plyr_animctrl);
|
||||
animctrl_setTransitionDuration(plyr_animctrl, 0.3f);
|
||||
animctrl_setIndex(plyr_animctrl, ASSET_CC_ANIM_BANJO_BEAKBOMB_END);
|
||||
animctrl_setDuration(plyr_animctrl, 0.38f);
|
||||
animctrl_setPlaybackType(plyr_animctrl, ANIMCTRL_LOOP);
|
||||
func_802875AC(plyr_animctrl, "bsbfly.c", 0x38a);
|
||||
func_8029C7F4(1, 1, 3, 3);
|
||||
func_8029E070(1);
|
||||
func_802A3430();
|
||||
func_80293D74();
|
||||
func_80294378(1);
|
||||
roll_setIdeal(0.0f);
|
||||
pitch_setIdeal(0.0f);
|
||||
gravity_reset();
|
||||
func_80297B94();
|
||||
func_802921BC(0.0f);
|
||||
func_80299CF4(SFX_31_BANJO_OHHWAAOOO, 1.0f, 0x7fff);
|
||||
func_80299D2C(SFX_61_CARTOONY_FALL, 1.0f, 0x7fff);
|
||||
D_8037D320 = 0.35f;
|
||||
D_8037D344 = 0;
|
||||
}
|
||||
|
||||
void func_802A4548(void){
|
||||
s32 next_state = 0;
|
||||
f32 sp20[3];
|
||||
_get_velocity(sp20);
|
||||
switch(D_8037D344){
|
||||
case 0://L802A457C
|
||||
if(func_8028B254(0x5A)){
|
||||
func_8028A1F4(8, 2.0f, 0.6667f);
|
||||
D_8037D344 = 1;
|
||||
}
|
||||
break;
|
||||
case 1://L802A45A8
|
||||
break;
|
||||
}//L802A45A8
|
||||
D_8037D320 -= time_getDelta();
|
||||
if(D_8037D320 < 0.0f){
|
||||
D_8037D346 = 1;
|
||||
next_state = BS_24_FLY;
|
||||
}
|
||||
if(should_peck())
|
||||
next_state = BS_11_BPECK;
|
||||
|
||||
if(should_beak_bust())
|
||||
next_state = BS_F_BBUSTER;
|
||||
|
||||
if(func_8028B2E8()){
|
||||
func_8029C5E8();
|
||||
next_state = BS_20_LANDING;
|
||||
}
|
||||
|
||||
if(player_inWater())
|
||||
next_state = BS_2D_SWIM_IDLE;
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802A4664(void){
|
||||
s32 next_state;
|
||||
func_80299E6C();
|
||||
func_80299E90();
|
||||
next_state = bs_getNextState();
|
||||
if(next_state == BS_20_LANDING || next_state == BS_24_FLY || next_state == BS_2D_SWIM_IDLE){
|
||||
func_8030E484(SFX_3EA_UNKNOWN);
|
||||
}
|
||||
func_802A34C8();
|
||||
func_8029E070(0);
|
||||
}
|
||||
|
||||
void func_802A46C8(void) {
|
||||
f32 phi_f20;
|
||||
|
||||
for(phi_f20 = 0.0f; phi_f20 < 360.0f; phi_f20 += 45.0f){
|
||||
func_80292900(phi_f20, 230.0f);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_802A4748(void) {
|
||||
func_8028A180(0x3E, 1.4f);
|
||||
func_8029C7F4(1, 1, 3, 3);
|
||||
func_8029E070(1);
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 32750);
|
||||
func_80299CF4(SFX_36_BANJO_DOH, 1.0f, 28000);
|
||||
func_80250D94(1.0f, 0.5f, 0.5f);
|
||||
item_dec(ITEM_14_HEALTH);
|
||||
func_802A46C8();
|
||||
func_8028D5DC();
|
||||
D_8037D344 = 0;
|
||||
}
|
||||
|
||||
void func_802A47E0(void) {
|
||||
AnimCtrl *sp1C;
|
||||
|
||||
sp1C = _player_getAnimCtrlPtr();
|
||||
if (animctrl_isAt(sp1C, 0.3659f)) {
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 1.0f, 14000);
|
||||
func_80299CF4(SFX_8B_KAZOOIE_RAWW, 1.0f, 28000);
|
||||
}
|
||||
if (animctrl_isAt(sp1C, 0.6862f)) {
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 18000);
|
||||
func_80299CF4(SFX_38_BANJO_AYE_1, 1.0f, 22000);
|
||||
}
|
||||
if (animctrl_isAt(sp1C, 0.92f)) {
|
||||
func_80297970(0.0f);
|
||||
}
|
||||
if (animctrl_getAnimTimer(sp1C) < 0.8) {
|
||||
func_802929F8();
|
||||
}
|
||||
}
|
||||
|
||||
void func_802A48B4(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *sp18;
|
||||
|
||||
next_state = 0;
|
||||
sp18 = _player_getAnimCtrlPtr();
|
||||
func_80299628(0);
|
||||
switch (D_8037D344) {
|
||||
case 0:
|
||||
func_802A47E0();
|
||||
if (animctrl_isAt(sp18, 0.2f) != 0) {
|
||||
if (item_getCount(ITEM_14_HEALTH) == 0) {
|
||||
func_8029C984();
|
||||
func_8029151C(0xD);
|
||||
func_802BF2C0(30.0f);
|
||||
func_8029B930();
|
||||
func_8029E3C0(0, 2.5f);
|
||||
D_8037D344 = 2;
|
||||
}
|
||||
} else if (animctrl_isAt(sp18, 0.92f)) {
|
||||
func_8028A180(0xD2, 2.25f);
|
||||
D_8037D344 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (animctrl_isAt(sp18, 0.219f)) {
|
||||
func_80299CF4(SFX_36_BANJO_DOH, 1.0f, 0x3E80);
|
||||
}
|
||||
if (animctrl_isAt(sp18, 0.63f)) {
|
||||
next_state = BS_20_LANDING;
|
||||
}
|
||||
if (animctrl_isStopped(sp18)) {
|
||||
next_state = BS_1_IDLE;
|
||||
}
|
||||
if (func_8028B094()) {
|
||||
next_state = BS_2F_FALL;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
func_802A47E0();
|
||||
if (func_8029E1A8(0)) {
|
||||
func_8029B890();
|
||||
}
|
||||
break;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
|
||||
void func_802A4A40(void) {
|
||||
func_80291548();
|
||||
func_8029CB84();
|
||||
func_8029E070(0);
|
||||
func_8028D5F4();
|
||||
}
|
||||
|
||||
void func_802A4A78(s32 arg0) {
|
||||
f32 sp3C[3];
|
||||
f32 sp30[3];
|
||||
f32 sp2C;
|
||||
f32 sp28;
|
||||
f32 pad24;
|
||||
f32 sp20;
|
||||
|
||||
if (arg0 == 0) {
|
||||
sp2C = -2200.0f;
|
||||
sp20 = 800.0f;
|
||||
} else {
|
||||
sp2C = -1200.0f;
|
||||
sp20 = 400.0f;
|
||||
}
|
||||
func_802BB3DC(2, 100.0f, 0.85f);
|
||||
func_8028A274(0xD3, 1.2f);
|
||||
func_80299BFC(1.0f);
|
||||
func_80250D94(1.0f, 0.5f, 0.5f);
|
||||
_player_getPosition(sp3C);
|
||||
func_80294980(sp30);
|
||||
func_80257F18(sp30, sp3C, &sp28);
|
||||
yaw_setIdeal(mlNormalizeAngle(sp28 + 180.0f));
|
||||
yaw_applyIdeal();
|
||||
func_80297970(sp20);
|
||||
func_8029797C(sp28);
|
||||
func_802979AC(sp28, func_80297A64());
|
||||
if ((arg0 == 1) && (map_get() == MAP_90_GL_BATTLEMENTS)) {
|
||||
yaw_setIdeal(mlNormalizeAngle(sp28));
|
||||
yaw_applyIdeal();
|
||||
}
|
||||
func_8029C7F4(1, 1, 2, 3);
|
||||
player_setYVelocity(800.0f);
|
||||
gravity_set(sp2C);
|
||||
func_80297BF8(-4000.0f);
|
||||
func_8029E070(1);
|
||||
func_802914CC(4);
|
||||
func_802BFE50(12.0f, 10000.0f, 800.0f);
|
||||
func_8028D5DC();
|
||||
func_802A3430();
|
||||
}
|
||||
|
||||
void func_802A4C34(s32 arg0) {
|
||||
s32 next_state;
|
||||
|
||||
next_state = 0;
|
||||
if (animctrl_isStopped(_player_getAnimCtrlPtr())) {
|
||||
next_state = BS_24_FLY;
|
||||
}
|
||||
if (func_8028B2E8()) {
|
||||
next_state = BS_2_WALK_SLOW;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802A4C88(s32 arg0) {
|
||||
func_80297B3C();
|
||||
func_8028D5F4();
|
||||
func_80297CA8();
|
||||
func_8029E070(0);
|
||||
func_80291548();
|
||||
func_802A34C8();
|
||||
}
|
||||
|
||||
void func_802A4CD0(void){
|
||||
func_802A4A78(0);
|
||||
}
|
||||
|
||||
void func_802A4CF0(void){
|
||||
func_802A4C34(0);
|
||||
}
|
||||
|
||||
void func_802A4D10(void){
|
||||
func_802A4C88(0);
|
||||
}
|
||||
|
||||
void func_802A4D30(void){
|
||||
func_802A4A78(1);
|
||||
}
|
||||
|
||||
void func_802A4D50(void){
|
||||
func_802A4C34(1);
|
||||
}
|
||||
|
||||
void func_802A4D70(void){
|
||||
func_802A4C88(1);
|
||||
}
|
||||
|
||||
void func_802A4D90(void) {
|
||||
f32 sp34;
|
||||
f32 sp28[3];
|
||||
f32 sp1C[3];
|
||||
|
||||
func_802BB3DC(2, 100.0f, 0.85f);
|
||||
func_8028A274(0x10D, 1.0f);
|
||||
func_8030E58C(SFX_56_BANJO_HUI, 1.0f);
|
||||
_player_getPosition(&sp28);
|
||||
func_80294980(sp1C);
|
||||
func_80257F18(sp1C, sp28, &sp34);
|
||||
yaw_setIdeal(mlNormalizeAngle(sp34 + 180.0f));
|
||||
yaw_applyIdeal();
|
||||
func_80297970(1300.0f);
|
||||
func_8029797C(sp34);
|
||||
func_802979AC(sp34, func_80297A64());
|
||||
if (map_get() == MAP_90_GL_BATTLEMENTS) {
|
||||
yaw_setIdeal(mlNormalizeAngle(sp34));
|
||||
yaw_applyIdeal();
|
||||
}
|
||||
func_8029C7F4(1, 1, 2, 3);
|
||||
player_setYVelocity(400.0f);
|
||||
gravity_set(-1800.0f);
|
||||
func_8028D5DC();
|
||||
func_802914CC(4);
|
||||
func_802BFE50(12.0f, 10000.0f, 800.0f);
|
||||
}
|
||||
|
||||
void func_802A4EC8(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *sp18;
|
||||
|
||||
next_state = 0;
|
||||
sp18 = _player_getAnimCtrlPtr();
|
||||
if (func_8028B2E8()) {
|
||||
next_state = BS_20_LANDING;
|
||||
}
|
||||
if (animctrl_isStopped(sp18) && (func_8028B094() || func_80294530())) {
|
||||
D_8037D346 = 1;
|
||||
next_state = BS_24_FLY;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802A4F44(void){
|
||||
gravity_reset();
|
||||
func_8028D5F4();
|
||||
func_802A34C8();
|
||||
}
|
||||
|
||||
void func_802A4F74(void) {
|
||||
func_8028A010(ANIM_BANJO_FLY, 0.62f);
|
||||
func_8029C7F4(1, 1, 3, 7);
|
||||
func_8029E070(1);
|
||||
func_802914CC(4);
|
||||
func_802A3430();
|
||||
}
|
||||
|
||||
void func_802A4FC8(void) {
|
||||
s32 next_state;
|
||||
|
||||
next_state = 0;
|
||||
if (animctrl_isAt(_player_getAnimCtrlPtr(), 0.1358f) != 0) {
|
||||
func_8030EBC8(SFX_2_CLAW_SWIPE, 0.6f, 0.7f, 10000, 12000);
|
||||
}
|
||||
if (func_80298850() == 0) {
|
||||
next_state = BS_24_FLY;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802A503C(void){
|
||||
func_802A34C8();
|
||||
}
|
||||
|
||||
void func_802A505C(void){
|
||||
if(bs_getInterruptType() == 9){
|
||||
func_8029A86C(2);
|
||||
miscflag_set(7);
|
||||
func_8029CCC4();
|
||||
}else{
|
||||
func_80296608();
|
||||
}
|
||||
}
|
||||
|
||||
/* BREAK??? */
|
||||
extern void func_8028A084(s32, f32);
|
||||
|
||||
/* .code */
|
||||
void func_802A50B0(void){
|
||||
func_802A3430();
|
||||
bsdrone_init();
|
||||
}
|
||||
|
||||
void func_802A50D8(void){
|
||||
bsdrone_update();
|
||||
}
|
||||
|
||||
void func_802A50F8(void){
|
||||
bsdrone_end();
|
||||
func_802A34C8();
|
||||
}
|
||||
|
||||
void func_802A5120(void){
|
||||
func_8028A084(0x68, 0.35f);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
func_80297970(0.0f);
|
||||
func_80297A0C(0);
|
||||
player_setYVelocity(2000.0f);
|
||||
func_80299CF4(SFX_63_BANJO_UWAAAAOOH, 1.0f, 32000);
|
||||
}
|
||||
|
||||
void func_802A5190(void){
|
||||
player_setYVelocity(2000.0f);
|
||||
bs_setState(0);
|
||||
}
|
||||
|
||||
void func_802A51C0(void){}
|
||||
505
src/core2/bs/bLongLeg.c
Normal file
505
src/core2/bs/bLongLeg.c
Normal file
@@ -0,0 +1,505 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .data */
|
||||
const f32 D_80364A40 = 80.0f;
|
||||
const f32 D_80364A44 = 500.0f;
|
||||
const f32 D_80364A48 = 1.0f;
|
||||
const f32 D_80364A4C = 0.8f;
|
||||
const f32 D_80364A50 = 400.0f;
|
||||
const f32 D_80364A54 = -800.0f;
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037D350;
|
||||
f32 D_8037D354;
|
||||
f32 D_8037D358;
|
||||
f32 D_8037D35C;
|
||||
u8 D_8037D360;
|
||||
u8 D_8037D361;
|
||||
|
||||
/* .code */
|
||||
int func_802A51D0(void){
|
||||
if(func_8029D66C())
|
||||
return 0;
|
||||
return player_inWater();
|
||||
}
|
||||
|
||||
void func_802A5208(int arg0){
|
||||
if(arg0)
|
||||
func_8030E5F4(SFX_49_KAZOOIE_RA, 0.88f);
|
||||
else
|
||||
func_8030E5F4(SFX_49_KAZOOIE_RA, 0.96f);
|
||||
}
|
||||
|
||||
void func_802A524C(void){
|
||||
f32 sp1C = func_8029B30C();
|
||||
if(!func_8029B300())
|
||||
func_80297970(0.0f);
|
||||
else
|
||||
func_80297970(func_80257C48(sp1C, D_80364A40, D_80364A44));
|
||||
}
|
||||
|
||||
int bslongleg_inSet(s32 move_indx){
|
||||
return (move_indx == BS_26_LONGLEG_IDLE)
|
||||
|| (move_indx == BS_LONGLEG_WALK)
|
||||
|| (move_indx == BS_LONGLEG_JUMP)
|
||||
|| (move_indx == BS_LONGLEG_EXIT)
|
||||
|| (move_indx == BS_LONGLEG_SLIDE)
|
||||
|| (move_indx == BS_LONGLEG_DRONE)
|
||||
|| (move_indx == BS_LONGLEG_UNK62);
|
||||
}
|
||||
|
||||
void func_802A531C(void){
|
||||
func_80299650(func_80291684(2), func_80291670(2));
|
||||
if(func_80291700(2, 0.01f))
|
||||
func_8030E484(0x3eb);
|
||||
}
|
||||
|
||||
void func_802A5374(void){
|
||||
func_80292078(1, -50.0f);
|
||||
func_8029B324(0, 0.03f);
|
||||
func_8029B324(1, 1.0f);
|
||||
func_8029E070(1);
|
||||
func_8029E064(1);
|
||||
func_8029E0F4(1);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
roll_setAngularVelocity(1000.0f, 12.0f);
|
||||
miscflag_set(3);
|
||||
}
|
||||
|
||||
void func_802A5404(void){
|
||||
if(bslongleg_inSet(bs_getNextState()))
|
||||
return;
|
||||
|
||||
func_80292078(1,0);
|
||||
func_8029B0C0();
|
||||
func_8029E070(0);
|
||||
func_8029E064(0);
|
||||
func_8029E0F4(0);
|
||||
func_80292090(1);
|
||||
pitch_setIdeal(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
func_802917C4(2);
|
||||
func_803219F4(1);
|
||||
miscflag_clear(3);
|
||||
func_8029E180(4, 0.5f);
|
||||
func_802A531C();
|
||||
}
|
||||
|
||||
void func_802A54A8(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, 0);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_LONGLEG_ENTER_AS_BIRD);
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsblongleg.c", 0xe1);
|
||||
func_802917E4(2, D_8037D35C);
|
||||
func_803219F4(2);
|
||||
func_8030E2C4(D_8037D361);
|
||||
D_8037D360 = 1;
|
||||
}
|
||||
|
||||
void func_802A5548(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, 0);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_LONGLEG_ENTER_AS_BEAR);
|
||||
animctrl_setDuration(aCtrl, 0.5f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsblongleg.c", 0xf6);
|
||||
D_8037D360 = 0;
|
||||
}
|
||||
|
||||
void bsblongleg_enter_init(void){
|
||||
D_8037D361 = func_8030D90C();
|
||||
sfxsource_setSfxId(D_8037D361, SFX_2C_PULLING_NOISE);
|
||||
func_8030E04C(D_8037D361, 0.8f, 1.9f, 1.2f);
|
||||
miscflag_clear(MISC_FLAG_E_TOUCHING_WADING_BOOTS);
|
||||
if(bsbtrot_inSet(bs_getPrevState()))
|
||||
func_802A54A8();
|
||||
else
|
||||
func_802A5548();
|
||||
func_8029C7F4(1,1,3,2);
|
||||
func_80297970(0.0f);
|
||||
func_802A5374();
|
||||
func_80299BD4();
|
||||
}
|
||||
|
||||
void bsblongleg_enter_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
func_802A531C();
|
||||
func_80299594(1, 0.5f);
|
||||
switch(D_8037D360){
|
||||
case 0:
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
func_802A54A8();
|
||||
break;
|
||||
case 1:
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
sp1C = BS_26_LONGLEG_IDLE;
|
||||
break;
|
||||
}
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bsblongleg_enter_end(void){
|
||||
func_802A5404();
|
||||
func_8030DA44(D_8037D361);
|
||||
}
|
||||
|
||||
void bsblongleg_stand_enter(void){
|
||||
func_8028A010(ANIM_BANJO_LONGLEG_IDLE, 1.0f);
|
||||
func_8029C7F4(1,1,1,2);
|
||||
func_80297970(0.0f);
|
||||
func_80292090(2);
|
||||
func_802A5374();
|
||||
}
|
||||
|
||||
void bsblongleg_stand_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
func_802A531C();
|
||||
func_80299594(1, 0.5f);
|
||||
if(func_80294F78())
|
||||
next_state = func_802926C0();
|
||||
|
||||
if(button_pressed(BUTTON_B))
|
||||
func_802917C4(2);
|
||||
|
||||
if(func_8029B300() > 0)
|
||||
next_state = BS_LONGLEG_WALK;
|
||||
|
||||
if(player_shouldSlideTrot())
|
||||
next_state = BS_LONGLEG_SLIDE;
|
||||
|
||||
if(button_pressed(BUTTON_A) && func_8028B2E8())
|
||||
next_state = BS_LONGLEG_JUMP;
|
||||
|
||||
if(func_802916CC(2))
|
||||
next_state = BS_LONGLEG_EXIT;
|
||||
|
||||
if(func_802A51D0())
|
||||
next_state = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
bs_setState(next_state);
|
||||
|
||||
}
|
||||
|
||||
void bsblongleg_stand_end(void){
|
||||
func_802A5404();
|
||||
}
|
||||
|
||||
void bsblongleg_walk_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_LONGLEG_WALK);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_LOOP);
|
||||
func_802875AC(aCtrl, "bsblongleg.c", 0x1a1);
|
||||
func_8029C7F4(2,1,1,2);
|
||||
func_80289EC8(D_80364A40, D_80364A44, D_80364A48, D_80364A4C);
|
||||
}
|
||||
|
||||
void bsblongleg_walk_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
func_802A531C();
|
||||
func_80299594(1, 0.5f);
|
||||
func_8029AD28(0.47f, 4);
|
||||
func_8029AD28(0.97f, 3);
|
||||
if(animctrl_isAt(aCtrl, 0.7781f))
|
||||
func_802A5208(0);
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.2781f))
|
||||
func_802A5208(1);
|
||||
|
||||
func_802A524C();
|
||||
if(button_pressed(BUTTON_B) && func_80297A64() == 0.0f)
|
||||
func_802917C4(2);
|
||||
|
||||
if(!func_8029B300() && func_80297C04(1.0f))
|
||||
sp1C = BS_26_LONGLEG_IDLE;
|
||||
|
||||
if(player_shouldSlideTrot())
|
||||
sp1C = BS_LONGLEG_SLIDE;
|
||||
|
||||
if(button_pressed(BUTTON_A) && func_8028B2E8())
|
||||
sp1C = BS_LONGLEG_JUMP;
|
||||
|
||||
if(func_802916CC(2))
|
||||
sp1C = BS_LONGLEG_EXIT;
|
||||
|
||||
if(func_802A51D0())
|
||||
sp1C = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bsblongleg_walk_end(void){
|
||||
func_802A5404();
|
||||
}
|
||||
|
||||
void func_802A5AB0(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, 0);
|
||||
animctrl_setDirection(aCtrl, 0);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_LONGLEG_ENTER_AS_BIRD);
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsblongleg.c", 0x200);
|
||||
D_8037D360 = 0;
|
||||
}
|
||||
|
||||
void func_802A5B34(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, 0);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_BTROT_EXIT);
|
||||
animctrl_setDuration(aCtrl, 0.6f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsblongleg.c", 0x210);
|
||||
D_8037D360 = 1;
|
||||
}
|
||||
|
||||
void bsblongleg_exit_init(void){
|
||||
func_802A5AB0();
|
||||
func_80289F10(1);
|
||||
func_8029957C(2);
|
||||
func_80297970(0.0f);
|
||||
D_8037D361 = func_8030D90C();
|
||||
sfxsource_setSfxId(D_8037D361, SFX_2C_PULLING_NOISE);
|
||||
func_8030E04C(D_8037D361, 1.4f, 0.4f, -1.2f);
|
||||
}
|
||||
|
||||
void bsblongleg_exit_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
func_802A531C();
|
||||
func_80299628(1);
|
||||
switch(D_8037D360){
|
||||
case 0://L802A5C7C
|
||||
if(animctrl_isAt(aCtrl, 0.68f))
|
||||
func_8030E2C4(D_8037D361);
|
||||
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
func_802A5B34();
|
||||
|
||||
break;
|
||||
case 1://L802A5CB4
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
sp1C = BS_1_IDLE;
|
||||
break;
|
||||
}
|
||||
|
||||
if(func_802A51D0())
|
||||
sp1C = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
bs_setState(sp1C);
|
||||
|
||||
}
|
||||
|
||||
void bsblongleg_exit_end(void){
|
||||
func_8030DA44(D_8037D361);
|
||||
func_802A5404();
|
||||
}
|
||||
|
||||
void bsblongleg_jump_init(void){
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
D_8037D350 = 0.14f;
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_LONGLEG_JUMP);
|
||||
animctrl_setTransitionDuration(aCtrl, 0.134f);
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
func_8028774C(aCtrl, D_8037D350);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.42f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsblongleg.c", 0x27F);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
if(func_8029B2E8() != 0.0f)
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802A524C();
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
player_setYVelocity(D_80364A50);
|
||||
gravity_set(D_80364A54);
|
||||
func_8030E58C(SFX_48_KAZOOIE_RUUH, 0.9f);
|
||||
D_8037D360 = 0;
|
||||
}
|
||||
|
||||
void bsblongleg_jump_update(void){
|
||||
enum bs_e sp44 = 0;
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp34[3];
|
||||
f32 sp30;
|
||||
|
||||
func_802A531C();
|
||||
func_802A524C();
|
||||
_get_velocity(&sp34);
|
||||
if(button_released(BUTTON_A) && 0.0f < sp34[1])
|
||||
gravity_reset();
|
||||
|
||||
sp30 = player_getYPosition() - func_80294438();
|
||||
switch(D_8037D360){
|
||||
case 0://L802A5F24
|
||||
if((sp34[1] < 100.0f) || sp30 < 10.0f)
|
||||
animctrl_setDuration(aCtrl, 0.4f);
|
||||
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.5282f);
|
||||
animctrl_setDuration(aCtrl, 4.5f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D360 = 1;
|
||||
}
|
||||
break;
|
||||
case 1://L802A5FA8
|
||||
if((0.4 < animctrl_getAnimTimer(aCtrl)) && sp30 < 70.0f){
|
||||
D_8037D350 = animctrl_getAnimTimer(aCtrl);
|
||||
D_8037D354 = sp30;
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_STOPPED);
|
||||
D_8037D360 = 2;
|
||||
}
|
||||
break;
|
||||
case 2://L802A6020
|
||||
animctrl_setAnimTimer(aCtrl, ml_map_f(sp30, D_8037D354, 1.0f, D_8037D350, 0.6703f));
|
||||
func_80299594(1, 0.5f);
|
||||
if(func_8028B2E8()){
|
||||
func_8029C5E8();
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(aCtrl, 1.3f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D360 = 3;
|
||||
}
|
||||
break;
|
||||
case 3://L802A60AC
|
||||
func_80299594(1, 0.5f);
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
sp44 = BS_26_LONGLEG_IDLE;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
sp44 = BS_LONGLEG_JUMP;
|
||||
|
||||
if(func_802916CC(2))
|
||||
sp44 = BS_LONGLEG_EXIT;
|
||||
|
||||
break;
|
||||
}//L802A60F0
|
||||
|
||||
|
||||
if(func_802A51D0())
|
||||
sp44 = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
bs_setState(sp44);
|
||||
}
|
||||
|
||||
void bsblongleg_jump_end(void){
|
||||
gravity_reset();
|
||||
func_802A5404();
|
||||
}
|
||||
|
||||
void bsblongleg_slide_init(void){
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_LONGLEG_JUMP);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_STOPPED);
|
||||
func_8028774C(aCtrl, 0.0865f);
|
||||
func_802875AC(aCtrl, "bsblongleg.c", 0x339);
|
||||
func_8029C7F4(1,1,3,3);
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
func_8029E070(1);
|
||||
func_8029E064(1);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
roll_setAngularVelocity(1000.0f, 12.0f);
|
||||
func_80297970(0.0f);
|
||||
func_80299AAC();
|
||||
D_8037D358 = 1.0f;
|
||||
}
|
||||
|
||||
void bsblongleg_slide_update(void){
|
||||
enum bs_e sp3C = 0;
|
||||
f32 sp30[3];
|
||||
f32 sp2C;
|
||||
|
||||
func_802A531C();
|
||||
func_80299AAC();
|
||||
D_8037D358 = max_f(D_8037D358 - time_getDelta(), 0.0f);
|
||||
|
||||
if(player_isSliding()){
|
||||
func_80294480(sp30);
|
||||
func_8025801C(sp30, &sp2C);
|
||||
func_80299594(1, 0.5f);
|
||||
func_80297970(ml_map_f(pitch_getIdeal(), 20.0f, 60.0f, 550.0f, 700.0f));
|
||||
func_8029797C(sp2C);
|
||||
func_8029C22C();
|
||||
}else{//L802A6304
|
||||
sp3C = BS_26_LONGLEG_IDLE;
|
||||
}
|
||||
|
||||
if(D_8037D358 == 0.0f && button_pressed(BUTTON_A))
|
||||
sp3C = BS_LONGLEG_JUMP;
|
||||
|
||||
if(func_802A51D0())
|
||||
sp3C = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
bs_setState(sp3C);
|
||||
}
|
||||
|
||||
void bsblongleg_slide_end(void){
|
||||
func_802A5404();
|
||||
}
|
||||
|
||||
void func_802A6388(f32 arg0){
|
||||
D_8037D35C = arg0;
|
||||
}
|
||||
|
||||
void func_802A6394(void){
|
||||
func_8028A010(ANIM_BANJO_LONGLEG_IDLE, 1.0f);
|
||||
func_8029C7F4(1,1,3,2);
|
||||
func_80297970(0.0f);
|
||||
func_802A5374();
|
||||
func_80292090(2);
|
||||
func_8029C674();
|
||||
}
|
||||
|
||||
void func_802A63F0(void){
|
||||
enum bs_e sp1C = 0;
|
||||
func_802A531C();
|
||||
func_8029C6D0();
|
||||
func_80299628(1);
|
||||
|
||||
if(func_80298850() == 0)
|
||||
sp1C = BS_26_LONGLEG_IDLE;
|
||||
|
||||
if(func_802A51D0())
|
||||
sp1C = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void func_802A6450(void){
|
||||
func_8029C748();
|
||||
func_802A5404();
|
||||
}
|
||||
|
||||
void bsblongleg_drone_init(void){
|
||||
func_802A5374();
|
||||
bsdrone_init();
|
||||
}
|
||||
|
||||
void bsblongleg_drone_update(void){
|
||||
func_802A531C();
|
||||
bsdrone_update();
|
||||
if(func_802916CC(2))
|
||||
bs_setState(BS_LONGLEG_EXIT);
|
||||
}
|
||||
|
||||
void bsblongleg_drone_end(void){
|
||||
bsdrone_end();
|
||||
func_802A5404();
|
||||
}
|
||||
|
||||
137
src/core2/bs/bPeck.c
Normal file
137
src/core2/bs/bPeck.c
Normal file
@@ -0,0 +1,137 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void func_80292048(s32, f32, f32, f32);
|
||||
void func_802875AC(AnimCtrl *, char *, s32);
|
||||
|
||||
/* .data */
|
||||
f32 D_80364A60 = -1400.0f;
|
||||
f32 D_80364A64 = 120.0f;
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037D370;
|
||||
u8 D_8037D374;
|
||||
u8 D_8037D375;
|
||||
u8 D_8037D376;
|
||||
u8 D_8037D377;
|
||||
|
||||
/* .code */
|
||||
s32 func_802A6510(void){
|
||||
return D_8037D376;
|
||||
}
|
||||
|
||||
void bsbpeck_init(void){
|
||||
D_8037D377 = 0;
|
||||
switch(bs_getPrevState()){
|
||||
case BS_8_BTROT_JUMP://L802A656C
|
||||
D_8037D377++;
|
||||
break;
|
||||
case BS_5_JUMP:
|
||||
case BS_2F_FALL:
|
||||
case BS_3D_FALL_TUMBLING:
|
||||
case BS_57_BOMB_END:
|
||||
break;
|
||||
}
|
||||
if(func_80293234() == 1)
|
||||
func_80293240(2);
|
||||
|
||||
func_8028A274(0x1a, 0.2f);
|
||||
func_8029C7F4(1,3,1,6);
|
||||
func_80299234(1200.0f, 10.0f);
|
||||
func_8029E070(1);
|
||||
gravity_set(D_80364A60);
|
||||
player_setYVelocity(D_80364A64);
|
||||
func_80292048(1, -38.0f, 0.0f, 105.0f);
|
||||
func_80292048(0, -38.0f, 0.0f, -7.0f);
|
||||
func_8028D638(0x23, 0x2A);
|
||||
D_8037D375 = 0;
|
||||
D_8037D374 = 0;
|
||||
D_8037D376 = 1;
|
||||
}
|
||||
|
||||
void func_802A664C(void){
|
||||
f32 sp1C = 1.0f;
|
||||
switch(D_8037D375){
|
||||
case 0:
|
||||
sp1C = 1.13f;
|
||||
break;
|
||||
case 1:
|
||||
sp1C = 1.1f;
|
||||
break;
|
||||
case 2:
|
||||
sp1C = 1.32f;
|
||||
break;
|
||||
}
|
||||
miscflag_set(5);
|
||||
func_8030E58C(SFX_42_KAZOOIE_RAH, sp1C);
|
||||
player_setYVelocity(D_80364A64);
|
||||
D_8037D375++;
|
||||
}
|
||||
|
||||
void bsbpeck_update(void){
|
||||
enum bs_e sp24 = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
func_802B6FA8();
|
||||
if(D_8037D377){
|
||||
func_80297970(func_80297A64() * 0.1);
|
||||
}
|
||||
|
||||
switch(D_8037D374){
|
||||
case 0://L802A6770
|
||||
if(animctrl_isAt(aCtrl, 0.9126f)){
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_BPECK_ENTER);
|
||||
func_8028774C(aCtrl, 0.0f);
|
||||
animctrl_setDuration(aCtrl, 0.35f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_LOOP);
|
||||
func_802875AC(aCtrl, "bsbpeck.c", 0xbd);
|
||||
D_8037D370 = 0.5f;
|
||||
D_8037D374 = 1;
|
||||
}
|
||||
break;
|
||||
case 1://L802A67E8
|
||||
if(animctrl_isAt(aCtrl, 0.1621f))
|
||||
func_802A664C();
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.7f))
|
||||
func_802A664C();
|
||||
|
||||
D_8037D370 -= time_getDelta();
|
||||
if(D_8037D370 < 0.0f){
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, 0);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_BPECK);
|
||||
animctrl_setDirection(aCtrl, 0);
|
||||
animctrl_setDuration(aCtrl, 0.2f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsbpeck.c", 0xd4);
|
||||
D_8037D374 = 2;
|
||||
}
|
||||
break;
|
||||
case 2://L802A68C4
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
sp24 = BS_2F_FALL;
|
||||
break;
|
||||
}//L802A68D8
|
||||
|
||||
if(func_8028B2E8()){
|
||||
func_8029C5E8();
|
||||
sp24 = BS_1_IDLE;
|
||||
}
|
||||
|
||||
if(player_inWater())
|
||||
sp24 = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
bs_setState(sp24);
|
||||
}
|
||||
|
||||
void bsbpeck_end(void){
|
||||
D_8037D376 = 0;
|
||||
ability_use(0xa);
|
||||
func_80292048(1, 0.0f, 0.0f, 0.0f);
|
||||
func_80292048(0, 0.0f, 0.0f, 0.0f);
|
||||
func_8028D638(0, 0);
|
||||
func_8029E070(0);
|
||||
gravity_reset();
|
||||
}
|
||||
195
src/core2/bs/bShock.c
Normal file
195
src/core2/bs/bShock.c
Normal file
@@ -0,0 +1,195 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"s
|
||||
|
||||
/* .data */
|
||||
const f32 D_80364A70 = 1250.0f;
|
||||
const f32 D_80364A74 = -1200.f;
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D380;
|
||||
u8 D_8037D381;
|
||||
u8 D_8037D382;
|
||||
|
||||
/* .code */
|
||||
void bsbshock_charge_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_BSHOCK_CHARGE);
|
||||
animctrl_setTransitionDuration(aCtrl, 0.4f);
|
||||
animctrl_setDuration(aCtrl, 4.2f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.1061f);
|
||||
animctrl_setPlaybackType(aCtrl,1);
|
||||
func_802875AC(aCtrl, "bsbshock.c", 0x61);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
|
||||
if(func_8029B2E8() != 0.0f)
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802B6FA8();
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
func_8029E064(1);
|
||||
func_8029E070(1);
|
||||
func_80299BD4();
|
||||
D_8037D382 = func_8030D90C();
|
||||
sfxsource_setSfxId(D_8037D382, SFX_2C_PULLING_NOISE);
|
||||
func_8030E04C(D_8037D382, 1.4f, 0.4f, -1.2f);
|
||||
func_80292158(-50.0f);
|
||||
func_80298528(-50.0f);
|
||||
D_8037D380 = 1;
|
||||
D_8037D381 = 0;
|
||||
}
|
||||
|
||||
void bsbshock_charge_update(void){
|
||||
enum bs_e sp2C = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp1C[3];
|
||||
|
||||
if(func_8028B2E8()){
|
||||
if(func_8023DB5C() % 2)
|
||||
func_8029C348();
|
||||
}
|
||||
else
|
||||
{//L802A6B94
|
||||
func_8029C348();
|
||||
}
|
||||
func_802B6FA8();
|
||||
_get_velocity(&sp1C);
|
||||
if(button_released(BUTTON_A) && 0.0f < sp1C[1]){
|
||||
gravity_reset();
|
||||
}
|
||||
|
||||
switch(D_8037D381){
|
||||
case 0:
|
||||
if(func_8028B424())
|
||||
sp2C = BS_3D_FALL_TUMBLING;
|
||||
|
||||
if(func_8028B254(0x82)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(aCtrl, 2.8f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D381 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if(animctrl_isAt(aCtrl, 0.11f))
|
||||
func_8030E2C4(D_8037D382);
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.4036f))
|
||||
animctrl_setDuration(aCtrl, 1.4f);
|
||||
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
sp2C = BS_1_IDLE;
|
||||
break;
|
||||
}//L802A6CAC
|
||||
|
||||
if(func_8028B254(0x3C)){
|
||||
if(animctrl_getAnimTimer(aCtrl) < 0.3637 && button_released(8)){
|
||||
D_8037D380 = 0;
|
||||
}//L802A6CF4
|
||||
if(func_8028B2E8())
|
||||
func_80297970(0.0f);
|
||||
}
|
||||
else{//L802A6D18
|
||||
if(should_flap())
|
||||
sp2C = BS_BFLAP;
|
||||
|
||||
if(should_beak_bust())
|
||||
sp2C = BS_F_BBUSTER;
|
||||
}//L802A6D44
|
||||
if(animctrl_isAt( aCtrl, 0.3637f) && D_8037D380)
|
||||
sp2C = BS_BSHOCK_JUMP;
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.5551f)){
|
||||
player_setYVelocity(180.0f);
|
||||
func_80292158(0.0f);
|
||||
func_80298528(50.0f);
|
||||
}
|
||||
|
||||
if(sp1C[1] < 0.0f && player_inWater())
|
||||
sp2C = BS_4C_LANDING_IN_WATER;
|
||||
bs_setState(sp2C);
|
||||
}
|
||||
|
||||
void bsbshock_charge_end(void){
|
||||
func_8030DA44(D_8037D382);
|
||||
func_8029E064(0);
|
||||
func_8029E070(0);
|
||||
if(func_80292230() != 0.0f){
|
||||
func_80292158(0.0f);
|
||||
func_80298528(50.0f);
|
||||
}
|
||||
}
|
||||
|
||||
void bsbshock_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, 0);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_BSHOCK_JUMP);
|
||||
animctrl_setDuration(aCtrl, 0.8f);
|
||||
func_8028774C(aCtrl, 0.5304f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
|
||||
animctrl_setPlaybackType(aCtrl,1);
|
||||
func_802875AC(aCtrl, "bsbshock.c", 0x13a);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
|
||||
if(func_8029B2E8() != 0.0f)
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802B6FA8();
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
player_setYVelocity(D_80364A70);
|
||||
gravity_set(D_80364A74);
|
||||
func_8030E484(SFX_E_SHOCKSPRING_BOING);
|
||||
func_8029E064(1);
|
||||
func_8029E070(1);
|
||||
ability_use(9);
|
||||
func_80292158(-50.0f);
|
||||
func_80298528(-50.0f);
|
||||
D_8037D381 = 0;
|
||||
}
|
||||
|
||||
void bsbshock_update(void){
|
||||
enum bs_e sp2C = 0;
|
||||
f32 sp20[3];
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
func_802B6FA8();
|
||||
_get_velocity(&sp20);
|
||||
if(animctrl_isAt(aCtrl, 0.7f))
|
||||
func_8030E484(SFX_53_BANJO_HUIII);
|
||||
|
||||
if(button_released(BUTTON_A) && 0.0f < sp20[1])
|
||||
gravity_reset();
|
||||
|
||||
if(D_8037D381 == 0){
|
||||
func_8029C348();
|
||||
if(sp20[1] < 0.0f)
|
||||
sp2C = BS_2F_FALL;
|
||||
}
|
||||
|
||||
if(!func_8028B2E8()){
|
||||
if(func_8028B424())
|
||||
sp2C = BS_3D_FALL_TUMBLING;
|
||||
|
||||
if(should_flap())
|
||||
sp2C = BS_BFLAP;
|
||||
|
||||
if(should_beak_bust())
|
||||
sp2C =BS_F_BBUSTER;
|
||||
}
|
||||
|
||||
bs_setState(sp2C);
|
||||
}
|
||||
|
||||
void bsbshock_end(void){
|
||||
if(bs_getNextState() != BS_11_BPECK)
|
||||
gravity_reset();
|
||||
|
||||
func_8029E064(0);
|
||||
func_8029E070(0);
|
||||
func_80292158(0.0f);
|
||||
func_80298528(50.0f);
|
||||
}
|
||||
586
src/core2/bs/bSwim.c
Normal file
586
src/core2/bs/bSwim.c
Normal file
@@ -0,0 +1,586 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern void func_802921BC(f32);
|
||||
extern f32 func_8029494C(void);
|
||||
extern f32 func_8029B2D0(void);
|
||||
extern bool func_8029E284(s32, f32);
|
||||
extern bool func_8029E314(s32, f32);
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037D390;
|
||||
u8 D_8037D394;
|
||||
u8 D_8037D395;
|
||||
u8 D_8037D396;
|
||||
f32 D_8037D398;
|
||||
|
||||
void func_802A7140() {
|
||||
func_8029C7F4(1, 3, 3, 9);
|
||||
}
|
||||
|
||||
f32 func_802A716C() {
|
||||
f32 sp24[3];
|
||||
_get_velocity(&sp24);
|
||||
ml_map_f(gu_sqrtf((sp24[0] * sp24[0]) + (sp24[1] * sp24[1]) + (sp24[2] * sp24[2])), 50.0f, 200.0f, 0.0f, 1.0f);
|
||||
}
|
||||
|
||||
void func_802A71D8(void) {
|
||||
f32 yaw_range;
|
||||
f32 sp38;
|
||||
f32 roll_range;
|
||||
f32 sp30;
|
||||
|
||||
sp30 = func_8029B2D0();
|
||||
sp38 = func_802A716C();
|
||||
if (button_held(BUTTON_R)) {
|
||||
roll_range = 45.0f;
|
||||
yaw_range = 4.3f;
|
||||
func_80299234(250.0f, 20.0f);
|
||||
} else {
|
||||
roll_range = 35.0f;
|
||||
yaw_range = func_80257C48(sp38, 3.1f, 2.4f);
|
||||
func_80299234(90.0f, func_80257C48(sp38, 3.8f, 2.2f));
|
||||
}
|
||||
roll_setIdeal(ml_map_f(sp30, -1.0f, 1.0f, -roll_range, roll_range));
|
||||
yaw_setIdeal(mlNormalizeAngle(yaw_getIdeal() + ml_map_f(sp30, -1.0f, 1.0f, yaw_range, -yaw_range)));
|
||||
}
|
||||
|
||||
void func_802A7304() {
|
||||
f32 temp_f0;
|
||||
|
||||
pitch_setAngVel(func_80257C48(func_802A716C(), 70.0f, 30.0f), 0.9f);
|
||||
temp_f0 = func_8029B2DC();
|
||||
if (temp_f0 < 0.0f) {
|
||||
pitch_setIdeal(ml_map_f(temp_f0, -1.0f, 0.0f, 275.0f, 360.0f));
|
||||
return;
|
||||
}
|
||||
pitch_setIdeal(ml_map_f(temp_f0, 0.0f, 1.0f, 0.0f, 85.0f));
|
||||
}
|
||||
|
||||
bool func_802A73BC(void) {
|
||||
f32 sp1C;
|
||||
|
||||
sp1C = (map_get() == MAP_46_CCW_WINTER) ? 90.0f : 130.0f;
|
||||
return func_80294574() && player_getYPosition() > (func_80294500() - sp1C);
|
||||
}
|
||||
|
||||
void func_802A744C(void) {
|
||||
if (func_8028B148() && bs_getState() != BS_4C_LANDING_IN_WATER) {
|
||||
func_8035644C(0xAC);
|
||||
}
|
||||
roll_setAngularVelocity(30.0f, 0.9f);
|
||||
gravity_set(0.0f);
|
||||
func_80297BF8(-399.99f);
|
||||
func_8029B324(0, 0.03f);
|
||||
func_8029B324(1, 1.0f);
|
||||
func_8029E070(1);
|
||||
func_80294378(3);
|
||||
func_802921BC(60.0f);
|
||||
func_80297B64(2.0f);
|
||||
}
|
||||
|
||||
|
||||
bool bsbswim_inSet(enum bs_e move_id){
|
||||
return move_id == BS_2B_DIVE_IDLE
|
||||
|| move_id == BS_2C_DIVE_B
|
||||
|| move_id == BS_39_DIVE_A
|
||||
|| move_id == BS_30_DIVE_ENTER
|
||||
|| move_id == BS_78
|
||||
|| move_id == BS_7F_DIVE_OW
|
||||
|| move_id == BS_54_SWIM_DIE
|
||||
|| move_id == BS_97_DIVE_LOCKED
|
||||
;
|
||||
}
|
||||
|
||||
bool func_802A7588(void){
|
||||
return bsbswim_inSet(bs_getState());
|
||||
}
|
||||
|
||||
void func_802A75B0(void) {
|
||||
if (!bsbswim_inSet(bs_getNextState())) {
|
||||
pitch_setIdeal(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
func_80297B94();
|
||||
gravity_reset();
|
||||
func_8029B0C0();
|
||||
func_8029E070(0);
|
||||
func_80294378(1);
|
||||
func_802921BC(0.0f);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802A762C() {
|
||||
func_8028A010(0x70, 2.0f);
|
||||
func_802A7140();
|
||||
func_80297930(0);
|
||||
func_802A744C();
|
||||
func_80297B64(0.4f);
|
||||
}
|
||||
|
||||
void func_802A7674() {
|
||||
s32 state_id = 0;
|
||||
|
||||
func_802A71D8();
|
||||
func_802A7304();
|
||||
|
||||
if (func_80294F78()) {
|
||||
state_id = func_802926C0();
|
||||
}
|
||||
if (button_held(BUTTON_A)) {
|
||||
state_id = BS_39_DIVE_A;
|
||||
}
|
||||
if (button_held(BUTTON_B)) {
|
||||
state_id = BS_2C_DIVE_B;
|
||||
}
|
||||
if (func_802A73BC()) {
|
||||
state_id = BS_2D_SWIM_IDLE;
|
||||
}
|
||||
if (!player_inWater()) {
|
||||
state_id = BS_1_IDLE;
|
||||
}
|
||||
|
||||
bs_setState(state_id);
|
||||
}
|
||||
|
||||
void func_802A7718() {
|
||||
func_802A75B0();
|
||||
}
|
||||
|
||||
void func_802A7738(void) {
|
||||
AnimCtrl* temp_s0;
|
||||
AnimCtrl* temp_v0;
|
||||
|
||||
temp_v0 = _player_getAnimCtrlPtr();
|
||||
temp_s0 = temp_v0;
|
||||
animctrl_reset(temp_v0);
|
||||
animctrl_setIndex(temp_s0, 0x3F);
|
||||
func_8028774C(temp_s0, 0.4626f);
|
||||
animctrl_setDuration(temp_s0, 1.0f);
|
||||
func_802875AC(temp_s0, "bsbswim.c", 0x186);
|
||||
func_802A7140();
|
||||
func_802A744C();
|
||||
D_8037D390 = 0.0f;
|
||||
func_80297B64(1.0f);
|
||||
func_802906A4(2);
|
||||
}
|
||||
|
||||
void func_802A77D8(void) {
|
||||
f32 sp34;
|
||||
f32 sp30;
|
||||
f32 sp24[3];
|
||||
|
||||
sp34 = pitch_get();
|
||||
sp30 = yaw_get();
|
||||
func_80256E24(sp24, sp34, sp30, 0.0f, 0.0f, D_8037D390);
|
||||
func_80297930(sp24);
|
||||
func_80297A0C(sp24);
|
||||
}
|
||||
|
||||
void func_802A7838(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *anim_ctrl;
|
||||
f64 temp_f2;
|
||||
|
||||
next_state = 0;
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
func_802A71D8();
|
||||
func_802A7304();
|
||||
if (D_8037D390 > 0.0f) {
|
||||
func_802A77D8();
|
||||
D_8037D390 = max_f(D_8037D390 - 10.0f, 0.0f);
|
||||
}
|
||||
if (animctrl_isAt(anim_ctrl, 0.1f)) {
|
||||
func_8030EB88(SFX_0_BLOOP, 1.2f, 1.4f);
|
||||
D_8037D390 = 600.0f;
|
||||
}
|
||||
if (animctrl_isAt(anim_ctrl, 0.4626f)) {
|
||||
animctrl_setDuration(anim_ctrl, 1.0f);
|
||||
}
|
||||
if (animctrl_isAt(anim_ctrl, 0.2766f)) {
|
||||
animctrl_setDuration(anim_ctrl, 3.0f);
|
||||
}
|
||||
if (!button_held(BUTTON_B)) {
|
||||
if (button_held(BUTTON_A)) {
|
||||
temp_f2 = (f64) animctrl_getAnimTimer(anim_ctrl);
|
||||
if (temp_f2 <= 0.4625 && 0.1 < temp_f2) {
|
||||
next_state = BS_39_DIVE_A;
|
||||
}
|
||||
} else if (animctrl_isAt(anim_ctrl, 0.4625f)) {
|
||||
next_state = BS_2B_DIVE_IDLE;
|
||||
}
|
||||
}
|
||||
if (animctrl_isAt(anim_ctrl, 0.4625f) && !button_held(BUTTON_B)) {
|
||||
if (button_held(BUTTON_A)) {
|
||||
next_state = BS_39_DIVE_A;
|
||||
} else {
|
||||
next_state = BS_2B_DIVE_IDLE;
|
||||
}
|
||||
}
|
||||
if (func_802A73BC()) {
|
||||
next_state = BS_2D_SWIM_IDLE;
|
||||
}
|
||||
if (player_inWater() == 0) {
|
||||
next_state = BS_1_IDLE;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802A7A2C() {
|
||||
func_802906A4(1);
|
||||
func_802A75B0();
|
||||
}
|
||||
|
||||
void func_802A7A54() {
|
||||
func_8028A010(0x71, 0.75f);
|
||||
func_802A7140();
|
||||
func_802A744C();
|
||||
D_8037D390 = 120.0f;
|
||||
func_80297B64(2.0f);
|
||||
func_802906A4(2);
|
||||
}
|
||||
|
||||
void func_802A7AB0(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *anim_ctl;
|
||||
|
||||
next_state = 0;
|
||||
anim_ctl = _player_getAnimCtrlPtr();
|
||||
func_802A71D8();
|
||||
func_802A7304();
|
||||
func_802A77D8();
|
||||
if (animctrl_isAt(anim_ctl, 0.17f)) {
|
||||
func_8030E760(SFX_0_BLOOP, 1.9f, 10000);
|
||||
}
|
||||
if (animctrl_isAt(anim_ctl, 0.67f)) {
|
||||
func_8030E760(SFX_0_BLOOP, 1.7f, 10000);
|
||||
}
|
||||
if (animctrl_isAt(anim_ctl, 0.99f)) {
|
||||
if (!button_held(BUTTON_A)) {
|
||||
next_state = BS_2B_DIVE_IDLE;
|
||||
}
|
||||
if (button_held(BUTTON_B)) {
|
||||
next_state = BS_2C_DIVE_B;
|
||||
}
|
||||
}
|
||||
if (func_802A73BC()) {
|
||||
next_state = BS_2D_SWIM_IDLE;
|
||||
}
|
||||
if (!player_inWater()) {
|
||||
next_state = BS_1_IDLE;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802A7BA8(void) {
|
||||
func_802906A4(1);
|
||||
func_802A75B0();
|
||||
}
|
||||
|
||||
void func_802A7BD0(void) {
|
||||
f32 sp3C;
|
||||
f32 sp30[3];
|
||||
f32 sp24[3];
|
||||
|
||||
func_80298760(func_80296560());
|
||||
func_8028A274(0x1A0, 1.4f);
|
||||
func_80299BFC(1.0f);
|
||||
_player_getPosition(sp30);
|
||||
func_80294980(&sp24);
|
||||
func_80257F18(sp24, sp30, &sp3C);
|
||||
yaw_setIdeal(mlNormalizeAngle(sp3C));
|
||||
yaw_applyIdeal();
|
||||
func_80297970(func_802987D4());
|
||||
func_8029797C(sp3C);
|
||||
func_802979AC(sp3C, func_80297A64());
|
||||
func_8029C7F4(1, 1, 2, 3);
|
||||
func_8028D5DC();
|
||||
func_80292E48();
|
||||
func_802A744C();
|
||||
}
|
||||
|
||||
void func_802A7CA8(void) {
|
||||
s32 next_state;
|
||||
f32 plyr_pos[3];
|
||||
ParticleEmitter *p_ctrl;
|
||||
|
||||
next_state = 0;
|
||||
_player_getPosition(plyr_pos);
|
||||
plyr_pos[1] += 60.0f;
|
||||
p_ctrl = func_8029B950(plyr_pos, 25.0f);
|
||||
particleEmitter_setParticleVelocityRange(p_ctrl, -60.0f, -50.0f, -60.0f, 60.0f, 100.0f, 60.0f);
|
||||
particleEmitter_emitN(p_ctrl, 1);
|
||||
if (baanim_isAt(0.3f)) {
|
||||
func_80292EA4();
|
||||
}
|
||||
if (animctrl_isStopped(_player_getAnimCtrlPtr())) {
|
||||
next_state = BS_2B_DIVE_IDLE;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
|
||||
void func_802A7D74(void) {
|
||||
func_80297CA8();
|
||||
func_8028D5F4();
|
||||
func_80292EA4();
|
||||
func_802A75B0();
|
||||
}
|
||||
|
||||
void func_802A7DAC(void) {
|
||||
ability_use(ABILITY_3_CAMERA_CONTROL);
|
||||
func_8028A180(0x3C, 1.0f);
|
||||
func_802A7140();
|
||||
func_80299234(500.0f, 5.0f);
|
||||
func_80297930(0);
|
||||
func_802A744C();
|
||||
pitch_setAngVel(200.0f, 2.5f);
|
||||
func_80299BD4();
|
||||
D_8037D396 = 0;
|
||||
}
|
||||
|
||||
|
||||
void func_802A7E2C(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *sp38;
|
||||
f32 sp34;
|
||||
f32 sp30;
|
||||
f32 sp24[3];
|
||||
|
||||
next_state = 0;
|
||||
sp38 = _player_getAnimCtrlPtr();
|
||||
switch (D_8037D396) {
|
||||
case 0:
|
||||
pitch_setIdeal(50.0f);
|
||||
if (animctrl_isAt(sp38, 0.7247f)) {
|
||||
sp34 = pitch_get();
|
||||
sp30 = yaw_get();
|
||||
func_80256E24(sp24, sp34, sp30, 0.0f, 0.0f, 800.0f);
|
||||
func_80297A0C(sp24);
|
||||
func_8029E3C0(1, 0.8f);
|
||||
D_8037D396 = TRUE;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (func_8029E1A8(1)) {
|
||||
next_state = BS_2B_DIVE_IDLE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (animctrl_isAt(sp38, 0.6f)) {
|
||||
func_8030E4E4(SFX_0_BLOOP);
|
||||
}
|
||||
if (!player_inWater()) {
|
||||
next_state = BS_1_IDLE;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802A7F4C(void){
|
||||
func_802A75B0();
|
||||
}
|
||||
|
||||
void func_802A7F6C(void) {
|
||||
D_8037D394 = (bs_getPrevState() == BS_41_DIE) ? TRUE : FALSE;
|
||||
|
||||
if (D_8037D394 || level_get() == LEVEL_9_RUSTY_BUCKET_BAY || map_get() == MAP_46_CCW_WINTER) {
|
||||
D_8037D395 = 0;
|
||||
} else {
|
||||
D_8037D395 = 1;
|
||||
}
|
||||
|
||||
func_8029B930();
|
||||
func_8028A010(0xB9, 0.7f);
|
||||
func_802A7140();
|
||||
func_802A744C();
|
||||
func_80297B64(1.0f);
|
||||
func_80297930(0);
|
||||
func_80297A0C(0);
|
||||
pitch_setIdeal(275.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
D_8037D396 = 0;
|
||||
func_8028D5DC();
|
||||
func_8029E3C0(0, 0.0f);
|
||||
func_8029E3C0(1, 0.0f);
|
||||
func_802906A4(3);
|
||||
func_80299CF4(SFX_CA_BANJO_DROWNING_1, 1.0f, 24000);
|
||||
}
|
||||
|
||||
void func_802A8098(void) {
|
||||
s32 next_state;
|
||||
f32 sp40[3];
|
||||
ParticleEmitter *p_ctrl;
|
||||
f32 plyr_pos[3];
|
||||
|
||||
next_state = 0;
|
||||
func_80256E24(sp40, -90.0f, 0.0f, 0.0f, 0.0f, 100.0f);
|
||||
func_80297930(sp40);
|
||||
func_80297A0C(sp40);
|
||||
func_8029E22C(1);
|
||||
if( func_8029E284(1, 0.2f)
|
||||
|| func_8029E284(1, 0.8f)
|
||||
|| func_8029E284(1, 1.4f)
|
||||
) {
|
||||
func_80299CF4(SFX_CB_BANJO_DROWNING_2, 1.0f, 24000);
|
||||
}
|
||||
switch (D_8037D396) {
|
||||
case 0:
|
||||
if (func_8023DB4C(1) == 0) {
|
||||
_player_getPosition(plyr_pos);
|
||||
plyr_pos[1] += 60.0f;
|
||||
p_ctrl = func_8029B950(plyr_pos, 25.0f);
|
||||
particleEmitter_setParticleVelocityRange(p_ctrl, -60.0f, -50.0f, -60.0f, 60.0f, 100.0f, 60.0f);
|
||||
particleEmitter_emitN(p_ctrl, 1);
|
||||
}
|
||||
if (func_8029E270(1) < 1.8 && func_802A73BC() && D_8037D395) {
|
||||
next_state = BS_2D_SWIM_IDLE;
|
||||
}
|
||||
if (func_8029E314(1, 1.55f)) {
|
||||
player_setYVelocity(-50.0f);
|
||||
}
|
||||
if (func_8029E284(1, 1.9f)) {
|
||||
func_802914CC(0xD);
|
||||
func_802BF2C0(80.0f);
|
||||
if (D_8037D394) {
|
||||
func_8029E3C0(0, 0.5f);
|
||||
} else {
|
||||
func_8029C984();
|
||||
func_8029E3C0(0, 2.75f);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if (func_8029E1A8(0)) {
|
||||
func_8029B890();
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802A82D4(void) {
|
||||
func_802906A4(1);
|
||||
func_80291548();
|
||||
func_8024BD08(0);
|
||||
func_8028D5F4();
|
||||
if (bs_getNextState() != BS_5A_LOADZONE) {
|
||||
func_80346CE8();
|
||||
}
|
||||
func_802A75B0();
|
||||
}
|
||||
|
||||
void func_802A8330(void) {
|
||||
f32 sp44[3];
|
||||
f32 sp38[3];
|
||||
f32 sp2C[3];
|
||||
|
||||
if (func_80298850() && func_80298800(sp2C)) {
|
||||
_player_getPosition(sp44);
|
||||
func_8025727C(sp44[0], sp44[1], sp44[2], sp2C[0], sp2C[1], sp2C[2], &sp38[0], &sp38[1]);
|
||||
pitch_setIdeal(sp38[0]);
|
||||
yaw_setIdeal(sp38[1]);
|
||||
roll_setIdeal(0.0f);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802A83C0(void) {
|
||||
func_8028A010(0x70, 2.0f);
|
||||
func_802A7140();
|
||||
func_80297930(0);
|
||||
func_80297B64(0.4f);
|
||||
func_802A744C();
|
||||
func_802A8330();
|
||||
}
|
||||
|
||||
void func_802A8410(void) {
|
||||
s32 next_state;
|
||||
|
||||
next_state = 0;
|
||||
if (func_80298850() == 0) {
|
||||
next_state = BS_2B_DIVE_IDLE;
|
||||
}
|
||||
func_802A8330();
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
|
||||
void func_802A844C(void){
|
||||
func_802A75B0();
|
||||
}
|
||||
|
||||
void func_802A846C(void) {
|
||||
AnimCtrl *temp_s0;
|
||||
f32 sp28;
|
||||
|
||||
temp_s0 = _player_getAnimCtrlPtr();
|
||||
func_8029CCC4();
|
||||
sp28 = func_8029494C();
|
||||
if (bs_getPrevState() == 0xF) {
|
||||
sp28 = max_f(sp28, 600.0f);
|
||||
}
|
||||
if (sp28 > 80.0f) {
|
||||
animctrl_reset(temp_s0);
|
||||
animctrl_setIndex(temp_s0, ANIM_BANJO_ROLL);
|
||||
animctrl_setPlaybackType(temp_s0, ANIMCTRL_STOPPED);
|
||||
animctrl_setDuration(temp_s0, 1.2f);
|
||||
func_8028774C(temp_s0, 0.8204f);
|
||||
func_802875AC(temp_s0, "bsbswim.c", 0x417);
|
||||
} else {
|
||||
animctrl_reset(temp_s0);
|
||||
animctrl_setIndex(temp_s0, 0x57);
|
||||
animctrl_setPlaybackType(temp_s0, ANIMCTRL_LOOP);
|
||||
animctrl_setDuration(temp_s0, 1.2f);
|
||||
func_8028774C(temp_s0, 0.6412f);
|
||||
func_802875AC(temp_s0, "bsbswim.c", 0x41E);
|
||||
}
|
||||
D_8037D398 = ml_map_f(sp28, 40.0f, 1000.0f, -300.0f, -1200.0f);
|
||||
player_setYVelocity(D_8037D398);
|
||||
func_8029C7F4(1, 3, 3, 9);
|
||||
func_802A744C();
|
||||
func_802978DC(6);
|
||||
}
|
||||
|
||||
void func_802A85EC(void) {
|
||||
s32 next_state;
|
||||
f32 sp38[3];
|
||||
ParticleEmitter *sp34;
|
||||
|
||||
next_state = 0;
|
||||
_player_getPosition(sp38);
|
||||
sp38[1] += 60.0f;
|
||||
sp34 = func_8029B950(sp38, 20.0f);
|
||||
particleEmitter_setParticleVelocityRange(sp34, -30.0f, -30.0f, -30.0f, 30.0f, 30.0f, 30.0f);
|
||||
particleEmitter_emitN(sp34, 1);
|
||||
if (D_8037D398 < 0.0f) {
|
||||
D_8037D398 += max_f(mlAbsF(D_8037D398) * 0.1, 50.0f);
|
||||
player_setYVelocity(D_8037D398);
|
||||
}
|
||||
if (func_8028B2E8()) {
|
||||
next_state = BS_2D_SWIM_IDLE;
|
||||
}
|
||||
if (!player_inWater()) {
|
||||
next_state = BS_1_IDLE;
|
||||
}
|
||||
if (func_80297AAC() >= 0.0f) {
|
||||
next_state = BS_2D_SWIM_IDLE;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802A872C(void){
|
||||
func_802A75B0();
|
||||
}
|
||||
|
||||
void func_802A874C(void){
|
||||
func_802A744C();
|
||||
bsdrone_init();
|
||||
}
|
||||
|
||||
void func_802A8774(void){
|
||||
bsdrone_update();
|
||||
}
|
||||
|
||||
void func_802A8794(void){
|
||||
bsdrone_end();
|
||||
func_802A75B0();
|
||||
}
|
||||
769
src/core2/bs/bTrot.c
Normal file
769
src/core2/bs/bTrot.c
Normal file
@@ -0,0 +1,769 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
/* .data */
|
||||
f32 D_80364A90 = 30.0f;
|
||||
f32 D_80364A94 = 700.0f;
|
||||
f32 D_80364A98 = 80.0f;
|
||||
f32 D_80364A9C = 1000.0f;
|
||||
f32 D_80364AA0 = 300.0f;
|
||||
f32 D_80364AA4 = 0.56f;
|
||||
f32 D_80364AA8 = 0.34f;
|
||||
f32 D_80364AAC = 0.51f;
|
||||
f32 D_80364AB0 = 0.29f;
|
||||
f32 D_80364AB4 = 0.8f;
|
||||
f32 D_80364AB8 = 0.7f;
|
||||
f32 D_80364ABC = 693.5f;
|
||||
f32 D_80364AC0 = -1200.0f;
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037D3A0;
|
||||
u8 D_8037D3A4;
|
||||
|
||||
void func_802A87C0(void){
|
||||
if(func_80291698(3))
|
||||
func_8029C3E8(10.0f, 50.0f);
|
||||
else
|
||||
func_8029C22C();
|
||||
}
|
||||
|
||||
void func_802A880C(s32 arg0){
|
||||
if(arg0)
|
||||
func_8030E58C(SFX_49_KAZOOIE_RA, 0.96f);
|
||||
else
|
||||
func_8030E58C(SFX_49_KAZOOIE_RA, 1.04f);
|
||||
}
|
||||
|
||||
void func_802A8850(void){
|
||||
if( button_pressed(BUTTON_B)
|
||||
&& func_80291698(3)
|
||||
&& func_80297A64() == 0.0f
|
||||
){
|
||||
func_802917C4(3);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
f32 func_802A88B0(void){
|
||||
if(func_8028B128())
|
||||
return D_80364AA0;
|
||||
|
||||
if(func_80291698(3))
|
||||
return D_80364A9C;
|
||||
|
||||
return D_80364A94;
|
||||
}
|
||||
|
||||
f32 func_802A8900(void){
|
||||
|
||||
if(func_80291698(3))
|
||||
return D_80364A98;
|
||||
|
||||
return D_80364A90;
|
||||
}
|
||||
|
||||
f32 func_802A8934(void){
|
||||
if(func_8028B128())
|
||||
return D_80364AB8;
|
||||
|
||||
if(func_80291698(3))
|
||||
return D_80364AB0;
|
||||
|
||||
return D_80364AA8;
|
||||
}
|
||||
|
||||
f32 func_802A8984(void){
|
||||
if(func_8028B128())
|
||||
return D_80364AB4;
|
||||
|
||||
if(func_80291698(3))
|
||||
return D_80364AAC;
|
||||
|
||||
return D_80364AA4;
|
||||
}
|
||||
|
||||
void func_802A89D4(void){
|
||||
f32 sp24 = func_8029B30C();
|
||||
if(!func_8029B300()){
|
||||
func_80297970(0.0f);
|
||||
}
|
||||
else{
|
||||
func_80297970(func_80257C48(sp24, func_802A8900(), func_802A88B0()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void func_802A8A40(void){
|
||||
func_8029B324(0, 0.03f);
|
||||
func_8029B324(1, 1.0f);
|
||||
func_8029E070(1);
|
||||
func_8029E064(1);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
roll_setAngularVelocity(1000.0f, 12.0f);
|
||||
miscflag_set(3);
|
||||
func_8029CF48(4,1,0.24f);
|
||||
func_80292090(2);
|
||||
}
|
||||
|
||||
void func_802A8AD8(void){
|
||||
func_80299650(func_80291684(3), func_80291670(3));
|
||||
if(miscflag_isTrue(MISC_FLAG_10_TOUCHING_TURBO_TRAINERS) &&(bs_getState() != BS_17_BTROT_EXIT)){
|
||||
miscflag_clear(MISC_FLAG_10_TOUCHING_TURBO_TRAINERS);
|
||||
func_802917E4(3, func_80294A40());
|
||||
func_803219F4(4);
|
||||
}
|
||||
|
||||
if(func_802916CC(3)){
|
||||
if(func_8029DFE0()){
|
||||
func_8029E0DC(0);
|
||||
if(miscflag_isFalse(0x14))
|
||||
func_8030E484(0x3eb);
|
||||
func_803219F4(1);
|
||||
}
|
||||
}else{
|
||||
func_8029E0DC(1);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802A8BB0(void){
|
||||
enum bs_e next_state = bs_getNextState();
|
||||
|
||||
if(bsbtrot_inSet(next_state))
|
||||
return;
|
||||
|
||||
func_80292090(1);
|
||||
func_8029B0C0();
|
||||
func_8029E070(0);
|
||||
func_8029E064(0);
|
||||
pitch_setIdeal(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
miscflag_clear(3);
|
||||
if(next_state != BS_5A_LOADZONE)
|
||||
func_802917E4(3, 0.0f);
|
||||
func_802A8AD8();
|
||||
func_80289F10(1);
|
||||
func_8029CF48(4, 0, 0.0f);
|
||||
|
||||
|
||||
}
|
||||
|
||||
int func_802A8C60(void){
|
||||
if(func_80291698(3))
|
||||
return 0;
|
||||
|
||||
return button_released(BUTTON_Z);
|
||||
}
|
||||
|
||||
void _bsbtrot_802A8C98(AnimCtrl *aCtrl, enum asset_e arg1){
|
||||
if(animctrl_getIndex(aCtrl) != arg1){
|
||||
animctrl_setIndex(aCtrl, arg1);
|
||||
func_8028774C(aCtrl, animctrl_getAnimTimer(aCtrl));
|
||||
func_802875AC(aCtrl, "bsbtrot.c", 0x12e);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
enum asset_e func_802A8D00(enum asset_e arg0, enum asset_e arg1){
|
||||
if(func_802916CC(3))
|
||||
return arg0;
|
||||
else
|
||||
return arg1;
|
||||
}
|
||||
|
||||
enum bs_e func_802A8D34(enum bs_e arg0){
|
||||
if(miscflag_isTrue(0xf))
|
||||
return arg0;
|
||||
|
||||
if(miscflag_isTrue(MISC_FLAG_1_ON_FLIGHT_PAD))
|
||||
return BS_23_FLY_ENTER;
|
||||
|
||||
return BS_8_BTROT_JUMP;
|
||||
}
|
||||
|
||||
enum bs_e func_802A8D84(enum bs_e arg0){
|
||||
if( func_8029B300(arg0) > 0)
|
||||
arg0 = BS_16_BTROT_WALK;
|
||||
|
||||
if(func_80294F78())
|
||||
arg0 = func_802926C0();
|
||||
|
||||
if(func_8028B094())
|
||||
arg0 = BS_71_BTROT_FALL;
|
||||
|
||||
if(func_802A8C60())
|
||||
arg0 = BS_17_BTROT_EXIT;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
arg0 = func_802A8D34(arg0);
|
||||
|
||||
if(player_shouldSlideTrot())
|
||||
arg0 = BS_45_BTROT_SLIDE;
|
||||
|
||||
if(player_inWater())
|
||||
arg0 = BS_2D_SWIM_IDLE;
|
||||
|
||||
return arg0;
|
||||
}
|
||||
|
||||
void bsbtrot_enter_init(void){
|
||||
func_802A8AD8();
|
||||
func_8028A274(0x16, 1.0f);
|
||||
func_8029C7F4(1,1,2,2);
|
||||
func_80297970(0.0f);
|
||||
func_802A8A40();
|
||||
func_80299BD4();
|
||||
func_802952A8(0,0);
|
||||
}
|
||||
|
||||
void bsbtrot_enter_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
func_802952A8(0,1);
|
||||
func_80299628(1);
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
next_state = BS_15_BTROT_IDLE;
|
||||
|
||||
if(0.5 < animctrl_getAnimTimer(aCtrl))
|
||||
next_state = func_802A8D84(next_state);
|
||||
|
||||
bs_setState(next_state);
|
||||
|
||||
}
|
||||
|
||||
void bsbtrot_enter_end(void){
|
||||
func_802952A8(0,1);
|
||||
func_802A8BB0();
|
||||
}
|
||||
|
||||
void bsbtrot_stand_init(void){
|
||||
func_8028A010(ANIM_BANJO_BTROT_IDLE, 1.2f);
|
||||
func_8029C7F4(1,1,1,2);
|
||||
func_80297970(0.0f);
|
||||
func_802A8A40();
|
||||
}
|
||||
|
||||
void bsbtrot_stand_update(void){
|
||||
enum bs_e next_state = 0;;
|
||||
func_802A8850();
|
||||
func_802A8AD8();
|
||||
if(func_80291698(3))
|
||||
func_802A87C0();
|
||||
func_80299628(1);
|
||||
next_state = func_802A8D84(next_state);
|
||||
next_state = func_8029CA94(next_state);
|
||||
bs_setState(next_state);
|
||||
|
||||
}
|
||||
|
||||
void bsbtrot_stand_end(void){
|
||||
func_802A8BB0();
|
||||
}
|
||||
|
||||
enum asset_e func_802A9030(void){
|
||||
return func_802A8D00(0x15, 0x44);
|
||||
}
|
||||
|
||||
void func_802A9054(void){
|
||||
f32 tmp = 1.0f;
|
||||
func_80289EC8(func_802A8900(), func_802A88B0(), func_802A8984(), func_802A8934());
|
||||
if(func_8028B394()){
|
||||
tmp = ml_map_f(func_80297AF0(), 0.0f, 1.0f, 0.6f, 0.9f);
|
||||
func_80289EF8(tmp);
|
||||
}
|
||||
else{
|
||||
func_80289EF8(tmp);
|
||||
}
|
||||
}
|
||||
|
||||
void bsbtrot_walk_init(void){
|
||||
func_8028A010(func_802A9030(), 0.53f);
|
||||
func_8029C7F4(2,1,1,2);
|
||||
func_802A8A40();
|
||||
func_802A9054();
|
||||
}
|
||||
|
||||
void bsbtrot_walk_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
func_802A8850();
|
||||
func_802A9054();
|
||||
func_802A8AD8();
|
||||
_bsbtrot_802A8C98(aCtrl, func_802A9030());
|
||||
func_80299628(1);
|
||||
func_802A89D4();
|
||||
if(animctrl_isAt(aCtrl, 0.2781f))
|
||||
func_802A880C(1);
|
||||
|
||||
func_8029AD28(0.2781f, 4);
|
||||
if(animctrl_isAt(aCtrl, 0.7781f))
|
||||
func_802A880C(0);
|
||||
|
||||
func_8029AD28(0.7781f, 3);
|
||||
if(func_80291698(3)){
|
||||
func_802A87C0();
|
||||
}
|
||||
else{
|
||||
if(animctrl_isAt(aCtrl, 0.2115f) || animctrl_isAt(aCtrl, 0.7115f))
|
||||
func_802A87C0();
|
||||
}
|
||||
if(!func_8029B300() && func_80297C04(1.0f))
|
||||
sp1C = BS_15_BTROT_IDLE;
|
||||
|
||||
if(func_8028B094())
|
||||
sp1C = BS_71_BTROT_FALL;
|
||||
|
||||
if(func_802A8C60())
|
||||
sp1C = BS_17_BTROT_EXIT;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
sp1C = func_802A8D34(sp1C);
|
||||
|
||||
if(player_shouldSlideTrot())
|
||||
sp1C = BS_45_BTROT_SLIDE;
|
||||
|
||||
if(player_inWater())
|
||||
sp1C = BS_2D_SWIM_IDLE;
|
||||
|
||||
sp1C = func_8029CA94(sp1C);
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bsbtrot_walk_end(void){
|
||||
func_802A8BB0();
|
||||
}
|
||||
|
||||
void func_802A9320(void){}
|
||||
|
||||
void bsbtrot_jump_init(void){
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_BTROT_JUMP);
|
||||
animctrl_setDuration(aCtrl, 1.4f);
|
||||
animctrl_setTransitionDuration(aCtrl, 0.1f);
|
||||
func_8028774C(aCtrl, 0.2f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.4002f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsbtrot.c", 0x272);
|
||||
func_802A8A40();
|
||||
func_80289F10(1);
|
||||
func_802991A8(1);
|
||||
func_8029957C(3);
|
||||
func_802978DC(6);
|
||||
if(func_8029B2E8() != 0.0f)
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802A89D4();
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
player_setYVelocity(D_80364ABC);
|
||||
gravity_set(D_80364AC0);
|
||||
func_8030E484(SFX_48_KAZOOIE_RUUH);
|
||||
D_8037D3A4 = 0;
|
||||
}
|
||||
|
||||
void bsbtrot_jump_update(void){
|
||||
enum bs_e sp2C = 0;
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp1C[3];
|
||||
func_802A8AD8();
|
||||
if(func_80291698(3))
|
||||
func_802A87C0();
|
||||
|
||||
if(miscflag_isTrue(0xF))
|
||||
func_802978A4();
|
||||
else
|
||||
func_802A89D4();
|
||||
|
||||
_get_velocity(&sp1C);
|
||||
if(button_released(BUTTON_A) && 0.0f < sp1C[1])
|
||||
gravity_reset();
|
||||
|
||||
switch(D_8037D3A4){
|
||||
case 0://L802A9530
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.4653f);
|
||||
animctrl_setDuration(aCtrl, 10.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D3A4 = 1;
|
||||
}
|
||||
break;
|
||||
case 1://L802A9578
|
||||
if(func_8028B254(0x8C)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.7328f);
|
||||
animctrl_setDuration(aCtrl, 1.4f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D3A4 = 2;
|
||||
}
|
||||
break;
|
||||
case 2://L802A95C4
|
||||
func_80299628(1);
|
||||
if(func_8028B2E8()){
|
||||
func_8029C5E8();
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.8798f);
|
||||
animctrl_setDuration(aCtrl, 0.9f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_8029957C(1);
|
||||
D_8037D3A4 = 3;
|
||||
if(220.0f < func_80297A64())
|
||||
func_80299AAC();
|
||||
func_8029C22C();
|
||||
}
|
||||
break;
|
||||
case 3://L802A9660
|
||||
if(220.0f < func_80297A64())
|
||||
func_80299AAC();
|
||||
func_802A9320();
|
||||
func_80299628(1);
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.8898f);
|
||||
animctrl_setDuration(aCtrl, 2.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D3A4 = 4;
|
||||
}
|
||||
func_8029C22C();
|
||||
break;
|
||||
case 4://L802A96F0
|
||||
if(220.0f < func_80297A64())
|
||||
func_80299AAC();
|
||||
|
||||
func_802A9320();
|
||||
func_80299628(1);
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(aCtrl, 1.2f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D3A4 = 5;
|
||||
}
|
||||
func_8029C22C();
|
||||
break;
|
||||
case 5://L802A9780
|
||||
if(220.0f < func_80297A64())
|
||||
func_80299AAC();
|
||||
func_802A9320();
|
||||
func_80299628(1);
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
sp2C = BS_15_BTROT_IDLE;
|
||||
break;
|
||||
}//LL802A97D0
|
||||
|
||||
if(should_peck())
|
||||
sp2C = BS_11_BPECK;
|
||||
|
||||
if(func_8028B424())
|
||||
sp2C = BS_3D_FALL_TUMBLING;
|
||||
|
||||
if(player_inWater())
|
||||
sp2C = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
if(func_8028B2E8()){
|
||||
if(button_pressed(BUTTON_A))
|
||||
sp2C = func_802A8D34(sp2C);
|
||||
|
||||
if(player_shouldSlideTrot())
|
||||
sp2C = BS_45_BTROT_SLIDE;
|
||||
}
|
||||
|
||||
bs_setState(sp2C);
|
||||
}
|
||||
|
||||
void bsbtrot_jump_end(void){
|
||||
gravity_reset();
|
||||
func_802A8BB0();
|
||||
}
|
||||
|
||||
void bsbtrot_exit_init(void){
|
||||
func_8028A274(7, 0.6f);
|
||||
func_80289F10(1);
|
||||
func_80297970(0.0f);
|
||||
}
|
||||
|
||||
void bsbtrot_exit_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
if(animctrl_isStopped(_player_getAnimCtrlPtr()))
|
||||
sp1C = BS_1_IDLE;
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bsbtrot_exit_end(void){
|
||||
func_802A8BB0();
|
||||
}
|
||||
|
||||
void bsbtrot_slide_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_BTROT_JUMP);
|
||||
func_8028774C(aCtrl, 0.069f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_STOPPED);
|
||||
func_802875AC(aCtrl, "bsbtrot.c", 0x382);
|
||||
func_802A8A40();
|
||||
func_8029C7F4(1,1,3,3);
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
func_8029E070(1);
|
||||
func_8029E064(1);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
roll_setAngularVelocity(1000.0f, 12.0f);
|
||||
func_80297970(0.0f);
|
||||
func_80299AAC();
|
||||
D_8037D3A0 = 1.0f;
|
||||
}
|
||||
|
||||
void bsbtrot_slide_update(void){
|
||||
enum bs_e sp3C = 0;
|
||||
f32 sp30[3];
|
||||
f32 sp2C;
|
||||
|
||||
func_802A8AD8();
|
||||
if(func_80291698(3))
|
||||
func_802A87C0();
|
||||
func_80299AAC();
|
||||
D_8037D3A0 = max_f(D_8037D3A0-time_getDelta(), 0.0f);
|
||||
if(player_shouldSlideTrot()){
|
||||
func_80294480(sp30);
|
||||
func_8025801C(sp30, &sp2C);
|
||||
func_80299628(1);
|
||||
func_80297970(ml_map_f(pitch_getIdeal(), 20.0f, 60.0f, 550.0f, 700.0f));
|
||||
func_8029797C(sp2C);
|
||||
func_8029C22C();
|
||||
}else{
|
||||
sp3C = BS_15_BTROT_IDLE;
|
||||
}
|
||||
if(player_inWater())
|
||||
sp3C = BS_2D_SWIM_IDLE;
|
||||
|
||||
if(D_8037D3A0 == 0.0f && button_pressed(BUTTON_A) && func_8028B2E8())
|
||||
sp3C = func_802A8D34(sp3C);
|
||||
|
||||
|
||||
bs_setState(sp3C);
|
||||
}
|
||||
|
||||
void bsbtrot_slide_end(void){
|
||||
func_802A8BB0();
|
||||
}
|
||||
|
||||
int bsbtrot_inSet(s32 move_indx){
|
||||
return (move_indx == BS_15_BTROT_IDLE)
|
||||
|| (move_indx == BS_16_BTROT_WALK)
|
||||
|| (move_indx == BS_8_BTROT_JUMP)
|
||||
|| (move_indx == BS_17_BTROT_EXIT)
|
||||
|| (move_indx == BS_45_BTROT_SLIDE)
|
||||
|| (move_indx == BS_14_BTROT_ENTER)
|
||||
|| (move_indx == 0x79)
|
||||
|| (move_indx == BS_BTROT_OW)
|
||||
|| (move_indx == BS_71_BTROT_FALL)
|
||||
|| (move_indx == 0x9a);
|
||||
}
|
||||
|
||||
void bsbtrot_fall_init(void){
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_BTROT_JUMP);
|
||||
animctrl_setDuration(aCtrl, 1.4f);
|
||||
func_8028774C(aCtrl, 0.4653f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_STOPPED);
|
||||
func_802875AC(aCtrl, "bsbtrot.c", 0x400);
|
||||
func_802A8A40();
|
||||
func_8029C7F4(1,1,3,6);
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802A89D4();
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
D_8037D3A4 = 0;
|
||||
}
|
||||
|
||||
void bsbtrot_fall_update(void){
|
||||
enum bs_e sp2C = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp1C[3];
|
||||
func_802A8AD8();
|
||||
if(func_80291698(3))
|
||||
func_802A87C0();
|
||||
|
||||
if(miscflag_isTrue(0xf))
|
||||
func_802978A4();
|
||||
else
|
||||
func_802A89D4();
|
||||
|
||||
_get_velocity(&sp1C);
|
||||
switch (D_8037D3A4){
|
||||
case 0://L802A9D90
|
||||
if(func_8028B254(0x8C)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.7328f);
|
||||
animctrl_setDuration(aCtrl, 1.4f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D3A4 = 1;
|
||||
}
|
||||
break;
|
||||
case 1://L802A9DDC
|
||||
func_80299628(1);
|
||||
if(func_8028B2E8()){
|
||||
func_8029C5E8();
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.8798f);
|
||||
animctrl_setDuration(aCtrl, 0.9f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_8029957C(1);
|
||||
if(220.0f < func_80297A64()){
|
||||
func_80299AAC();
|
||||
}
|
||||
func_8029C22C();
|
||||
D_8037D3A4 = 2;
|
||||
}
|
||||
break;
|
||||
case 2://L802A9E78
|
||||
if(220.0f < func_80297A64())
|
||||
func_80299AAC();
|
||||
|
||||
func_802A9320();
|
||||
func_80299628(1);
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.8898f);
|
||||
animctrl_setDuration(aCtrl, 2.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D3A4 = 3;
|
||||
}
|
||||
func_8029C22C();
|
||||
break;
|
||||
case 3://L802A9F08
|
||||
if(220.0f < func_80297A64())
|
||||
func_80299AAC();
|
||||
|
||||
func_802A9320();
|
||||
func_80299628(1);
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(aCtrl, 1.2f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D3A4 = 4;
|
||||
}
|
||||
func_8029C22C();
|
||||
break;
|
||||
case 4://802A9F98
|
||||
if(220.0f < func_80297A64())
|
||||
func_80299AAC();
|
||||
|
||||
func_802A9320();
|
||||
func_80299628(1);
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
sp2C = BS_15_BTROT_IDLE;
|
||||
break;
|
||||
}//LL802A9FE8
|
||||
|
||||
if(player_inWater())
|
||||
sp2C = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
if(func_8028B424())
|
||||
sp2C = BS_3D_FALL_TUMBLING;
|
||||
|
||||
if(func_8028B2E8()){
|
||||
if(button_pressed(BUTTON_A))
|
||||
sp2C = func_802A8D34(sp2C);
|
||||
|
||||
if(player_shouldSlideTrot())
|
||||
sp2C = BS_45_BTROT_SLIDE;
|
||||
}
|
||||
|
||||
bs_setState(sp2C);
|
||||
}
|
||||
|
||||
void bsbtrot_fall_end(void){
|
||||
func_802A8BB0();
|
||||
}
|
||||
|
||||
void bsbtrot_unk79_init(void){
|
||||
func_8028A010(ANIM_BANJO_BTROT_IDLE, 1.2f);
|
||||
func_8029C7F4(1,1,3,2);
|
||||
func_80297970(0.0f);
|
||||
func_802A8A40();
|
||||
func_80292090(2);
|
||||
func_8029C674();
|
||||
}
|
||||
|
||||
void bsbtrot_unk79_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
func_8029C6D0();
|
||||
func_802A8AD8();
|
||||
func_80299628(1);
|
||||
if(!func_80298850())
|
||||
sp1C = BS_15_BTROT_IDLE;
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bsbtrot_unk79_end(void){
|
||||
func_8029C748();
|
||||
func_802A8BB0();
|
||||
}
|
||||
|
||||
void bsbtrot_ow_init(void){
|
||||
f32 sp3C;
|
||||
f32 sp30[3];
|
||||
f32 sp24[3];
|
||||
|
||||
func_802A8A40();
|
||||
func_80298760(func_80296560());
|
||||
func_8028A274(0x66, 1.1f);
|
||||
func_80299BFC(1.0f);
|
||||
_player_getPosition(&sp30);
|
||||
func_80294980(sp24);
|
||||
func_80257F18(sp24, sp30, &sp3C);
|
||||
yaw_setIdeal(mlNormalizeAngle(sp3C + 180.0f));\
|
||||
yaw_applyIdeal();
|
||||
func_80297970(func_802987D4());
|
||||
func_8029797C(sp3C);
|
||||
func_802979AC(sp3C, func_80297A64());
|
||||
func_8029C7F4(1,1,2,3);
|
||||
if(func_802987B4() == 2)
|
||||
func_802978DC(6);
|
||||
player_setYVelocity(func_802987C4());
|
||||
gravity_set(func_802987E4());
|
||||
func_8028D5DC();
|
||||
func_80292E48();
|
||||
}
|
||||
|
||||
void bsbtrot_ow_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
if(func_802987B4() == 2)
|
||||
func_802B6FA8();
|
||||
|
||||
if(baanim_isAt(0.3f))
|
||||
func_80292EA4();
|
||||
|
||||
if(func_8028B424())
|
||||
sp1C = BS_3D_FALL_TUMBLING;
|
||||
|
||||
if(func_8028B2E8() && baanim_isStopped())
|
||||
sp1C = BS_15_BTROT_IDLE;
|
||||
|
||||
if(animctrl_isStopped(_player_getAnimCtrlPtr()) && player_inWater())
|
||||
sp1C = BS_2D_SWIM_IDLE;
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bsbtrot_ow_end(void){
|
||||
func_80297CA8();
|
||||
gravity_reset();
|
||||
func_8028D5F4();
|
||||
func_80292EA4();
|
||||
func_802A8BB0();
|
||||
}
|
||||
|
||||
void bsbtrot_drone_init(void){
|
||||
func_802A8AD8();
|
||||
func_802A8A40();
|
||||
bsdrone_init();
|
||||
}
|
||||
|
||||
void bsbtrot_drone_update(void){
|
||||
bsdrone_update();
|
||||
func_802A8AD8();
|
||||
}
|
||||
|
||||
void bsbtrot_drone_end(void){
|
||||
bsdrone_end();
|
||||
func_802A8BB0();
|
||||
}
|
||||
304
src/core2/bs/bWhirl.c
Normal file
304
src/core2/bs/bWhirl.c
Normal file
@@ -0,0 +1,304 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
const f32 D_80364AD0 = 80.0f;
|
||||
const f32 D_80364AD4 = 425.0f;
|
||||
const f32 D_80364AD8 = 0.56f;
|
||||
const f32 D_80364ADC = 0.4f;
|
||||
const f32 D_80364AE0 = 693.5f;
|
||||
const f32 D_80364AE4 = -1200.0f;
|
||||
|
||||
/* .bss */
|
||||
float D_8037D3B0;
|
||||
u8 D_8037D3B4;
|
||||
|
||||
/* .code */
|
||||
void func_802AA400(void){
|
||||
f32 sp1C = func_8029B30C();
|
||||
if(!func_8029B300()){
|
||||
func_80297970(0.0f);
|
||||
}else{
|
||||
func_80297970(func_80257C48(sp1C, D_80364AD0, D_80364AD4));
|
||||
}
|
||||
}
|
||||
|
||||
static void __bsbwhirl_end(void){
|
||||
enum bs_e state = bs_getNextState();
|
||||
if(!( state == BS_1B_WONDERWING_IDLE
|
||||
|| state == BS_1C_WONDERWING_WALK
|
||||
|| state == BS_1D_WONDERWING_JUMP
|
||||
|| state == BS_1E_WONDERWING_EXIT
|
||||
|| state == BS_A4_WONDERWING_DRONE
|
||||
|| state == BS_A5_WONDERWING_UNKA5
|
||||
)
|
||||
){
|
||||
func_8029B0C0();
|
||||
func_8029E070(0);
|
||||
func_8025A55C(-1, 0xfa0, 0xd);
|
||||
func_8024BD08(1);
|
||||
func_8025A7DC(COMUSIC_25_USING_GOLD_FEATHERS);
|
||||
}
|
||||
func_80289F10(1);
|
||||
}
|
||||
|
||||
static void __bsbwhirl_spawnSparkle(void){
|
||||
func_8033E3F0(2,1);
|
||||
}
|
||||
|
||||
enum bs_e func_802AA510(enum bs_e arg0){
|
||||
if(func_8029B300(arg0) > 0)
|
||||
arg0 = BS_1C_WONDERWING_WALK;
|
||||
|
||||
if(button_released(BUTTON_Z))
|
||||
arg0 = BS_1E_WONDERWING_EXIT;
|
||||
|
||||
if(button_pressed(BUTTON_A) && func_8028B2E8())
|
||||
arg0 = BS_1D_WONDERWING_JUMP;
|
||||
|
||||
if(player_inWater())
|
||||
arg0 = BS_2D_SWIM_IDLE;
|
||||
|
||||
return arg0;
|
||||
|
||||
}
|
||||
|
||||
void func_802AA58C(enum bs_e *arg0){
|
||||
D_8037D3B0 += time_getDelta();
|
||||
if(2.0 < D_8037D3B0){
|
||||
D_8037D3B0 = 0.0f;
|
||||
func_80346C10(arg0, BS_1E_WONDERWING_EXIT, -1, ITEM_10_GOLD_FEATHER, 1);
|
||||
if(*arg0 != BS_1E_WONDERWING_EXIT){
|
||||
FUNC_8030E624(SFX_3E9_UNKNOWN, 0.8f, 28000);
|
||||
func_802D8BE4(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void bsbwhirl_enter_init(void){
|
||||
func_8028A274(0x22, 0.5f);
|
||||
func_8029C7F4(1,1,1,2);
|
||||
func_80297970(0.0f);
|
||||
func_8029B324(0, 0.03f);
|
||||
func_8029B324(1, 1.0f);
|
||||
func_8029E070(1);
|
||||
D_8037D3B0 = 0.0f;
|
||||
func_8024BD08(0);
|
||||
func_8025A55C(0, 0xfa0, 0xd);
|
||||
func_8025A6EC(0x25, 0x6d60);
|
||||
func_80299BD4();
|
||||
func_802952A8(1,0);
|
||||
}
|
||||
|
||||
void bsbwhirl_enter_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
func_802952A8(1,1);
|
||||
if(animctrl_isStopped(_player_getAnimCtrlPtr()))
|
||||
sp1C = BS_1B_WONDERWING_IDLE;
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bsbwhirl_enter_end(void){
|
||||
func_802952A8(1,1);
|
||||
__bsbwhirl_end();
|
||||
}
|
||||
|
||||
void bsbwhirl_stand_init(void){
|
||||
func_8028A010(ANIM_BANJO_WONDERWING_IDLE, 1.0f);
|
||||
func_8029C7F4(1,1,1,2);
|
||||
func_80297970(0.0f);
|
||||
}
|
||||
|
||||
void bsbwhirl_stand_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
__bsbwhirl_spawnSparkle();
|
||||
sp1C = func_802AA510(sp1C);
|
||||
func_802AA58C(&sp1C);
|
||||
|
||||
if(player_isSliding())
|
||||
sp1C = BS_SLIDE;
|
||||
|
||||
if(player_inWater())
|
||||
sp1C = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
bs_setState(sp1C);
|
||||
|
||||
}
|
||||
|
||||
void bsbwhirl_stand_end(void){
|
||||
__bsbwhirl_end();
|
||||
}
|
||||
|
||||
void bsbwhirl_walk_init(void){
|
||||
func_8028A010(ANIM_BANJO_WONDERWING_WALK, 0.53f);
|
||||
func_80289EC8(D_80364AD0, D_80364AD4, D_80364AD8, D_80364ADC);
|
||||
func_8029C7F4(2,1,1,2);
|
||||
|
||||
}
|
||||
|
||||
void bsbwhirl_walk_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
__bsbwhirl_spawnSparkle();
|
||||
func_8029AD28(0.47f, 4);
|
||||
func_8029AD28(0.97f, 3);
|
||||
func_802AA400();
|
||||
|
||||
if(!func_8029B300() && func_80297C04(1.0f))
|
||||
sp1C = BS_1B_WONDERWING_IDLE;
|
||||
|
||||
if(button_released(BUTTON_Z))
|
||||
sp1C = BS_1E_WONDERWING_EXIT;
|
||||
|
||||
if(button_pressed(BUTTON_A) && func_8028B2E8())
|
||||
sp1C = BS_1D_WONDERWING_JUMP;
|
||||
|
||||
if(player_inWater())
|
||||
sp1C = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
func_802AA58C(&sp1C);
|
||||
|
||||
if(player_isSliding())
|
||||
sp1C = BS_SLIDE;
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bsbwhirl_walk_end(void){
|
||||
__bsbwhirl_end();
|
||||
}
|
||||
|
||||
void bsbwhirl_jump_init(void){
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_WONDERWING_JUMP);
|
||||
animctrl_setDuration(aCtrl, 0.8f);
|
||||
animctrl_setTransitionDuration(aCtrl, 0.134f);
|
||||
func_8028774C(aCtrl, 0.14f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.4495f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsbwhirl.c", 0x181);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
if(func_8029B2E8() != 0.0f)
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802AA400();
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
player_setYVelocity(D_80364AE0);
|
||||
gravity_set(D_80364AE4);
|
||||
func_80299B58(0.91f, 1.09f);
|
||||
D_8037D3B4 = 0;
|
||||
}
|
||||
|
||||
void bsbwhirl_jump_update(void){
|
||||
enum bs_e sp2C = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp1C[3];
|
||||
|
||||
__bsbwhirl_spawnSparkle();
|
||||
func_802AA400();
|
||||
_get_velocity(&sp1C);
|
||||
if(button_released(BUTTON_A) && 0.0f < sp1C[1])
|
||||
gravity_reset();
|
||||
|
||||
switch(D_8037D3B4){
|
||||
case 0://L802AAB48
|
||||
if(func_8028B254(0x82)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(aCtrl, 0.8f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D3B4 = 1;
|
||||
}
|
||||
break;
|
||||
case 1://L802AAB90
|
||||
if(player_inWater())
|
||||
sp2C = BS_2D_SWIM_IDLE;
|
||||
|
||||
if(func_8028B2E8()){
|
||||
D_8037D3B4 = 2;
|
||||
func_8029C5E8();
|
||||
}
|
||||
break;
|
||||
case 2://L802AABC8
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
sp2C = BS_1B_WONDERWING_IDLE;
|
||||
sp2C = func_802AA510(sp2C);
|
||||
break;
|
||||
}//L802AABE8
|
||||
func_802AA58C(&sp2C);
|
||||
if(player_inWater())
|
||||
sp2C = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
bs_setState(sp2C);
|
||||
}
|
||||
|
||||
void bsbwhirl_jump_end(void){
|
||||
gravity_reset();
|
||||
__bsbwhirl_end();
|
||||
}
|
||||
|
||||
void bsbwhirl_exit_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, 0);
|
||||
animctrl_setDirection(aCtrl, 0);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_WONDERWING_EXIT);
|
||||
animctrl_setDuration(aCtrl, 0.5f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsbwhirl.c", 0x201);
|
||||
func_80289F10(1);
|
||||
func_8029957C(2);
|
||||
func_80297970(0.0f);
|
||||
comusic_8025AB44(COMUSIC_25_USING_GOLD_FEATHERS, 0.0f, 0xFA0);
|
||||
}
|
||||
|
||||
void bsbwhirl_exit_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
|
||||
if(animctrl_isStopped(_player_getAnimCtrlPtr()))
|
||||
sp1C = BS_1_IDLE;
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bsbwhirl_exit_end(void){
|
||||
__bsbwhirl_end();
|
||||
}
|
||||
|
||||
void bsbwhirl_drone_init(void){
|
||||
bsdrone_init();
|
||||
}
|
||||
|
||||
void bsbwhirl_drone_update(void){
|
||||
__bsbwhirl_spawnSparkle();
|
||||
bsdrone_update();
|
||||
}
|
||||
|
||||
void bsbwhirl_drone_end(void){
|
||||
bsdrone_end();
|
||||
__bsbwhirl_end();
|
||||
}
|
||||
|
||||
void func_802AADBC(void){
|
||||
func_8028A010(ANIM_BANJO_WONDERWING_IDLE, 1.0f);
|
||||
func_8029C7F4(1,1,3,2);
|
||||
func_80297970(0.0f);
|
||||
func_8029C674();
|
||||
}
|
||||
|
||||
void func_802AAE08(void){
|
||||
enum bs_e sp1C =0;
|
||||
__bsbwhirl_spawnSparkle();
|
||||
func_8029C6D0();
|
||||
if(!func_80298850())
|
||||
sp1C = BS_1B_WONDERWING_IDLE;
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void func_802AAE4C(void){
|
||||
func_8029C748();
|
||||
__bsbwhirl_end();
|
||||
}
|
||||
208
src/core2/bs/bbuster.c
Normal file
208
src/core2/bs/bbuster.c
Normal file
@@ -0,0 +1,208 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/*.data*/
|
||||
const f32 D_80364990 = 400.0f;
|
||||
const f32 D_80364994 = -800.0f;
|
||||
|
||||
const f32 D_80364998 = 730.0f;
|
||||
const f32 D_8036499C = -2110.0f;
|
||||
|
||||
const f32 D_803649A0 = 2300.0f;
|
||||
const f32 D_803649A4 = -20000.0f;
|
||||
const f32 D_803649A8 = -5000.0f;
|
||||
|
||||
/*.bss*/
|
||||
f32 D_8037D2B0;
|
||||
u8 D_8037D2B4;
|
||||
u8 D_8037D2B5;
|
||||
u8 D_8037D2B6;
|
||||
u8 D_8037D2B7;
|
||||
u8 D_8037D2B8;
|
||||
u8 D_8037D2B9;
|
||||
u8 D_8037D2BA;
|
||||
u8 D_8037D2BB;
|
||||
u8 D_8037D2BC;
|
||||
|
||||
void func_802A02B4(s32 arg0);
|
||||
|
||||
/*.code*/
|
||||
int func_8029FB20(Actor *arg0){
|
||||
return !arg0->unk124_0;
|
||||
}
|
||||
|
||||
void func_8029FB30(void) {
|
||||
f32 i;
|
||||
|
||||
for(i = 0.0f; i < 359.0; i += 60.0){
|
||||
func_80292974(i, 730.0f, 100.0f);
|
||||
}
|
||||
for(i = 0.0f; i < 359.0; i += 60.0){
|
||||
func_80292974(mlNormalizeAngle(i + 30.0f), 430.0f, 40.0f);
|
||||
}
|
||||
}
|
||||
|
||||
s32 func_8029FC4C(void){
|
||||
return D_8037D2B8;
|
||||
}
|
||||
|
||||
s32 bsbbuster_hitboxActive(void){
|
||||
return D_8037D2B7;
|
||||
}
|
||||
|
||||
void bsbbuster_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp20[3];
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, 0);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_BBUSTER);
|
||||
animctrl_setDuration(aCtrl, 1.02f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.35f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsbbuster.c", 0x81);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
gravity_set(0.0f);
|
||||
func_80297970(0.0f);
|
||||
ml_vec3f_clear(sp20);
|
||||
func_80297A0C(sp20);
|
||||
func_8029E070(1);
|
||||
func_802A02B4(0);
|
||||
D_8037D2B9 = 0;
|
||||
D_8037D2B7 = 0;
|
||||
D_8037D2B8 = 0;
|
||||
D_8037D2B0 = 0.0001f;
|
||||
D_8037D2B4 = 0;
|
||||
D_8037D2B5 = 0;
|
||||
D_8037D2B6 = 0;
|
||||
D_8037D2BC = 0;
|
||||
D_8037D2BA = 0;
|
||||
}
|
||||
|
||||
void bsbbuster_update(void){
|
||||
enum bs_e sp44 = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
s32 sp3C;
|
||||
f32 sp30[3];
|
||||
s32 sp24[3];
|
||||
|
||||
D_8037D2B8 = 0;
|
||||
if(animctrl_isAt(aCtrl, 0.24f))
|
||||
func_80299BD4();
|
||||
|
||||
switch(D_8037D2BA){
|
||||
case 0://8029FDF0
|
||||
if(animctrl_isStopped(_player_getAnimCtrlPtr())){
|
||||
animctrl_setDuration(aCtrl, 0.4f);
|
||||
D_8037D2BA = 1;
|
||||
}
|
||||
break;
|
||||
case 1://8029FE24
|
||||
D_8037D2B0 -= time_getDelta();
|
||||
if(D_8037D2B0 <= 0.0f){
|
||||
gravity_reset();
|
||||
func_80297BF8(D_803649A8);
|
||||
gravity_set(D_803649A4);
|
||||
player_setYVelocity(D_803649A0);
|
||||
D_8037D2B7 = 1;
|
||||
D_8037D2BA = 2;
|
||||
}
|
||||
break;
|
||||
case 2://8029FEA0
|
||||
if(D_8037D2B5 == 0 && func_80297AAC() < 0.0f){
|
||||
func_8030E760(SFX_45_KAZOOIE_HUGHH, 1.2f, 0x7530);
|
||||
D_8037D2B5++;
|
||||
}
|
||||
if(D_8037D2B4 == 0 && func_8028B254(0x8c)){
|
||||
func_8030E5F4(SFX_13_BEAKBUSTER_GROUND, 1.0f);
|
||||
D_8037D2B4++;
|
||||
}
|
||||
if(D_8037D2B6 == 0 && func_8028B254(0x4b)){
|
||||
func_80250D94(1.0f, 0.3f, 0.4f);
|
||||
D_8037D2B6++;
|
||||
}
|
||||
D_8037D2B9 = miscflag_isTrue(8);
|
||||
func_8029445C(sp30);
|
||||
//L8029FF78
|
||||
if(((0.0f <= sp30[1])? sp30[1] : -sp30[1]) < 1.0){
|
||||
D_8037D2BC++;
|
||||
}else{
|
||||
D_8037D2BC = 0;
|
||||
}
|
||||
if(D_8037D2B7 == 2){
|
||||
D_8037D2B7 = 0;
|
||||
}
|
||||
if(func_8028B2E8() || D_8037D2B9 || !(D_8037D2BC < 4)){
|
||||
func_802BB3DC( 0, 45.0f, 0.71f);
|
||||
func_8029AE74(0);
|
||||
func_8029FB30();
|
||||
func_80297A0C(0);
|
||||
gravity_set(0.0f);
|
||||
func_80297970(0.0f);
|
||||
D_8037D2B7 = 2;
|
||||
D_8037D2B8 = 1;
|
||||
D_8037D2B0 = 0.09f;
|
||||
D_8037D2BA = 3;
|
||||
_player_getPosition(&sp24);
|
||||
func_8032728C(sp24, 150.0f, 2, func_8029FB20);
|
||||
if(func_802931DC(&sp3C)){
|
||||
sp44 = BS_SPLAT;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3://802A00F0
|
||||
D_8037D2B7 = 0;
|
||||
if(func_80297C6C() == 1){
|
||||
func_80297CCC(0.9f);
|
||||
}
|
||||
|
||||
D_8037D2B0 -= time_getDelta();
|
||||
if(D_8037D2B0 <= 0.0f){
|
||||
if(D_8037D2BB){
|
||||
player_setYVelocity(D_80364990);
|
||||
gravity_set(D_80364994);
|
||||
}else{
|
||||
player_setYVelocity(D_80364998);
|
||||
gravity_set(D_8036499C);
|
||||
}
|
||||
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.7299f);
|
||||
animctrl_setDuration(aCtrl, 1.9f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D2BA = 4;
|
||||
}
|
||||
break;
|
||||
|
||||
case 4://802A01CC
|
||||
func_802B6FA8();
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.74f);
|
||||
animctrl_setDuration(aCtrl, 15.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
}
|
||||
if(func_8028B2E8()){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(aCtrl, 1.9f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
sp44 = BS_20_LANDING;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if(player_inWater())
|
||||
sp44 = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
bs_setState(sp44);
|
||||
}//L802A024C
|
||||
|
||||
void bsbbuster_end(void){
|
||||
gravity_reset();
|
||||
func_80297B94();
|
||||
func_8029E070(0);
|
||||
D_8037D2B7 = 0;
|
||||
D_8037D2B8 = 0;
|
||||
}
|
||||
|
||||
void func_802A02B4(s32 arg0){
|
||||
D_8037D2BB = arg0;
|
||||
}
|
||||
64
src/core2/bs/bee.c
Normal file
64
src/core2/bs/bee.c
Normal file
@@ -0,0 +1,64 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void func_80293D48(f32, f32);
|
||||
|
||||
void pitch_setAngVel(f32, f32);
|
||||
|
||||
void roll_setAngularVelocity(f32, f32);
|
||||
|
||||
int bsbee_inSet(s32 move_idx);
|
||||
|
||||
void func_802A02C0(void){
|
||||
if(bsbee_inSet(bs_getNextState()) == 0){
|
||||
pitch_setIdeal(0.0f); //pitch_setIdeal
|
||||
roll_setIdeal(0.0f);
|
||||
func_8029B0C0();
|
||||
func_8029E070(0);
|
||||
func_8029E064(0);
|
||||
miscflag_clear(3);
|
||||
miscflag_clear(4);
|
||||
func_80293D74();
|
||||
}
|
||||
func_80289F10(1);
|
||||
}
|
||||
|
||||
void func_802A0340(void){
|
||||
if(bsbee_inSet(bs_getPrevState()) == 0){
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
roll_setAngularVelocity(1000.0f, 12.0f);
|
||||
func_80293D48(50.0f, 25.0f);
|
||||
miscflag_set(3);
|
||||
miscflag_set(4);
|
||||
}
|
||||
}
|
||||
|
||||
// bsBee_inSet
|
||||
int bsbee_inSet(s32 move_idx){
|
||||
return (move_idx == 0x85)
|
||||
|| (move_idx == 0x86)
|
||||
|| (move_idx == 0x87)
|
||||
|| (move_idx == 0x88)
|
||||
|| (move_idx == 0x89)
|
||||
|| (move_idx == 0x8a)
|
||||
|| (move_idx == 0x8b)
|
||||
|| (move_idx == 0x9d)
|
||||
|| (move_idx == 0x6b)
|
||||
|| bsBeeFly_inSet(move_idx); //bsBeeFly_inSet
|
||||
}
|
||||
|
||||
|
||||
void bsbee_drone_init(void){
|
||||
func_802A0340();
|
||||
bsdrone_init();
|
||||
}
|
||||
|
||||
void bsbee_drone_update(void){
|
||||
bsdrone_update();
|
||||
}
|
||||
|
||||
void bsbee_drone_end(void){
|
||||
bsdrone_end();
|
||||
func_802A02C0();
|
||||
}
|
||||
270
src/core2/bs/beeFly.c
Normal file
270
src/core2/bs/beeFly.c
Normal file
@@ -0,0 +1,270 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void func_80354030(f32*, f32);
|
||||
f32 func_8029B2E8(void);
|
||||
f32 func_8029B33C(void);
|
||||
void func_8029797C(f32);
|
||||
void func_80297970(f32);
|
||||
|
||||
void func_802921BC(f32);
|
||||
void func_80297BF8(f32);
|
||||
void func_802BFE50(f32, f32, f32);
|
||||
void func_80299234(f32, f32);
|
||||
f32 func_8029B2D0(void);
|
||||
f32 func_8029B2DC(void);
|
||||
f32 func_80297A64(void);
|
||||
void func_802979AC(f32, f32);
|
||||
void func_8028FDC8(f32);
|
||||
void func_80290B40(f32);
|
||||
void func_80290A6C(void);
|
||||
|
||||
/* .data */
|
||||
f32 D_803649B0[5] = {0.38f, 0.3f, 0.24f, 0.18f, 0.14};
|
||||
f32 D_803649C4[5] = {0.0f, 0.2f, 0.3f, 0.4f, 0.5f};
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D2C0;
|
||||
|
||||
int bsBeeFly_inSet(s32);
|
||||
|
||||
void func_802A04F0(void){
|
||||
f32 plyrPos[3]; //sp1C
|
||||
|
||||
_player_getPosition(&plyrPos);
|
||||
plyrPos[0] += randf2(-30.0f, 30.0f);
|
||||
plyrPos[1] += 30.0f + randf2(0.0f, 30.0f);
|
||||
plyrPos[2] += randf2(-30.0f, 30.0f);
|
||||
func_803541C0(3);
|
||||
func_803541CC(0x50);
|
||||
func_80354030(plyrPos, 0.5f);
|
||||
|
||||
}
|
||||
|
||||
void func_802A0590(void){
|
||||
func_802A0340();
|
||||
func_8028A274(0x1df, 1.5f);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
if(func_8029B2E8() != 0.0f){
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
}
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_80297970(0.0f);
|
||||
gravity_set(-1200.0f);
|
||||
D_8037D2C0 = 0;
|
||||
}
|
||||
|
||||
void func_802A0630(void){
|
||||
s32 next_state = 0;
|
||||
AnimCtrl * mvmnt; //sp1C
|
||||
|
||||
mvmnt = _player_getAnimCtrlPtr();
|
||||
switch(D_8037D2C0){
|
||||
case 0:
|
||||
if(!animctrl_isAt(mvmnt, 0.266f))
|
||||
break;
|
||||
player_setYVelocity(1600.0f);
|
||||
func_8030E58C(SFX_C_TAKING_FLIGHT_LIFTOFF, 0.7f);
|
||||
D_8037D2C0 = 1;
|
||||
break;
|
||||
case 1:
|
||||
func_802A04F0();
|
||||
if(animctrl_isStopped(mvmnt))
|
||||
func_8028A010(ASSET_1DC_ANIM_BEE_FLY, 0.38f);
|
||||
if(func_80297AAC() < 0.0f)
|
||||
next_state = BS_BEE_FLY;
|
||||
break;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802A0704(void){
|
||||
func_802A02C0();
|
||||
}
|
||||
|
||||
void func_802A0724(void){
|
||||
pitch_setAngVel(500.0f, 1.2f);
|
||||
}
|
||||
|
||||
void func_802A0750(void){
|
||||
pitch_setAngVel(1000.0f, 2.2f);
|
||||
}
|
||||
|
||||
void _bsbeefly_end(void){
|
||||
if(bsBeeFly_inSet(bs_getNextState()))
|
||||
return;
|
||||
func_802921BC(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
pitch_setIdeal(0.0f);
|
||||
func_80291548();
|
||||
gravity_reset();
|
||||
func_80297B94();
|
||||
func_8028FFBC(0);
|
||||
func_8029099C();
|
||||
}
|
||||
|
||||
void func_802A07F8(void){
|
||||
if(bsBeeFly_inSet(bs_getPrevState()))
|
||||
return;
|
||||
func_802921BC(65.0f);
|
||||
func_802991A8(3);
|
||||
roll_setAngularVelocity(500.0f, 2.0f);
|
||||
func_802A0724();
|
||||
gravity_set(-300.0f);
|
||||
func_80297BF8(-99.9f);
|
||||
func_8028FEF0();
|
||||
func_8028FFBC(1);
|
||||
func_802909C4();
|
||||
}
|
||||
|
||||
void _bsBeeFly_updateYaw(void){
|
||||
f32 sp34;
|
||||
f32 sp30;
|
||||
f32 stickX;
|
||||
stickX = func_8029B2D0();
|
||||
func_802BFE50(2.0f, 2000.0f, 350.0f);
|
||||
if(button_held(BUTTON_R)){
|
||||
func_80299234(500.0f, 30.0f);
|
||||
sp34 = 6.0f;
|
||||
sp30 = 85.0f;
|
||||
}
|
||||
else{
|
||||
func_80299234(500.0f, 2.0f);
|
||||
sp34 = 3.0f;
|
||||
sp30 = 65.0f;
|
||||
}
|
||||
roll_setIdeal(ml_map_f(stickX, -1.0f, 1.0f, -sp30, sp30));
|
||||
yaw_setIdeal(mlNormalizeAngle(yaw_getIdeal() + ml_map_f(stickX, -1.0f, 1.0f, sp34, -sp34)));
|
||||
}
|
||||
|
||||
void _bsBeeFly_updatePitch(void){
|
||||
f32 stickY = func_8029B2DC();
|
||||
if(stickY < 0.0f){
|
||||
pitch_setIdeal(ml_map_f(stickY, -1.0f, 0.0f, 300.0f, 360.0f));
|
||||
} else {
|
||||
pitch_setIdeal(ml_map_f(stickY, 0.0f, 1.0f, 0.0f, 80.0f));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void bsbeefly_enter(void){
|
||||
s32 mvmnt;
|
||||
|
||||
mvmnt = bs_getPrevState();
|
||||
func_8028A010(ASSET_1DC_ANIM_BEE_FLY, 0.38);
|
||||
func_8029C7F4(1, 1, 3, 3);
|
||||
if(miscflag_isTrue(9))
|
||||
func_80297970(0.0f);
|
||||
else
|
||||
func_80297970(600.0f);
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802914CC(4);
|
||||
func_802A07F8();
|
||||
if(mvmnt != 0x8b){
|
||||
func_8028FDC8(1.0f);
|
||||
D_8037D2C0 = 0;
|
||||
}
|
||||
else {
|
||||
D_8037D2C0 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void bsbeefly_update(void){
|
||||
s32 sp4C;
|
||||
AnimCtrl* sp48;
|
||||
s32 sp44;
|
||||
f32 sp40;
|
||||
f32 sp3C;
|
||||
f32 sp38;
|
||||
f32 *sp24;
|
||||
f32 sp30;
|
||||
|
||||
|
||||
sp4C = 0;
|
||||
sp48 = _player_getAnimCtrlPtr();
|
||||
_bsBeeFly_updateYaw();
|
||||
_bsBeeFly_updatePitch();
|
||||
pitch_get(); //return value never used
|
||||
if(button_pressed(BUTTON_A) && (player_getYPosition() < 7500.0)){
|
||||
func_8028FDC8(1.0f);
|
||||
}
|
||||
if(!func_8028FD30() && player_inWater()){
|
||||
func_8028FDC8(1.0f);
|
||||
}
|
||||
sp44 = func_8028FD30();
|
||||
animctrl_setDuration(sp48, D_803649B0[sp44]);
|
||||
sp24 = &D_803649C4[sp44];
|
||||
sp40 = 0.9f;
|
||||
sp40 += *sp24;
|
||||
sp3C = pitch_get();
|
||||
sp30 = 0.0f;
|
||||
if(func_80297AAC() < 0.0f){
|
||||
if(sp3C < 300.0f){
|
||||
sp30 = ml_map_f(sp3C, 0.0f, 80.0f, 0.0f, 0.23f);
|
||||
}
|
||||
if(80.0f < sp3C){
|
||||
sp30 = ml_map_f(sp3C, 300.0f, 360.0f, -0.2f, 0.0f);
|
||||
}
|
||||
}
|
||||
sp40 += sp30;
|
||||
if(!sp44 && button_held(BUTTON_B)){
|
||||
sp40 += 0.12;
|
||||
}
|
||||
func_80290B40(sp40);
|
||||
func_80290A6C();
|
||||
switch(D_8037D2C0){
|
||||
default:
|
||||
break;
|
||||
case 0:
|
||||
if((s32)sp24 != (s32)&D_803649C4)
|
||||
D_8037D2C0 = 1;
|
||||
break;
|
||||
case 1:
|
||||
sp40 = mlNormalizeAngle(pitch_getIdeal() - 30.0f);
|
||||
if(80.0f < sp40 && sp40 <300.0f)
|
||||
sp40 = 300.0f;
|
||||
pitch_setIdeal(sp40);
|
||||
func_802A0750();
|
||||
if(sp44 != 0){
|
||||
player_setYVelocity(sp44*400.0);
|
||||
func_802A04F0();
|
||||
}
|
||||
if((s32)sp24 == (s32)&D_803649C4){
|
||||
func_802A0724();
|
||||
D_8037D2C0 = 0;
|
||||
}
|
||||
break;
|
||||
}//L802A0DF0
|
||||
if(miscflag_isTrue(9)){
|
||||
func_80297BF8(0.0f);
|
||||
func_80297A0C(0);
|
||||
sp38 = 0.0f;
|
||||
}else{
|
||||
if(sp3C <= 80.0f){
|
||||
func_80297BF8(ml_map_f(sp3C, 60.0f, 80.0f, -99.9, -1266.66));
|
||||
sp38 = ml_map_f(sp3C, 60.0f, 80.0f, 600.0f, 60.0f);
|
||||
}else{
|
||||
func_80297BF8(ml_map_f(sp3C, 300.0f, 310.0f, -399.99, -99.9));
|
||||
sp38 = ml_map_f(sp3C, 300.0f, 340.0f, 0.0f, 600.0f);
|
||||
}
|
||||
}
|
||||
func_8029797C(yaw_get());
|
||||
if(button_held(9)){
|
||||
sp38 += (f64)sp38;
|
||||
}
|
||||
func_80297970(sp38);
|
||||
if(func_8028B2E8() && !player_inWater())
|
||||
sp4C = BS_85_BEE_IDLE;
|
||||
func_8028FFF0();
|
||||
bs_setState(sp4C);
|
||||
}
|
||||
|
||||
void bsbeefly_end(void){
|
||||
_bsbeefly_end();
|
||||
}
|
||||
|
||||
int bsBeeFly_inSet(s32 move){
|
||||
return move == 0x8C;
|
||||
}
|
||||
537
src/core2/bs/beeMain.c
Normal file
537
src/core2/bs/beeMain.c
Normal file
@@ -0,0 +1,537 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
f32 func_8029B41C(void);
|
||||
void func_8029E3C0(s32, f32);
|
||||
void func_80299628(s32);
|
||||
void yaw_applyIdeal(void);
|
||||
void func_8029797C(f32);
|
||||
f32 func_80297A64(void);
|
||||
void func_802979AC(f32, f32);
|
||||
void func_802BF2C0(f32);
|
||||
|
||||
f32 func_80289F70(void);
|
||||
void func_8028A3B8(f32, f32);
|
||||
f32 func_8029B2E8(void);
|
||||
f32 func_8029B33C(void);
|
||||
f32 func_80257C48(f32, f32, f32);
|
||||
f32 func_8029B30C();
|
||||
|
||||
/* .data */
|
||||
f32 D_803649E0 = 30.0f;
|
||||
f32 D_803649E4 = 375.0f;
|
||||
f32 D_803649E8 = 0.6f;
|
||||
f32 D_803649EC = 0.4f;
|
||||
f32 D_803649F0 = 693.5f;
|
||||
f32 D_803649F4 = -1200.0f;
|
||||
u8 D_803649F8 = 0;
|
||||
s16 D_803649FC[3] = {SFX_54_BANJO_HOO_1, SFX_55_BANJO_HOO_2, SFX_56_BANJO_HUI};
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037D2D0;
|
||||
u8 D_8037D2D4;
|
||||
|
||||
/* .code */
|
||||
void func_802A0F90(void){
|
||||
FUNC_8030E624(SFX_2F_ORANGE_SPLAT, 1.4f, 8000);
|
||||
|
||||
}
|
||||
|
||||
void func_802A0FB4(void){
|
||||
func_8030EB00(D_803649FC[D_803649F8], 1.35f, 1.45f);
|
||||
if(++D_803649F8 > 2){
|
||||
D_803649F8 = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void func_802A1020(void){
|
||||
f32 sp1c;
|
||||
|
||||
sp1c = func_8029B30C();
|
||||
if(func_8029B300() == 0){
|
||||
func_80297970(0.0f);
|
||||
}
|
||||
else{
|
||||
func_80297970(func_80257C48(sp1c, D_803649E0, D_803649E4));
|
||||
}
|
||||
}
|
||||
|
||||
void func_802A1080(void){
|
||||
func_802A0340();
|
||||
func_8028A010(ASSET_1DE_ANIM_BEE_IDLE,3.0f);
|
||||
func_8029C7F4(1,1,1,2);
|
||||
func_80297970(0.0f);
|
||||
func_802900B4();
|
||||
}
|
||||
|
||||
void func_802A10D4(void){
|
||||
s32 s0;
|
||||
|
||||
s0 = 0;
|
||||
func_80299628(0);
|
||||
if(func_8028B094())
|
||||
s0 = 0x88;
|
||||
|
||||
if(func_80294F78())
|
||||
s0 = func_802926C0();
|
||||
|
||||
if(func_8029B300() > 0)
|
||||
s0 = BS_BEE_WALK;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
s0 = BS_BEE_JUMP;
|
||||
|
||||
if(player_inWater())
|
||||
s0 = BS_BEE_FLY;
|
||||
|
||||
bs_setState(func_8029CA94(s0));
|
||||
}
|
||||
|
||||
void func_802A117C(void){
|
||||
func_802900FC();
|
||||
func_802A02C0();
|
||||
}
|
||||
|
||||
void func_802A11A4(void){
|
||||
func_802A0340();
|
||||
func_8028A010(ASSET_1DD_ANIM_BEE_WALK, 0.38f);
|
||||
func_8029C7F4(2,1,1,2);
|
||||
func_80289EC8(D_803649E0, D_803649E4, D_803649E8, D_803649EC);
|
||||
func_802900B4();
|
||||
}
|
||||
|
||||
void func_802A1214(void){
|
||||
s32 s0;
|
||||
|
||||
s0 = 0;
|
||||
func_80299628(0);
|
||||
func_802A1020();
|
||||
func_8029AD28(0.94f, 4);
|
||||
func_8029AD28(0.44f, 3);
|
||||
if(func_8029B300() == 0 && func_80297C04(1.0f))
|
||||
s0 = BS_85_BEE_IDLE;
|
||||
|
||||
if(func_8028B094())
|
||||
s0 = BS_88_BEE_FALL;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
s0 = BS_BEE_JUMP;
|
||||
|
||||
if(player_inWater())
|
||||
s0 = BS_BEE_FLY;
|
||||
|
||||
bs_setState(s0);
|
||||
}
|
||||
|
||||
void func_802A12D4(void){
|
||||
func_802900FC();
|
||||
func_802A02C0();
|
||||
}
|
||||
|
||||
void func_802A12FC(void){
|
||||
AnimCtrl * s0;
|
||||
|
||||
s0 = _player_getAnimCtrlPtr();
|
||||
func_802A0340();
|
||||
animctrl_reset(s0);
|
||||
animctrl_setSmoothTransition(s0, 0);
|
||||
animctrl_setIndex(s0, ASSET_1E2_ANIM_BEE_JUMP);
|
||||
animctrl_setSubRange(s0, 0, 0.34f);
|
||||
func_8028774C(s0, 0.1f);
|
||||
animctrl_setDuration(s0, 1.2f);
|
||||
animctrl_setPlaybackType(s0, ANIMCTRL_ONCE);
|
||||
func_802875AC(s0, "bsbeemain.c", 0x15b);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
if(func_8029B2E8() != 0.0f){
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
}
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802A1020();
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
player_setYVelocity(D_803649F0);
|
||||
gravity_set(D_803649F4);
|
||||
func_802A0FB4();
|
||||
D_8037D2D4 = 0;
|
||||
}
|
||||
|
||||
void func_802A1438(void){
|
||||
s32 sp2c;
|
||||
AnimCtrl * sp28;
|
||||
f32 sp1c[3];
|
||||
|
||||
sp2c = 0;
|
||||
sp28 = _player_getAnimCtrlPtr();
|
||||
func_802A1020();
|
||||
_get_velocity(sp1c);
|
||||
if(button_released(BUTTON_A) && (0.0f < sp1c[1])){
|
||||
gravity_reset();
|
||||
}
|
||||
switch (D_8037D2D4)
|
||||
{
|
||||
case 0:
|
||||
if(func_8028B254(0x82)){
|
||||
func_8028A3B8(0.715f, 0.7f);
|
||||
D_8037D2D4 = 2;
|
||||
}else{
|
||||
if(animctrl_isStopped(sp28)){
|
||||
func_8028A3B8(0.51f, 4.0f);
|
||||
D_8037D2D4 = 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if(func_8028B254(0x82)){
|
||||
func_8028A3B8(0.715f, 1.2f);
|
||||
D_8037D2D4 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
func_80299628(0);
|
||||
if(func_8028B2E8()){
|
||||
func_802A0F90();
|
||||
func_8028A3B8(1.0f, 0.7f);
|
||||
D_8037D2D4 = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
func_80299628(0);
|
||||
if(animctrl_isStopped(sp28)){
|
||||
func_80297970(0.0f);
|
||||
sp2c = BS_85_BEE_IDLE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if(func_8028B2E8()){
|
||||
if(func_8029B300() > 0)
|
||||
sp2c = BS_BEE_WALK;
|
||||
if(button_pressed(BUTTON_A)){
|
||||
sp2c = BS_BEE_JUMP;
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(button_pressed(BUTTON_A)){
|
||||
sp2c = BS_BEE_FLY;
|
||||
}
|
||||
}
|
||||
if(player_inWater())
|
||||
sp2c = BS_BEE_FLY;
|
||||
bs_setState(sp2c);
|
||||
}
|
||||
|
||||
void func_802A163C(void){
|
||||
func_802A02C0();
|
||||
gravity_reset();
|
||||
}
|
||||
|
||||
void func_802A1664(void){
|
||||
AnimCtrl * s0;
|
||||
|
||||
s0 = _player_getAnimCtrlPtr();
|
||||
func_802A0340();
|
||||
animctrl_reset(s0);
|
||||
animctrl_setIndex(s0, ASSET_1E2_ANIM_BEE_JUMP);
|
||||
func_8028774C(s0, 0.34f);
|
||||
animctrl_setDuration(s0, 8.0f);
|
||||
animctrl_setSubRange(s0, 0, 0.51f);
|
||||
animctrl_setPlaybackType(s0, ANIMCTRL_ONCE);
|
||||
func_802875AC(s0, "bsbeemain.c", 0x1e2);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
D_8037D2D4 = 0;
|
||||
}
|
||||
|
||||
void func_802A170C(void){
|
||||
s32 sp2c; //next state
|
||||
AnimCtrl * sp28;
|
||||
f32 sp1c[3];
|
||||
|
||||
sp2c = 0;
|
||||
sp28 = _player_getAnimCtrlPtr();
|
||||
func_80299628(0);
|
||||
func_802A1020();
|
||||
_get_velocity(sp1c);
|
||||
switch(D_8037D2D4){
|
||||
case 0:
|
||||
if(func_8028B254(0x82)){
|
||||
func_8028A3B8(0.715f, 0.7f);
|
||||
D_8037D2D4 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
func_80299628(0);
|
||||
if(func_8028B2E8()){
|
||||
func_802A0F90();
|
||||
func_80297970(0.0f);
|
||||
func_8028A3B8(1.0f, 0.7f);
|
||||
D_8037D2D4 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
func_80299628(0);
|
||||
if(animctrl_isStopped(sp28)){
|
||||
func_80297970(0.0f);
|
||||
sp2c = BS_85_BEE_IDLE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if(func_8028B2E8()){
|
||||
if(miscflag_isTrue(0x19)){
|
||||
sp2c = func_80292738();
|
||||
}else{
|
||||
if(func_8029B300() > 0)
|
||||
sp2c = BS_BEE_WALK;
|
||||
if(button_pressed(BUTTON_A))
|
||||
sp2c = BS_BEE_JUMP;
|
||||
sp2c = func_8029CA94(sp2c);
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(miscflag_isFalse(0xf) && button_pressed(BUTTON_A))
|
||||
sp2c = BS_BEE_FLY;
|
||||
}//L802A189C
|
||||
if(player_inWater())
|
||||
sp2c = BS_BEE_FLY;
|
||||
bs_setState(sp2c);
|
||||
}
|
||||
|
||||
void func_802A18C8(void){
|
||||
func_802A02C0();
|
||||
}
|
||||
|
||||
void func_802A18E8(s32 arg0){
|
||||
///s32 sp40;
|
||||
AnimCtrl *sp3C;
|
||||
f32 sp38;
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
|
||||
//sp40 = arg0;
|
||||
sp3C = _player_getAnimCtrlPtr();
|
||||
func_802A0340();
|
||||
animctrl_reset(sp3C);
|
||||
animctrl_setIndex(sp3C, ASSET_1E0_ANIM_BEE_OW);
|
||||
animctrl_setDuration(sp3C, 1.0f);
|
||||
animctrl_setSubRange(sp3C, 0, 0.7518f);
|
||||
animctrl_setPlaybackType(sp3C, ANIMCTRL_ONCE);
|
||||
func_802875AC(sp3C, "bsbeemain.c", 0x269);
|
||||
if(arg0 == 1){
|
||||
func_8030E58C(SFX_38_BANJO_AYE_1, 1.8f);
|
||||
}else{
|
||||
func_8030E58C(SFX_56_BANJO_HUI, 1.8f);
|
||||
}
|
||||
_player_getPosition(sp2C);
|
||||
func_80294980(sp20);
|
||||
func_80257F18(sp20, sp2C, &sp38);
|
||||
yaw_setIdeal(mlNormalizeAngle(sp38 + 180.0f));
|
||||
yaw_applyIdeal();
|
||||
func_80297970(200.0f);
|
||||
func_8029797C(sp38);
|
||||
func_802979AC(sp38, func_80297A64());
|
||||
func_8029C7F4(1, 1, 2, 3);
|
||||
player_setYVelocity(510.0f);
|
||||
gravity_set(-1200.0f);
|
||||
func_8028D5DC();
|
||||
func_80292E48();
|
||||
D_8037D2D4 = 0;
|
||||
}
|
||||
|
||||
void func_802A1A50(void){
|
||||
s32 sp1C;
|
||||
|
||||
sp1C= 0;
|
||||
if(baanim_isAt(0.5f)){
|
||||
func_80292EA4();
|
||||
}
|
||||
switch(D_8037D2D4){
|
||||
case 0:
|
||||
if(func_8028B254(0x5A)){
|
||||
func_8028A37C(1.0f);
|
||||
D_8037D2D4 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if(func_8028B2E8())
|
||||
sp1C = BS_85_BEE_IDLE;
|
||||
if(0.65 < func_80289F70() && player_inWater()){
|
||||
sp1C = 0x8C;
|
||||
}
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void func_802A1B28(void){
|
||||
func_80297CA8();
|
||||
gravity_reset();
|
||||
func_8028D5F4();
|
||||
func_80292EA4();
|
||||
func_802A02C0();
|
||||
}
|
||||
|
||||
void func_802A1B68(void){
|
||||
func_802A18E8(1);
|
||||
}
|
||||
|
||||
void func_802A1B88(void){
|
||||
func_802A1A50();
|
||||
}
|
||||
|
||||
void func_802A1BA8(void){
|
||||
func_802A1B28();
|
||||
}
|
||||
|
||||
void func_802A1BC8(void){
|
||||
func_802A18E8(2);
|
||||
}
|
||||
|
||||
void func_802A1BE8(void){
|
||||
func_802A1A50();
|
||||
}
|
||||
|
||||
void func_802A1C08(void){
|
||||
func_802A1B28();
|
||||
}
|
||||
|
||||
void bsbeemain_die_init(void){
|
||||
AnimCtrl* sp3C;
|
||||
f32 sp38;
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
|
||||
sp3C = _player_getAnimCtrlPtr();
|
||||
func_8029B930();
|
||||
func_802A0340();
|
||||
animctrl_reset(sp3C);
|
||||
animctrl_setSmoothTransition(sp3C, 0);
|
||||
animctrl_setIndex(sp3C, ASSET_1E1_ANIM_BEE_DIE);
|
||||
animctrl_setSubRange(sp3C, 0, 0.3966f);
|
||||
animctrl_setDuration(sp3C, 1.7f);
|
||||
animctrl_setPlaybackType(sp3C, ANIMCTRL_ONCE);
|
||||
func_802875AC(sp3C, "bsbeemain.c", 0x2ef);
|
||||
func_8029C7F4(1,1,2,3);
|
||||
_player_getPosition(sp2C);
|
||||
func_80294980(sp20);
|
||||
func_80257F18(sp20, sp2C, &sp38);
|
||||
yaw_setIdeal(mlNormalizeAngle(sp38 + 180.0f));
|
||||
yaw_applyIdeal();
|
||||
D_8037D2D0 = 250.f;
|
||||
func_80297970(D_8037D2D0);
|
||||
func_8029797C(sp38);
|
||||
func_802979AC(sp38, func_80297A64());
|
||||
player_setYVelocity(420.0f);
|
||||
gravity_set(-1200.0f);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
func_8028D5DC();
|
||||
func_80292E48();
|
||||
func_802914CC(0xd);
|
||||
func_802BF2C0(30.0f);
|
||||
func_8029C984();
|
||||
func_8030E58C(SFX_36_BANJO_DOH, 1.8f);
|
||||
func_8029E3C0(0, 2.9f);
|
||||
D_8037D2D4 = 0;
|
||||
}
|
||||
|
||||
void func_802A1DD8(void){
|
||||
func_80297970(D_8037D2D0);
|
||||
func_80299628(0);
|
||||
switch(D_8037D2D4){
|
||||
case 0:
|
||||
if(!func_8028B2E8())
|
||||
break;
|
||||
func_8028A37C(0.7453f);
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 18000);
|
||||
FUNC_8030E624(SFX_39_BANJO_AYE_2, 1.8f, 18000);
|
||||
player_setYVelocity(400.0f);
|
||||
D_8037D2D4 = 1;
|
||||
break;
|
||||
case 1:
|
||||
if(!func_8028B2E8())
|
||||
break;
|
||||
func_8028A37C(1.0f);
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 18000);
|
||||
FUNC_8030E624(SFX_39_BANJO_AYE_2, 1.8f, 18000);
|
||||
D_8037D2D4 = 2;
|
||||
break;
|
||||
case 2:
|
||||
D_8037D2D4 = 3;
|
||||
break;
|
||||
case 3:
|
||||
if(0.0f < D_8037D2D0){
|
||||
D_8037D2D0 = max_f(0.0f, D_8037D2D0 - 10.0f);
|
||||
}
|
||||
break;
|
||||
}//L802A1EFC
|
||||
if(func_8029E1A8(0))
|
||||
func_8029B890();
|
||||
|
||||
bs_setState(0);
|
||||
|
||||
}
|
||||
|
||||
void func_802A1F2C(void){
|
||||
func_8024BD08(0);
|
||||
gravity_reset();
|
||||
func_80291548();
|
||||
func_80292EA4();
|
||||
func_802A02C0();
|
||||
}
|
||||
|
||||
void func_802A1F6C(void){
|
||||
func_802A0340();
|
||||
func_8028A010(ASSET_1DE_ANIM_BEE_IDLE, 3.0f);
|
||||
func_8029C7F4(1,1,3,2);
|
||||
func_80297970(0.0f);
|
||||
func_8029C674();
|
||||
func_802B3A50();
|
||||
}
|
||||
|
||||
void func_802A1FC8(void){
|
||||
s32 sp1C;
|
||||
|
||||
sp1C = 0;
|
||||
func_802B3A50();
|
||||
func_80299628(0);
|
||||
func_8029C6D0();
|
||||
if(!func_80298850()){
|
||||
sp1C = BS_85_BEE_IDLE;
|
||||
}
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void func_802A2014(void){
|
||||
pitch_setIdeal(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
func_8029C748();
|
||||
func_802A02C0();
|
||||
}
|
||||
|
||||
void func_802A2054(void){
|
||||
func_8028D5F4();
|
||||
func_8025A2FC(-1, 0xFA0);
|
||||
func_8024BD08(1);
|
||||
func_80291548();
|
||||
func_80298A64();
|
||||
}
|
||||
|
||||
void func_802A2098(void){
|
||||
miscflag_clear(0x1A);
|
||||
func_8028A010(ASSET_1DE_ANIM_BEE_IDLE, 3.0f);
|
||||
yaw_setIdeal(func_8029B41C());
|
||||
func_8029C7F4(1,1,3,2);
|
||||
func_80297970(0.0f);
|
||||
func_8024BD08(0);
|
||||
func_8025A2FC(0, 0xFA0);
|
||||
func_8025A6EC(COMUSIC_42_NOTEDOOR_OPENING_FANFARE, -1);
|
||||
func_8029151C(0xC);
|
||||
func_8028D5DC();
|
||||
func_8029E3C0(0, 3.0f);
|
||||
}
|
||||
|
||||
void func_802A2130(void){
|
||||
s32 next = 0;
|
||||
if(func_8029E1A8(0)){
|
||||
next = BS_85_BEE_IDLE;
|
||||
}
|
||||
bs_setState(next);
|
||||
}
|
||||
116
src/core2/bs/carry.c
Normal file
116
src/core2/bs/carry.c
Normal file
@@ -0,0 +1,116 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .data */
|
||||
const f32 D_80364AF0 = 30.0f;
|
||||
const f32 D_80364AF4 = 300.0f;
|
||||
const f32 D_80364AF8 = 0.84f;
|
||||
const f32 D_80364AFC = 0.4f;
|
||||
|
||||
void func_802AAE80(void){
|
||||
f32 sp1C = func_8029B30C();
|
||||
if(func_8029B300() == 0)
|
||||
func_80297970(0.0f);
|
||||
else
|
||||
func_80297970(func_80257C48(sp1C, D_80364AF0, D_80364AF4));
|
||||
}
|
||||
|
||||
void func_802AAEE0(void){
|
||||
enum bs_e state = bs_getNextState();
|
||||
|
||||
if(state != BS_3A_CARRY_IDLE && state != BS_CARRY_WALK)
|
||||
func_8029B0C0();
|
||||
|
||||
func_80289F10(1);
|
||||
}
|
||||
|
||||
void bscarry_idle_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, 0x72);
|
||||
animctrl_setDuration(aCtrl, 1.2f);
|
||||
func_802875AC(aCtrl, "bscarry.c", 0x6f);
|
||||
func_8029C7F4(1,1,1,2);
|
||||
func_80297970(0.0f);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
roll_setAngularVelocity(1000.0f, 12.0f);
|
||||
}
|
||||
|
||||
void bscarry_idle_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
|
||||
if(func_8029B300() > 0)
|
||||
sp1C = BS_CARRY_WALK;
|
||||
|
||||
if(func_802948EC() == 0)
|
||||
sp1C = BS_1_IDLE;
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bscarry_idle_end(void){
|
||||
func_802AAEE0();
|
||||
}
|
||||
|
||||
void bscarry_walk_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, 0x73);
|
||||
animctrl_setDuration(aCtrl, 0.8f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_LOOP);
|
||||
func_802875AC(aCtrl, "bscarry.c", 0xac);
|
||||
func_8029C7F4(2,1,1,2);
|
||||
func_80289EC8(D_80364AF0, D_80364AF4, D_80364AF8, D_80364AFC);
|
||||
}
|
||||
|
||||
void bscarry_walk_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
func_8029AD28(0.4f, 4);
|
||||
func_8029AD28(0.9f, 3);
|
||||
func_802AAE80();
|
||||
if(func_8029B300() == 0 && func_80297C04(1.0f))
|
||||
sp1C = BS_3A_CARRY_IDLE;
|
||||
|
||||
if(!func_802948EC())
|
||||
sp1C = BS_1_IDLE;
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bscarry_walk_end(void){
|
||||
func_802AAEE0();
|
||||
}
|
||||
|
||||
int bscarry_inSet(enum bs_e state){
|
||||
return state == BS_3A_CARRY_IDLE
|
||||
|| state == BS_CARRY_WALK;
|
||||
}
|
||||
|
||||
void bscarry_interrupt(void){
|
||||
switch(bs_getInterruptType()){
|
||||
case 7:
|
||||
func_802948F8(func_8028D688());
|
||||
break;
|
||||
case 8:
|
||||
func_8029A86C(2);
|
||||
bs_setState(0x3C);
|
||||
break;
|
||||
case 0x12:
|
||||
func_8028DE6C(carriedObject_getActorID());
|
||||
break;
|
||||
case 0x16:
|
||||
if(func_802916CC(1)){
|
||||
bs_setState(BS_CARRY_THROW);
|
||||
func_8029A86C(2);
|
||||
}
|
||||
else{
|
||||
func_8029A86C(1);
|
||||
}
|
||||
break;
|
||||
default://L802AB260
|
||||
func_802948E0();
|
||||
func_80296608();
|
||||
break;
|
||||
}
|
||||
}
|
||||
74
src/core2/bs/claw.c
Normal file
74
src/core2/bs/claw.c
Normal file
@@ -0,0 +1,74 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
|
||||
void func_802915CC(f32);
|
||||
void func_8029AD28(f32, s32);
|
||||
|
||||
/* .bss */
|
||||
u8 _bsclawHitboxActive;
|
||||
|
||||
/* .code */
|
||||
int bsclaw_hitboxActive(void){
|
||||
return _bsclawHitboxActive;
|
||||
}
|
||||
|
||||
void bsclaw_init(void){
|
||||
func_8028A180(5, 1.3f);
|
||||
func_8029C7F4(1,1,3,3);
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_80297970(160.0f);
|
||||
func_802915CC(80.0f);
|
||||
_bsclawHitboxActive = 0;
|
||||
}
|
||||
|
||||
void bsclaw_update(void){
|
||||
enum bs_e sp2C = 0;
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp24;
|
||||
|
||||
sp24 = animctrl_getAnimTimer(aCtrl);
|
||||
_bsclawHitboxActive = animctrl_isAt(aCtrl, 0.1488f)
|
||||
|| (0.04879999999999998 < sp24 && sp24 < 0.2488)
|
||||
|| animctrl_isAt(aCtrl, 0.3288f)
|
||||
|| (0.22879999999999998 < sp24 && sp24 < 0.42879999999999998)
|
||||
|| animctrl_isAt(aCtrl, 0.5788f)
|
||||
|| (0.4788 < sp24 && sp24 < 0.6788);
|
||||
if(animctrl_isAt(aCtrl, 0.5788f))
|
||||
func_80297970(0.0f);
|
||||
|
||||
func_8029AD28(0.08f, 3);
|
||||
func_8029AD28(0.34f, 4);
|
||||
func_8029AD28(0.53f, 3);
|
||||
if(animctrl_isAt(aCtrl, 0.1188f))
|
||||
func_8030EB00(SFX_2_CLAW_SWIPE, 0.98f, 1.0f);
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.2888f))
|
||||
func_8030EB00(SFX_2_CLAW_SWIPE, 1.04f, 1.06f);
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.4888f))
|
||||
func_8030EB00(SFX_2_CLAW_SWIPE, 1.1f, 1.12f);
|
||||
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
sp2C = BS_1_IDLE;
|
||||
|
||||
if(!func_8028B2E8())
|
||||
sp2C = BS_2F_FALL;
|
||||
|
||||
if(player_inWater())
|
||||
sp2C = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
sp2C = func_8029C780();
|
||||
|
||||
bs_setState(sp2C);
|
||||
}
|
||||
|
||||
void bsclaw_end(void){
|
||||
ability_use(0xB);
|
||||
_bsclawHitboxActive = 0;
|
||||
func_802915B8();
|
||||
|
||||
}
|
||||
225
src/core2/bs/climb.c
Normal file
225
src/core2/bs/climb.c
Normal file
@@ -0,0 +1,225 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D3D0;
|
||||
f32 D_8037D3D4;
|
||||
u8 D_8037D3D8;
|
||||
|
||||
/* .code */
|
||||
void func_802AB5C0(void){
|
||||
f32 sp2C[3];
|
||||
f32 sp28;
|
||||
f32 f2;
|
||||
|
||||
sp28 = func_8029B2DC();
|
||||
if(mlAbsF(sp28) < 0.03){
|
||||
f2 = 0.0f;
|
||||
}
|
||||
else{
|
||||
f2 = func_80257D30(sp28, 0.03f, 1.0f, 100.0f, 300.0f);
|
||||
}
|
||||
sp2C[0] = 0.0f;
|
||||
sp2C[1] = f2;
|
||||
sp2C[2] = 0.0f;
|
||||
func_80297930(sp2C);
|
||||
}
|
||||
|
||||
void func_802AB654(void){
|
||||
func_8029957C(6);
|
||||
func_802991A8(3);
|
||||
func_80299234(500.0f, 15.0f);
|
||||
func_8029B324(0, 0.03f);
|
||||
func_8029B324(1, 1.0f);
|
||||
func_802978DC(0xA);
|
||||
func_80297B64(10.0f);
|
||||
func_80294378(5);
|
||||
func_80293D48(80.0f, 10.0f);
|
||||
func_802914CC(0x10);
|
||||
}
|
||||
|
||||
void func_802AB6F0(void){
|
||||
if(!bsclimb_inSet(bs_getNextState())){
|
||||
func_80291548();
|
||||
func_8029B0C0();
|
||||
func_80289F10(1);
|
||||
func_802978DC(2);
|
||||
func_80294378(1);
|
||||
func_80293D74();
|
||||
}
|
||||
}
|
||||
|
||||
void func_802AB750(f32 arg0, f32 arg1){
|
||||
D_8037D3D4 = randf()*arg1 + arg0;
|
||||
}
|
||||
|
||||
int func_802AB788(void){
|
||||
return (0.0f < mlAbsF(func_80297A70())) || (yaw_get() != yaw_getIdeal());
|
||||
}
|
||||
|
||||
int bsclimb_inSet(s32 move_indx){
|
||||
return (move_indx == BS_4F_CLIMB_IDLE)
|
||||
|| (move_indx == BS_50_CLIMB_MOVE)
|
||||
|| (move_indx == 0x9e);
|
||||
}
|
||||
|
||||
void bsclimb_idle_init(void){
|
||||
f32 angle_towards_pole;
|
||||
f32 plyr_pos[3];
|
||||
f32 pole_pos[3];
|
||||
|
||||
player_getPosition(plyr_pos);
|
||||
climbGetBottom(pole_pos);
|
||||
if(!bsclimb_inSet(bs_getPrevState())){
|
||||
func_80257F18(plyr_pos, pole_pos, &angle_towards_pole);
|
||||
yaw_setIdeal(angle_towards_pole);
|
||||
yaw_applyIdeal();
|
||||
}
|
||||
ability_use(4);
|
||||
func_8028A010(ASSET_B2_ANIM_BANJO_CLIMB_IDLE_2, 2.64f);
|
||||
func_80289F10(1);
|
||||
func_802AB654();
|
||||
|
||||
D_8037D3D8 = 1;
|
||||
func_802AB750(1.0f, 0.5f);
|
||||
D_8037D3D0 = 0;
|
||||
}
|
||||
|
||||
void bsclimb_idle_update(void){
|
||||
s32 next_state = 0;
|
||||
AnimCtrl *anim_ctrl = _player_getAnimCtrlPtr();
|
||||
func_80293350();
|
||||
switch(D_8037D3D0){
|
||||
case 0:
|
||||
D_8037D3D4 -= time_getDelta();
|
||||
if(D_8037D3D4 <= 0.0f){
|
||||
func_8028A180(ASSET_B1_ANIM_BANJO_CLIMB_IDLE_1, 2.96f);
|
||||
D_8037D3D0 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if(animctrl_isStopped(anim_ctrl)){
|
||||
func_8028A010(ASSET_B2_ANIM_BANJO_CLIMB_IDLE_2, 2.64f);
|
||||
func_802AB750(3.0f, 4.0f);
|
||||
D_8037D3D0 = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
func_802AB5C0();
|
||||
if(func_802AB788())
|
||||
next_state = BS_50_CLIMB_MOVE;
|
||||
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
next_state = BS_5_JUMP;
|
||||
|
||||
if(D_8037D3D8 == 0)
|
||||
next_state = BS_1_IDLE;
|
||||
D_8037D3D8 = 0;
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bsclimb_idle_end(void){
|
||||
func_802AB6F0();
|
||||
}
|
||||
|
||||
void bsclimb_move_init(void){
|
||||
func_8028A010(ASSET_A_ANIM_BANJO_CLIMB_MOVE, 0.9f);
|
||||
func_80289F10(3);
|
||||
func_80289EA8(0.3f, 1.5f);
|
||||
func_80289EC8(100.0f, 300.0f, 0.6f, 0.4f);
|
||||
func_802AB654();
|
||||
}
|
||||
|
||||
void bsclimb_move_update(void){
|
||||
s32 next_state = 0;
|
||||
f32 plyr_pos[3];
|
||||
s32 map;
|
||||
|
||||
func_80293350();
|
||||
func_802AB5C0();
|
||||
map = map_get();
|
||||
|
||||
if( map == MAP_B_CC_CLANKERS_CAVERN
|
||||
|| map == MAP_1B_MMM_MAD_MONSTER_MANSION
|
||||
|| map == MAP_31_RBB_RUSTY_BUCKET_BAY
|
||||
){
|
||||
if(baanim_isAt(0.25f))
|
||||
func_80299D2C(SFX_D2_QUIET_METALLIC, 1.1f, 32000);
|
||||
|
||||
if(baanim_isAt(0.75f))
|
||||
func_80299D2C(SFX_D2_QUIET_METALLIC, 1.2f, 32000);
|
||||
}
|
||||
else{//L802ABB34
|
||||
if(baanim_isAt(0.25f))
|
||||
func_80299D2C(SFX_D3_JINXIE_SNIFFLING_1, 0.77f, 22000);
|
||||
|
||||
if(baanim_isAt(0.75f))
|
||||
func_80299D2C(SFX_D3_JINXIE_SNIFFLING_1, 0.87f, 22000);
|
||||
}//L802ABB84
|
||||
|
||||
if(!func_802AB788() && func_80297AAC() < 30.0f)
|
||||
next_state = BS_4F_CLIMB_IDLE;
|
||||
|
||||
_player_getPosition(plyr_pos);
|
||||
if(func_80297A70() < 0.0f && climbGetBottomY() == plyr_pos[1])
|
||||
next_state = BS_1_IDLE;
|
||||
|
||||
if( func_8029825C() == 2
|
||||
&& 0.0f < func_80297A70()
|
||||
&& climbGetTopY() == plyr_pos[1]
|
||||
){
|
||||
next_state = BS_51_CLIMB_EXIT;
|
||||
}
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
next_state = BS_5_JUMP;
|
||||
|
||||
if(!D_8037D3D8)
|
||||
next_state = BS_1_IDLE;
|
||||
|
||||
D_8037D3D8 = FALSE;
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bsclimb_move_end(void){
|
||||
func_802AB6F0();
|
||||
}
|
||||
|
||||
//bsclimb_unknown_9E_init
|
||||
void func_802ABCCC(void){
|
||||
func_8028A010(ASSET_B2_ANIM_BANJO_CLIMB_IDLE_2, 2.64f);
|
||||
func_80289F10(1);
|
||||
func_802AB654();
|
||||
func_802978DC(7);
|
||||
}
|
||||
|
||||
//bsclimb_unknown_9E_update
|
||||
void func_802ABD0C(void){
|
||||
s32 next_state = 0;
|
||||
if(!func_80298850())
|
||||
next_state = BS_4F_CLIMB_IDLE;
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
//bsclimb_unknown_9E_end
|
||||
void func_802ABD40(void){
|
||||
func_802AB6F0();
|
||||
}
|
||||
|
||||
//bsclimb_interrupt
|
||||
void func_802ABD60(void){
|
||||
s32 next_state = 0;
|
||||
if(bs_getInterruptType() == 0xC){
|
||||
D_8037D3D8 = TRUE;
|
||||
}
|
||||
else{
|
||||
func_80296608();
|
||||
return;
|
||||
}
|
||||
func_8029A86C(1);
|
||||
bs_setState(next_state);
|
||||
}
|
||||
708
src/core2/bs/croc.c
Normal file
708
src/core2/bs/croc.c
Normal file
@@ -0,0 +1,708 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
int bscroc_inSet(enum bs_e state);
|
||||
|
||||
/* .data */
|
||||
const f32 D_80364B00 = 30.0f;
|
||||
const f32 D_80364B04 = 375.0f;
|
||||
const f32 D_80364B08 = 500.0f;
|
||||
const f32 D_80364B0C = 0.5f;
|
||||
const f32 D_80364B10 = 0.3f;
|
||||
const f32 D_80364B14 = 0.2f;
|
||||
const f32 D_80364B18 = 693.5f; //jump initial velocity
|
||||
const f32 D_80364B1C = -1200.0f; //jump gravity
|
||||
u8 D_80364B20 = 0;
|
||||
s16 D_80364B24[] = {
|
||||
SFX_54_BANJO_HOO_1,
|
||||
SFX_55_BANJO_HOO_2,
|
||||
SFX_56_BANJO_HUI
|
||||
};
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037D3E0;
|
||||
u8 _bscrocHitboxActive; //8037D3e4
|
||||
void *D_8037D3E8;
|
||||
u8 D_8037D3EC;
|
||||
f32 D_8037D3F0;
|
||||
u8 D_8037D3F4;
|
||||
u8 D_8037D3F5;
|
||||
|
||||
/* .code */
|
||||
f32 func_802ABDC0(void){
|
||||
if(func_80291670(3) != 0.0f)
|
||||
return D_80364B08;
|
||||
else
|
||||
return D_80364B04;
|
||||
}
|
||||
|
||||
void func_802ABE04(void){
|
||||
func_8030EB00(D_80364B24[D_80364B20], 1.35f, 1.45f);
|
||||
if(!(++D_80364B20 < 3))
|
||||
D_80364B20 = 0;
|
||||
}
|
||||
|
||||
void func_802ABE70(void){
|
||||
f32 sp1C = func_80291670(3);
|
||||
func_80299650(func_80291684(3), sp1C);
|
||||
if(miscflag_isTrue(MISC_FLAG_10_TOUCHING_TURBO_TRAINERS) && bs_getState() != BS_17_BTROT_EXIT){
|
||||
miscflag_clear(MISC_FLAG_10_TOUCHING_TURBO_TRAINERS);
|
||||
func_802917E4(3, func_80294A40());
|
||||
func_8025A6EC(COMUSIC_8A_GETTING_TURBO_TRAINERS, -1);
|
||||
func_8029E0DC(1);
|
||||
}
|
||||
|
||||
if(sp1C != 0.0f ){
|
||||
func_8029C3E8(0.0f, 30.0f);
|
||||
}
|
||||
|
||||
if(func_80291700(3, 0.01f)){
|
||||
func_8029E0DC(0);
|
||||
func_8030E58C(0x3eb, 1.35f);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802ABF54(void){
|
||||
f32 sp1C = func_8029B30C();
|
||||
if(func_8029B300() == 0){
|
||||
func_80297970(0.0f);
|
||||
}
|
||||
else{
|
||||
func_80297970(func_80257C48(sp1C, D_80364B00, func_802ABDC0()));
|
||||
}
|
||||
}
|
||||
|
||||
void func_802ABFBC(void){
|
||||
if(!bscroc_inSet(bs_getNextState())){
|
||||
func_8029B0C0();
|
||||
func_8029E070(0);
|
||||
func_8029E064(0);
|
||||
miscflag_clear(3);
|
||||
miscflag_clear(4);
|
||||
func_80293D74();
|
||||
}
|
||||
func_80289F10(1);
|
||||
}
|
||||
|
||||
int bscroc_inSet(enum bs_e state){
|
||||
return state == BS_5E_CROC_IDLE
|
||||
|| state == BS_CROC_WALK
|
||||
|| state == BS_CROC_JUMP
|
||||
|| state == BS_61_CROC_FALL
|
||||
|| state == BS_CROC_OW
|
||||
|| state == BS_CROC_DIE
|
||||
|| state == BS_6E_CROC_BITE
|
||||
|| state == BS_CROC_EAT_BAD
|
||||
|| state == BS_70_CROC_EAT_GOOD
|
||||
|| state == BS_CROC_LOCKED
|
||||
|| state == BS_CROC_DRONE;
|
||||
}
|
||||
|
||||
void bscroc_idle_init(void){
|
||||
func_8028A010(0xe1, 1.0f);
|
||||
func_8029C7F4(1,1,1,2);
|
||||
func_80297970(0.0f);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
roll_setAngularVelocity(1000.0f, 12.0f);
|
||||
func_80293D48(50.0f, 25.0f);
|
||||
miscflag_set(3);
|
||||
miscflag_set(4);
|
||||
func_802900B4();
|
||||
}
|
||||
|
||||
void bscroc_idle_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
func_802ABE70();
|
||||
func_80299628(0);
|
||||
if(func_8028B094())
|
||||
next_state = BS_61_CROC_FALL;
|
||||
|
||||
if(func_80294F78())
|
||||
next_state = func_802926C0();
|
||||
|
||||
if(func_8029B300() > 0)
|
||||
next_state = BS_CROC_WALK;
|
||||
|
||||
if(button_pressed(BUTTON_B))
|
||||
next_state = BS_6E_CROC_BITE;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
next_state = BS_CROC_JUMP;
|
||||
|
||||
next_state = func_8029CA94(next_state);
|
||||
bs_setState(next_state);
|
||||
|
||||
}
|
||||
|
||||
void bscroc_idle_end(void){
|
||||
func_802ABFBC();
|
||||
func_802900FC();
|
||||
}
|
||||
|
||||
void bscroc_walk_init(void){
|
||||
func_8028A100(0xe0, 0.8f, 0.4f);
|
||||
func_8029C7F4(2,1,1,2);
|
||||
func_80289EC8(D_80364B00, D_80364B04, D_80364B0C, D_80364B10);
|
||||
func_802900B4();
|
||||
}
|
||||
|
||||
void bscroc_walk_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
|
||||
func_802ABE70();
|
||||
func_80299628(0);
|
||||
func_802ABF54();
|
||||
|
||||
func_8029AD28(0.1f, 4);
|
||||
func_8029AD28(0.6f, 3);
|
||||
if(func_8029B300() == 0 && func_80297C04(1.0f))
|
||||
next_state = BS_5E_CROC_IDLE;
|
||||
|
||||
if(func_8028B094())
|
||||
next_state = BS_61_CROC_FALL;
|
||||
|
||||
if(button_pressed(BUTTON_B))
|
||||
next_state = BS_6E_CROC_BITE;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
next_state = BS_CROC_JUMP;
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bscroc_walk_end(void){
|
||||
func_802ABFBC();
|
||||
func_802900FC();
|
||||
}
|
||||
|
||||
void bscroc_jump_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, FALSE);
|
||||
animctrl_setIndex(aCtrl, 0x11C);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.35f);
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
func_8028774C(aCtrl, 0.1f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bscroc.c", 0x1ac);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
if(func_8029B2E8() != 0.0f){
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
}
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802ABF54();
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
player_setYVelocity(D_80364B18);
|
||||
gravity_set(D_80364B1C);
|
||||
func_802ABE04();
|
||||
D_8037D3EC = 0;
|
||||
}
|
||||
|
||||
void bscroc_jump_update(void){
|
||||
enum bs_e sp2C = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp1C[3];
|
||||
|
||||
func_802ABE70();
|
||||
func_802ABF54();
|
||||
_get_velocity(&sp1C);
|
||||
if(button_released(BUTTON_A) && 0.0f < sp1C[1])
|
||||
gravity_reset();
|
||||
|
||||
switch(D_8037D3EC){
|
||||
case 0:
|
||||
if(func_8028B254(0x82))
|
||||
{
|
||||
func_8028A3B8(0.6538f, 0.7f);
|
||||
D_8037D3EC = 2;
|
||||
}
|
||||
else if(animctrl_isStopped(aCtrl))
|
||||
{
|
||||
func_8028A3B8(0.5036f, 3.0f);
|
||||
D_8037D3EC = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if(func_8028B254(0x82)){
|
||||
func_8028A3B8(0.6538f, 1.0f);
|
||||
D_8037D3EC = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
func_80299628(0);
|
||||
if(func_8028B2E8()){
|
||||
func_8029AE48();
|
||||
func_8028A3B8(1.0f, 1.0f);
|
||||
D_8037D3EC = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
func_80299628(0);
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
func_80297970(0.0f);
|
||||
sp2C = BS_5E_CROC_IDLE;
|
||||
}
|
||||
break;
|
||||
}//L802AC66C
|
||||
|
||||
if(func_8028B2E8()){
|
||||
if(func_8029B300() > 0)
|
||||
sp2C = BS_CROC_WALK;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
sp2C = BS_CROC_JUMP;
|
||||
}
|
||||
|
||||
if(button_pressed(BUTTON_B))
|
||||
sp2C = BS_6E_CROC_BITE;
|
||||
|
||||
bs_setState(sp2C);
|
||||
}
|
||||
|
||||
void bscroc_jump_end(void){
|
||||
gravity_reset();
|
||||
func_802ABFBC();
|
||||
}
|
||||
|
||||
void bscroc_fall_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, 0x11C);
|
||||
func_8028774C(aCtrl, 0.5036f);
|
||||
animctrl_setDuration(aCtrl, 0.7f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_STOPPED);
|
||||
func_802875AC(aCtrl, "bscroc.c", 0x235);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
D_8037D3EC = 0;
|
||||
}
|
||||
|
||||
void bscroc_fall_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 velocity[3];
|
||||
|
||||
func_802ABE70();
|
||||
func_80299628(0);
|
||||
func_802ABF54();
|
||||
_get_velocity(&velocity);
|
||||
|
||||
switch(D_8037D3EC){
|
||||
case 0:
|
||||
if(func_8028B254(0x82)){
|
||||
func_8028A37C(0.6538f);
|
||||
D_8037D3EC = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if(func_8028B2E8()){
|
||||
func_8029AE48();
|
||||
func_80297970(0.0f);
|
||||
func_8028A3B8(1.0f, 1.0f);
|
||||
D_8037D3EC = 2;
|
||||
}
|
||||
case 2:
|
||||
break;
|
||||
}//L802AC850
|
||||
|
||||
if(func_8028B2E8()){
|
||||
if(func_8029B300() > 0 || (D_8037D3EC == 2 && animctrl_isStopped(aCtrl))){
|
||||
if(miscflag_isTrue(0x19)){
|
||||
next_state = func_80292738();
|
||||
}else{
|
||||
next_state = BS_5E_CROC_IDLE;
|
||||
}
|
||||
}
|
||||
}//L802AC8B4
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bscroc_fall_end(void){
|
||||
func_802ABFBC();
|
||||
}
|
||||
|
||||
static void __bscroc_recoil_init(s32 damage){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp38;
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, 0x11d);
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.7518f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bscroc.c", 0x2a5);
|
||||
if(damage == 1)
|
||||
func_8030E58C(SFX_38_BANJO_AYE_1, 1.8f);
|
||||
else
|
||||
func_8030E58C(SFX_56_BANJO_HUI, 1.8f);
|
||||
|
||||
_player_getPosition(&sp2C);
|
||||
func_80294980(&sp20);
|
||||
func_80257F18(&sp20, &sp2C, &sp38);
|
||||
yaw_setIdeal(mlNormalizeAngle(sp38 + 180.0f));
|
||||
yaw_applyIdeal();
|
||||
func_80297970(200.0f);
|
||||
func_8029797C(sp38);
|
||||
func_802979AC(sp38, func_80297A64());
|
||||
func_8029C7F4(1,1,2,3);
|
||||
player_setYVelocity(510.0f);
|
||||
gravity_set(-1200.0f);
|
||||
func_8028D5DC();
|
||||
func_80292E48();
|
||||
D_8037D3EC = 0;
|
||||
}
|
||||
|
||||
static void __bscroc_recoil_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
func_802ABE70();
|
||||
if(baanim_isAt(0.5f))
|
||||
func_80292EA4();
|
||||
|
||||
switch(D_8037D3EC){
|
||||
case 0:
|
||||
if(func_8028B254(0x5A)){
|
||||
func_8028A37C(1.0f);
|
||||
D_8037D3EC = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if(func_8028B2E8())
|
||||
next_state = BS_5E_CROC_IDLE;
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void __bscroc_recoil_end(void){
|
||||
func_80297CA8();
|
||||
gravity_reset();
|
||||
func_8028D5F4();
|
||||
func_80292EA4();
|
||||
func_802ABFBC();
|
||||
}
|
||||
|
||||
void bscroc_ow_init(void){
|
||||
__bscroc_recoil_init(1);
|
||||
}
|
||||
|
||||
void bscroc_ow_update(void){
|
||||
__bscroc_recoil_update();
|
||||
}
|
||||
|
||||
void bscroc_ow_end(void){
|
||||
__bscroc_recoil_end();
|
||||
}
|
||||
|
||||
void bscroc_bounce_init(void){
|
||||
__bscroc_recoil_init(2);
|
||||
}
|
||||
|
||||
void bscroc_bounce_update(void){
|
||||
__bscroc_recoil_update();
|
||||
}
|
||||
|
||||
void bscroc_bounce_end(void){
|
||||
__bscroc_recoil_end();
|
||||
}
|
||||
|
||||
void bscroc_die_init(void){
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp38;
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
|
||||
func_8029B930();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, FALSE);
|
||||
animctrl_setIndex(aCtrl, 0x11e);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.3966f);
|
||||
animctrl_setDuration(aCtrl, 1.7f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bscroc.c", 0x32b);
|
||||
func_8029C7F4(1,1,2,3);
|
||||
_player_getPosition(&sp2C);
|
||||
func_80294980(&sp20);
|
||||
func_80257F18(&sp20, &sp2C, &sp38);
|
||||
yaw_setIdeal(mlNormalizeAngle(sp38 + 180.0f));
|
||||
yaw_applyIdeal();
|
||||
D_8037D3E0 = 250.0f;
|
||||
func_80297970(D_8037D3E0);
|
||||
func_8029797C(sp38);
|
||||
func_802979AC(sp38, func_80297A64());
|
||||
player_setYVelocity(420.0f);
|
||||
gravity_set(-1200.0f);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
func_8028D5DC();
|
||||
func_80292E48();
|
||||
func_802914CC(0xd);
|
||||
func_802BF2C0(30.0f);
|
||||
func_8029C984();
|
||||
func_8030E58C(SFX_36_BANJO_DOH, 1.8f);
|
||||
func_8029E3C0(0, 2.9f);
|
||||
D_8037D3EC = 0;
|
||||
}
|
||||
|
||||
void bscroc_die_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
func_802ABE70();
|
||||
func_80297970(D_8037D3E0);
|
||||
func_80299628(0);
|
||||
switch(D_8037D3EC){
|
||||
case 0:
|
||||
if(func_8028B2E8()){
|
||||
func_8028A37C(0.7453f);
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 18000);
|
||||
FUNC_8030E624(SFX_39_BANJO_AYE_2, 1.8f, 18000);
|
||||
player_setYVelocity(400.0f);
|
||||
D_8037D3EC = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if(func_8028B2E8()){
|
||||
func_8028A37C(1.0f);
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 18000);
|
||||
FUNC_8030E624(SFX_39_BANJO_AYE_2, 1.8f, 18000);
|
||||
D_8037D3EC = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
D_8037D3EC = 3;
|
||||
break;
|
||||
case 3:
|
||||
if(0.0f < D_8037D3E0)
|
||||
D_8037D3E0 = max_f(0.0f, D_8037D3E0 - 10.0f);
|
||||
break;
|
||||
}//L802ACECC
|
||||
|
||||
if(func_8029E1A8(0))
|
||||
func_8029B890();
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bscroc_die_end(void){
|
||||
func_8024BD08(0);
|
||||
gravity_reset();
|
||||
pitch_setIdeal(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
func_80291548();
|
||||
func_80292EA4();
|
||||
}
|
||||
|
||||
int bscroc_hitboxActive(void){
|
||||
return _bscrocHitboxActive;
|
||||
}
|
||||
|
||||
static void func_802ACF58(void){
|
||||
f32 sp2C;
|
||||
f32 sp20[3];
|
||||
sp2C = func_8028B2E8() ? 500.0f : 400.0f;
|
||||
func_802589E4(&sp20, yaw_get(), sp2C);
|
||||
sp20[1] = 200.0f;
|
||||
func_80297A0C(&sp20);
|
||||
}
|
||||
|
||||
void bscroc_bite_init(void){
|
||||
func_8028A100(0x122, 0.25f, 0.2f);
|
||||
func_8029C7F4(1,1,1,3);
|
||||
func_802ACF58();
|
||||
D_8037D3F4 = 0;
|
||||
_bscrocHitboxActive = TRUE;
|
||||
}
|
||||
|
||||
void bscroc_bite_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
func_802ABE70();
|
||||
func_80299628(0);
|
||||
if(animctrl_isAt(aCtrl, 0.99f)){
|
||||
switch(++D_8037D3F4){
|
||||
case 1:
|
||||
func_802ACF58();
|
||||
animctrl_setDuration(aCtrl, 0.28f);
|
||||
break;
|
||||
case 2:
|
||||
func_802ACF58();
|
||||
animctrl_setDuration(aCtrl, 0.32f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(animctrl_isAt(aCtrl, 0.6f)){
|
||||
func_8030EB00(SFX_6D_CROC_BITE, 1.0f, 1.1f);
|
||||
}
|
||||
|
||||
if(D_8037D3F4 == 3){
|
||||
if(func_8028B094())
|
||||
next_state = BS_61_CROC_FALL;
|
||||
else
|
||||
next_state = BS_CROC_WALK;
|
||||
}
|
||||
|
||||
if(func_8028B2E8() && button_pressed(BUTTON_A))
|
||||
next_state = BS_CROC_JUMP;
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bscroc_bite_end(void){
|
||||
_bscrocHitboxActive = FALSE;
|
||||
func_802ABFBC();
|
||||
}
|
||||
|
||||
void bscroc_eat_bad_init(void){
|
||||
func_8028A180(0x123, 2.41f);
|
||||
func_8029C7F4(1,1,2,3);
|
||||
func_80297970(0.0f);
|
||||
}
|
||||
|
||||
void bscroc_eat_bad_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
func_802ABE70();
|
||||
func_80299628(0);
|
||||
if(animctrl_isAt(aCtrl, 0.3518f)){
|
||||
func_8030E58C(SFX_A0_COUGHING, 0.9f);
|
||||
}
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.5282f)){
|
||||
func_8030E58C(SFX_A0_COUGHING, 0.85f);
|
||||
}
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.6671f)){
|
||||
func_8030E484(SFX_C6_SHAKING_MOUTH);
|
||||
}
|
||||
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
next_state = BS_5E_CROC_IDLE;
|
||||
}
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bscroc_eat_bad_end(void){
|
||||
func_802ABFBC();
|
||||
}
|
||||
|
||||
|
||||
void func_802AD2A8(Gfx **gdl, Mtx **mPtr, void *arg2){
|
||||
f32 sp34[3];
|
||||
f32 sp28[3];
|
||||
|
||||
player_getRotation(&sp34);
|
||||
func_8028E9C4(2, &sp28);
|
||||
set_model_render_mode(1);
|
||||
func_803391A4(gdl, mPtr, &sp28, &sp34, D_8037D3F0, NULL, D_8037D3E8);
|
||||
|
||||
}
|
||||
|
||||
void func_802AD318(void){
|
||||
D_8037D3F5 = 1;
|
||||
}
|
||||
|
||||
void bscroc_eat_good_init(void){
|
||||
func_8028A010(0x122, 0.25f);
|
||||
func_8029C7F4(1,1,1,2);
|
||||
func_80292188(func_802AD2A8);
|
||||
D_8037D3E8 = assetcache_get(func_80294974());
|
||||
D_8037D3F0 = 1.0f;
|
||||
D_8037D3F5 = 0;
|
||||
D_8037D3F4 = 0;
|
||||
}
|
||||
|
||||
int func_802AD3A0(void){
|
||||
return D_8037D3F5;
|
||||
}
|
||||
|
||||
void bscroc_eat_good_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
func_802ABE70();
|
||||
D_8037D3F0 = max_f(0.1f, D_8037D3F0 - 0.05);
|
||||
func_80299628(0);
|
||||
func_802ABF54();
|
||||
if(animctrl_isAt(aCtrl, 0.99f)){
|
||||
switch(++D_8037D3F4){
|
||||
case 1:
|
||||
animctrl_setDuration(aCtrl, 0.28f);
|
||||
break;
|
||||
case 2:
|
||||
animctrl_setDuration(aCtrl, 0.32f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
break;
|
||||
case 3:
|
||||
if(D_8037D3F5)
|
||||
next_state = BS_CROC_EAT_BAD;
|
||||
else
|
||||
next_state = BS_5E_CROC_IDLE;
|
||||
break;
|
||||
}
|
||||
}//L802AD4B0
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.62f))
|
||||
func_8030EB00(SFX_4C_LIP_SMACK, 1.2f, 1.3f);
|
||||
|
||||
if(D_8037D3F4 == 2 && animctrl_isAt(aCtrl, 0.9))
|
||||
func_8030EB00(SFX_AE_YUMYUM_TALKING, 1.45f, 1.55f);
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bscroc_eat_good_end(void){
|
||||
D_8037D3F5 = 0;
|
||||
assetcache_release(D_8037D3E8);
|
||||
func_80292188(0);
|
||||
func_802ABFBC();
|
||||
}
|
||||
|
||||
void func_802AD56C(void){
|
||||
func_8028A010(0xe1, 1.0f);
|
||||
func_8029C7F4(1,1,3,2);
|
||||
func_80297970(0.0f);
|
||||
func_8029C674();
|
||||
func_802B3A50();
|
||||
}
|
||||
|
||||
void func_802AD5C0(void){
|
||||
enum bs_e next_state = 0;
|
||||
func_802ABE70();
|
||||
func_802B3A50();
|
||||
func_80299628(0);
|
||||
func_8029C6D0();
|
||||
if(!func_80298850()){
|
||||
next_state = BS_5E_CROC_IDLE;
|
||||
}
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802AD614(void){
|
||||
pitch_setIdeal(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
func_8029C748();
|
||||
func_802ABFBC();
|
||||
}
|
||||
|
||||
void bscroc_drone_init(void){
|
||||
bsdrone_init();
|
||||
}
|
||||
|
||||
void bscroc_drone_update(void){
|
||||
func_802ABE70();
|
||||
bsdrone_update();
|
||||
}
|
||||
|
||||
void bscroc_drone_end(void){
|
||||
bsdrone_end();
|
||||
func_802ABFBC();
|
||||
}
|
||||
208
src/core2/bs/crouch.c
Normal file
208
src/core2/bs/crouch.c
Normal file
@@ -0,0 +1,208 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037D400;
|
||||
u8 D_8037D404;
|
||||
|
||||
/* .code */
|
||||
enum bs_e func_802ADCD4(enum bs_e arg0);
|
||||
|
||||
void func_802AD6D0(void){
|
||||
func_8028A010(ANIM_BANJO_CROUCH, 0.5f);
|
||||
D_8037D404 = 4;
|
||||
}
|
||||
|
||||
void func_802AD6FC(void){
|
||||
func_8028A180(ANIM_BANJO_CROUCH_NOINPUT, 2.0f);
|
||||
D_8037D404 = 2;
|
||||
}
|
||||
|
||||
void func_802AD728(void){
|
||||
func_8028A1F4(ANIM_BANJO_CROUCH, 0.5f, 0.9999f);
|
||||
func_8029E3C0(2, 2.0f);
|
||||
D_8037D404 = 1;
|
||||
}
|
||||
|
||||
void func_802AD768(AnimCtrl *aCtrl, f32 arg1){
|
||||
animctrl_setDuration(aCtrl, ml_map_f(arg1, 0.0f, 180.0f, 0.5, 0.2f));
|
||||
}
|
||||
|
||||
void func_802AD7B0(AnimCtrl *aCtrl){
|
||||
func_8029AD28(0.41f, 4);
|
||||
func_8029AD28(0.91f, 3);
|
||||
}
|
||||
|
||||
void bscrouch_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp28[3];
|
||||
f32 sp24;
|
||||
f32 sp20;
|
||||
|
||||
switch(bs_getPrevState()){
|
||||
case BS_9_EGG_HEAD:
|
||||
case BS_A_EGG_ASS:
|
||||
case BS_1A_WONDERWING_ENTER:
|
||||
sp24 = 0.5357f;
|
||||
break;
|
||||
default:
|
||||
sp24 = 0.0f;
|
||||
break;
|
||||
}
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_CROUCH_ENTER);
|
||||
animctrl_setDuration(aCtrl, 0.5f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_8028774C(aCtrl, sp24);
|
||||
func_802875AC(aCtrl, "bscrouch.c", 0xa0);
|
||||
func_80289F10(1);
|
||||
func_802991A8(3);
|
||||
func_80299234(350.0f, 14.0f);
|
||||
func_8029957C(7);
|
||||
func_8029932C(8.0f);
|
||||
func_802978DC(3);
|
||||
func_8029E3C0(0, 0.7f);
|
||||
func_8029E3C0(1, 0.2f);
|
||||
_get_velocity(&sp28);
|
||||
D_8037D400 = gu_sqrtf(sp28[0]*sp28[0] + sp28[2]*sp28[2]);
|
||||
if(140.0f < D_8037D400)
|
||||
func_80299AAC();
|
||||
|
||||
if(func_8025801C(sp28, &sp20))
|
||||
func_8029797C(sp20);
|
||||
|
||||
D_8037D404 = 0;
|
||||
}
|
||||
|
||||
void bscrouch_update(void){
|
||||
enum bs_e sp34 = 0;
|
||||
f32 sp30;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr(); //sp2C
|
||||
f32 temp_f2;
|
||||
f32 pad;
|
||||
f32 sp20;
|
||||
|
||||
func_8029E1A8(0);
|
||||
func_8029E1A8(1);
|
||||
|
||||
sp30 = ml_map_f(func_8029E270(0), 0.0f, 0.3f, 0.0f, D_8037D400);
|
||||
func_80297970(sp30);
|
||||
if(220.0f < sp30)
|
||||
func_802929F8();
|
||||
if(160.0f < sp30)
|
||||
func_80299AAC();
|
||||
sp20 = yaw_getIdeal();
|
||||
temp_f2 = mlAbsF(mlDiffDegF(sp20, yaw_get()));
|
||||
|
||||
switch(D_8037D404){
|
||||
case 0://802ADA64
|
||||
if(sp30 != 0.0f)
|
||||
break;
|
||||
func_8029E3C0(2, 2.0f);
|
||||
D_8037D404 = 1;
|
||||
break;
|
||||
|
||||
case 1: //802ADA98
|
||||
if(temp_f2 != 0.0f){
|
||||
func_802AD6D0();
|
||||
}
|
||||
else{
|
||||
func_8029E1A8(2);
|
||||
if(func_8029E384(2))
|
||||
func_802AD6FC();
|
||||
}
|
||||
break;
|
||||
|
||||
case 2: //802ADAE8
|
||||
if(temp_f2 != 0.0f){
|
||||
func_802AD6D0();
|
||||
}else{
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
func_802AD728();
|
||||
}
|
||||
break;
|
||||
|
||||
case 4: //802ADB30
|
||||
func_802AD768(aCtrl,temp_f2);
|
||||
func_802AD7B0(aCtrl);
|
||||
|
||||
if(temp_f2 != 0.0f)
|
||||
break;
|
||||
|
||||
if((f64)animctrl_getAnimTimer(aCtrl) <= 0.5){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.5f);
|
||||
}else{
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
|
||||
}
|
||||
animctrl_setPlaybackType(aCtrl,1);
|
||||
D_8037D404 = 3;
|
||||
break;
|
||||
|
||||
case 3://802ADBCC
|
||||
func_802AD768(aCtrl, temp_f2);
|
||||
func_802AD7B0(aCtrl);
|
||||
if(temp_f2 != 0.0f){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_LOOP);
|
||||
D_8037D404 = 4;
|
||||
}else{
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
yaw_setIdeal(yaw_get());
|
||||
func_802AD728();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}//L802ADC50
|
||||
|
||||
if(player_isSliding())
|
||||
sp34 = BS_SLIDE;
|
||||
|
||||
if(func_8028B094())
|
||||
sp34 = BS_2F_FALL;
|
||||
|
||||
sp34 = func_802ADCD4(sp34);
|
||||
if(sp34 == BS_1_IDLE && func_8029E348(1))
|
||||
sp34 = 0;
|
||||
|
||||
if(player_inWater())
|
||||
sp34 = BS_2D_SWIM_IDLE;
|
||||
|
||||
bs_setState(sp34);
|
||||
}//*/
|
||||
|
||||
void bscrouch_end(void){}
|
||||
|
||||
enum bs_e func_802ADCD4(enum bs_e arg0){
|
||||
if(button_released(BUTTON_Z)){
|
||||
arg0 = BS_1_IDLE;
|
||||
|
||||
if(button_pressed(BUTTON_B) && can_claw())
|
||||
arg0 = BS_CLAW;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
arg0 = func_8029C780();
|
||||
|
||||
}else{
|
||||
if(should_wonderwing())
|
||||
func_80346C10(&arg0, -1, BS_1A_WONDERWING_ENTER, ITEM_10_GOLD_FEATHER, 1);
|
||||
|
||||
if(should_trot())
|
||||
arg0 = BS_14_BTROT_ENTER;
|
||||
|
||||
if(should_poop_egg())
|
||||
func_80346C10(&arg0, -1, BS_A_EGG_ASS, ITEM_D_EGGS, 0);
|
||||
|
||||
if(should_shoot_egg())
|
||||
func_80346C10(&arg0, -1, BS_9_EGG_HEAD, ITEM_D_EGGS, 0);
|
||||
|
||||
if(should_flip())
|
||||
arg0 = BS_12_BFLIP;
|
||||
|
||||
if(should_beak_barge())
|
||||
arg0 = BS_BBARGE;
|
||||
|
||||
|
||||
}
|
||||
return arg0;
|
||||
}
|
||||
132
src/core2/bs/die.c
Normal file
132
src/core2/bs/die.c
Normal file
@@ -0,0 +1,132 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037D410;
|
||||
s32 D_8037D414;
|
||||
|
||||
/* .code */
|
||||
int _bsdie_802ADE00(void){
|
||||
return func_8028B2E8();
|
||||
}
|
||||
|
||||
void _bsdie_802ADE20(void){
|
||||
f32 i;
|
||||
|
||||
for(i = 0.0f; i < 360.0f; i += 45.0f){
|
||||
func_80292900(i, 230.0f);
|
||||
}
|
||||
}
|
||||
|
||||
void bsdie_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp38;
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, 0);
|
||||
animctrl_setIndex(aCtrl, ASSET_9_ANIM_BANJO_DIE);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.3356f);
|
||||
animctrl_setDuration(aCtrl, 2.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsdie.c", 0x7e);
|
||||
func_8029B930();
|
||||
func_8030E58C(SFX_36_BANJO_DOH, 1.0f);
|
||||
_player_getPosition(sp2C);
|
||||
func_80294980(sp20);
|
||||
func_80257F18(sp20, sp2C, &sp38);
|
||||
D_8037D410 = 250.0f;
|
||||
yaw_setIdeal(mlNormalizeAngle(sp38 + 180.0f));
|
||||
yaw_applyIdeal();
|
||||
func_80297970(D_8037D410);
|
||||
func_8029797C(sp38);
|
||||
func_802979AC(sp38, func_80297A64());
|
||||
func_80289F10(1);
|
||||
func_802991A8(1);
|
||||
func_8029957C(2);
|
||||
func_802978DC(3);
|
||||
player_setYVelocity(510.0f);
|
||||
gravity_set(-1400.0f);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
func_8029E070(1);
|
||||
func_8029151C(0xd);
|
||||
func_802BF2C0(30.0f);
|
||||
func_8029C984();
|
||||
func_8029E3C0(0,2.9f);
|
||||
D_8037D414 = 0;
|
||||
func_8028D5DC();
|
||||
func_80292E48();
|
||||
}
|
||||
|
||||
void bsdie_update(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
enum bs_e sp28 = 0;
|
||||
func_80297970(D_8037D410);
|
||||
func_80299628(0);
|
||||
switch(D_8037D414){
|
||||
case 0://L802AE0B8
|
||||
if(_bsdie_802ADE00()){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
player_setYVelocity(400.0f);
|
||||
func_80299DB8();
|
||||
FUNC_8030E624(SFX_39_BANJO_AYE_2, 1.0f, 18000);
|
||||
func_80250D94(1.0f, 1.0f, 0.4f);
|
||||
_bsdie_802ADE20();
|
||||
D_8037D414 = 1;
|
||||
}
|
||||
break;
|
||||
case 1://L802AE134
|
||||
if(_bsdie_802ADE00()){
|
||||
func_80299E00();
|
||||
FUNC_8030E624(SFX_38_BANJO_AYE_1, 1.0f, 18000);
|
||||
func_80250D94(1.0f, 0.5f, 0.4f);
|
||||
D_8037D414 = 2;
|
||||
}
|
||||
break;
|
||||
case 2://L802AE184
|
||||
D_8037D410 = max_f(D_8037D410 - 12.0f, 0.0f);
|
||||
if(140.0f < D_8037D410)
|
||||
func_802929F8();
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.6538f))
|
||||
animctrl_setDuration(aCtrl, 4.0f);
|
||||
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
D_8037D410 = 0.0f;
|
||||
D_8037D414 = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
break;
|
||||
}//L802AE218
|
||||
if(func_8029E1A8(0))
|
||||
func_8029B890();
|
||||
|
||||
if( func_8029E270(0) != 0.0f
|
||||
&& func_80294574()
|
||||
&& ( D_8037D414
|
||||
|| ( animctrl_isStopped(aCtrl)
|
||||
&& ( player_getYPosition() < (func_80294500() - 150.0f))
|
||||
)
|
||||
)
|
||||
&& player_inWater()
|
||||
&& 100.0f < (func_80294500() - func_80294438())
|
||||
){
|
||||
sp28 = BS_54_SWIM_DIE;
|
||||
}
|
||||
|
||||
bs_setState(sp28);
|
||||
}
|
||||
|
||||
void bsdie_end(void){
|
||||
func_8024BD08(0);
|
||||
gravity_reset();
|
||||
func_8029E070(0);
|
||||
pitch_setIdeal(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
func_80291548();
|
||||
func_80292EA4();
|
||||
}
|
||||
49
src/core2/bs/drone.c
Normal file
49
src/core2/bs/drone.c
Normal file
@@ -0,0 +1,49 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
#include "bsint.h"
|
||||
|
||||
typedef struct{
|
||||
u8 unk0;
|
||||
bsState behavior;
|
||||
} struct_drone;
|
||||
|
||||
struct_drone D_80364B30[] = {
|
||||
{01, {func_802AEDE8, func_802AEE48, func_802AEE9C, NULL}},
|
||||
{02, {func_802AEEF4, func_802AEFB0, func_802AF164, func_80296608}},
|
||||
{04, {bsdronexform_init, bsdronexform_update, bsdronexform_end, bsdronexform_interrupt}},
|
||||
{05, {func_802AE9C8, func_802AEA2C, func_802AEB24, NULL}},
|
||||
{06, {func_802AF604, func_802AF668, func_802AF768, NULL}},
|
||||
{0}
|
||||
};
|
||||
|
||||
|
||||
|
||||
static int __bsdrone_getIndex(void){
|
||||
int i;
|
||||
int val = func_802925EC();
|
||||
for(i = 0; D_80364B30[i].unk0 != 0; i++){
|
||||
if(val == D_80364B30[i].unk0)
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void bsdrone_init(void){
|
||||
D_80364B30[__bsdrone_getIndex()].behavior.init_func();
|
||||
}
|
||||
|
||||
void bsdrone_update(void){
|
||||
D_80364B30[__bsdrone_getIndex()].behavior.update_func();
|
||||
}
|
||||
|
||||
void bsdrone_end(void){
|
||||
D_80364B30[__bsdrone_getIndex()].behavior.end_func();
|
||||
}
|
||||
|
||||
void bsdrone_interrupt(void){
|
||||
void (* tmp)(void) = D_80364B30[__bsdrone_getIndex()].behavior.interrupt_func;
|
||||
if(tmp){
|
||||
tmp();
|
||||
}
|
||||
}
|
||||
115
src/core2/bs/dronegoto.c
Normal file
115
src/core2/bs/dronegoto.c
Normal file
@@ -0,0 +1,115 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void func_80297BB8(f32);
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D440;
|
||||
u8 D_8037D441;
|
||||
|
||||
void func_802AEC08(void);
|
||||
void func_802AEC70(void);
|
||||
void func_802AEC78(void);
|
||||
void func_802AEDC8(void);
|
||||
|
||||
void func_802AEB60(s32 arg0){
|
||||
switch(D_8037D440){
|
||||
case 1:
|
||||
func_802AEC70();
|
||||
break;
|
||||
case 2:
|
||||
func_802AEDC8();
|
||||
break;
|
||||
}
|
||||
switch(D_8037D440 = arg0){
|
||||
case 1:
|
||||
func_802AEC08();
|
||||
break;
|
||||
case 2:
|
||||
func_802AEC78();
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void func_802AEC08(void){
|
||||
func_802978A4();
|
||||
}
|
||||
|
||||
void func_802AEC28(void){
|
||||
func_802978A4();
|
||||
if(func_8028B2E8() || player_inWater())
|
||||
func_802AEB60(2);
|
||||
}
|
||||
|
||||
void func_802AEC70(void){}
|
||||
|
||||
void func_802AEC78(void){
|
||||
f32 sp2C;
|
||||
f32 sp20[3];
|
||||
s32 sp1C;
|
||||
func_8029BC60(&sp1C, &sp2C);
|
||||
func_8028A010(sp1C, sp2C);
|
||||
func_802925F8(&sp20, &sp2C);
|
||||
func_80297BC4(&sp20);
|
||||
func_80297BB8(sp2C);
|
||||
func_8029C7F4(1,1,3,0xC);
|
||||
func_8029436C(1);
|
||||
D_8037D441 = 0;
|
||||
}
|
||||
|
||||
void func_802AECE4(void){
|
||||
f32 sp2C;
|
||||
f32 sp20[3];
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
_get_velocity(&sp20);
|
||||
if(func_8025801C(sp20, &sp2C)){
|
||||
yaw_setIdeal(sp2C);
|
||||
}
|
||||
|
||||
if( 250.0f <= gu_sqrtf(sp20[0]*sp20[0] + sp20[2]*sp20[2])
|
||||
&& animctrl_getIndex(aCtrl) == ANIM_BANJO_WALK
|
||||
){
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_RUN);
|
||||
func_802875AC(aCtrl, "bsdronegoto.c", 0x9d);
|
||||
}
|
||||
|
||||
if(func_80297C48() && D_8037D441 == 0){
|
||||
D_8037D441++;
|
||||
func_80292768();
|
||||
}
|
||||
}
|
||||
|
||||
void func_802AEDC8(void){
|
||||
func_8029436C(0);
|
||||
}
|
||||
|
||||
void func_802AEDE8(void){
|
||||
D_8037D440 = 0;
|
||||
func_8031F9F4(1);
|
||||
if( !func_8028B2E8() && func_8029BDE8()){
|
||||
func_802AEB60(1);
|
||||
}else{
|
||||
func_802AEB60(2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void func_802AEE48(void){
|
||||
switch(D_8037D440){
|
||||
case 1:
|
||||
func_802AEC28();
|
||||
break;
|
||||
case 2:
|
||||
func_802AECE4();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802AEE9C(void){
|
||||
func_802AEB60(0);
|
||||
func_8031F9F4(0);
|
||||
}
|
||||
426
src/core2/bs/dronexform.c
Normal file
426
src/core2/bs/dronexform.c
Normal file
@@ -0,0 +1,426 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern void player_setYPosition(f32);
|
||||
extern void yaw_applyIdeal(void);
|
||||
extern void func_802978DC(int);
|
||||
extern f32 func_80257A44(f32, f32);
|
||||
extern f32 cosf(f32);
|
||||
extern f32 func_802588B0(f32, f32);
|
||||
extern f32 func_80257AD4(f32, f32);
|
||||
|
||||
|
||||
extern struct41s D_80364BB0;
|
||||
extern struct41s D_80364BE0;
|
||||
extern struct41s D_80364C10;
|
||||
extern struct41s D_80364C40;
|
||||
extern struct41s D_80364C70;
|
||||
extern struct41s D_80364CA0;
|
||||
|
||||
/* .bss */
|
||||
struct {
|
||||
ParticleEmitter *unk0;
|
||||
ParticleEmitter *unk4;
|
||||
f32 unk8;
|
||||
f32 unkC;
|
||||
f32 unk10;
|
||||
f32 unk14;
|
||||
f32 unk18;
|
||||
u8 unk1C;
|
||||
u8 pad1D[0x3];
|
||||
f32 unk20;
|
||||
f32 unk24;
|
||||
f32 unk28;
|
||||
f32 unk2C;
|
||||
u8 unk30;
|
||||
u8 unk31; //enum bs_e
|
||||
u8 unk32;
|
||||
} D_8037D470;
|
||||
|
||||
/* .code */
|
||||
void func_802AF7A0(ParticleEmitter *arg0, enum asset_e arg1){
|
||||
func_802F0D54(arg0);
|
||||
particleEmitter_setSprite(arg0, arg1);
|
||||
particleEmitter_setParticleAccelerationRange(arg0, 0.0f, -50.0f, 0.0f, 0.0f, -50.0f, 0.0f);
|
||||
func_802EFA5C(arg0, 0.4f, 0.8f);
|
||||
func_802EFB84(arg0, 0.03f, 0.03f);
|
||||
func_802EFE24(arg0, 0.0f, 0.0f, 300.0f, 0.0f, 0.0f, 300.0f);
|
||||
func_802EFEC0(arg0, 0.65f, 0.65f);
|
||||
func_802EFF50(arg0, 1.0f);
|
||||
}
|
||||
|
||||
void func_802AF88C(Actor * arg0, f32 arg1, f32 arg2){
|
||||
particleEmitter_setParticleVelocityRange(arg0, arg1*30.0f, 10.0f, arg2*30.0f, arg1*30.0f, 10.0f, arg2*30.0f);
|
||||
func_802EFB70(arg0, D_8037D470.unk14, D_8037D470.unk14);
|
||||
}
|
||||
|
||||
void func_802AF900(void){
|
||||
f32 sp4C;
|
||||
f32 sp48;
|
||||
f32 sp44;
|
||||
f32 sp40;
|
||||
f32 sp3C;
|
||||
f32 sp30[3];
|
||||
|
||||
player_getPosition(&sp30);
|
||||
sp3C = D_8037D470.unk8;
|
||||
sp48 = func_80257A44(sp3C, 0.38f);
|
||||
sp4C = sp48 * 6.283185308;
|
||||
sp40 = sinf(sp4C);
|
||||
sp44 = cosf(sp4C);
|
||||
sp30[0] += sp40 * D_8037D470.unk18;
|
||||
sp30[1] += func_80257C48(func_80257A44(sp3C, 1.14f), 0.0f, 130.0f);
|
||||
sp30[2] += sp44 * D_8037D470.unk18;
|
||||
func_802AF88C(D_8037D470.unk4, sp40, sp44);
|
||||
particleEmitter_setPosition(D_8037D470.unk4, &sp30);
|
||||
particleEmitter_emitN(D_8037D470.unk4, 1);
|
||||
|
||||
player_getPosition(&sp30);
|
||||
sp4C = (1.0 - func_802588B0(sp48 + 0.5, 1.0f))* 6.283185308;
|
||||
sp30[0] -= sinf(sp4C) * D_8037D470.unk18;
|
||||
sp30[1] += func_80257C48(func_80257A44(sp3C, 1.14f), 130.0f, 0.0f);
|
||||
sp30[2] -= cosf(sp4C) * D_8037D470.unk18;
|
||||
func_802AF88C(D_8037D470.unk0, sp40, sp44);
|
||||
particleEmitter_setPosition(D_8037D470.unk0, &sp30);
|
||||
particleEmitter_emitN(D_8037D470.unk0, 1);
|
||||
}
|
||||
|
||||
void func_802AFADC(void){
|
||||
func_802F0C78(D_8037D470.unk4);
|
||||
func_802F0C78(D_8037D470.unk0);
|
||||
}
|
||||
|
||||
void func_802AFB0C(void){
|
||||
D_8037D470.unk0 = partEmitList_pushNew(0x32);
|
||||
func_802AF7A0(D_8037D470.unk0, ASSET_476_SPRITE_BLUE_GLOW); //blue glow
|
||||
|
||||
D_8037D470.unk4 = partEmitList_pushNew(0x32);
|
||||
func_802AF7A0(D_8037D470.unk4, ASSET_477_SPRITE_YELLOW_GLOW); //orange glow
|
||||
|
||||
D_8037D470.unkC = 1.0f;
|
||||
D_8037D470.unk10 = 0.0f;
|
||||
D_8037D470.unk8 = 0.0f;
|
||||
D_8037D470.unk18 = 55.0f;
|
||||
D_8037D470.unk14 = 0.35f;
|
||||
D_8037D470.unk1C = 0;
|
||||
}
|
||||
|
||||
void func_802AFB94(f32 arg0){
|
||||
D_8037D470.unkC = arg0;
|
||||
}
|
||||
|
||||
void func_802AFBA0(f32 arg0){
|
||||
D_8037D470.unk18 = arg0;
|
||||
}
|
||||
|
||||
void func_802AFBAC(f32 arg0){
|
||||
D_8037D470.unk14 = arg0;
|
||||
}
|
||||
|
||||
void func_802AFBB8(f32 (* arg0)[3]){
|
||||
ParticleEmitter* s0 = partEmitList_pushNew(1);
|
||||
particleEmitter_setSprite(s0, ASSET_6C4_SPRITE_SMOKE_YELLOW); //yellow blast
|
||||
func_802EFA5C(s0, 0.7f, 0.8f);
|
||||
particleEmitter_setParticleFramerateRange(s0, 12.0f, 12.0f);
|
||||
particleEmitter_setPosition(s0, arg0);
|
||||
func_802EFB70(s0, 3.2f, 3.2f);
|
||||
func_802EFB84(s0, 3.2f, 3.2f);
|
||||
func_802EFEC0(s0, 0.8f, 0.8f);
|
||||
particleEmitter_emitN(s0, 1);
|
||||
|
||||
s0 = partEmitList_pushNew(1);
|
||||
particleEmitter_setSprite(s0, ASSET_6C2_SPRITE_SMOKE_WHITE); //smoke
|
||||
func_802EFA5C(s0, 0.1f, 0.8f);
|
||||
particleEmitter_setParticleFramerateRange(s0, 15.0f, 15.0f);
|
||||
particleEmitter_setPosition(s0, arg0);
|
||||
func_802EFB70(s0, 3.0f, 3.0f);
|
||||
func_802EFB84(s0, 3.0f, 3.0f);
|
||||
func_802EFEC0(s0, 0.65f, 0.65f);
|
||||
particleEmitter_emitN(s0, 1);
|
||||
|
||||
s0 = partEmitList_pushNew(0x11);
|
||||
particleEmitter_setSprite(s0, ASSET_713_SPRITE_SPARKLE_YELLOW); //sparkle
|
||||
particleEmitter_setVelocityAndAccelerationRanges(s0, &D_80364BB0);
|
||||
func_802EFA5C(s0, 0.0f, 0.6f);
|
||||
func_802EFB70(s0, 0.28f, 0.32f);
|
||||
func_802EFB84(s0, 0.03f, 0.03f);
|
||||
func_802EFE24(s0, 0.0f, 0.0f, 300.0f, 0.0f, 0.0f, 300.0f);
|
||||
func_802EFEC0(s0, 2.0f, 2.0f);
|
||||
func_802EFF50(s0, 1.0f);
|
||||
particleEmitter_setPosition(s0, arg0);
|
||||
particleEmitter_emitN(s0, 8);
|
||||
|
||||
particleEmitter_setVelocityAndAccelerationRanges(s0, &D_80364BE0);
|
||||
particleEmitter_emitN(s0, 5);
|
||||
|
||||
particleEmitter_setVelocityAndAccelerationRanges(s0, &D_80364C10);
|
||||
func_802EF9F8(s0, 0.4f);
|
||||
func_802EFA18(s0, 3);
|
||||
particleEmitter_emitN(s0, 4);
|
||||
|
||||
s0 = partEmitList_pushNew(0x11);
|
||||
particleEmitter_setSprite(s0, ASSET_716_SPRITE_SPARKLE_WHITE); //sparkle
|
||||
particleEmitter_setVelocityAndAccelerationRanges(s0, &D_80364C40);
|
||||
func_802EFA5C(s0, 0.0f, 0.6f);
|
||||
func_802EFB70(s0, 0.28f, 0.32f);
|
||||
func_802EFB84(s0, 0.03f, 0.03f);
|
||||
func_802EFE24(s0, 0.0f, 0.0f, 300.0f, 0.0f, 0.0f, 300.0f);
|
||||
func_802EFEC0(s0, 2.0f, 2.0f);
|
||||
func_802EFF50(s0, 1.0f);
|
||||
particleEmitter_setPosition(s0, arg0);
|
||||
particleEmitter_emitN(s0, 8);
|
||||
|
||||
particleEmitter_setVelocityAndAccelerationRanges(s0, &D_80364C70);
|
||||
particleEmitter_emitN(s0, 5);
|
||||
|
||||
particleEmitter_setVelocityAndAccelerationRanges(s0, &D_80364CA0);
|
||||
func_802EF9F8(s0, 0.4f);
|
||||
func_802EFA18(s0, 3);
|
||||
particleEmitter_emitN(s0, 4);
|
||||
}
|
||||
|
||||
void func_802AFFAC(void){
|
||||
D_8037D470.unk10 -= time_getDelta();
|
||||
while(D_8037D470.unk10 < 0.0f){
|
||||
func_802AF900();
|
||||
D_8037D470.unk8 += 0.017 * D_8037D470.unkC;
|
||||
D_8037D470.unk10 += 0.017;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802B0060(UNK_TYPE(s32) arg0, UNK_TYPE(s32) arg1){
|
||||
f32 sp4C[3];
|
||||
int i;
|
||||
|
||||
for(i = 0; i < 3; i++){
|
||||
sp4C[i] = func_80257AD4(D_8037D470.unk20 + ((f32)i/3.0)*0.5, 0.5f)*(D_8037D470.unk24*D_8037D470.unk28) + D_8037D470.unk24;
|
||||
}
|
||||
func_8033A928(arg0, 3, sp4C);
|
||||
}
|
||||
|
||||
|
||||
void func_802B014C(void){
|
||||
func_80289EBC(NULL);
|
||||
}
|
||||
|
||||
void func_802B016C(void){
|
||||
D_8037D470.unk20 = 0.0f;
|
||||
D_8037D470.unk28 = 0.0f;
|
||||
D_8037D470.unk24 = 1.0f;
|
||||
func_80289EBC(func_802B0060);
|
||||
}
|
||||
|
||||
void func_802B01B0(f32 arg0){
|
||||
D_8037D470.unk28 = arg0;
|
||||
}
|
||||
|
||||
void func_802B01BC(f32 arg0){
|
||||
D_8037D470.unk24 = arg0;
|
||||
}
|
||||
|
||||
void func_802B01C8(void){
|
||||
D_8037D470.unk20 += time_getDelta();
|
||||
}
|
||||
|
||||
static void __bsdronexform_setState(int arg0){
|
||||
enum asset_e sp34;
|
||||
f32 sp30;
|
||||
f32 sp24[3];
|
||||
|
||||
D_8037D470.unk32 = arg0;
|
||||
switch(arg0){
|
||||
case 1:// 802B0230
|
||||
D_8037D470.unk1C = 1;
|
||||
D_8037D470.unk2C = player_getYPosition();
|
||||
func_802AFB94(0.28f);
|
||||
func_802AFBA0(180.0f);
|
||||
func_802AFBAC(0.04f);
|
||||
func_802B01B0(0.05f);
|
||||
func_802978DC(7);
|
||||
func_8029E3C0(0, 2.8f);
|
||||
FUNC_8030E624(SFX_17E_MUMBO_TRANSFORMATION_01, 1.0f, 15000);
|
||||
break;
|
||||
|
||||
case 2:// 802B02A8
|
||||
func_8029E3C0(0, 0.5f);
|
||||
func_802978DC(0xb);
|
||||
break;
|
||||
|
||||
case 3:// 802B02C4
|
||||
func_8029E3C0(0, 0.05f);
|
||||
break;
|
||||
|
||||
case 4:// 802B02DC
|
||||
func_8029E3C0(0, 0.8f);
|
||||
break;
|
||||
|
||||
case 5:// 802B02F4
|
||||
_player_getPosition(&sp24);
|
||||
sp24[1] += 30.0f;
|
||||
func_8024E3A8(&sp24, 80.0f);
|
||||
func_802AFBB8(&sp24);
|
||||
func_8029E3C0(0, 0.1f);
|
||||
break;
|
||||
|
||||
case 6: // 802B033C
|
||||
func_802BB3DC(2, 80.0f, 0.85f);
|
||||
func_8030E6D4(SFX_147_GRUNTY_SPELL_ATTACK_2);
|
||||
if(D_8037D470.unk30 == 7 || D_8037D470.unk31 == 7){
|
||||
yaw_setIdeal(yaw_get() + 180.0f);
|
||||
yaw_applyIdeal();
|
||||
}
|
||||
func_8029A95C(func_80294A4C()); //set player transformation
|
||||
func_80291D04(); //update player model
|
||||
func_8029BD44(&sp34, &sp30);
|
||||
func_8028A010(sp34, sp30);
|
||||
func_8029E3C0(0, 0.1f);
|
||||
break;
|
||||
|
||||
case 7: // 802B03E4
|
||||
func_8029E3C0(0, 0.8f);
|
||||
break;
|
||||
|
||||
case 8: // 802B03FC
|
||||
if(D_8037D470.unk30 == 1 && D_8037D470.unk31 == 1){
|
||||
func_8025A6EC(COMUSIC_3C_MINIGAME_LOSS, 28000);
|
||||
}
|
||||
func_8029E3C0(0, 1.0f);
|
||||
break;
|
||||
|
||||
case 9:// 802B0438
|
||||
D_8037D470.unk1C = 0;
|
||||
func_8029E3C0(0, 0.7f);
|
||||
func_802978DC(7);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void bsdronexform_init(void){
|
||||
f32 sp1C;
|
||||
enum asset_e sp18;
|
||||
func_8029BCAC(&sp18, &sp1C);
|
||||
func_8028A010(sp18, sp1C);
|
||||
func_8029C7F4(1,1,3,7);
|
||||
func_80297A0C(0);
|
||||
func_80297930(0);
|
||||
pitch_setIdeal(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
func_80294378(6);
|
||||
func_802AFB0C();
|
||||
func_802B016C();
|
||||
D_8037D470.unk31 = _player_getTransformation();
|
||||
D_8037D470.unk30 = func_80294A4C();
|
||||
miscflag_set(MISC_FLAG_1B_TRANSFORMING);
|
||||
D_8037D470.unk32 = 0;
|
||||
__bsdronexform_setState(1);
|
||||
}
|
||||
|
||||
f32 func_802B051C(s32 arg0, f32 arg1, f32 arg2, f32 arg3){
|
||||
return ml_map_f(func_8029E270(arg0), arg1, 0.0f, arg2, arg3);
|
||||
}
|
||||
|
||||
void bsdronexform_update(void){
|
||||
int sp24;
|
||||
if(D_8037D470.unk1C)
|
||||
func_802AFFAC();
|
||||
|
||||
func_802B01C8();
|
||||
switch(D_8037D470.unk32){
|
||||
case 1:
|
||||
sp24 = func_8029E1A8(0);
|
||||
player_setYPosition(func_802B051C(0, 2.8f, 0.0f, 90.0f) + D_8037D470.unk2C);
|
||||
func_802AFB94(func_802B051C(0, 2.8f, 0.28f, 1.0f));
|
||||
func_802AFBA0(func_802B051C(0, 2.8f, 180.0f, 55.0f));
|
||||
func_802AFBAC(func_802B051C(0, 2.8f, 0.04f, 0.35f));
|
||||
func_802B01BC(func_802B051C(0, 2.8f, 1.0f, 0.8f));
|
||||
func_802B01B0(func_802B051C(0, 2.8f, 0.05f, 0.4f));
|
||||
func_8031B990(
|
||||
(s32)func_802B051C(0, 2.8f, 255.0f, 200.0f),
|
||||
(s32)func_802B051C(0, 2.8f, 255.0f, 80.0f),
|
||||
(s32)func_802B051C(0, 2.8f, 255.0f, 80.0f)
|
||||
);
|
||||
|
||||
if(sp24)
|
||||
__bsdronexform_setState(2);
|
||||
|
||||
break;
|
||||
|
||||
case 2:
|
||||
sp24 = func_8029E1A8(0);
|
||||
func_802B01B0(func_802B051C(0, 0.5f, 0.4f, 0.6f));
|
||||
if(sp24)
|
||||
__bsdronexform_setState(3);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
sp24 = func_8029E1A8(0);
|
||||
func_802B01BC(func_802B051C(0, 0.05f, 0.8f, 1.2f));
|
||||
if(sp24)
|
||||
__bsdronexform_setState(4);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
sp24 = func_8029E1A8(0);
|
||||
func_802B01BC(func_802B051C(0, 0.8f, 1.2f, 0.09f));
|
||||
if(sp24)
|
||||
__bsdronexform_setState(5);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
sp24 = func_8029E1A8(0);
|
||||
if(sp24)
|
||||
__bsdronexform_setState(6);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
sp24 = func_8029E1A8(0);
|
||||
if(sp24)
|
||||
__bsdronexform_setState(7);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
sp24 = func_8029E1A8(0);
|
||||
func_802B01BC(func_802B051C(0, 0.8f, 0.09f, 1.0f));
|
||||
if(sp24)
|
||||
__bsdronexform_setState(8);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
func_802AFBAC(func_802B051C(0, 1.0f, 0.35f, 0.03f));
|
||||
func_802B01B0(func_802B051C(0, 1.0f, 0.6f, 0.05f));
|
||||
func_8031B990(
|
||||
(s32)func_802B051C(0, 1.0f, 200.0f, 255.0f),
|
||||
(s32)func_802B051C(0, 1.0f, 80.0f, 255.0f),
|
||||
(s32)func_802B051C(0, 1.0f, 80.0f, 255.0f)
|
||||
);
|
||||
if(func_8029E1A8(0)){
|
||||
if(player_getTransformation() == TRANSFORM_7_WISHWASHY){
|
||||
bs_setState(0x33);
|
||||
}else{
|
||||
__bsdronexform_setState(9);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 9:
|
||||
sp24 = func_8029E1A8(0);
|
||||
player_setYPosition(func_802B051C(0, 0.7f, 90.0f, 0.0f) + D_8037D470.unk2C);
|
||||
if(sp24)
|
||||
bs_setState(bs_getIdleState());
|
||||
break;
|
||||
// 802B08AC 8
|
||||
// 802B09A4 9
|
||||
}
|
||||
}
|
||||
|
||||
void bsdronexform_end(void){
|
||||
func_80294378(1);
|
||||
func_8031B990(0xff,0xff,0xff);
|
||||
func_802AFADC();
|
||||
func_802B014C();
|
||||
func_80298A64();
|
||||
miscflag_clear(MISC_FLAG_1B_TRANSFORMING);
|
||||
}
|
||||
|
||||
void bsdronexform_interrupt(void){};
|
||||
196
src/core2/bs/jig.c
Normal file
196
src/core2/bs/jig.c
Normal file
@@ -0,0 +1,196 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D4B0;
|
||||
u8 D_8037D4B1;
|
||||
u8 D_8037D4B2;
|
||||
ActorMarker *D_8037D4B4;
|
||||
|
||||
/* .code */
|
||||
int bsjig_inJiggyJig(enum bs_e state){
|
||||
return state == BS_44_JIG_JIGGY;
|
||||
}
|
||||
|
||||
void bsjig_setJiggyMarkerPtr(ActorMarker * jiggyMarkerPtr){
|
||||
D_8037D4B4 = jiggyMarkerPtr;
|
||||
}
|
||||
|
||||
void bsjig_jiggy_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
int tmp;
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, FALSE);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_BJIG_JIGGY);
|
||||
animctrl_setDuration(aCtrl, 4.3f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsjig.c", 0x7f);
|
||||
yaw_setIdeal(func_8029B41C()); //face camera
|
||||
func_8029C7F4(1,1,3,2);
|
||||
func_80297970(0.0f);
|
||||
func_8024BD08(0);
|
||||
func_8025A2FC(0,0xfa0);
|
||||
tmp = (item_getCount(ITEM_E_JIGGY) == 9);
|
||||
if(tmp == 0) //weird if...
|
||||
tmp = 0;
|
||||
D_8037D4B1 = tmp;
|
||||
func_8025A6EC(COMUSIC_D_JINGLE_JIGGY_COLLECTED, -1);
|
||||
func_8029151C(0xC);
|
||||
func_8029E070(1);
|
||||
func_8030E6D4(SFX_33_BANJO_AHOO);
|
||||
miscflag_clear(7);
|
||||
miscflag_clear(0xf);
|
||||
func_8028D5DC();
|
||||
func_802C82C0(marker_getActor(D_8037D4B4), 1);
|
||||
D_8037D4B0 = 0;
|
||||
}
|
||||
|
||||
void func_802B0BA8(void){
|
||||
if(D_8037D4B4){
|
||||
func_802C82C0(marker_getActor(D_8037D4B4), 4);
|
||||
}
|
||||
}
|
||||
|
||||
void bsjig_jiggy_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
yaw_setIdeal(func_8029B41C());
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.6502f))
|
||||
func_80299BD4();
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.835f)){
|
||||
D_8037D4B0++;
|
||||
item_inc(ITEM_E_JIGGY);
|
||||
func_8030E58C(SFX_4B_GULPING, 1.3f);
|
||||
}
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.94f))
|
||||
func_8030E484(0x3ea);
|
||||
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
if(D_8037D4B1)
|
||||
sp1C = BS_34_JIG_NOTEDOOR;
|
||||
else
|
||||
sp1C = BS_1_IDLE;
|
||||
}
|
||||
|
||||
func_80295C08(func_802B0BA8);
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void func_802B0CD8(void){
|
||||
if(D_8037D4B4){
|
||||
func_802C82C0(marker_getActor(D_8037D4B4), 5);
|
||||
D_8037D4B4 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void bsjig_jiggy_end(void){
|
||||
s32 sp2C;
|
||||
s32 sp28 = 4;
|
||||
int sp24;
|
||||
sp2C = 0;
|
||||
sp24 = marker_getActor(D_8037D4B4)->unk38_31;
|
||||
if(D_8037D4B0 == 0)
|
||||
item_inc(ITEM_E_JIGGY);
|
||||
|
||||
func_802B0CD8();
|
||||
func_8029E070(0);
|
||||
func_80291548();
|
||||
|
||||
if(bs_getNextState() != BS_34_JIG_NOTEDOOR){
|
||||
func_8025A2FC(-1, 0xfa0);
|
||||
func_8024BD08(1);
|
||||
}
|
||||
func_8028D5F4();
|
||||
if( jiggyscore_total() == 100
|
||||
&& func_8031FF1C(BKPROG_FC_DEFEAT_GRUNTY)
|
||||
&& bs_getNextState() != BS_34_JIG_NOTEDOOR
|
||||
){
|
||||
func_8028F918(2);
|
||||
func_802E4078(MAP_95_CS_END_ALL_100, 0, 1);
|
||||
} else {//L802B0DFC
|
||||
if( jiggyscore_total() == 2
|
||||
&& map_get() == MAP_2_MM_MUMBOS_MOUNTAIN
|
||||
){
|
||||
sp2C = 0xb51;
|
||||
sp28 = 0xe;
|
||||
}
|
||||
else{//L802B0E34
|
||||
switch(sp24){
|
||||
case 0x13:
|
||||
sp2C = 0xa16;
|
||||
break;
|
||||
case 0x17:
|
||||
if(!levelSpecificFlags_get(0) || !levelSpecificFlags_get(1))
|
||||
sp2C = 0xd2d;
|
||||
break;
|
||||
}
|
||||
}//L802B0E88
|
||||
if(sp2C != 0){
|
||||
func_80311480(sp2C, sp28, 0, 0, 0, 0);
|
||||
}
|
||||
}//L802B0EA4
|
||||
func_80298A64();
|
||||
}
|
||||
|
||||
void bsjig_jiggy_interrupt(void){
|
||||
if(bs_getInterruptType() == 0x26)
|
||||
func_80296608();
|
||||
}
|
||||
|
||||
void bsjig_notedoor_end(void){
|
||||
func_8028D5F4();
|
||||
func_8025A2FC(-1, 0xfa0);
|
||||
func_8024BD08(1);
|
||||
func_8029E070(0);
|
||||
func_80291548();
|
||||
if( D_8037D4B2
|
||||
&& jiggyscore_total() == 100
|
||||
&& func_8031FF1C(BKPROG_FC_DEFEAT_GRUNTY)
|
||||
){
|
||||
func_8028F918(2);
|
||||
func_802E4078(MAP_95_CS_END_ALL_100, 0, 1);
|
||||
}
|
||||
func_80298A64();
|
||||
}
|
||||
|
||||
void bsjig_notedoor_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
D_8037D4B2 = (bs_getPrevState() == BS_44_JIG_JIGGY);
|
||||
miscflag_clear(0x1A);
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, 0x282);
|
||||
animctrl_setDuration(aCtrl, 3.6f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsjig.c", 0x14d);
|
||||
yaw_setIdeal(func_8029B41C());
|
||||
func_8029C7F4(1,1,3,2);
|
||||
func_80297970(0.0f);
|
||||
if(bs_getPrevState() != BS_44_JIG_JIGGY){
|
||||
func_8024BD08(0);
|
||||
func_8025A2FC(0,0xfa0);
|
||||
}
|
||||
func_8025A6EC(COMUSIC_42_NOTEDOOR_OPENING_FANFARE,-1);
|
||||
func_8029151C(0xc);
|
||||
func_8029E070(1);
|
||||
func_8030E6D4(SFX_33_BANJO_AHOO);
|
||||
func_8028D5DC();
|
||||
}
|
||||
|
||||
void bsjig_notedoor_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
|
||||
if(baanim_isAt(0.59f) || baanim_isAt(0.84f))
|
||||
func_80299CF4(SFX_3EA_UNKNOWN, 1.0f, 30000);
|
||||
|
||||
if(baanim_isStopped())
|
||||
sp1C = BS_1_IDLE;
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
443
src/core2/bs/jump.c
Normal file
443
src/core2/bs/jump.c
Normal file
@@ -0,0 +1,443 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
f32 func_80294438(void);
|
||||
void func_8029797C(f32);
|
||||
void func_802979AC(f32, f32);
|
||||
f32 func_80297A64(void);
|
||||
void func_80299B58(f32, f32);
|
||||
f32 func_8029B2E8(void);
|
||||
f32 func_8029B33C(void);
|
||||
void func_802921BC(f32);
|
||||
void func_8028A084(s32, f32);
|
||||
|
||||
/* .data */
|
||||
f32 D_80364CD0 = 710.0f;
|
||||
f32 D_80364CD4 = -1350.0f;
|
||||
f32 D_80364CD8 = 0.0f;
|
||||
f32 D_80364CDC = 710.0f;
|
||||
f32 D_80364CE0 = -1350.0f;
|
||||
f32 D_80364CE4 = 610.0f;
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D4C0;
|
||||
u8 D_8037D4C1;
|
||||
u8 D_8037D4C2;
|
||||
|
||||
/* .code */
|
||||
void func_802B1100(void){
|
||||
func_80299B58(0.91f, 1.09f);
|
||||
}
|
||||
|
||||
void bsjump_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
enum bs_e sp30;
|
||||
|
||||
D_8037D4C2 = miscflag_isTrue(2);
|
||||
sp30 = bs_getPrevState();
|
||||
if(bsclimb_inSet(sp30)){
|
||||
climbRelease();
|
||||
}
|
||||
|
||||
if(sp30 == BS_11_BPECK){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.6667f);
|
||||
func_8028774C(aCtrl, 0.5042f);
|
||||
animctrl_setDuration(aCtrl, 8.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D4C0 = 1;
|
||||
}
|
||||
else {
|
||||
D_8037D4C1 = (sp30 == BS_2D_SWIM_IDLE) || (sp30 == BS_2E_SWIM);
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_JUMP);
|
||||
animctrl_setDuration(aCtrl, 1.9f);
|
||||
animctrl_setTransitionDuration(aCtrl, 0.134f);
|
||||
func_8028774C(aCtrl, 0.3f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.5042f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsjump.c", 0x95);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
if(func_8029B2E8() != 0.0f){
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
}
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802B6FA8();
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
if(D_8037D4C1){
|
||||
player_setYVelocity(D_80364CE4);
|
||||
} else {
|
||||
player_setYVelocity(D_80364CD0);
|
||||
}
|
||||
gravity_set(D_80364CD4);
|
||||
D_8037D4C0 = 0;
|
||||
if(D_8037D4C2){
|
||||
func_8030E6D4(SFX_33_BANJO_AHOO);
|
||||
} else{
|
||||
func_802B1100();
|
||||
}
|
||||
}//L802B1340
|
||||
}
|
||||
|
||||
void bsjump_update(void){
|
||||
enum bs_e sp34 = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 velocity[3];
|
||||
|
||||
|
||||
if(D_8037D4C2)
|
||||
func_8029C348();
|
||||
|
||||
if(miscflag_isTrue(0xf)){
|
||||
func_802978A4();
|
||||
}else{
|
||||
func_802B6FA8();
|
||||
}
|
||||
|
||||
_get_velocity(&velocity);
|
||||
if((button_released(BUTTON_A) && 0.0f < velocity[1] && !D_8037D4C2) || !func_8028AB48()){
|
||||
gravity_reset();
|
||||
}
|
||||
|
||||
switch(D_8037D4C0){
|
||||
case 0://L802B1428
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.6667);
|
||||
animctrl_setDuration(aCtrl, 4.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D4C0 = 1;
|
||||
}
|
||||
if(func_8028B254(0x82)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(aCtrl, 1.4f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D4C0 = 2;
|
||||
}
|
||||
break;
|
||||
case 1://L802B14B4
|
||||
if( 500.0f < (player_getYPosition() - func_80294438())){
|
||||
sp34 = BS_2F_FALL;
|
||||
}
|
||||
if(D_8037D4C2){
|
||||
D_8037D4C2 = 0;
|
||||
sp34 = BS_BSHOCK_CHARGE;
|
||||
}
|
||||
if(func_8028B254(0x5A)){
|
||||
animctrl_setSubRange(aCtrl, 0.0, 1.0f);
|
||||
animctrl_setDuration(aCtrl, 2.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D4C0 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
}//L802B1548
|
||||
|
||||
if(func_8028B424())
|
||||
sp34 = BS_3D_FALL_TUMBLING;
|
||||
|
||||
if(button_released(BUTTON_A))
|
||||
D_8037D4C2 = 0;
|
||||
|
||||
if(should_flap())
|
||||
sp34 = BS_BFLAP;
|
||||
|
||||
if(should_peck())
|
||||
sp34 = BS_11_BPECK;
|
||||
|
||||
if(should_beak_bust())
|
||||
sp34 = BS_F_BBUSTER;
|
||||
|
||||
if(func_8028B2E8()){
|
||||
func_8029C5E8();
|
||||
sp34 = BS_20_LANDING;
|
||||
}
|
||||
|
||||
if(velocity[1] < 0.0f && player_inWater())
|
||||
sp34 = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
bs_setState(sp34);
|
||||
}
|
||||
|
||||
void bsjump_end(void){
|
||||
if(ability_hasLearned(ABILITY_A_HOLD_A_JUMP_HIGHER))
|
||||
ability_use(0);
|
||||
|
||||
if(bs_getNextState() != BS_11_BPECK)
|
||||
gravity_reset();
|
||||
}
|
||||
|
||||
void bsjump_fall_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
int sp20;
|
||||
|
||||
if(miscflag_isTrue(7) && 700.0f < func_80297AAC())
|
||||
player_setYVelocity(700.0f);
|
||||
|
||||
sp20 = (bs_getPrevState() == BS_12_BFLIP)? 0 : 1;
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, sp20);
|
||||
animctrl_setIndex(aCtrl, 0xb0);
|
||||
animctrl_setTransitionDuration(aCtrl, 0.3f);
|
||||
animctrl_setDuration(aCtrl, 0.38f);
|
||||
func_802875AC(aCtrl, "bsjump.c", 0x188);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
D_8037D4C0 = 0;
|
||||
}
|
||||
|
||||
void bsjump_fall_update(void){
|
||||
enum bs_e sp2C = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp1C[3];
|
||||
|
||||
if(miscflag_isTrue(0xf))
|
||||
func_802978A4();
|
||||
else
|
||||
func_802B6FA8();
|
||||
|
||||
_get_velocity(&sp1C);
|
||||
|
||||
switch(D_8037D4C0){
|
||||
case 0://L802B17B8
|
||||
if(func_8028B254(0x5a)){
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, 8);
|
||||
func_8028774C(aCtrl, 0.6667f);
|
||||
animctrl_setDuration(aCtrl, 2.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsjump.c", 0x1b5);
|
||||
D_8037D4C0 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}//L802B1824
|
||||
if(miscflag_isFalse(0xf)){
|
||||
if(func_8028B424())
|
||||
sp2C = BS_3D_FALL_TUMBLING;
|
||||
|
||||
if(should_flap() && miscflag_isFalse(5))
|
||||
sp2C = BS_BFLAP;
|
||||
|
||||
if(should_peck())
|
||||
sp2C = BS_11_BPECK;
|
||||
|
||||
if(should_beak_bust())
|
||||
sp2C = BS_F_BBUSTER;
|
||||
|
||||
if(player_inWater())
|
||||
sp2C = BS_4C_LANDING_IN_WATER;
|
||||
}
|
||||
else if(player_inWater()){
|
||||
func_8029CCC4();
|
||||
if(miscflag_isTrue(6) || miscflag_isTrue(0x14)){
|
||||
sp2C = BS_D_TIMEOUT;
|
||||
}
|
||||
|
||||
}//L802B18E8
|
||||
|
||||
if(func_8028B2E8()){
|
||||
func_8029C5E8();
|
||||
sp2C = BS_20_LANDING;
|
||||
}
|
||||
|
||||
bs_setState(sp2C);
|
||||
}
|
||||
|
||||
void bsjump_fall_end(void){};
|
||||
|
||||
void func_802B1928(void) {
|
||||
AnimCtrl *anim_ctrl;
|
||||
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
climbRelease();
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setIndex(anim_ctrl, ANIM_BANJO_JUMP);
|
||||
animctrl_setDuration(anim_ctrl, 1.9f);
|
||||
animctrl_setTransitionDuration(anim_ctrl, 0.134f);
|
||||
func_8028774C(anim_ctrl, 0.3f);
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 0.5042f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(anim_ctrl, "bsjump.c", 0x201);
|
||||
func_80289F10(1);
|
||||
func_802991A8(1);
|
||||
func_8029957C(3);
|
||||
func_802978DC(3);
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_80297970(60.0f);
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
player_setYVelocity(D_80364CDC);
|
||||
gravity_set(D_80364CE0);
|
||||
func_80294378(6);
|
||||
D_8037D4C0 = 0;
|
||||
func_802B1100();
|
||||
}
|
||||
|
||||
void func_802B1A54(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *anim_ctrl;
|
||||
f32 velocity[3];
|
||||
|
||||
next_state = 0;
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
_get_velocity(velocity);
|
||||
if (velocity[1] < 0.0f) {
|
||||
func_80294378(1);
|
||||
}
|
||||
switch (D_8037D4C0) {
|
||||
case 0:
|
||||
if (animctrl_isStopped(anim_ctrl)) {
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 0.6667f);
|
||||
animctrl_setDuration(anim_ctrl, 4.0f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
D_8037D4C0 = 1;
|
||||
}
|
||||
if (func_8028B254(130)) {
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(anim_ctrl, 1.4f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
D_8037D4C0 = 2;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (func_8028B254(90)) {
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(anim_ctrl, 2.0f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
D_8037D4C0 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
if (func_8028B2E8()) {
|
||||
func_8029C5E8();
|
||||
next_state = BS_20_LANDING;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B1BCC(void){
|
||||
func_80294378(1);
|
||||
gravity_reset();
|
||||
}
|
||||
|
||||
void func_802B1BF4(void) {
|
||||
AnimCtrl *anim_ctrl;
|
||||
bool smooth_transition;
|
||||
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
smooth_transition = TRUE;
|
||||
if(bs_getPrevState() == BS_12_BFLIP){
|
||||
smooth_transition = FALSE;
|
||||
}
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setSmoothTransition(anim_ctrl, smooth_transition);
|
||||
animctrl_setIndex(anim_ctrl, ANIM_BANJO_JUMP);
|
||||
animctrl_setTransitionDuration(anim_ctrl, 0.3f);
|
||||
animctrl_setDuration(anim_ctrl, 1.9f);
|
||||
func_8028774C(anim_ctrl, 0.6667f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_STOPPED);
|
||||
func_802875AC(anim_ctrl, "bsjump.c", 0x298);
|
||||
yaw_setIdeal(func_8029B41C());
|
||||
func_80289F10(1);
|
||||
func_802991A8(1);
|
||||
func_8029957C(3);
|
||||
func_802978DC(6);
|
||||
func_80297970(0.0f);
|
||||
func_80297A0C(0);
|
||||
D_8037D4C0 = 0;
|
||||
func_8028D5DC();
|
||||
}
|
||||
|
||||
void func_802B1CF8(void) {
|
||||
enum bs_e next_state;
|
||||
AnimCtrl *anim_ctrl;
|
||||
f32 velocity[3];
|
||||
|
||||
next_state = 0;
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
_get_velocity(velocity);
|
||||
switch (D_8037D4C0) {
|
||||
case 0:
|
||||
if (func_8028B254(90)) {
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(anim_ctrl, 2.0f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
D_8037D4C0 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if (func_8028B2E8() != 0) {
|
||||
next_state = 1;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B1DA4(void){
|
||||
func_8028D5F4();
|
||||
}
|
||||
|
||||
bool bsjump_jumpingFromWater(void){
|
||||
return D_8037D4C1;
|
||||
}
|
||||
|
||||
void bsjump_tumble_init(void){
|
||||
func_8028A084(0x68, 0.35f);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
func_802921BC(60.0f);
|
||||
if(func_80293234() == 1){
|
||||
func_8029E3C0(0, 0.5f);
|
||||
func_8029E3C0(1, 0.41f);
|
||||
func_80299CF4(SFX_52_BANJO_YAH_OH, 1.0f, 22000);
|
||||
}else{
|
||||
func_8029E3C0(0, 0.0f);
|
||||
func_8029E3C0(1, 0.01f);
|
||||
}
|
||||
D_8037D4C0 = 0;
|
||||
}
|
||||
|
||||
void bsjump_tumble_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
if(func_8029E1A8(1))
|
||||
func_80299CF4(SFX_63_BANJO_UWAAAAOOH, 1.0f, 32000);
|
||||
|
||||
func_8029E1A8(0);
|
||||
func_802B6FA8();
|
||||
if(func_8029E384(1)){
|
||||
pitch_setIdeal(pitch_getIdeal() + 20.0f);
|
||||
}
|
||||
if(func_8029E348(0)){
|
||||
if(should_flap())
|
||||
sp1C = BS_BFLAP;
|
||||
|
||||
if(should_peck())
|
||||
sp1C = BS_11_BPECK;
|
||||
|
||||
if(should_beak_bust())
|
||||
sp1C = BS_F_BBUSTER;
|
||||
}//L802B1F2C
|
||||
|
||||
if(player_inWater())
|
||||
sp1C = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
if(func_8028B2E8())
|
||||
sp1C = BS_SPLAT;
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bsjump_tumble_end(void){
|
||||
enum bs_e next_state = bs_getNextState();
|
||||
if( next_state == BS_F_BBUSTER
|
||||
|| next_state == BS_BFLAP
|
||||
|| next_state == BS_11_BPECK
|
||||
){
|
||||
func_80293240(3);
|
||||
}
|
||||
func_8029CB84();
|
||||
func_802921BC(0.0f);
|
||||
func_80299E6C();
|
||||
}
|
||||
71
src/core2/bs/ow.c
Normal file
71
src/core2/bs/ow.c
Normal file
@@ -0,0 +1,71 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void func_802B37DC(void);
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D4D0;
|
||||
|
||||
void func_802B1FD0(s32 arg0){}
|
||||
|
||||
void bsow_init(void){
|
||||
AnimCtrl *plyr_mvmnt;
|
||||
|
||||
plyr_mvmnt = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(plyr_mvmnt);
|
||||
animctrl_setSmoothTransition(plyr_mvmnt, 0);
|
||||
animctrl_setSubRange(plyr_mvmnt, 0.0f, 0.534399986267f);
|
||||
animctrl_setIndex(plyr_mvmnt, ANIM_BANJO_OW);
|
||||
animctrl_setDuration(plyr_mvmnt, 1.70000004768f);
|
||||
animctrl_setPlaybackType(plyr_mvmnt, ANIMCTRL_ONCE);
|
||||
func_802875AC(plyr_mvmnt, "bsow.c", 0x50);
|
||||
func_80299BFC(1.0f);
|
||||
func_802B360C();
|
||||
func_8028D5DC();
|
||||
func_80292E48();
|
||||
D_8037D4D0 = 0;
|
||||
func_802B1FD0(1);
|
||||
}
|
||||
|
||||
void bsow_update(void) {
|
||||
s32 sp1C = 0;
|
||||
u8 temp_v0;
|
||||
|
||||
sp1C = 0;
|
||||
func_802B37DC();
|
||||
switch(D_8037D4D0){
|
||||
case 0:
|
||||
if (func_8028B254(0x5A) != 0) {
|
||||
func_8028A37C(1.0f);
|
||||
D_8037D4D0 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
|
||||
if (baanim_isAt(0.3f) != 0) {
|
||||
func_80292EA4();
|
||||
}
|
||||
if (func_8028B424() != 0) {
|
||||
sp1C = BS_3D_FALL_TUMBLING;
|
||||
}
|
||||
if (func_8028B2E8() != 0) {
|
||||
sp1C = BS_2_WALK_SLOW;
|
||||
}
|
||||
if ((player_inWater() != 0) && (func_80297AAC() <= 0.0f)) {
|
||||
sp1C = BS_4C_LANDING_IN_WATER;
|
||||
}
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bsow_end(void){
|
||||
func_802B35DC();
|
||||
func_802B1FD0(0);
|
||||
func_80297CA8();
|
||||
gravity_reset();
|
||||
func_8028D5F4();
|
||||
func_80292EA4();
|
||||
}
|
||||
568
src/core2/bs/pumpkin.c
Normal file
568
src/core2/bs/pumpkin.c
Normal file
@@ -0,0 +1,568 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern void func_802920FC(f32);
|
||||
extern void func_8028A084(s32, f32);
|
||||
extern void func_8029AD68(f32, s32);
|
||||
|
||||
/* .data */
|
||||
f32 D_80364CF0 = 30.0f;
|
||||
f32 D_80364CF4 = 500.0f;
|
||||
f32 D_80364CF8 = 0.44f;
|
||||
f32 D_80364CFC = 0.2f;
|
||||
f32 D_80364D00 = 693.5f;
|
||||
f32 D_80364D04 = -1200.0f;
|
||||
u8 D_80364D08 = 0;
|
||||
s16 D_80364D0C[] = {
|
||||
SFX_54_BANJO_HOO_1,
|
||||
SFX_55_BANJO_HOO_2,
|
||||
SFX_56_BANJO_HUI
|
||||
}; //enum sfx_e
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D4E0;
|
||||
s32 D_8037D4E4;
|
||||
f32 D_8037D4E8[3];
|
||||
f32 D_8037D4F4;
|
||||
|
||||
/* .code */
|
||||
void func_802B21D0(void) {
|
||||
func_8030EB00(D_80364D0C[D_80364D08], 1.35f, 1.45f);
|
||||
D_80364D08++;
|
||||
if (D_80364D08 >= 3) {
|
||||
D_80364D08 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_802B223C(void) {
|
||||
f32 sp1C;
|
||||
|
||||
sp1C = func_8029B30C();
|
||||
if (func_8029B300() == 0) {
|
||||
func_80297970(0.0f);
|
||||
return;
|
||||
}
|
||||
func_80297970(func_80257C48(sp1C, D_80364CF0, D_80364CF4));
|
||||
}
|
||||
|
||||
void func_802B229C(void) {
|
||||
if (!bspumpkin_inSet(bs_getNextState())) {
|
||||
func_8029B0C0();
|
||||
func_8029E070(0);
|
||||
func_8029E064(0);
|
||||
miscflag_clear(3);
|
||||
miscflag_clear(4);
|
||||
func_80293D74();
|
||||
}
|
||||
func_80289F10(1);
|
||||
}
|
||||
|
||||
int bspumpkin_inSet(s32 move_indx){
|
||||
return (move_indx == BS_48_PUMPKIN_IDLE)
|
||||
|| (move_indx == BS_49_PUMPKIN_WALK)
|
||||
|| (move_indx == BS_4A_PUMPKIN_JUMP)
|
||||
|| (move_indx == BS_4B_PUMPKIN_FALL)
|
||||
|| (move_indx == BS_4D_PUMPKIN_OW)
|
||||
|| (move_indx == BS_4E_PUMPKIN_DIE)
|
||||
|| (move_indx == BS_8F_PUMPKIN_LOCKED)
|
||||
|| (move_indx == BS_93_PUMPKIN_DRONE);
|
||||
}
|
||||
|
||||
void func_802B2384(void) {
|
||||
func_8028A084(0xA0, 0.8f);
|
||||
func_8029C7F4(1, 1, 1, 2);
|
||||
func_80297970(0.0f);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
roll_setAngularVelocity(1000.0f, 12.0f);
|
||||
func_80293D48(50.0f, 25.0f);
|
||||
miscflag_set(3);
|
||||
miscflag_set(4);
|
||||
func_802900B4();
|
||||
}
|
||||
|
||||
void func_802B242C(void) {
|
||||
s32 next_state;
|
||||
|
||||
next_state = 0;
|
||||
if (func_8028B094()) {
|
||||
next_state = BS_4B_PUMPKIN_FALL;
|
||||
}
|
||||
if (func_80294F78()) {
|
||||
next_state = func_802926C0();
|
||||
}
|
||||
if (func_8029B300() > 0) {
|
||||
next_state = BS_49_PUMPKIN_WALK;
|
||||
}
|
||||
if (button_pressed(BUTTON_A)) {
|
||||
next_state = BS_4A_PUMPKIN_JUMP;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
|
||||
void func_802B24AC(void){
|
||||
func_802B229C();
|
||||
func_802900FC();
|
||||
}
|
||||
|
||||
void func_802B24D4(void) {
|
||||
AnimCtrl *anim_ctrl;
|
||||
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setIndex(anim_ctrl, 0xA0);
|
||||
animctrl_setDuration(anim_ctrl, 0.8f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_LOOP);
|
||||
_func_802875AC(anim_ctrl, "bspumpkin.c", 0x11D);
|
||||
func_8029C7F4(2, 1, 1, 2);
|
||||
func_80289EC8(D_80364CF0, D_80364CF4, D_80364CF8, D_80364CFC);
|
||||
func_802900B4();
|
||||
}
|
||||
|
||||
|
||||
void func_802B2580(void) {
|
||||
s32 next_state;
|
||||
|
||||
next_state = 0;
|
||||
func_802B223C();
|
||||
func_8029AD68(0.3f, 4);
|
||||
if ((func_8029B300() == 0) && func_80297C04(1.0f)) {
|
||||
next_state = BS_48_PUMPKIN_IDLE;
|
||||
}
|
||||
if (func_8028B094()) {
|
||||
next_state = BS_4B_PUMPKIN_FALL;
|
||||
}
|
||||
if (button_pressed(BUTTON_A)) {
|
||||
next_state = BS_4A_PUMPKIN_JUMP;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B2610(void){
|
||||
func_802B229C();
|
||||
func_802900FC();
|
||||
}
|
||||
|
||||
void func_802B2638(void) {
|
||||
AnimCtrl *anim_ctrl;
|
||||
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setIndex(anim_ctrl, 0xA1);
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 0.3941f);
|
||||
animctrl_setDuration(anim_ctrl, 1.2f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(anim_ctrl, "bspumpkin.c", 0x16C);
|
||||
func_8029C7F4(1, 1, 3, 6);
|
||||
if (func_8029B2E8() != 0.0f) {
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
}
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802B223C();
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
player_setYVelocity(D_80364D00);
|
||||
gravity_set(D_80364D04);
|
||||
func_802B21D0();
|
||||
D_8037D4E0 = 0;
|
||||
}
|
||||
|
||||
void func_802B2750(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *anim_ctrl;
|
||||
f32 sp1C[3];
|
||||
|
||||
next_state = 0;
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
func_802B223C();
|
||||
_get_velocity(sp1C);
|
||||
if (button_released(BUTTON_A) && sp1C[1] > 0.0f) {
|
||||
gravity_reset();
|
||||
}
|
||||
switch (D_8037D4E0) {
|
||||
case 0:
|
||||
if (func_80297AAC() < 0.0f) {
|
||||
if (func_8028B254(130)) {
|
||||
func_80292E48();
|
||||
animctrl_setDuration(anim_ctrl, 0.7f);
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 0.8059f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
D_8037D4E0 = 2;
|
||||
} else {
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 0.662f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
D_8037D4E0 = 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (func_8028B254(130)) {
|
||||
func_80292E48();
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 0.8059f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
D_8037D4E0 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (func_8028B2E8()) {
|
||||
func_8029AE48();
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(anim_ctrl, 1.2f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
D_8037D4E0 = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (animctrl_isStopped(anim_ctrl)) {
|
||||
func_80292EA4();
|
||||
func_80297970(0.0f);
|
||||
next_state = BS_48_PUMPKIN_IDLE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (func_8028B2E8()) {
|
||||
if (func_8029B300() > 0) {
|
||||
next_state = BS_49_PUMPKIN_WALK;
|
||||
}
|
||||
if (button_pressed(BUTTON_A)) {
|
||||
next_state = BS_4A_PUMPKIN_JUMP;
|
||||
}
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B2990(void){
|
||||
func_80292EA4();
|
||||
gravity_reset();
|
||||
func_802B229C();
|
||||
}
|
||||
|
||||
void func_802B29C0(void) {
|
||||
AnimCtrl *anim_ctrl;
|
||||
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
D_8037D4E4 = 0;
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setIndex(anim_ctrl, 0xA1);
|
||||
func_8028774C(anim_ctrl, 0.662f);
|
||||
animctrl_setDuration(anim_ctrl, 0.7f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_STOPPED);
|
||||
func_802875AC(anim_ctrl, "bspumpkin.c", 0x1F1);
|
||||
func_8029C7F4(1, 1, 3, 6);
|
||||
D_8037D4E0 = 0;
|
||||
}
|
||||
|
||||
|
||||
void func_802B2A5C(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *anim_ctrl;
|
||||
f32 sp1C[3];
|
||||
|
||||
next_state = 0;
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
if (D_8037D4E4) {
|
||||
func_802B223C();
|
||||
}
|
||||
_get_velocity(sp1C);
|
||||
switch (D_8037D4E0) {
|
||||
case 0:
|
||||
if (func_8028B254(130)) {
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 0.8059f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
D_8037D4E0 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (func_8028B2E8()) {
|
||||
func_8029AE48();
|
||||
func_80297970(0.0f);
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(anim_ctrl, 1.2f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
D_8037D4E0 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
if (func_8028B2E8() && ((func_8029B300() > 0) || (D_8037D4E0 == 2 && animctrl_isStopped(anim_ctrl)))) {
|
||||
if (miscflag_isTrue(0x19)) {
|
||||
next_state = func_80292738();
|
||||
} else {
|
||||
next_state = BS_48_PUMPKIN_IDLE;
|
||||
}
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B2BD0(void){
|
||||
func_802B229C();
|
||||
}
|
||||
|
||||
void func_802B2BF0(void) {
|
||||
func_8029656C(D_8037D4E8);
|
||||
func_8028FAB0(D_8037D4E8);
|
||||
func_8028A084(0xA0, 0.8f);
|
||||
func_8029C7F4(1, 1, 2, 7);
|
||||
func_80294378(6);
|
||||
func_8029E3C0(0, 0.0f);
|
||||
}
|
||||
|
||||
void func_802B2C58(void) {
|
||||
f32 sp3C;
|
||||
f32 sp38;
|
||||
f32 sp34;
|
||||
f32 sp28[3];
|
||||
|
||||
func_8029E22C(0);
|
||||
sp34 = func_8029E270(0);
|
||||
sp38 = yaw_getIdeal();
|
||||
sp3C = ml_map_f(sp34, 0.0f, 2.3f, 0.0f, 45.0f);
|
||||
yaw_setIdeal(mlNormalizeAngle(sp38 + sp3C));
|
||||
yaw_applyIdeal();
|
||||
func_802920FC(ml_map_f(sp34, 0.0f, 2.3f, 1.0f, 0.3f));
|
||||
ml_vec3f_copy(sp28, D_8037D4E8);
|
||||
sp28[1] = ml_map_f(sp34, 0.0f, 2.3f, D_8037D4E8[1], D_8037D4E8[1] - 50.0);
|
||||
func_8028FAB0(sp28);
|
||||
}
|
||||
|
||||
void func_802B2D50(void) {
|
||||
func_80294378(1);
|
||||
func_802920FC(1.0f);
|
||||
}
|
||||
|
||||
void func_802B2D80(s32 arg0) {
|
||||
AnimCtrl *anim_ctrl;
|
||||
f32 sp38;
|
||||
f32 plyr_pos[3];
|
||||
f32 sp20[3];
|
||||
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setIndex(anim_ctrl, 0x236);
|
||||
animctrl_setDuration(anim_ctrl, 1.3f);
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 0.45f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(anim_ctrl, "bspumpkin.c", 0x2AB);
|
||||
if (arg0 == 1) {
|
||||
func_8030E58C(SFX_38_BANJO_AYE_1, 1.8f);
|
||||
} else {
|
||||
func_8030E58C(SFX_56_BANJO_HUI, 1.8f);
|
||||
}
|
||||
_player_getPosition(plyr_pos);
|
||||
func_80294980(sp20);
|
||||
func_80257F18(sp20, plyr_pos, &sp38);
|
||||
yaw_setIdeal(mlNormalizeAngle(sp38 + 180.0f));
|
||||
yaw_applyIdeal();
|
||||
func_80297970(200.0f);
|
||||
func_8029797C(sp38);
|
||||
func_802979AC(sp38, func_80297A64());
|
||||
func_8029C7F4(1, 1, 2, 3);
|
||||
player_setYVelocity(510.0f);
|
||||
gravity_set(-1200.0f);
|
||||
func_8028D5DC();
|
||||
func_80292E48();
|
||||
D_8037D4E0 = 0;
|
||||
}
|
||||
|
||||
void func_802B2EE8(void) {
|
||||
s32 next_state;
|
||||
|
||||
next_state = 0;
|
||||
if (baanim_isAt(0.61f)) {
|
||||
func_80292EA4();
|
||||
}
|
||||
switch (D_8037D4E0) {
|
||||
case 0:
|
||||
if (func_8028B254(90)) {
|
||||
func_8028A3B8(1.0f, 0.5f);
|
||||
func_8029AE48();
|
||||
D_8037D4E0 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (baanim_isStopped()) {
|
||||
next_state = BS_48_PUMPKIN_IDLE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B2F9C(void) {
|
||||
func_80297CA8();
|
||||
gravity_reset();
|
||||
func_8028D5F4();
|
||||
func_80292EA4();
|
||||
func_802B229C();
|
||||
}
|
||||
|
||||
void func_802B2FDC(void){
|
||||
func_802B2D80(1);
|
||||
}
|
||||
|
||||
void func_802B2FFC(void){
|
||||
func_802B2EE8();
|
||||
}
|
||||
|
||||
void func_802B301C(void){
|
||||
func_802B2F9C();
|
||||
}
|
||||
|
||||
void func_802B303C(void){
|
||||
func_802B2D80(2);
|
||||
}
|
||||
|
||||
void func_802B305C(void){
|
||||
func_802B2EE8();
|
||||
}
|
||||
|
||||
void func_802B307C(void){
|
||||
func_802B2F9C();
|
||||
}
|
||||
|
||||
void func_802B309C(void) {
|
||||
AnimCtrl *anim_ctrl;
|
||||
f32 sp38;
|
||||
f32 plyr_pos[3];
|
||||
f32 sp20[3];
|
||||
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
func_8029B930();
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setSmoothTransition(anim_ctrl, 0);
|
||||
animctrl_setIndex(anim_ctrl, 0x188);
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 0.1439f);
|
||||
animctrl_setDuration(anim_ctrl, 3.5f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(anim_ctrl, "bspumpkin.c", 0x32E);
|
||||
func_8030E58C(SFX_36_BANJO_DOH, 1.8f);
|
||||
_player_getPosition(plyr_pos);
|
||||
func_80294980(sp20);
|
||||
func_80257F18(sp20, plyr_pos, &sp38);
|
||||
D_8037D4F4 = 250.0f;
|
||||
yaw_setIdeal(mlNormalizeAngle(sp38 + 180.0f));
|
||||
yaw_applyIdeal();
|
||||
func_80297970(D_8037D4F4);
|
||||
func_8029797C(sp38);
|
||||
func_802979AC(sp38, func_80297A64());
|
||||
func_8029C7F4(1, 1, 2, 3);
|
||||
player_setYVelocity(510.0f);
|
||||
gravity_set(-1200.0f);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
func_802914CC(0xD);
|
||||
func_802BF2C0(30.0f);
|
||||
func_8029C984();
|
||||
func_8028D5DC();
|
||||
func_80292E48();
|
||||
func_8029E3C0(1, 2.9f);
|
||||
D_8037D4E0 = 0;
|
||||
}
|
||||
|
||||
void func_802B3240(void){
|
||||
func_80297970(D_8037D4F4);
|
||||
func_80299628(0);
|
||||
switch(D_8037D4E0){
|
||||
case 0://L802B3284
|
||||
if(func_8028B254(90)) {
|
||||
func_8028A37C(0.1571f);
|
||||
D_8037D4E0 = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1://L802B32AC
|
||||
if(func_8028B2E8()) {
|
||||
func_8029AE48();
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 18000);
|
||||
FUNC_8030E624(SFX_39_BANJO_AYE_2, 1.8f, 18000);
|
||||
func_8028A3B8(0.2f, 2.9f);
|
||||
D_8037D4E0 = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2://L802B3300
|
||||
if(baanim_isStopped()) {
|
||||
player_setYVelocity(400.0f);
|
||||
func_8028A37C(0.355f);
|
||||
D_8037D4E0 = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3://L802B3338
|
||||
D_8037D4F4 = max_f(0.0f, D_8037D4F4 - 10.0f);
|
||||
if (func_8028B254(90)) {
|
||||
func_8028A37C(0.36f);
|
||||
D_8037D4E0 = 4;
|
||||
}
|
||||
break;
|
||||
|
||||
case 4://L802B3384
|
||||
D_8037D4F4 = max_f(0.0f, D_8037D4F4 - 10.0f);
|
||||
if (func_8028B2E8()) {
|
||||
func_8029AE48();
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 18000);
|
||||
FUNC_8030E624(SFX_39_BANJO_AYE_2, 1.8f, 18000);
|
||||
func_8028A37C(1.0f);
|
||||
D_8037D4E0 = 5;
|
||||
}
|
||||
break;
|
||||
|
||||
case 5://L802B33F4
|
||||
D_8037D4F4 = max_f(0.0f, D_8037D4F4 - 10.0f);
|
||||
break;
|
||||
|
||||
}
|
||||
if (func_8029E1A8(1) != 0) {
|
||||
func_8029B890();
|
||||
}
|
||||
bs_setState(0);
|
||||
}
|
||||
|
||||
void func_802B3448(void) {
|
||||
func_802B229C();
|
||||
func_8024BD08(0);
|
||||
gravity_reset();
|
||||
pitch_setIdeal(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
func_80292EA4();
|
||||
func_80291548();
|
||||
}
|
||||
|
||||
void func_802B34A0(void) {
|
||||
func_8028A010(0xA0, 0.8f);
|
||||
func_8029C7F4(1, 1, 3, 2);
|
||||
func_80297970(0.0f);
|
||||
func_8029C674();
|
||||
func_802B3A50();
|
||||
}
|
||||
|
||||
void func_802B34F8(void) {
|
||||
s32 next_state;
|
||||
|
||||
next_state = 0;
|
||||
func_802B3A50();
|
||||
func_8029C6D0();
|
||||
if (func_80298850() == 0) {
|
||||
next_state = BS_48_PUMPKIN_IDLE;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B353C(void) {
|
||||
func_8029C748();
|
||||
func_802B229C();
|
||||
}
|
||||
|
||||
void bspumpkin_drone_init(void){
|
||||
bsdrone_init();
|
||||
}
|
||||
|
||||
void bspumpkin_drone_update(void){
|
||||
bsdrone_update();
|
||||
}
|
||||
|
||||
void bspumpkin_drone_end(void){
|
||||
bsdrone_end();
|
||||
func_802B229C();
|
||||
}
|
||||
137
src/core2/bs/rebound.c
Normal file
137
src/core2/bs/rebound.c
Normal file
@@ -0,0 +1,137 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_80296548(void);
|
||||
extern f32 func_8029653C(void);
|
||||
extern f32 func_80297A4C(void);
|
||||
extern f32 func_8029B56C(f32, f32, f32, f32);
|
||||
|
||||
/* .bss */
|
||||
s32 D_8037D500;
|
||||
f32 D_8037D504;
|
||||
|
||||
/* .code */
|
||||
void func_802B35D0(s32 arg0){
|
||||
D_8037D500 = arg0;
|
||||
}
|
||||
|
||||
void func_802B35DC(void) {
|
||||
if (D_8037D500 == 1) {
|
||||
func_80297A0C(0);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802B360C(void) {
|
||||
f32 sp44[3];
|
||||
f32 sp38[3];
|
||||
f32 sp2C[3];
|
||||
f32 sp28;
|
||||
f32 sp24;
|
||||
f32 sp20;
|
||||
s32 sp1C;
|
||||
|
||||
sp1C = func_80296560();
|
||||
func_80294980(sp38);
|
||||
_player_getPosition(sp2C);
|
||||
func_80257F18(sp38, sp2C, &sp28);
|
||||
if ((sp1C == 0xE) || (sp1C == 0x10)) {
|
||||
func_802B35D0(1);
|
||||
func_8029C7F4(1, 1, 2, 1);
|
||||
yaw_setIdeal(mlNormalizeAngle(sp28));
|
||||
gravity_set(func_80296548());
|
||||
sp20 = func_8029653C();
|
||||
sp24 = func_8029B56C(sp2C[1], sp38[1], sp20, func_80297A4C());
|
||||
ml_vec3f_diff_copy(sp44, sp38, sp2C);
|
||||
D_8037D504 = sp24;
|
||||
sp44[0] /= sp24;
|
||||
sp44[1] /= sp24;
|
||||
sp44[2] /= sp24;
|
||||
sp44[1] = sp20;
|
||||
func_80297A0C(sp44);
|
||||
func_8029E3C0(6, sp24);
|
||||
} else {
|
||||
func_802B35D0(0);
|
||||
func_80298760(sp1C);
|
||||
yaw_setIdeal(mlNormalizeAngle(sp28 + 180.0f));
|
||||
func_80297970(func_802987D4());
|
||||
func_8029797C(sp28);
|
||||
func_802979AC(sp28, func_80297A64());
|
||||
player_setYVelocity(func_802987C4());
|
||||
gravity_set(func_802987E4());
|
||||
func_8029C7F4(1, 1, 2, 3);
|
||||
if (func_802987B4() == 2) {
|
||||
func_802978DC(6);
|
||||
}
|
||||
}
|
||||
yaw_applyIdeal();
|
||||
}
|
||||
|
||||
void func_802B37DC(void) {
|
||||
f32 velocity[3];
|
||||
|
||||
if (D_8037D500 != 0) {
|
||||
if ((D_8037D500 == 1) && func_8029E1A8(6)) {
|
||||
_get_velocity(velocity);
|
||||
velocity[0] = 0.0f;
|
||||
velocity[2] = 0.0f;
|
||||
func_80297A0C(velocity);
|
||||
func_80297970(0.0f);
|
||||
}
|
||||
} else if (func_802987B4() == 2) {
|
||||
func_802B6FA8();
|
||||
}
|
||||
}
|
||||
|
||||
void func_802B3868(void) {
|
||||
AnimCtrl *anim_ctrl;
|
||||
f32 sp20;
|
||||
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
func_802B360C();
|
||||
if (D_8037D500 == 0) {
|
||||
sp20 = 1.4f;
|
||||
} else {
|
||||
sp20 = D_8037D504 + 0.5;
|
||||
}
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setSmoothTransition(anim_ctrl, 0);
|
||||
animctrl_setSubRange(anim_ctrl, 0.0f, 0.5823f);
|
||||
animctrl_setIndex(anim_ctrl, 0xF);
|
||||
animctrl_setDuration(anim_ctrl, sp20);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
_func_802875AC(anim_ctrl, "bsrebound.c", 0xC6);
|
||||
func_8030E58C(SFX_56_BANJO_HUI, 1.0f);
|
||||
func_8029E3C0(0, 1.5f);
|
||||
func_8028D5DC();
|
||||
}
|
||||
|
||||
|
||||
void func_802B3954(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *anim_ctrl;
|
||||
|
||||
next_state = 0;
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
if (func_8029E1A8(0) && map_get() == MAP_93_GL_DINGPOT) {
|
||||
func_8028D5F4();
|
||||
}
|
||||
func_802B37DC();
|
||||
if (func_8028B2E8()) {
|
||||
next_state = BS_20_LANDING;
|
||||
}
|
||||
if (func_8028B424() && D_8037D500 == 0) {
|
||||
next_state = BS_3D_FALL_TUMBLING;
|
||||
}
|
||||
if (animctrl_isStopped(anim_ctrl) && func_8028B094() && (D_8037D500 == 0)) {
|
||||
next_state = BS_2F_FALL;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
|
||||
void func_802B3A20(void) {
|
||||
func_802B35DC();
|
||||
gravity_reset();
|
||||
func_8028D5F4();
|
||||
}
|
||||
172
src/core2/bs/rest.c
Normal file
172
src/core2/bs/rest.c
Normal file
@@ -0,0 +1,172 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
void func_802B3A50(void) {
|
||||
f32 sp34;
|
||||
f32 plyr_pos[3];
|
||||
f32 sp1C[3];
|
||||
|
||||
if (func_80298850()) {
|
||||
_player_getPosition(plyr_pos);
|
||||
if (func_80298800(sp1C) && func_80257F18(plyr_pos, sp1C, &sp34)) {
|
||||
yaw_setIdeal(sp34);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_802B3AAC(enum asset_e anim_id, f32 anim_duration) {
|
||||
AnimCtrl *anim_ctrl;
|
||||
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
if (anim_id == 0x14A) {
|
||||
func_8029E070(1);
|
||||
switch (animctrl_getIndex(_player_getAnimCtrlPtr())) {
|
||||
case 0x14A:
|
||||
func_8028A010(anim_id, anim_duration);
|
||||
break;
|
||||
case 0x167:
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setIndex(anim_ctrl, 0x167);
|
||||
animctrl_setDuration(anim_ctrl, 0.4f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
break;
|
||||
default:
|
||||
func_8028A180(0x167, 0.5f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
func_8028A010(anim_id, anim_duration);
|
||||
}
|
||||
func_8029C7F4(1, 1, 3, 2);
|
||||
func_80297970(0.0f);
|
||||
func_802B3A50();
|
||||
}
|
||||
|
||||
|
||||
bool func_802B3BB0(void) {
|
||||
AnimCtrl *anim_ctrl;
|
||||
bool sp20;
|
||||
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
func_802B3A50();
|
||||
sp20 = FALSE;
|
||||
switch(animctrl_getIndex(anim_ctrl)){
|
||||
case 0x167:
|
||||
if (baanim_isStopped() != 0) {
|
||||
if (animctrl_isPlayedForwards(anim_ctrl) != 0) {
|
||||
func_8028A010(0x14A, 11.4f);
|
||||
} else if (func_80298850() == 0) {
|
||||
sp20 = TRUE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x14A:
|
||||
if (func_80298850() == 0) {
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setDirection(anim_ctrl, 0);
|
||||
animctrl_setIndex(anim_ctrl, 0x167);
|
||||
func_8028774C(anim_ctrl, 1.0f);
|
||||
animctrl_setDuration(anim_ctrl, 0.5f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
_func_802875AC(anim_ctrl, "bsrest.c", 0xA3);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (func_80298850() == 0) {
|
||||
sp20 = TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return sp20;
|
||||
}
|
||||
|
||||
void func_802B3CCC(void){
|
||||
func_8029E070(0);
|
||||
}
|
||||
|
||||
void func_802B3CEC(void){
|
||||
enum asset_e anim_id;
|
||||
f32 anim_duration;
|
||||
|
||||
func_8029BE10(&anim_id, &anim_duration);
|
||||
func_802B3AAC(anim_id, anim_duration);
|
||||
}
|
||||
|
||||
void func_802B3D1C(void) {
|
||||
enum bs_e next_state;
|
||||
|
||||
next_state = 0;
|
||||
if (player_inWater() != 0) {
|
||||
next_state = BS_77;
|
||||
}
|
||||
if (func_802B3BB0() != 0) {
|
||||
next_state = bs_getIdleState();
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B3D6C(void){
|
||||
func_802B3CCC();
|
||||
}
|
||||
|
||||
void func_802B3D8C(void){
|
||||
enum asset_e anim_id;
|
||||
f32 anim_duration;
|
||||
|
||||
func_8029BF00(&anim_id, &anim_duration);
|
||||
func_802B3AAC(anim_id, anim_duration);
|
||||
}
|
||||
|
||||
|
||||
void func_802B3DBC(void) {
|
||||
enum bs_e next_state;
|
||||
|
||||
next_state = 0;
|
||||
if (player_inWater() != 0) {
|
||||
next_state = BS_77;
|
||||
}
|
||||
if (func_802B3BB0() != 0) {
|
||||
next_state = bs_getIdleState();
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
|
||||
void func_802B3E0C(void){
|
||||
func_802B3CCC();
|
||||
}
|
||||
|
||||
void func_802B3E2C(void){
|
||||
enum asset_e anim_id;
|
||||
f32 anim_duration;
|
||||
|
||||
func_8029BE88(&anim_id, &anim_duration);
|
||||
func_802B3AAC(anim_id, anim_duration);
|
||||
func_8029C674();
|
||||
}
|
||||
|
||||
void func_802B3E64(void) {
|
||||
s32 next_state;
|
||||
|
||||
next_state = 0;
|
||||
func_8029C6D0();
|
||||
if (player_inWater()) {
|
||||
next_state = BS_77;
|
||||
}
|
||||
if (func_802B3BB0()) {
|
||||
next_state = bs_getIdleState();
|
||||
}
|
||||
if (map_get() == MAP_27_FP_FREEZEEZY_PEAK && miscflag_isTrue(0x14)) {
|
||||
next_state = func_8029CA94(next_state);
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
|
||||
void func_802B3EF4(void){
|
||||
func_802B3CCC();
|
||||
func_8029C748();
|
||||
}
|
||||
57
src/core2/bs/sled.c
Normal file
57
src/core2/bs/sled.c
Normal file
@@ -0,0 +1,57 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
ActorMarker *D_8037D510;
|
||||
|
||||
/* .code */
|
||||
void func_802B3F20(void){
|
||||
Actor *actor;
|
||||
|
||||
D_8037D510 = func_80296554();
|
||||
actor = marker_getActor(D_8037D510);
|
||||
actor->unk138_20 = TRUE;
|
||||
}
|
||||
|
||||
void func_802B3F60(void){
|
||||
Actor *actor;
|
||||
if(D_8037D510 != NULL){
|
||||
actor = marker_getActor(D_8037D510);
|
||||
actor->unk138_20 = FALSE;
|
||||
D_8037D510 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void bssled_init(void){
|
||||
func_802B3F20();
|
||||
func_8028A010(ASSET_228_ANIM_BANJO_SLED, 1.8f);
|
||||
func_8029C7F4(1, 1, 3, 7);
|
||||
func_80297970(0.0f);
|
||||
func_80294A8C(0);
|
||||
func_80294378(6);
|
||||
}
|
||||
|
||||
void bssled_update(void){
|
||||
s32 state = 0;
|
||||
if(D_8037D510 == NULL)
|
||||
state = BS_2F_FALL;
|
||||
bs_setState(state);
|
||||
}
|
||||
|
||||
void bssled_end(void){
|
||||
func_80294A8C(1);
|
||||
func_80294378(1);
|
||||
func_802B3F60();
|
||||
roll_setIdeal(0.0f);
|
||||
pitch_setIdeal(0.0f);
|
||||
}
|
||||
|
||||
void bssled_interrupt(void){
|
||||
if(bs_getInterruptType() == 0x28){
|
||||
func_802B3F60();
|
||||
func_8029A86C(2);
|
||||
}
|
||||
else{
|
||||
func_80296608();
|
||||
}
|
||||
}
|
||||
121
src/core2/bs/slide.c
Normal file
121
src/core2/bs/slide.c
Normal file
@@ -0,0 +1,121 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
s32 D_8037D520;
|
||||
s32 D_8037D524;
|
||||
f32 D_8037D528;
|
||||
|
||||
void func_802B40D0(void){
|
||||
f32 sp44[3];
|
||||
f32 sp38[3];
|
||||
f32 sp2C[3];
|
||||
f32 sp28;
|
||||
|
||||
_player_getPosition(sp38);
|
||||
sp38[1] += 20.0f;
|
||||
D_8037D524++;
|
||||
if(!(D_8037D524 < 3))
|
||||
D_8037D524 = 0;
|
||||
|
||||
if(D_8037D524){
|
||||
sp28 = mlNormalizeAngle(yaw_get() + 90.0f);
|
||||
func_802589E4(sp2C, sp28, randf()*10.0f + 20.0f);
|
||||
sp2C[1] = 0.0f;
|
||||
}
|
||||
|
||||
switch(D_8037D524){
|
||||
case 1://L802B41A0
|
||||
ml_vec3f_scale(sp2C, -1.0f);
|
||||
sp38[0] += sp2C[0];
|
||||
sp38[1] += sp2C[1];
|
||||
sp38[2] += sp2C[2];
|
||||
break;
|
||||
case 2://L802B41DC
|
||||
sp38[0] += sp2C[0];
|
||||
sp38[1] += sp2C[1];
|
||||
sp38[2] += sp2C[2];
|
||||
break;
|
||||
case 0://L802B4208
|
||||
break;
|
||||
}
|
||||
func_802589E4(sp44, yaw_get(), 40.0f);
|
||||
sp44[1] = 50.0f;
|
||||
func_80352CF4(sp38, sp44, 10.0f, 150.0f);
|
||||
}
|
||||
|
||||
void bsslide_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp30[3];
|
||||
f32 sp2C;
|
||||
f32 sp28;
|
||||
f32 tmp_f0;
|
||||
D_8037D520 = ANIM_BANJO_SLIDE_FRONT;
|
||||
if(player_isSliding()){
|
||||
func_80294480(sp30);
|
||||
if(func_80258108(sp30, &sp28, &sp2C)){
|
||||
tmp_f0 = mlNormalizeAngle(yaw_get() - sp28);
|
||||
if(tmp_f0 < 90.0f || 270.0f < tmp_f0){
|
||||
D_8037D520 = ANIM_BANJO_SLIDE_BACK;
|
||||
}
|
||||
}
|
||||
}
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, D_8037D520);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_STOPPED);
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
func_802875AC(aCtrl, "bsslide.c", 0x7f);
|
||||
func_8029C7F4(1,1,3,3);
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802979AC(yaw_getIdeal() ,func_80297A64());
|
||||
pitch_setAngVel(800.0f, 8.0f);
|
||||
func_80297970(0.0f);
|
||||
func_80299AAC();
|
||||
D_8037D524 = 0;
|
||||
D_8037D528 = 1.0f;
|
||||
|
||||
}
|
||||
|
||||
void bsslide_update(void){
|
||||
enum bs_e sp3C = 0;
|
||||
f32 sp30[3];
|
||||
f32 sp2C;
|
||||
f32 sp28;
|
||||
|
||||
func_80299AAC();
|
||||
D_8037D528 = max_f(D_8037D528 - time_getDelta(), 0.0f);
|
||||
if(player_isSliding()){
|
||||
func_80294480(sp30);
|
||||
if(func_80258108(sp30, &sp2C, &sp28)){
|
||||
if(D_8037D520 == 0x5A){
|
||||
yaw_setIdeal(sp2C + 180.0f);
|
||||
pitch_setIdeal(-sp28);
|
||||
}else{
|
||||
yaw_setIdeal(sp2C);
|
||||
pitch_setIdeal(sp28);
|
||||
}
|
||||
func_80297970(ml_map_f(sp28,20.0f, 60.0f, 550.0f, 700.0f));
|
||||
func_8029797C(sp2C);
|
||||
}else{
|
||||
func_80297970(500.0f);
|
||||
}
|
||||
func_802B40D0();
|
||||
}else{//L802B44C4
|
||||
sp3C = BS_1_IDLE;
|
||||
}//L802B44C8
|
||||
|
||||
if(player_inWater())
|
||||
sp3C = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
if(D_8037D528 == 0.0f && button_pressed(BUTTON_A))
|
||||
sp3C = func_8029C780();
|
||||
|
||||
bs_setState(sp3C);
|
||||
}
|
||||
|
||||
void bsslide_end(void){
|
||||
if(level_get() != 6)
|
||||
ability_use(6);
|
||||
pitch_setIdeal(0.0f);
|
||||
}
|
||||
87
src/core2/bs/splat.c
Normal file
87
src/core2/bs/splat.c
Normal file
@@ -0,0 +1,87 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
#include "bsint.h"
|
||||
|
||||
void func_80292900(f32, f32);
|
||||
void func_80250D94(f32, f32, f32);
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D530;
|
||||
|
||||
/* .code */
|
||||
void func_802B4570(void) {
|
||||
f32 i;
|
||||
|
||||
for(i = 0.0f; i < 360.0f; i += 45.0f){
|
||||
func_80292900(i, 230.0f);
|
||||
}
|
||||
}
|
||||
|
||||
void bssplat_init(void){
|
||||
s32 sp1C;
|
||||
func_8028A274(0x149, 1.1f);
|
||||
func_8029C7F4(1,1,3,3);
|
||||
func_802931DC(&sp1C);
|
||||
func_803463D4(ITEM_14_HEALTH, -sp1C);
|
||||
if(func_8029CEB0() == 4){
|
||||
FUNC_8030E624(SFX_116_DEAF_RUSTLING, 0.7f, 32000);
|
||||
FUNC_8030E624(SFX_116_DEAF_RUSTLING, 0.8f, 32000);
|
||||
func_80250D94(0.75f, 0.25f, 0.3f);
|
||||
}else{
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 32750);
|
||||
func_80250D94(1.0f, 0.5f, 0.4f);
|
||||
}
|
||||
func_80299CF4(SFX_38_BANJO_AYE_1, 1.0f, 28000);
|
||||
func_802B4570();
|
||||
func_802BB3DC(0, 45.0f, 0.71f);
|
||||
if(item_getCount(ITEM_14_HEALTH) == 0)
|
||||
bs_setState(BS_41_DIE);
|
||||
|
||||
D_8037D530 = 0;
|
||||
func_8028D5DC();
|
||||
}
|
||||
|
||||
void bssplat_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
func_80297970(max_f(0.0f, func_80297A64() - 15.0f));
|
||||
|
||||
switch (D_8037D530)
|
||||
{
|
||||
case 0://L802B4760
|
||||
if(140.0f < func_80297A64())
|
||||
func_802929F8();
|
||||
|
||||
if(func_8028B094())
|
||||
sp1C = BS_2F_FALL;
|
||||
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
func_8028A180(ASSET_D2_ANIM_BANJO_GETTING_UP, 2.25f);
|
||||
D_8037D530 = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1://L802B47C8
|
||||
if(animctrl_isAt(aCtrl, 0.63f))
|
||||
sp1C = BS_20_LANDING;
|
||||
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
sp1C = BS_1_IDLE;
|
||||
|
||||
if(func_8028B094())
|
||||
sp1C = BS_2F_FALL;
|
||||
break;
|
||||
}//L802B4808
|
||||
|
||||
if(func_8028B2E8() == 0 && player_inWater())
|
||||
sp1C = BS_2D_SWIM_IDLE;
|
||||
|
||||
bs_setState(sp1C);
|
||||
|
||||
}
|
||||
|
||||
void bssplat_end(void){
|
||||
func_8028D5F4();
|
||||
func_80297CA8();
|
||||
}
|
||||
336
src/core2/bs/stand.c
Normal file
336
src/core2/bs/stand.c
Normal file
@@ -0,0 +1,336 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
#include "bsint.h"
|
||||
|
||||
extern f32 func_8029B2E8(void);
|
||||
void func_80299234(f32, f32);
|
||||
|
||||
void func_802875AC(AnimCtrl *, char*, s32);
|
||||
|
||||
void func_802900B4(void);
|
||||
void func_80250D94(f32, f32, f32);
|
||||
|
||||
/* .data */
|
||||
u8 D_80364D20[] = {
|
||||
0x8 | 0x1,
|
||||
0x8 | 0x2,
|
||||
0x8 | 0x4,
|
||||
0x10,
|
||||
0x8 | 0x1,
|
||||
0x8 | 0x1,
|
||||
0x8 | 0x2,
|
||||
0x8 | 0x1,
|
||||
0x20,
|
||||
0x8 | 0x1,
|
||||
0x8 | 0x2,
|
||||
0x8 | 0x4,
|
||||
0x10,
|
||||
0x8 | 0x1,
|
||||
0x8 | 0x1,
|
||||
0x8 | 0x2,
|
||||
0x8 | 0x1,
|
||||
0x10,
|
||||
0x8 | 0x1,
|
||||
0x8 | 0x2,
|
||||
0x20
|
||||
};
|
||||
|
||||
//.bss
|
||||
s32 D_8037D540;
|
||||
u8 D_8037D544;
|
||||
|
||||
u32 func_802B4870(u32 arg0){
|
||||
if(++arg0 > 0x14)
|
||||
arg0 = 0;
|
||||
return arg0;
|
||||
}
|
||||
|
||||
s32 func_802B488C(s32 arg0){
|
||||
s32 retVal = arg0;
|
||||
switch(func_8029B300()){
|
||||
case 1: //L802B48CC
|
||||
retVal = BS_WALK_CREEP;
|
||||
break;
|
||||
case 2: //L802B48D4
|
||||
retVal = BS_2_WALK_SLOW;
|
||||
break;
|
||||
case 3: //L802B48D4
|
||||
retVal = BS_WALK;
|
||||
break;
|
||||
case 4: //L802B48D4
|
||||
retVal = BS_WALK_FAST;
|
||||
break;
|
||||
}
|
||||
if(button_held(BUTTON_Z))
|
||||
retVal = BS_CROUCH;
|
||||
|
||||
if(button_pressed(BUTTON_B) && can_claw())
|
||||
retVal = BS_CLAW;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
retVal = func_8029C780();
|
||||
|
||||
if(func_80294F78())
|
||||
retVal = func_802926C0();
|
||||
|
||||
if(player_isSliding())
|
||||
retVal = BS_SLIDE;
|
||||
|
||||
retVal = func_8029CA94(retVal);
|
||||
|
||||
if(player_inWater())
|
||||
retVal = BS_2D_SWIM_IDLE;
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
void bsstand_init(void){
|
||||
if(bsclimb_inSet(bs_getPrevState()))
|
||||
climbRelease();
|
||||
|
||||
func_8028A180(0x6F, 5.5f);
|
||||
func_8029C7F4(1,1,1,2);
|
||||
func_80297970(0.0f);
|
||||
func_802900B4();
|
||||
D_8037D540 = 0;
|
||||
D_8037D544 = 0;
|
||||
}
|
||||
|
||||
void func_802B4A10(AnimCtrl *arg0){
|
||||
if(animctrl_isAt(arg0, 0.2057f)){ //(30/145)
|
||||
FUNC_8030E624(SFX_21_EGG_BOUNCE_1, 1.8f, 16000);
|
||||
func_80250D94(0.5f, 0.25f, 0.4f);
|
||||
}//L802B4A54
|
||||
|
||||
if(animctrl_isAt(arg0, 0.2057f)) //(30/145)
|
||||
func_80292E48();
|
||||
//L802B4A78
|
||||
|
||||
if(animctrl_isAt(arg0, 0.2555f)){ //(37/145)
|
||||
FUNC_8030E624(SFX_21_EGG_BOUNCE_1, 1.8f, 16000);
|
||||
func_80250D94(0.5f, 0.25f, 0.4f);
|
||||
}//L802B4AB0
|
||||
|
||||
if(animctrl_isAt(arg0, 0.2896f)){ //(42/145)
|
||||
FUNC_8030E624(SFX_21_EGG_BOUNCE_1, 1.8f, 16000);
|
||||
func_80250D94(0.5f, 0.25f, 0.4f);
|
||||
}//L802B4AEC
|
||||
|
||||
if(animctrl_isAt(arg0, 0.3f)){ //(43.5/145)?
|
||||
FUNC_8030E624(SFX_62_BANJO_ERGHH, 1.0f, 28000);
|
||||
}//L802B4B0C
|
||||
|
||||
if(animctrl_isAt(arg0, 0.3607f)){
|
||||
func_80292EA4();
|
||||
}//L802B4B30
|
||||
|
||||
if(animctrl_isAt(arg0, 0.4183f)){
|
||||
func_8030E58C(SFX_3F1_UNKNOWN, 1.6f);
|
||||
}//L802B4B50
|
||||
|
||||
if(animctrl_isAt(arg0, 0.455f)){
|
||||
func_8030E58C(SFX_3F1_UNKNOWN, 1.45f);
|
||||
}//L802B4B74
|
||||
|
||||
if(animctrl_isAt(arg0, 0.49f)){
|
||||
func_8030E58C(SFX_3F1_UNKNOWN, 1.4f);
|
||||
}//L802B4B98
|
||||
|
||||
if(animctrl_isAt(arg0, 0.5397f)){
|
||||
func_802900D8();
|
||||
}//L802B4BBC
|
||||
|
||||
if(animctrl_isAt(arg0, 0.6619f)){
|
||||
FUNC_8030E624(SFX_21_EGG_BOUNCE_1, 1.8f, 16000);
|
||||
func_80250D94(0.5f, 0.25f, 0.4f);
|
||||
}//L802B4BF4
|
||||
|
||||
if(animctrl_isAt(arg0, 0.6688f))
|
||||
func_80292E48();
|
||||
//L802B4C18
|
||||
|
||||
if(animctrl_isAt(arg0, 0.6964f)){
|
||||
FUNC_8030E624(SFX_21_EGG_BOUNCE_1, 1.8f, 16000);
|
||||
func_80250D94(0.5f, 0.25f, 0.4f);
|
||||
}//L802B4C50
|
||||
|
||||
if(animctrl_isAt(arg0, 0.7747f))
|
||||
func_80292EA4();
|
||||
//L802B4C74
|
||||
|
||||
if(animctrl_isAt(arg0, 0.7822f)){
|
||||
FUNC_8030E624(SFX_6F_BANJO_HEADSCRATCH, 1.0f, 14000);
|
||||
}//L802B4C90
|
||||
|
||||
if(animctrl_isAt(arg0, 0.8322f)){
|
||||
FUNC_8030E624(SFX_6F_BANJO_HEADSCRATCH, 1.0f, 14000);
|
||||
}//L802B4CB0
|
||||
|
||||
if(animctrl_isAt(arg0, 0.8669f)){
|
||||
FUNC_8030E624(SFX_6F_BANJO_HEADSCRATCH, 1.0f, 14000);
|
||||
}//L802B4CD0
|
||||
|
||||
if(animctrl_isAt(arg0, 0.9048f)){
|
||||
FUNC_8030E624(SFX_6F_BANJO_HEADSCRATCH, 1.0f, 14000);
|
||||
}//L802B4CF0
|
||||
|
||||
if(animctrl_isAt(arg0, 0.9649f)){
|
||||
func_802900D8();
|
||||
}//L802B4CF0
|
||||
}
|
||||
|
||||
void bsstand_update(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *anim_ctrl;
|
||||
f32 sp1C;
|
||||
s32 sp18;
|
||||
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
if ((func_8029B300() == 0) && (func_8029B2E8() > 0.0f)) {
|
||||
D_8037D544 = 1;
|
||||
func_802991A8(3);
|
||||
func_80299234(200.0f, 14.0f);
|
||||
} else {
|
||||
if (D_8037D544 != 0) {
|
||||
yaw_setIdeal(yaw_get());
|
||||
}
|
||||
D_8037D544 = 0;
|
||||
func_802991A8(1);
|
||||
}
|
||||
next_state = func_802B488C(0);
|
||||
sp18 = D_80364D20[D_8037D540];
|
||||
if (sp18 & 8) {
|
||||
if (sp18 & 4) {
|
||||
if (animctrl_isAt(anim_ctrl, 0.0909f)) func_80299BD4();
|
||||
if (animctrl_isAt(anim_ctrl, 0.0909f)) func_8029E070(1);
|
||||
if (animctrl_isAt(anim_ctrl, 0.6818f)) func_8029E070(0);
|
||||
}//L802B4E70
|
||||
if (sp18 & 2) {
|
||||
if (animctrl_isAt(anim_ctrl, 0.7727f)) func_8029E070(1);
|
||||
if (animctrl_isAt(anim_ctrl, 0.9999f)) func_8029E070(0);
|
||||
}//L802B50E4
|
||||
} else if (sp18 & 0x20) {
|
||||
if (animctrl_getIndex(anim_ctrl) == 0x95) {
|
||||
func_802B4A10(anim_ctrl);
|
||||
if (animctrl_isAt(anim_ctrl, 0.37f)) {
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setTransitionDuration(anim_ctrl, 0.1f);
|
||||
animctrl_setIndex(anim_ctrl, 0xF6);
|
||||
animctrl_setDuration(anim_ctrl, 5.0f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(anim_ctrl, "bsstand.c", 0x170);
|
||||
}
|
||||
} else {
|
||||
if (animctrl_isAt(anim_ctrl, 0.069f)) func_80299D2C(SFX_4B_GULPING, 1.4f, 0x4650);
|
||||
if (animctrl_isAt(anim_ctrl, 0.1677f)) func_80299D2C(SFX_8B_KAZOOIE_RAWW, 1.0f, 0x4650);
|
||||
if (animctrl_isAt(anim_ctrl, 0.2441f)) func_80299D2C(SFX_8B_KAZOOIE_RAWW, 1.03f, 0x4650);
|
||||
if (animctrl_isAt(anim_ctrl, 0.3141f)) func_80299D2C(SFX_8B_KAZOOIE_RAWW, 1.06f, 0x4650);
|
||||
if (animctrl_isAt(anim_ctrl, 0.3859f)) func_80299D2C(SFX_8B_KAZOOIE_RAWW, 1.5f, 0x7D00);
|
||||
if (animctrl_isAt(anim_ctrl, 0.414f)) func_80299CF4(SFX_2D_KABOING, 1.0f, 0x4650);
|
||||
if (animctrl_isAt(anim_ctrl, 0.55f)) func_80299CF4(SFX_A3_BANJO_DOUBLE_COUGH, 1.0f, 0x6D60);
|
||||
if (animctrl_isAt(anim_ctrl, 0.6187f)) func_80299D2C(SFX_A0_COUGHING, 1.7f, 0x4650);
|
||||
if (animctrl_isAt(anim_ctrl, 0.7108f)) func_80299D2C(SFX_A0_COUGHING, 1.6f, 0x4650);
|
||||
if (animctrl_isAt(anim_ctrl, 0.7927f)) func_80299D2C(SFX_A0_COUGHING, 1.5f, 0x4650);
|
||||
}
|
||||
} else /*L802B50D4*/if ((sp18 & 0x10) != 0) {
|
||||
func_802B4A10(anim_ctrl);
|
||||
}
|
||||
if (animctrl_isAt(anim_ctrl, 0.9999f) != 0) {
|
||||
D_8037D540 = func_802B4870(D_8037D540);
|
||||
sp18 = D_80364D20[D_8037D540];
|
||||
if (sp18 & 0x10) {
|
||||
func_8028A180(0x95, 5.5f);
|
||||
_func_802875AC(anim_ctrl, "bsstand.c", 0x1AB);
|
||||
func_8029E070(1);
|
||||
func_802900FC();
|
||||
} else if (sp18 & 0x20) {
|
||||
func_8028A180(0x95, 5.5f);
|
||||
func_8029E070(1);
|
||||
func_802900FC();
|
||||
} else if (sp18 & 8) {
|
||||
if (animctrl_getIndex(anim_ctrl) == 0x6F) {
|
||||
sp1C = animctrl_getAnimTimer(anim_ctrl);
|
||||
} else {
|
||||
sp1C = 0.0f;
|
||||
func_802900B4();
|
||||
}
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setIndex(anim_ctrl, 0x6F);
|
||||
animctrl_setDuration(anim_ctrl, 5.5f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_LOOP);
|
||||
func_8028774C(anim_ctrl, sp1C);
|
||||
func_802875AC(anim_ctrl, "bsstand.c", 0x1C3);
|
||||
func_8029E070(0);
|
||||
}
|
||||
}
|
||||
if (func_8028B094() != 0) {
|
||||
next_state = BS_2F_FALL;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bsstand_end(void){
|
||||
func_8029E070(0);
|
||||
func_802900FC();
|
||||
func_80292EA4();
|
||||
}
|
||||
|
||||
//bsStand_Land_init
|
||||
void bsstand_landing_init(void){
|
||||
func_8029C7F4(1,1,1,2);
|
||||
func_80297970(0.0f);
|
||||
}
|
||||
|
||||
//bsStand_Land_update
|
||||
void bsstand_landing_update(void){
|
||||
s32 sp1C = 0;
|
||||
AnimCtrl * sp18 = _player_getAnimCtrlPtr();
|
||||
|
||||
if(animctrl_getIndex(sp18) == 0xd2){
|
||||
if(animctrl_isAt(sp18, 0.8264f)){
|
||||
func_80299CF4(SFX_6F_BANJO_HEADSCRATCH, 1.0f, 0x36b0);
|
||||
}
|
||||
|
||||
//L802B52F8
|
||||
if(animctrl_isAt(sp18, 0.8864f)){
|
||||
func_80299CF4(SFX_6F_BANJO_HEADSCRATCH, 1.0f, 0x36b0);
|
||||
}
|
||||
}
|
||||
//L802B531C
|
||||
if(animctrl_isStopped(sp18))
|
||||
sp1C = BS_1_IDLE;
|
||||
|
||||
bs_setState(func_802B488C(sp1C));
|
||||
}
|
||||
|
||||
|
||||
///BREAK???
|
||||
void func_802B5350(void){
|
||||
s32 sp1C = bs_getInterruptType();
|
||||
if(sp1C == 0xd){
|
||||
bs_setState(0x52);
|
||||
}
|
||||
if(sp1C == 0x7){
|
||||
if(_player_getTransformation() != TRANSFORM_1_BANJO)
|
||||
func_8029A86C(1);
|
||||
else{
|
||||
func_802948F8(func_8028D688());
|
||||
bs_setState(BS_3A_CARRY_IDLE);
|
||||
}
|
||||
}
|
||||
else if(sp1C == 0x12){//L802B53D0
|
||||
func_8029A86C(1);
|
||||
if( _player_getTransformation() == TRANSFORM_1_BANJO && !miscflag_isTrue(0xF) && func_802916CC(0)){
|
||||
func_8028DE6C(carriedObject_getActorID());
|
||||
func_8029A86C(2);
|
||||
}
|
||||
}
|
||||
else if(sp1C == 0x8){//L802B5438
|
||||
func_8029A86C(2);
|
||||
bs_setState(0x3C);
|
||||
}else{
|
||||
func_802948E0();
|
||||
func_80296608();
|
||||
}
|
||||
}
|
||||
49
src/core2/bs/surf.c
Normal file
49
src/core2/bs/surf.c
Normal file
@@ -0,0 +1,49 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
s32 D_8037D560;
|
||||
|
||||
/* .code */
|
||||
void func_802B5FD0(void) {
|
||||
AnimCtrl *anim_ctrl;
|
||||
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setIndex(anim_ctrl, 0x69);
|
||||
animctrl_setDuration(anim_ctrl, 1.8f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_LOOP);
|
||||
_func_802875AC(anim_ctrl, "bssurf.c", 0x33);
|
||||
func_8029C7F4(1, 1, 3, 2);
|
||||
func_80297970(0.0f);
|
||||
D_8037D560 = 1;
|
||||
}
|
||||
|
||||
void func_802B6064(void) {
|
||||
enum bs_e next_state;
|
||||
|
||||
next_state = 0;
|
||||
if (button_pressed(BUTTON_A)) {
|
||||
next_state = BS_5_JUMP;
|
||||
}
|
||||
if (D_8037D560 == 0) {
|
||||
next_state = BS_1_IDLE;
|
||||
}
|
||||
D_8037D560 = 0;
|
||||
if (miscflag_isTrue(6)) {
|
||||
next_state = BS_53_TIMEOUT;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B60D0(void){}
|
||||
|
||||
void func_802B60D8(void) {
|
||||
if (bs_getInterruptType() == 0xD) {
|
||||
D_8037D560 = 1;
|
||||
func_8029A86C(2);
|
||||
return;
|
||||
}
|
||||
func_80296608();
|
||||
}
|
||||
315
src/core2/bs/swim.c
Normal file
315
src/core2/bs/swim.c
Normal file
@@ -0,0 +1,315 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern void func_80295328(s32, f32);
|
||||
|
||||
bool bsswim_inset(enum bs_e state_id);
|
||||
|
||||
/* .data */
|
||||
f32 D_80364D40 = 30.0f;
|
||||
f32 D_80364D44 = 300.0f;
|
||||
f32 D_80364D48 = 1.2f;
|
||||
f32 D_80364D4C = 0.7f;
|
||||
s16 D_80364D50[10] = {
|
||||
0x57,
|
||||
0x57,
|
||||
0x57,
|
||||
0x58,
|
||||
0x57,
|
||||
0x58,
|
||||
0x57,
|
||||
0x57,
|
||||
0x58,
|
||||
0x58
|
||||
};
|
||||
|
||||
/* .bss */
|
||||
u32 D_8037D550;
|
||||
|
||||
/* .code */
|
||||
void func_802B5480(void) {
|
||||
f32 sp2C[3];
|
||||
ParticleEmitter *sp28;
|
||||
|
||||
if (func_80294574()) {
|
||||
if (randf() > 0.5) {
|
||||
func_8029223C(sp2C);
|
||||
} else {
|
||||
func_80292260(sp2C);
|
||||
}
|
||||
sp28 = func_8029B950(&sp2C, 0.0f);
|
||||
particleEmitter_setParticleVelocityRange(sp28, -60.0f, -100.0f, -60.0f, 60.0f, 0.0f, 60.0f);
|
||||
particleEmitter_emitN(sp28, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802B5538(AnimCtrl *arg0) {
|
||||
enum asset_e sp24;
|
||||
|
||||
sp24 = D_80364D50[D_8037D550];
|
||||
if (animctrl_getIndex(arg0) != sp24) {
|
||||
func_8028774C(arg0, animctrl_getAnimTimer(arg0));
|
||||
animctrl_setIndex(arg0, sp24);
|
||||
_func_802875AC(arg0, "bsswim.c", 0x79);
|
||||
}
|
||||
D_8037D550++;
|
||||
if (D_8037D550 >= 10) {
|
||||
D_8037D550 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802B55DC(void) {
|
||||
f32 sp1C;
|
||||
|
||||
sp1C = func_8029B30C();
|
||||
if (func_8029B300() == 0) {
|
||||
func_80297970(0.0f);
|
||||
return;
|
||||
}
|
||||
func_80297970(func_80257C48(sp1C, D_80364D40, D_80364D44));
|
||||
}
|
||||
|
||||
void func_802B563C(void) {
|
||||
if (level_get() == LEVEL_9_RUSTY_BUCKET_BAY) {
|
||||
func_8035644C(0xAB);
|
||||
} else if (map_get() == MAP_46_CCW_WINTER) {
|
||||
func_8035644C(0xDD);
|
||||
}
|
||||
gravity_set(100.0f);
|
||||
func_80297BF8(133.33f);
|
||||
func_8029B324(0, 0.03f);
|
||||
func_8029B324(1, 1.0f);
|
||||
func_80294378(3);
|
||||
}
|
||||
|
||||
|
||||
void func_802B56D4(void) {
|
||||
if (!bsswim_inset(bs_getNextState())) {
|
||||
func_80297B94();
|
||||
gravity_reset();
|
||||
func_8029B0C0();
|
||||
func_80294378(1);
|
||||
}
|
||||
}
|
||||
|
||||
bool bsswim_inset(enum bs_e state_id){
|
||||
return state_id == BS_2D_SWIM_IDLE
|
||||
|| state_id == BS_2E_SWIM
|
||||
|| state_id == BS_4C_LANDING_IN_WATER
|
||||
|| state_id == BS_77
|
||||
|| state_id == BS_96_SWIM_LOCKED
|
||||
;
|
||||
}
|
||||
|
||||
void func_802B5774(void) {
|
||||
AnimCtrl *anim_ctrl;
|
||||
s32 prev_state;
|
||||
f32 transition_duration;
|
||||
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
prev_state = bs_getPrevState();
|
||||
if (prev_state == BS_4C_LANDING_IN_WATER) {
|
||||
transition_duration = 0.8f;
|
||||
} else {
|
||||
transition_duration = 0.5f;
|
||||
}
|
||||
if (bsbswim_inSet(prev_state) != 0) {
|
||||
if (prev_state == BS_54_SWIM_DIE) {
|
||||
func_80299CF4(SFX_AF_BANJO_CATCHING_BREATH, 1.0f, 30000);
|
||||
} else {
|
||||
func_80299CF4(SFX_AF_BANJO_CATCHING_BREATH, 1.0f, (s32) ml_map_f(item_getCount(ITEM_17_AIR), 3600.0f, 0.0f, 8000.0f, 30000.0f));
|
||||
}
|
||||
func_80295328(4, 0.7f);
|
||||
}
|
||||
if ((animctrl_getIndex(anim_ctrl) == 0x57) && (prev_state != BS_4C_LANDING_IN_WATER)) {
|
||||
animctrl_setSmoothTransition(anim_ctrl, 0);
|
||||
animctrl_setIndex(anim_ctrl, 0x57);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_LOOP);
|
||||
animctrl_setDuration(anim_ctrl, 1.2f);
|
||||
} else {
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setTransitionDuration(anim_ctrl, transition_duration);
|
||||
animctrl_setIndex(anim_ctrl, 0x57);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_LOOP);
|
||||
func_8028774C(anim_ctrl, 0.3f);
|
||||
animctrl_setDuration(anim_ctrl, 1.2f);
|
||||
func_802875AC(anim_ctrl, "bsswim.c", 0xFD);
|
||||
}
|
||||
func_8029C7F4(1, 3, 3, 2);
|
||||
func_80299234(500.0f, 5.0f);
|
||||
func_80297970(0.0f);
|
||||
func_802B563C();
|
||||
D_8037D550 = 0;
|
||||
}
|
||||
|
||||
void func_802B5950(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *anim_ctrl;
|
||||
|
||||
next_state = 0;
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
if ((func_8023DB4C(7) == 0) && ((f64) randf() < 0.5)) {
|
||||
func_8029C304(1);
|
||||
}
|
||||
if ((func_8023DB4C(7) == 0) && ((f64) randf() < 0.5)) {
|
||||
func_802B5480();
|
||||
}
|
||||
if (animctrl_isAt(anim_ctrl, 0.01f) != 0) {
|
||||
func_8030EC20(SFX_DC_IDLE_PADDLING, 0.85f, 1.15f, 16000, 16000);
|
||||
}
|
||||
if (animctrl_isAt(anim_ctrl, 0.4348f) != 0) {
|
||||
func_802B5538(anim_ctrl);
|
||||
}
|
||||
if (func_8029B300() == 1) {
|
||||
next_state = BS_2E_SWIM;
|
||||
}
|
||||
if (!player_inWater()) {
|
||||
next_state = BS_1_IDLE;
|
||||
}
|
||||
if (func_80294F78()) {
|
||||
next_state = func_802926C0();
|
||||
}
|
||||
if (should_dive()) {
|
||||
next_state = BS_30_DIVE_ENTER;
|
||||
}
|
||||
if (func_80294524() && button_pressed(BUTTON_A)) {
|
||||
next_state = BS_5_JUMP;
|
||||
}
|
||||
if (miscflag_isTrue(6) || miscflag_isTrue(0x14)) {
|
||||
next_state = BS_D_TIMEOUT;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B5AF8(void){
|
||||
func_802B56D4();
|
||||
}
|
||||
|
||||
void func_802B5B18(void) {
|
||||
AnimCtrl *anim_ctrl;
|
||||
f32 anim_duration;
|
||||
|
||||
anim_ctrl = _player_getAnimCtrlPtr();
|
||||
if (bs_getPrevState() == BS_4C_LANDING_IN_WATER) {
|
||||
anim_duration = 0.8f;
|
||||
} else {
|
||||
anim_duration = 0.4f;
|
||||
}
|
||||
if (animctrl_getIndex(anim_ctrl) != 0x39) {
|
||||
animctrl_reset(anim_ctrl);
|
||||
animctrl_setIndex(anim_ctrl, 0x39);
|
||||
animctrl_setTransitionDuration(anim_ctrl, anim_duration);
|
||||
func_8028774C(anim_ctrl, 0.8f);
|
||||
animctrl_setPlaybackType(anim_ctrl, ANIMCTRL_LOOP);
|
||||
func_802875AC(anim_ctrl, "bsswim.c", 0x164);
|
||||
}
|
||||
func_80289F10(2);
|
||||
func_80289EA8(0.3f, 1.5f);
|
||||
func_80289EC8(D_80364D40, D_80364D44, D_80364D48, D_80364D4C);
|
||||
func_802991A8(3);
|
||||
func_80299234(500.0f, 5.0f);
|
||||
func_8029957C(1);
|
||||
func_802978DC(2);
|
||||
}
|
||||
|
||||
void func_802B5C40(void) {
|
||||
s32 next_state;
|
||||
AnimCtrl *anim_ctrl;
|
||||
f32 sp1C[3];
|
||||
|
||||
next_state = 0;
|
||||
anim_ctrl =_player_getAnimCtrlPtr();
|
||||
if (animctrl_isAt(anim_ctrl, 0.38f)) {
|
||||
func_8029C4E4(1);
|
||||
}
|
||||
if (animctrl_isAt(anim_ctrl, 0.88f)) {
|
||||
func_8029C4E4(0);
|
||||
}
|
||||
if (animctrl_isAt(anim_ctrl, 0.2f)) {
|
||||
func_8030EB88(SFX_12_WATER_PADDLING_1, 0.9f, 1.1f);
|
||||
}
|
||||
if (animctrl_isAt(anim_ctrl, 0.7f)) {
|
||||
func_8030EB88(SFX_12_WATER_PADDLING_1, 0.9f, 1.1f);
|
||||
}
|
||||
func_802B55DC();
|
||||
if (func_8029B300() == 0) {
|
||||
next_state = BS_2D_SWIM_IDLE;
|
||||
}
|
||||
if (player_inWater() == 0) {
|
||||
next_state = BS_1_IDLE;
|
||||
}
|
||||
if ((func_80294530() != 0) && (can_dive() != 0)) {
|
||||
func_802944D0(sp1C);
|
||||
if (sp1C[1] < -0.7) {
|
||||
if ((func_80294500() - player_getYPosition()) > 90.0f) {
|
||||
next_state = BS_30_DIVE_ENTER;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (should_dive() != 0) {
|
||||
next_state = BS_30_DIVE_ENTER;
|
||||
}
|
||||
if (func_80294524() && button_pressed(BUTTON_A)) {
|
||||
next_state = BS_5_JUMP;
|
||||
}
|
||||
if (miscflag_isTrue(6) || miscflag_isTrue(0x14)) {
|
||||
next_state = BS_D_TIMEOUT;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B5E10(void){
|
||||
func_802B56D4();
|
||||
}
|
||||
|
||||
void func_802B5E30(void) {
|
||||
f32 sp34;
|
||||
f32 plyr_pos[3];
|
||||
f32 sp1C[3];
|
||||
|
||||
if (func_80298850() != 0) {
|
||||
_player_getPosition(plyr_pos);
|
||||
if (func_80298800(sp1C) && func_80257F18(plyr_pos, sp1C, &sp34)) {
|
||||
yaw_setIdeal(sp34);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_802B5E8C(void) {
|
||||
func_8028A010(0x57, 1.2f);
|
||||
func_8029C7F4(1, 3, 3, 2);
|
||||
func_80299234(500.0f, 5.0f);
|
||||
func_80297970(0.0f);
|
||||
func_802B563C();
|
||||
func_802B5E30();
|
||||
}
|
||||
|
||||
void func_802B5EFC(void) {
|
||||
enum bs_e next_state;
|
||||
|
||||
next_state = 0;
|
||||
if (func_80298850() == 0) {
|
||||
next_state = BS_2D_SWIM_IDLE;
|
||||
}
|
||||
func_802B5E30();
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B5F38(void){
|
||||
func_802B56D4();
|
||||
}
|
||||
|
||||
void func_802B5F58(void){
|
||||
func_802B563C();
|
||||
bsdrone_init();
|
||||
}
|
||||
|
||||
void func_802B5F80(void){
|
||||
bsdrone_update();
|
||||
}
|
||||
|
||||
void func_802B5FA0(void){
|
||||
bsdrone_end();
|
||||
func_802B56D4();
|
||||
}
|
||||
74
src/core2/bs/throw.c
Normal file
74
src/core2/bs/throw.c
Normal file
@@ -0,0 +1,74 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D580;
|
||||
|
||||
/* .code */
|
||||
void bsthrow_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, 0x11b);
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsthrow.c", 0x2e);
|
||||
|
||||
func_80289F10(1);
|
||||
func_802991A8(1);
|
||||
func_8029957C(3);
|
||||
func_802978DC(3);
|
||||
func_80297970(0.0f);
|
||||
func_80297A0C(0);
|
||||
D_8037D580 = 0;
|
||||
}
|
||||
|
||||
void bsthrow_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp34[3];
|
||||
f32 sp28[3];
|
||||
f32 sp24;
|
||||
ActorMarker *sp20 = func_802948EC();
|
||||
|
||||
if(D_8037D580 == 0 && sp20 != NULL)
|
||||
func_802948F8(sp20);
|
||||
|
||||
_player_getPosition(&sp28);
|
||||
func_80294A1C(&sp34);
|
||||
func_80257F18(&sp28, &sp34, &sp24);
|
||||
yaw_setIdeal(sp24);
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.35f) && sp20){
|
||||
D_8037D580 = 1;
|
||||
marker_getActor(sp20)->unk138_21 = 1;
|
||||
}
|
||||
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
next_state = BS_1_IDLE;
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bsthrow_end(void){
|
||||
D_8037D580 = 0;
|
||||
if(bs_getNextState() == BS_1_IDLE){
|
||||
func_802917E4(0, 0.14f);
|
||||
func_802917E4(1, 0.28f);
|
||||
}
|
||||
}
|
||||
|
||||
void bsthrow_interrupt(void){
|
||||
if(bs_getInterruptType() == 0x12){
|
||||
if(D_8037D580 == 0){
|
||||
func_8028DE6C(carriedObject_getActorID());
|
||||
}
|
||||
else{
|
||||
func_8029A86C(1);
|
||||
}
|
||||
}
|
||||
else{ //L802B6748
|
||||
func_80296608();
|
||||
}
|
||||
}
|
||||
75
src/core2/bs/timeout.c
Normal file
75
src/core2/bs/timeout.c
Normal file
@@ -0,0 +1,75 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
void func_80292E80(s32, f32);
|
||||
f32 func_8029B41C(void);
|
||||
void func_802BF2C0(f32);
|
||||
|
||||
void func_802B6270(void){
|
||||
func_8028A180(0x77, 3.2f);
|
||||
func_8029C7F4(1,1,3,2);
|
||||
func_80297970(0.0f);
|
||||
func_802914CC(0xd);
|
||||
yaw_setIdeal(func_8029B41C() + 35.0f);
|
||||
func_802BF2C0(80.0f);
|
||||
func_8025A58C(0,0xfa0);
|
||||
func_8025A70C(COMUSIC_3C_MINIGAME_LOSS);
|
||||
func_8024BD08(0);
|
||||
func_8029E070(1);
|
||||
func_8028D5DC();
|
||||
}
|
||||
|
||||
void func_802B6314(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
if(animctrl_isAt(aCtrl, 0.0625f))
|
||||
func_80292E48();
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.18f))
|
||||
FUNC_8030E624(SFX_3EB_UNKNOWN, 1.0f, 18000);
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.8421f)){
|
||||
func_80292E80(0, 0.3f);
|
||||
func_80292E80(1, 0.3f);
|
||||
}
|
||||
|
||||
if(animctrl_isAt(aCtrl, 0.84f))
|
||||
func_8029B6F0();
|
||||
}
|
||||
|
||||
void func_802B63C8(void){
|
||||
func_80292EA4();
|
||||
func_80291548();
|
||||
func_8024BD08(1);
|
||||
}
|
||||
|
||||
void func_802B63F8(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
func_8029C848(aCtrl);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_LOOP);
|
||||
func_802875AC(aCtrl, "bstimeout.c", 0x7e);
|
||||
func_8029C7F4(1,1,3,7);
|
||||
func_80297970(0.0f);
|
||||
func_802914CC(0xd);
|
||||
yaw_setIdeal(func_8029B41C() + 35.0f);
|
||||
func_802BF2C0(80.0f);
|
||||
func_8025A58C(0,0xfa0);
|
||||
func_8025A70C(COMUSIC_3C_MINIGAME_LOSS);
|
||||
func_8024BD08(0);
|
||||
func_8028D5DC();
|
||||
func_8029E3C0(0, 2.9f);
|
||||
}
|
||||
|
||||
void func_802B64D0(void){
|
||||
if(func_8029E1A8(0))
|
||||
func_8029B6F0();
|
||||
}
|
||||
|
||||
void func_802B6500(void){
|
||||
func_8029E070(0);
|
||||
func_80291548();
|
||||
func_8024BD08(1);
|
||||
func_8025A904();
|
||||
}
|
||||
70
src/core2/bs/turn.c
Normal file
70
src/core2/bs/turn.c
Normal file
@@ -0,0 +1,70 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .data */
|
||||
f32 D_8037D590;
|
||||
s32 D_8037D594;
|
||||
|
||||
/* .code */
|
||||
void bsturn_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp28[3];
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_TURN);
|
||||
animctrl_setDuration(aCtrl, 0.3f);
|
||||
animctrl_setTransitionDuration(aCtrl,0.1f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bsturn.c", 0x37);
|
||||
func_80289F10(1);
|
||||
func_802991A8(1);
|
||||
func_8029957C(2);
|
||||
func_802978DC(3);
|
||||
_get_velocity(&sp28);
|
||||
D_8037D590 = gu_sqrtf(sp28[0]*sp28[0] + sp28[2]*sp28[2]);
|
||||
func_8030EBC8(SFX_19_BANJO_LANDING_08, 0.95f, 1.05f, 0x7530, 0x7d00);
|
||||
D_8037D594 = 0;
|
||||
}
|
||||
|
||||
void bsturn_update(void){
|
||||
enum bs_e sp2C = 0;
|
||||
|
||||
func_80297970(ml_map_f(animctrl_getAnimTimer(_player_getAnimCtrlPtr()), 0.18f, 1.0f, D_8037D590, 0.0f));
|
||||
|
||||
D_8037D594++;
|
||||
if(!(D_8037D594 < 6))
|
||||
D_8037D594 = -1;
|
||||
|
||||
switch(D_8037D594){
|
||||
case -1://L802B68DC
|
||||
func_802927E0(func_80297A7C() - 10.0f, func_80297AB8()*0.88);
|
||||
break;
|
||||
case 0://L802B691C
|
||||
func_802927E0(func_80297A7C(), func_80297AB8());
|
||||
break;
|
||||
case 1://L802B6940
|
||||
func_802927E0(func_80297A7C() + 10.0f, func_80297AB8()*0.88);
|
||||
break;
|
||||
}//L802B6978
|
||||
|
||||
if(animctrl_isStopped(_player_getAnimCtrlPtr()))
|
||||
sp2C = BS_WALK_FAST;
|
||||
|
||||
if(button_held(BUTTON_Z))
|
||||
sp2C = BS_CROUCH;
|
||||
|
||||
if(button_pressed(BUTTON_B))
|
||||
sp2C = BS_CLAW;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
sp2C = func_8029C780();
|
||||
|
||||
bs_setState(sp2C);
|
||||
}
|
||||
|
||||
void bsturn_end(void){
|
||||
yaw_set(mlNormalizeAngle(yaw_get() - 180.0f));
|
||||
pitch_setIdeal(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
}
|
||||
84
src/core2/bs/twirl.c
Normal file
84
src/core2/bs/twirl.c
Normal file
@@ -0,0 +1,84 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037D5A0;
|
||||
u8 D_8037D5A4;
|
||||
u8 _bstwirlHitboxActive;
|
||||
|
||||
/* .code */
|
||||
int bstwirl_hitboxActive(void){
|
||||
return _bstwirlHitboxActive;
|
||||
}
|
||||
|
||||
void bstwirl_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, 0);
|
||||
animctrl_setIndex(aCtrl, ANIM_BANJO_ROLL);
|
||||
animctrl_setDuration(aCtrl, 0.9f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bstwirl.c", 0x46);
|
||||
func_80289F10(1);
|
||||
func_802991A8(1);
|
||||
func_8029957C(3);
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
func_802978DC(3);
|
||||
D_8037D5A0 = func_80297A64();
|
||||
func_80297970(600.0f);
|
||||
func_80299CF4(SFX_32_BANJO_EGHEE, 1.0f, 0x6590);
|
||||
_bstwirlHitboxActive = TRUE;
|
||||
func_8029E3C0(0, 0.01f);
|
||||
D_8037D5A4 = 0;
|
||||
}
|
||||
|
||||
void bstwirl_update(void){
|
||||
enum bs_e sp1C = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
switch(D_8037D5A4){
|
||||
case 0:
|
||||
D_8037D5A4 = 1;
|
||||
break;
|
||||
case 1:
|
||||
D_8037D5A4 = 2;
|
||||
break;
|
||||
case 2:
|
||||
if(func_8029E1A8(0)){
|
||||
func_8029AE74(0);
|
||||
func_8029E3C0(0, 0.12f);
|
||||
}
|
||||
if(animctrl_isAt(aCtrl, 0.8011f)){
|
||||
animctrl_setDuration(aCtrl, 2.5f);
|
||||
func_80297970(0.0f);
|
||||
_bstwirlHitboxActive = 0;
|
||||
D_8037D5A4 = 3;
|
||||
}
|
||||
//??? missing break
|
||||
case 3://L802B6C38
|
||||
if(animctrl_isStopped(aCtrl))
|
||||
sp1C = BS_1_IDLE;
|
||||
break;
|
||||
}//L802B6C4C
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
sp1C = func_8029C780();
|
||||
|
||||
if(0.6 < animctrl_getAnimTimer(aCtrl) && !func_8028B2E8())
|
||||
sp1C = BS_2F_FALL;
|
||||
|
||||
if(player_inWater())
|
||||
sp1C = BS_4C_LANDING_IN_WATER;
|
||||
|
||||
sp1C = func_8029CA94(sp1C);
|
||||
|
||||
bs_setState(sp1C);
|
||||
}
|
||||
|
||||
void bstwirl_end(void){
|
||||
ability_use(0xC);
|
||||
_bstwirlHitboxActive = FALSE;
|
||||
}
|
||||
505
src/core2/bs/walk.c
Normal file
505
src/core2/bs/walk.c
Normal file
@@ -0,0 +1,505 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
#include "animation.h"
|
||||
|
||||
void func_80289EA8(f32, f32);
|
||||
f32 func_80297AB8(void);
|
||||
void func_802927E0(f32, f32);
|
||||
f32 func_8029B2E8(void);
|
||||
int func_80297C04(f32);
|
||||
void func_8029AD28(f32, s32);
|
||||
f32 func_80297AF0(void);
|
||||
void func_80289EF8(f32);
|
||||
f32 func_8029B30C(void);
|
||||
f32 func_80257C48(f32, f32, f32);
|
||||
f32 func_80297A64(void);
|
||||
void func_80299594(s32, f32);
|
||||
|
||||
// .data
|
||||
f32 D_80364D70 = 30.0f;//creep_min
|
||||
f32 D_80364D74 = 80.0f;//creep_max/slow_walk_min
|
||||
f32 D_80364D78 = 150.0f;//slow_walk_max/walk_min
|
||||
f32 D_80364D7C = 225.0f;//walk_max/walk_fast_min
|
||||
f32 D_80364D80 = 500.0f;//walk_fast_max
|
||||
f32 D_80364D84 = 30.0f; //mud_min
|
||||
f32 D_80364D88 = 150.0f; //mud_max
|
||||
f32 D_80364D8C = 125.0f;
|
||||
f32 D_80364D90 = 1.3f; //walk_slow
|
||||
f32 D_80364D94 = 0.6f;
|
||||
f32 D_80364D98 = 1.8f; //creep
|
||||
f32 D_80364D9C = 1.2f;
|
||||
f32 D_80364DA0 = 0.92f; //walk
|
||||
f32 D_80364DA4 = 0.58f;
|
||||
f32 D_80364DA8 = 0.54f; //walk_fast
|
||||
f32 D_80364DAC = 0.44f;
|
||||
f32 D_80364DB0 = 1.2f; //mud
|
||||
f32 D_80364DB4 = 0.9f;
|
||||
|
||||
// .bss (?)
|
||||
f32 D_8037D5B0;
|
||||
|
||||
/*.code*/
|
||||
void func_802B6D00(void){
|
||||
f32 sp1C;
|
||||
s32 sp18;
|
||||
|
||||
sp1C = func_8029B30C();
|
||||
sp18 = func_8029B300();
|
||||
if(func_8028B128()){
|
||||
if(sp18 == 0){
|
||||
func_80297970(0.0f);
|
||||
}else{//L802B6D48
|
||||
func_80297970(func_80257C48(func_8029B2E8(), D_80364D84, D_80364D88));
|
||||
}
|
||||
}
|
||||
else{//L802B6D78
|
||||
switch(sp18){
|
||||
case 0://802B6D98
|
||||
func_80297970(0.0f);
|
||||
break;
|
||||
case 1://802B6DAC
|
||||
func_80297970(func_80257C48(sp1C, D_80364D70, D_80364D74));
|
||||
break;
|
||||
case 2://802B6DD0
|
||||
func_80297970(func_80257C48(sp1C, D_80364D74, D_80364D78));
|
||||
break;
|
||||
case 3://802B6DF4
|
||||
func_80297970(func_80257C48(sp1C, D_80364D78, D_80364D7C));
|
||||
break;
|
||||
case 4://802B6E18
|
||||
func_80297970(func_80257C48(sp1C, D_80364D7C, D_80364D80));
|
||||
break;
|
||||
}
|
||||
}//L802B6E34
|
||||
}
|
||||
|
||||
void func_802B6E44(void){
|
||||
if(func_8028B394()){
|
||||
func_80289EF8(ml_map_f(func_80297AF0(), 0.0f, 1.0f, 0.5f, 0.9f));
|
||||
}else{
|
||||
func_80289EF8(1.0f);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void func_802B6EB0(f32 arg0){
|
||||
D_8037D5B0 = arg0;
|
||||
}
|
||||
|
||||
void func_802B6EBC(void){
|
||||
D_8037D5B0 = max_f(0.0f, D_8037D5B0 - time_getDelta());
|
||||
}
|
||||
|
||||
int func_802B6EF4(void){
|
||||
return D_8037D5B0 == 0.0f;
|
||||
}
|
||||
|
||||
s32 func_802B6F20(s32 arg0){
|
||||
if(button_pressed(BUTTON_B)){
|
||||
if( D_80364D7C < func_80297A64()){
|
||||
if(can_roll())
|
||||
arg0 = BS_ROLL;
|
||||
}else{//L802B6F74
|
||||
if(can_claw())
|
||||
arg0 = BS_CLAW;
|
||||
}
|
||||
}
|
||||
return arg0;
|
||||
}
|
||||
|
||||
f32 func_802B6F9C(void){
|
||||
return D_80364D80;
|
||||
}
|
||||
|
||||
void func_802B6FA8(void){
|
||||
func_802B6D00();
|
||||
}
|
||||
|
||||
void bswalk_creep_init(void){
|
||||
AnimCtrl * s0 = _player_getAnimCtrlPtr();
|
||||
f32 sp20;
|
||||
|
||||
if(bs_getPrevState() == BS_2_WALK_SLOW){
|
||||
sp20 = anim_getTimer(animctrl_getAnimPtr(s0));
|
||||
}else{
|
||||
sp20 = 0.0f;
|
||||
}
|
||||
animctrl_reset(s0);
|
||||
animctrl_setIndex(s0, ANIM_BANJO_WALK_CREEP);
|
||||
animctrl_setDuration(s0, 0.43f);
|
||||
func_8028774C(s0, sp20);
|
||||
animctrl_setPlaybackType(s0, ANIMCTRL_LOOP);
|
||||
func_802875AC(s0, "bswalk.c", 0xe4);
|
||||
func_8029C7F4(2,1,1,2);
|
||||
func_80289EA8(0.3f, 1.5f);
|
||||
func_80289EC8(D_80364D70, D_80364D74, D_80364D98, D_80364D9C);
|
||||
}
|
||||
|
||||
void bswalk_creep_update(void){
|
||||
s32 s0 = 0;
|
||||
func_802B6E44();
|
||||
if(func_8029B2E8() == 0.0f){
|
||||
yaw_setIdeal(yaw_get());
|
||||
}
|
||||
|
||||
func_8029AD28(0.47f, 4);
|
||||
func_8029AD28(0.97f, 3);
|
||||
func_802B6D00();
|
||||
switch(func_8029B300()){
|
||||
case 0://L802B7160
|
||||
if(func_80297C04(1.0f))
|
||||
s0 = BS_1_IDLE;
|
||||
break;
|
||||
case 2://L802B7180
|
||||
s0 = BS_2_WALK_SLOW;
|
||||
break;
|
||||
case 3://L802B7188
|
||||
s0 = BS_WALK;
|
||||
break;
|
||||
case 4:
|
||||
s0 = BS_WALK_FAST;
|
||||
break;
|
||||
}//L802B7194
|
||||
if(func_8028B128())
|
||||
s0 = BS_WALK_MUD;
|
||||
|
||||
if(func_80294F78())
|
||||
s0 = func_802926C0();
|
||||
|
||||
if(func_8028B094())
|
||||
s0 = BS_2F_FALL;
|
||||
|
||||
if(button_held(BUTTON_Z))
|
||||
s0 = BS_CROUCH;
|
||||
|
||||
s0 = func_802B6F20(s0);
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
s0 = func_8029C780();
|
||||
|
||||
if(player_isSliding())
|
||||
s0 = BS_SLIDE;
|
||||
|
||||
s0 = func_8029CA94(s0);
|
||||
|
||||
if(player_inWater())
|
||||
s0 = BS_2D_SWIM_IDLE;
|
||||
|
||||
bs_setState(s0);
|
||||
}
|
||||
|
||||
void bswalk_slow_init(void){
|
||||
AnimCtrl * s0 = _player_getAnimCtrlPtr();
|
||||
f32 sp20;
|
||||
|
||||
if(bs_getPrevState() == 3){
|
||||
sp20 = anim_getTimer(animctrl_getAnimPtr(s0));
|
||||
}else{
|
||||
sp20 = 0.0f;
|
||||
}
|
||||
animctrl_reset(s0);
|
||||
animctrl_setIndex(s0, ANIM_BANJO_WALK);
|
||||
animctrl_setDuration(s0, 0.43f);
|
||||
func_8028774C(s0, sp20);
|
||||
animctrl_setPlaybackType(s0, ANIMCTRL_LOOP);
|
||||
func_802875AC(s0, "bswalk.c", 0x168);
|
||||
func_8029C7F4(2,1,1,2);
|
||||
func_80289EA8(0.3f, 1.5f);
|
||||
func_80289EC8(D_80364D74, D_80364D78, D_80364D90, D_80364D94);
|
||||
}
|
||||
|
||||
void bswalk_slow_upate(void){
|
||||
s32 s0 = 0;
|
||||
func_802B6E44();
|
||||
if(func_8029B2E8() == 0.0f){
|
||||
yaw_setIdeal(yaw_get());
|
||||
}
|
||||
|
||||
func_8029AD28(0.4f, 4);
|
||||
func_8029AD28(0.9f, 3);
|
||||
func_802B6D00();
|
||||
switch(func_8029B300()){
|
||||
case 0://L802B7160
|
||||
if(func_80297C04(3.0f))
|
||||
s0 = BS_1_IDLE;
|
||||
break;
|
||||
case 1://L802B7180
|
||||
s0 = BS_WALK_CREEP;
|
||||
break;
|
||||
case 3://L802B7188
|
||||
s0 = BS_WALK;
|
||||
break;
|
||||
case 4:
|
||||
s0 = BS_WALK_FAST;
|
||||
break;
|
||||
}//L802B7194
|
||||
if(func_8028B128())
|
||||
s0 = BS_WALK_MUD;
|
||||
|
||||
if(func_80294F78())
|
||||
s0 = func_802926C0();
|
||||
|
||||
if(func_8028B094())
|
||||
s0 = BS_2F_FALL;
|
||||
|
||||
if(button_held(BUTTON_Z))
|
||||
s0 = BS_CROUCH;
|
||||
|
||||
s0 = func_802B6F20(s0);
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
s0 = func_8029C780();
|
||||
|
||||
if(player_isSliding())
|
||||
s0 = BS_SLIDE;
|
||||
|
||||
s0 = func_8029CA94(s0);
|
||||
|
||||
if(player_inWater())
|
||||
s0 = BS_2D_SWIM_IDLE;
|
||||
|
||||
bs_setState(s0);
|
||||
}
|
||||
|
||||
void bswalk_init(void){
|
||||
AnimCtrl * s0 = _player_getAnimCtrlPtr();
|
||||
f32 sp20 = 0.0f;
|
||||
|
||||
switch(bs_getPrevState()){
|
||||
default:
|
||||
sp20 = 0.0f;
|
||||
break;
|
||||
case 2:
|
||||
case 4:
|
||||
sp20 = anim_getTimer(animctrl_getAnimPtr(s0));
|
||||
break;
|
||||
}
|
||||
animctrl_reset(s0);
|
||||
animctrl_setIndex(s0, ANIM_BANJO_RUN);
|
||||
animctrl_setDuration(s0, 0.66f);
|
||||
animctrl_setTransitionDuration(s0, 0.14f);
|
||||
func_8028774C(s0, sp20);
|
||||
animctrl_setPlaybackType(s0, ANIMCTRL_LOOP);
|
||||
func_802875AC(s0, "bswalk.c", 0x1ed);
|
||||
func_8029C7F4(2,1,1,2);
|
||||
func_80289EA8(0.3f, 1.5f);
|
||||
func_80289EC8(D_80364D78, D_80364D7C, D_80364DA0, D_80364DA4);
|
||||
func_802B6EB0(0.3f);
|
||||
}
|
||||
|
||||
void bswalk_update(void){
|
||||
s32 s0 = 0;
|
||||
func_802B6E44();
|
||||
func_8029AD28(0.4f, 4);
|
||||
func_8029AD28(0.9f, 3);
|
||||
func_802B6EBC();
|
||||
func_802B6D00();
|
||||
switch(func_8029B300()){
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
if(func_80297C04(D_80364D78) && func_802B6EF4())
|
||||
s0 = BS_2_WALK_SLOW;
|
||||
break;
|
||||
case 4:
|
||||
s0 = BS_WALK_FAST;
|
||||
break;
|
||||
}//L802B76B8
|
||||
if(func_8028B128())
|
||||
s0 = BS_WALK_MUD;
|
||||
|
||||
if(func_8028B4C4() && D_80364D8C < func_80297AB8()){
|
||||
s0 = BS_SKID;
|
||||
}
|
||||
|
||||
if(func_80294F78())
|
||||
s0 = func_802926C0();
|
||||
|
||||
if(func_8028B094())
|
||||
s0 = BS_2F_FALL;
|
||||
|
||||
if(button_held(BUTTON_Z))
|
||||
s0 = BS_CROUCH;
|
||||
|
||||
s0 = func_802B6F20(s0);
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
s0 = func_8029C780();
|
||||
|
||||
if(player_isSliding())
|
||||
s0 = BS_SLIDE;
|
||||
|
||||
s0 = func_8029CA94(s0);
|
||||
|
||||
if(player_inWater())
|
||||
s0 = BS_2D_SWIM_IDLE;
|
||||
|
||||
bs_setState(s0);
|
||||
}
|
||||
|
||||
void bswalk_fast_init(void){
|
||||
AnimCtrl * s0 = _player_getAnimCtrlPtr();
|
||||
f32 sp28 = 0.0f;
|
||||
int sp24 = 1;
|
||||
|
||||
switch(bs_getPrevState()){
|
||||
case 1:
|
||||
case 2://L802B780C
|
||||
if(func_80297AB8() < 200.0f){
|
||||
func_802927E0(0.0f, 0.0f);
|
||||
}
|
||||
break;
|
||||
case 0xc: //L802B7844
|
||||
sp24 = 0;
|
||||
break;
|
||||
case 3:
|
||||
sp28 = anim_getTimer(animctrl_getAnimPtr(s0));
|
||||
|
||||
break;
|
||||
}
|
||||
animctrl_reset(s0);
|
||||
animctrl_setSmoothTransition(s0, sp24);
|
||||
animctrl_setIndex(s0, ANIM_BANJO_RUN);
|
||||
animctrl_setDuration(s0, 0.66f);
|
||||
animctrl_setTransitionDuration(s0, 0.1f);
|
||||
func_8028774C(s0, sp28);
|
||||
animctrl_setPlaybackType(s0, ANIMCTRL_LOOP);
|
||||
func_802875AC(s0, "bswalk.c", 0x27d);
|
||||
func_8029C7F4(2,1,1,2);
|
||||
func_80289EA8(0.3f, 1.5f);
|
||||
func_80289EC8(D_80364D7C, D_80364D80, D_80364DA8, D_80364DAC);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
roll_setAngularVelocity(1000.0f, 12.0f);
|
||||
func_802B6EB0(0.3f);
|
||||
|
||||
}
|
||||
|
||||
void bswalk_fast_update(void){
|
||||
s32 s0 = 0;
|
||||
func_802B6E44();
|
||||
func_80299594(0, 0.5f);
|
||||
func_8029AD28(0.4f, 4);
|
||||
func_8029AD28(0.9f, 3);
|
||||
func_802B6EBC();
|
||||
func_802B6D00();
|
||||
switch(func_8029B300()){
|
||||
case 0://L802B79EC
|
||||
if(func_80297C04(18.0f))
|
||||
s0 = BS_1_IDLE;
|
||||
|
||||
if(func_80294F78())
|
||||
s0 = func_802926C0();
|
||||
|
||||
break;
|
||||
case 1:
|
||||
case 2://L802B7A28
|
||||
if(func_80297C04(D_80364D78))
|
||||
s0 = BS_2_WALK_SLOW;
|
||||
|
||||
if(func_80294F78())
|
||||
s0 = func_802926C0();
|
||||
|
||||
break;
|
||||
case 3://L802B7A60
|
||||
if(func_80297C04(D_80364D7C) && func_802B6EF4())
|
||||
s0 = BS_WALK;
|
||||
|
||||
if(func_80294F78())
|
||||
s0 = func_802926C0();
|
||||
break;
|
||||
}//L802B7AA4
|
||||
if(func_8028B128())
|
||||
s0 = BS_WALK_MUD;
|
||||
|
||||
if(func_8028B4C4() && D_80364D8C < func_80297AB8()){
|
||||
s0 = BS_SKID;
|
||||
}
|
||||
|
||||
if(func_8028B094())
|
||||
s0 = BS_2F_FALL;
|
||||
|
||||
if(button_held(BUTTON_Z))
|
||||
s0 = BS_CROUCH;
|
||||
|
||||
s0 = func_802B6F20(s0);
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
s0 = func_8029C780();
|
||||
|
||||
if(player_isSliding())
|
||||
s0 = BS_SLIDE;
|
||||
|
||||
s0 = func_8029CA94(s0);
|
||||
|
||||
if(player_inWater())
|
||||
s0 = BS_2D_SWIM_IDLE;
|
||||
|
||||
bs_setState(s0);
|
||||
}
|
||||
|
||||
void bswalk_fast_end(void){
|
||||
pitch_setIdeal(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
}
|
||||
|
||||
void bswalk_mud_init(void){
|
||||
func_8028A010(ANIM_BANJO_WALK_MUD, 0.43f);
|
||||
func_8029C7F4(2,1,1,2);
|
||||
func_80289EA8(0.3f, 1.5f);
|
||||
func_80289EC8(D_80364D84, D_80364D88, D_80364DB0, D_80364DB4);
|
||||
}
|
||||
|
||||
void bswalk_mud_update(void){
|
||||
s32 s0 = 0;
|
||||
func_802B6E44();
|
||||
func_8029AD28(0.4f, 4);
|
||||
func_8029AD28(0.9f, 3);
|
||||
func_802B6D00();
|
||||
if(!func_8028B128())
|
||||
s0 = BS_2_WALK_SLOW;
|
||||
|
||||
if(!func_8029B300())
|
||||
s0 = BS_1_IDLE;
|
||||
|
||||
if(func_80294F78())
|
||||
s0 = func_802926C0();
|
||||
|
||||
if(func_8028B094())
|
||||
s0 = BS_2F_FALL;
|
||||
|
||||
if(button_held(BUTTON_Z))
|
||||
s0 = BS_CROUCH;
|
||||
|
||||
s0 = func_802B6F20(s0);
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
s0 = func_8029C780();
|
||||
|
||||
if(player_isSliding())
|
||||
s0 = BS_SLIDE;
|
||||
|
||||
s0 = func_8029CA94(s0);
|
||||
|
||||
if(player_inWater())
|
||||
s0 = BS_2D_SWIM_IDLE;
|
||||
|
||||
bs_setState(s0);
|
||||
}
|
||||
|
||||
void bswalk_drone_init(void){
|
||||
bsdrone_init();
|
||||
if(func_80289F94(3)){
|
||||
func_80289F10(2);
|
||||
func_80289EA8(0.3f, 1.5f);
|
||||
func_80289EC8(D_80364D74, D_80364D78, D_80364D90, D_80364D94);
|
||||
}
|
||||
}
|
||||
|
||||
void bswalk_drone_update(void){
|
||||
bsdrone_update();
|
||||
}
|
||||
|
||||
void bswalk_drone_end(void){
|
||||
bsdrone_end();
|
||||
}
|
||||
777
src/core2/bs/walrus.c
Normal file
777
src/core2/bs/walrus.c
Normal file
@@ -0,0 +1,777 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern void func_8029AD68(f32, s32);
|
||||
extern f32 ml_vec3f_dot_product(f32[3], f32[3]);
|
||||
|
||||
int func_802B81F0(enum bs_e state);
|
||||
|
||||
/* .data */
|
||||
f32 D_80364DC0 = 30.0f;
|
||||
f32 D_80364DC4 = 400.0f;
|
||||
f32 D_80364DC8 = 0.6f;
|
||||
f32 D_80364DCC = 0.4f;
|
||||
f32 D_80364DD0 = 693.5f;
|
||||
f32 D_80364DD4 = -1200.0f;
|
||||
f32 D_80364DD8 = 30.0f;
|
||||
f32 D_80364DDC = 700.0f;
|
||||
f32 D_80364DE0 = 0.6f;
|
||||
f32 D_80364DE4 = 0.44f;
|
||||
f32 D_80364DE8 = 700.0f;
|
||||
f32 D_80364DEC = -1200.0f;
|
||||
u8 D_80364DF0 = 0;
|
||||
s16 D_80364DF4[] = {SFX_54_BANJO_HOO_1, SFX_55_BANJO_HOO_2, SFX_56_BANJO_HUI}; //sfx_e
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037D5C0;
|
||||
f32 D_8037D5C4;
|
||||
u8 D_8037D5C8;
|
||||
|
||||
/* .code */
|
||||
void func_802B7E00(void) {
|
||||
u8 temp_t9;
|
||||
|
||||
func_8030EB00(D_80364DF4[D_80364DF0], 1.35f, 1.45f);
|
||||
D_80364DF0++;
|
||||
if (D_80364DF0 >= 3) {
|
||||
D_80364DF0 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802B7E6C(void) {
|
||||
f32 sp1C;
|
||||
|
||||
sp1C = func_8029B30C();
|
||||
if (func_8029B300() == 0) {
|
||||
func_80297970(0.0f);
|
||||
return;
|
||||
}
|
||||
func_80297970(func_80257C48(sp1C, D_80364DC0, D_80364DC4));
|
||||
}
|
||||
|
||||
void func_802B7ECC(void) {
|
||||
D_8037D5C0 = 0.0f;
|
||||
if (func_80295530(8) < 3) {
|
||||
D_8037D5C0 = 1.0f;
|
||||
}
|
||||
D_8037D5C0 = mlClamp_f(D_8037D5C0, 0.0f, 1.0f);
|
||||
}
|
||||
|
||||
void func_802B7F28(void) {
|
||||
f32 pad44;
|
||||
f32 sp40;
|
||||
f32 sp3C;
|
||||
f32 sp38;
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
|
||||
sp38 = D_80364DD8;
|
||||
sp3C = D_80364DDC;
|
||||
sp40 = func_8029B30C();
|
||||
func_802B7ECC();
|
||||
_get_velocity(sp20);
|
||||
sp20[1] = 0.0f;
|
||||
if (900.0 < sp20[0] * sp20[0] + sp20[1] * sp20[1] + sp20[2] * sp20[2]) {
|
||||
ml_vec3f_normalize(sp20);
|
||||
func_80294480(sp2C);
|
||||
if ( ml_vec3f_dot_product(sp20, sp2C) < -0.2) {
|
||||
sp3C += D_8037D5C0 * 350.0;
|
||||
}
|
||||
}
|
||||
if (func_8029B300() == 0) {
|
||||
func_80297970(0.0f);
|
||||
return;
|
||||
}
|
||||
func_80297970(func_80257C48(sp40, sp38, sp3C));
|
||||
}
|
||||
|
||||
void func_802B8048(void){
|
||||
if(!func_802B81F0(bs_getNextState())){
|
||||
pitch_setIdeal(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
func_8029B0C0();
|
||||
func_8029E070(0);
|
||||
func_8029E064(0);
|
||||
miscflag_clear(3);
|
||||
miscflag_clear(4);
|
||||
func_80293D74();
|
||||
func_8029CF48(4, 0, 0.0f);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802B80D0(void) {
|
||||
if (func_802B8190(bs_getNextState()) == 0) {
|
||||
func_802B8048();
|
||||
func_8029E0E8(0);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802B8110(void){
|
||||
func_8029CF48(4, 1, 0.15f);
|
||||
}
|
||||
|
||||
void func_802B813C(void) {
|
||||
if (func_802B8190(bs_getPrevState()) == 0) {
|
||||
D_8037D5C0 = 0.0f;
|
||||
func_8029E0E8(1);
|
||||
func_8029CF48(4, 1, 0.15f);
|
||||
}
|
||||
}
|
||||
|
||||
int func_802B8190(enum bs_e state){
|
||||
return state == 0x81
|
||||
|| state == BS_7D_WALRUS_SLED
|
||||
|| state == BS_7E_WALRUS_SLED
|
||||
|| state == 0x82
|
||||
|| state == 0x80
|
||||
|| state == BS_7D_WALRUS_SLED_DRONE;
|
||||
}
|
||||
|
||||
int func_802B81F0(enum bs_e state){
|
||||
return state == BS_67_WALRUS_IDLE
|
||||
|| state == BS_WALRUS_WALK
|
||||
|| state == BS_WALRUS_JUMP
|
||||
|| state == BS_6A_WALRUS_FALL
|
||||
|| state == BS_WALRUS_OW
|
||||
|| state == BS_WALRUS_DIE
|
||||
|| state == BS_WALRUS_DRONE
|
||||
|| func_802B8190(state);
|
||||
}
|
||||
|
||||
void bswalrus_idle_init(void){
|
||||
func_8028A010(0x11f, 4.0f);
|
||||
func_8029C7F4(1,1,1,2);
|
||||
func_80297970(0.0f);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
roll_setAngularVelocity(1000.0f, 12.0f);
|
||||
func_80293D48(50.0f, 25.0f);
|
||||
miscflag_set(3);
|
||||
miscflag_set(4);
|
||||
func_802900B4();
|
||||
func_802B8110();
|
||||
}
|
||||
|
||||
void bswalrus_idle_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
|
||||
func_80299628(0);
|
||||
|
||||
if(func_8028B094())
|
||||
next_state = BS_6A_WALRUS_FALL;
|
||||
|
||||
if(func_80294F78())
|
||||
next_state = func_802926C0();
|
||||
|
||||
if(func_8029B300() > 0)
|
||||
next_state = BS_WALRUS_WALK;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
next_state = BS_WALRUS_JUMP;
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bswalrus_idle_end(void){
|
||||
func_802B8048();
|
||||
func_802900FC();
|
||||
}
|
||||
|
||||
void bswalrus_walk_init(void){
|
||||
func_8028A010(0x120, 0.8f);
|
||||
func_8029C7F4(2,1,1,2);
|
||||
func_80289EC8(D_80364DC0, D_80364DC4, D_80364DC8, D_80364DCC);
|
||||
func_802900B4();
|
||||
func_802B8110();
|
||||
}
|
||||
|
||||
void bswalrus_walk_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
|
||||
func_80299628(0);
|
||||
func_802B7E6C();
|
||||
func_8029AD68(0.3f, 4);
|
||||
|
||||
if(func_8029B300() == 0 && func_80297C04(1.0f))
|
||||
next_state = BS_67_WALRUS_IDLE;
|
||||
|
||||
if(func_8028B094())
|
||||
next_state = BS_6A_WALRUS_FALL;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
next_state = BS_WALRUS_JUMP;
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bswalrus_walk_end(void){
|
||||
func_802B8048();
|
||||
func_802900FC();
|
||||
}
|
||||
|
||||
void bswalrus_jump_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, FALSE);
|
||||
animctrl_setIndex(aCtrl, 0x121);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.514f);
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
func_8028774C(aCtrl, 0.1);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bswalrus.c", 0x1f8);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
if(func_8029B2E8() != 0.0f)
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802B7E6C();
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
player_setYVelocity(D_80364DD0);
|
||||
gravity_set(D_80364DD4);
|
||||
func_802B7E00();
|
||||
func_802B8110();
|
||||
D_8037D5C8 = 0;
|
||||
}
|
||||
|
||||
void bswalrus_jump_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp1C[3];
|
||||
|
||||
func_802B7E6C();
|
||||
_get_velocity(sp1C);
|
||||
if(button_released(BUTTON_A) && 0.0f < sp1C[1])
|
||||
gravity_reset();
|
||||
|
||||
switch(D_8037D5C8){
|
||||
case 0://L802B86D8
|
||||
if(func_8028B254(0x82)){
|
||||
animctrl_setDuration(aCtrl, 0.7f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.8501f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D5C8 = 2;
|
||||
}
|
||||
else if(animctrl_isStopped(aCtrl)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.6734f);
|
||||
animctrl_setDuration(aCtrl, 3.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D5C8 = 1;
|
||||
}
|
||||
break;
|
||||
case 1://L802B876C
|
||||
if(func_8028B254(0x82)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.8501f);
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D5C8 = 2;
|
||||
}
|
||||
break;
|
||||
case 2://L802B87B4
|
||||
func_80299628(0);
|
||||
if(func_8028B2E8()){
|
||||
func_8029AE48();
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D5C8 = 3;
|
||||
}
|
||||
break;
|
||||
case 3://L802B880C
|
||||
func_80299628(0);
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
func_80297970(0.0f);
|
||||
next_state = BS_67_WALRUS_IDLE;
|
||||
}
|
||||
break;
|
||||
}//L802B8838
|
||||
|
||||
if(func_8028B2E8()){
|
||||
if(func_8029B300() > 0)
|
||||
next_state = BS_WALRUS_WALK;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
next_state = BS_WALRUS_JUMP;
|
||||
}
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bswalrus_jump_end(void){
|
||||
gravity_reset();
|
||||
func_802B8048();
|
||||
}
|
||||
|
||||
void bswalrus_fall_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, 0x121);
|
||||
func_8028774C(aCtrl, 0.662f);
|
||||
animctrl_setDuration(aCtrl, 0.7f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_STOPPED);
|
||||
func_802875AC(aCtrl, "bswalrus.c", 0x284);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
func_802B8110();
|
||||
D_8037D5C8 = 0;
|
||||
}
|
||||
|
||||
void bswalrus_fall_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp1C[3];
|
||||
|
||||
func_80299628(0);
|
||||
func_802B7E6C();
|
||||
_get_velocity(sp1C);
|
||||
|
||||
switch (D_8037D5C8)
|
||||
{
|
||||
case 0://L802B89A4
|
||||
if(func_8028B254(0x82)){
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.8501f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D5C8 = 1;
|
||||
}
|
||||
break;
|
||||
case 1://L802B89E0
|
||||
if(func_8028B2E8()){
|
||||
func_8029AE48();
|
||||
func_80297970(0.0f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
D_8037D5C8 = 2;
|
||||
}
|
||||
break;
|
||||
case 2://L802B8A38
|
||||
break;
|
||||
}//L802B8A38
|
||||
|
||||
if(func_8028B2E8()){
|
||||
if( func_8029B300() > 0
|
||||
|| (D_8037D5C8 == 2 && animctrl_isStopped(aCtrl))
|
||||
){
|
||||
if(miscflag_isTrue(0x19))
|
||||
next_state = func_80292738();
|
||||
else
|
||||
next_state = BS_67_WALRUS_IDLE;
|
||||
}
|
||||
}
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bswalrus_fall_end(void){
|
||||
func_802B8048();
|
||||
}
|
||||
|
||||
static void __bswalrus_recoil_init(s32 damage){
|
||||
f32 sp3C;
|
||||
f32 sp30[3];
|
||||
f32 sp24[3];
|
||||
|
||||
func_80298760(func_80296560());
|
||||
func_8028A274(0x19c, 1.0f);
|
||||
if(damage == 1)
|
||||
func_8030E58C(SFX_38_BANJO_AYE_1, 1.8f);
|
||||
else
|
||||
func_8030E58C(SFX_56_BANJO_HUI, 1.8f);
|
||||
|
||||
_player_getPosition(sp30);
|
||||
func_80294980(sp24);
|
||||
func_80257F18(sp24, sp30, &sp3C);
|
||||
yaw_setIdeal(mlNormalizeAngle(sp3C + 180.0f));
|
||||
yaw_applyIdeal();
|
||||
func_80297970(func_802987D4());
|
||||
func_8029797C(sp3C);
|
||||
func_802979AC(sp3C, func_80297A64());
|
||||
func_8029C7F4(1,1,2,3);
|
||||
player_setYVelocity(func_802987C4());
|
||||
gravity_set(func_802987E4());
|
||||
func_8028D5DC();
|
||||
func_80292E48();
|
||||
func_802B8110();
|
||||
}
|
||||
|
||||
static void __bswalrus_recoil_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
if(baanim_isAt(0.5f))
|
||||
func_80292EA4();
|
||||
|
||||
if(func_8028B2E8())
|
||||
next_state = BS_67_WALRUS_IDLE;
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
static void __bswalrus_recoil_end(void){
|
||||
gravity_reset();
|
||||
func_8028D5F4();
|
||||
func_80292EA4();
|
||||
func_802B8048();
|
||||
}
|
||||
|
||||
void bswalrus_ow_init(void){
|
||||
__bswalrus_recoil_init(1);
|
||||
}
|
||||
|
||||
void bswalrus_ow_update(void){
|
||||
__bswalrus_recoil_update();
|
||||
}
|
||||
|
||||
void bswalrus_ow_end(void){
|
||||
__bswalrus_recoil_end();
|
||||
}
|
||||
|
||||
void bswalrus_bounce_init(void){
|
||||
__bswalrus_recoil_init(2);
|
||||
}
|
||||
|
||||
void bswalrus_bounce_update(void){
|
||||
__bswalrus_recoil_update();
|
||||
}
|
||||
|
||||
void bswalrus_bounce_end(void){
|
||||
__bswalrus_recoil_end();
|
||||
}
|
||||
|
||||
void bswalrus_die_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp38;
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
|
||||
func_8029B930();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, FALSE);
|
||||
animctrl_setIndex(aCtrl, 0x19d);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.4454f);
|
||||
animctrl_setDuration(aCtrl, 2.2f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bswalrus.c", 0x366);
|
||||
func_8030E58C(SFX_36_BANJO_DOH, 1.8f);
|
||||
_player_getPosition(sp2C);
|
||||
func_80294980(sp20);
|
||||
func_80257F18(sp20, sp2C, &sp38);
|
||||
D_8037D5C4 = 250.0f;
|
||||
yaw_setIdeal(mlNormalizeAngle(sp38 + 180.0f));
|
||||
yaw_applyIdeal();
|
||||
func_80297970(D_8037D5C4);
|
||||
func_8029797C(sp38);
|
||||
func_802979AC(sp38, func_80297A64());
|
||||
func_8029C7F4(1,1,2,3);
|
||||
player_setYVelocity(420.0f); //B)
|
||||
gravity_set(-1200.0f);
|
||||
pitch_setAngVel(1000.0f, 12.0f);
|
||||
func_802914CC(0xd);
|
||||
func_802BF2C0(30.0f);
|
||||
func_8025AB00();
|
||||
func_8025A2FC(0, 0xfa0);
|
||||
func_8025A70C(0x1A);
|
||||
func_8028D5DC();
|
||||
func_80292E48();
|
||||
func_8029E3C0(0, 1.5f);
|
||||
func_802B8110();
|
||||
D_8037D5C8 = 0;
|
||||
}
|
||||
|
||||
void bswalrus_die_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
|
||||
func_80297970(D_8037D5C4);
|
||||
func_80299628(0);
|
||||
switch(D_8037D5C8){
|
||||
case 0://L802B8F54
|
||||
if(func_8028B2E8()){
|
||||
func_8028A37C(1.0f);
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 18000);
|
||||
FUNC_8030E624(SFX_39_BANJO_AYE_2, 1.8f, 18000);
|
||||
player_setYVelocity(400.0f);
|
||||
D_8037D5C8 = 2;
|
||||
}
|
||||
break;
|
||||
case 2://L802B8FA8
|
||||
D_8037D5C8 = 3;
|
||||
break;
|
||||
case 3://L802B8FB0
|
||||
if(0.0f < D_8037D5C4){
|
||||
D_8037D5C4 = max_f(0.0f, D_8037D5C4 - 10.0f);
|
||||
}
|
||||
break;
|
||||
}//L802B8FE0
|
||||
|
||||
if(func_8029E1A8(0))
|
||||
func_8029B890();
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bswalrus_die_end(void){
|
||||
func_8024BD08(0);
|
||||
gravity_reset();
|
||||
pitch_setIdeal(0.0f);
|
||||
roll_setIdeal(0.0f);
|
||||
func_80291548();
|
||||
func_80292EA4();
|
||||
}
|
||||
|
||||
void bswalrus_drone_init(void){
|
||||
func_802B8110();
|
||||
bsdrone_init();
|
||||
}
|
||||
|
||||
void bswalrus_drone_update(void){
|
||||
bsdrone_update();
|
||||
}
|
||||
|
||||
void bswalrus_drone_end(void){
|
||||
bsdrone_end();
|
||||
func_802B8048();
|
||||
}
|
||||
|
||||
void func_802B90D0(void){
|
||||
func_8028A010(0x19e, 0.8f);
|
||||
func_8029C7F4(1,1,3,2);
|
||||
func_80297970(0.0f);
|
||||
func_8029C674();
|
||||
func_802B813C();
|
||||
func_802B3A50();
|
||||
}
|
||||
|
||||
void func_802B9130(void){
|
||||
enum bs_e next_state = 0;
|
||||
func_802B3A50();
|
||||
func_80299628(0);
|
||||
func_8029C6D0();
|
||||
if(!func_80298850())
|
||||
next_state = BS_7D_WALRUS_SLED;
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B917C(void){
|
||||
func_8029C748();
|
||||
func_802B80D0();
|
||||
}
|
||||
|
||||
void bswalrus_sled_init(void){
|
||||
func_8028A010(0x19e, 0.8f);
|
||||
func_8029C7F4(2,1,1,2);
|
||||
func_80289EC8(D_80364DC0, D_80364DC4, D_80364DE0, D_80364DE4);
|
||||
func_802900B4();
|
||||
func_802B813C();
|
||||
}
|
||||
|
||||
void bswalrus_sled_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
f32 sp20[3];
|
||||
|
||||
if(50.0f < func_80297AB8()){
|
||||
if(func_8023DB4C(1)){
|
||||
func_80292554(&sp20);
|
||||
}else{
|
||||
func_80292578(&sp20);
|
||||
}
|
||||
particleEmitter_emitN(func_802F1EC8(sp20), 1);
|
||||
}//L802B927C
|
||||
|
||||
func_80299628(0);
|
||||
func_802B7F28();
|
||||
if(func_80294F78())
|
||||
next_state = func_802926C0();
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
next_state = BS_7E_WALRUS_SLED;
|
||||
|
||||
next_state = func_8029CA94(next_state);
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bswalrus_sled_end(void){
|
||||
func_802B80D0();
|
||||
func_802900FC();
|
||||
}
|
||||
|
||||
void bswalrus_sled_jump_init(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setSmoothTransition(aCtrl, FALSE);
|
||||
animctrl_setIndex(aCtrl, 0x19f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.4285f);
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
func_8028774C(aCtrl, 0.14f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
||||
func_802875AC(aCtrl, "bswalrus.c", 0x477);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
if(func_8029B2E8() != 0.0f)
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
func_8029797C(yaw_getIdeal());
|
||||
func_802B7F28();
|
||||
func_802979AC(yaw_getIdeal(), func_80297A64());
|
||||
player_setYVelocity(D_80364DD0);
|
||||
gravity_set(D_80364DD4);
|
||||
func_802B7E00();
|
||||
func_802B813C();
|
||||
D_8037D5C8 = 0;
|
||||
}
|
||||
|
||||
void bswalrus_sled_jump_update(void){
|
||||
enum bs_e next_state = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp1C[3];
|
||||
|
||||
func_802B7F28();
|
||||
_get_velocity(sp1C);
|
||||
|
||||
if(button_released(BUTTON_A) && 0.0f < sp1C[1])
|
||||
gravity_reset();
|
||||
|
||||
switch (D_8037D5C8)
|
||||
{
|
||||
case 0:
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
func_8028A3B8(0.5058f, 7.0f);
|
||||
D_8037D5C8 = 1;
|
||||
}
|
||||
break;
|
||||
case 1://L802B94F0
|
||||
if(func_8028B254(0x82)){
|
||||
func_8028A3B8(1.0f, 1.0f);
|
||||
D_8037D5C8 = 2;
|
||||
}
|
||||
break;
|
||||
case 2://L802B951C
|
||||
if(animctrl_isStopped(aCtrl)){
|
||||
next_state = BS_7D_WALRUS_SLED;
|
||||
}
|
||||
break;
|
||||
}//L802B9530
|
||||
|
||||
if(func_8028B2E8()){
|
||||
if(button_pressed(BUTTON_A))
|
||||
next_state = BS_7E_WALRUS_SLED;
|
||||
|
||||
next_state = func_8029CA94(next_state);
|
||||
}
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void bswalrus_sled_jump_end(void){
|
||||
gravity_reset();
|
||||
func_802B80D0();
|
||||
}
|
||||
|
||||
void func_802B95A0(void){
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
animctrl_reset(aCtrl);
|
||||
animctrl_setIndex(aCtrl, 0x19f);
|
||||
animctrl_setSubRange(aCtrl, 0.0f, 0.5058f);
|
||||
animctrl_setDuration(aCtrl, 1.0f);
|
||||
animctrl_setPlaybackType(aCtrl, ANIMCTRL_STOPPED);
|
||||
func_802875AC(aCtrl, "bswalrus.c", 0x4e2);
|
||||
func_8029C7F4(1,1,3,6);
|
||||
func_802B813C();
|
||||
D_8037D5C8 = 0;
|
||||
}
|
||||
|
||||
void func_802B963C(void){
|
||||
enum bs_e next_state = 0;
|
||||
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
|
||||
f32 sp1C[3];
|
||||
|
||||
func_80299628(0);
|
||||
func_802B7E6C();
|
||||
_get_velocity(sp1C);
|
||||
switch (D_8037D5C8)
|
||||
{
|
||||
case 0://L802B9694
|
||||
if(func_8028B254(0x82)){
|
||||
func_8028A3B8(1.0f, 1.0f);
|
||||
D_8037D5C8 = 1;
|
||||
}
|
||||
break;
|
||||
case 1://L802B96C0
|
||||
if(func_8028B2E8()){
|
||||
func_8029AE48();
|
||||
func_80297970(0.0f);
|
||||
D_8037D5C8 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
}//L802B96F0
|
||||
|
||||
if(func_8028B2E8()){
|
||||
if( func_8029B300() > 0
|
||||
|| (D_8037D5C8 == 2 && animctrl_isStopped(aCtrl))
|
||||
){
|
||||
next_state = BS_7D_WALRUS_SLED;
|
||||
}
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
next_state = BS_7E_WALRUS_SLED;
|
||||
|
||||
next_state = func_8029CA94(next_state);
|
||||
}//L802B9754
|
||||
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B976C(void){
|
||||
func_802B8048();
|
||||
}
|
||||
|
||||
void func_802B978C(void) {
|
||||
func_8028A180(0x1A9, 3.2f);
|
||||
func_8029C7F4(1, 1, 3, 7);
|
||||
func_80297970(0.0f);
|
||||
func_802914CC(0xD);
|
||||
func_802BF2C0(60.0f);
|
||||
func_8025A58C(0, 0xFA0);
|
||||
func_8025A70C(COMUSIC_3C_MINIGAME_LOSS);
|
||||
func_8024BD08(0);
|
||||
func_8028D5DC();
|
||||
func_8029E3C0(0, 2.9f);
|
||||
func_802B813C();
|
||||
func_80292E48();
|
||||
}
|
||||
|
||||
void func_802B9830(void) {
|
||||
yaw_setIdeal(func_8029B41C() + 35.0f);
|
||||
func_80299628(0);
|
||||
if (func_8029E1A8(0) != 0) {
|
||||
func_8029B6F0();
|
||||
}
|
||||
}
|
||||
|
||||
void func_802B9880(void) {
|
||||
func_80291548();
|
||||
func_8024BD08(1);
|
||||
func_8025A904();
|
||||
func_80292EA4();
|
||||
func_802B80D0();
|
||||
}
|
||||
|
||||
void func_802B98C0(void) {
|
||||
if (bs_getInterruptType() == 0x2B) {
|
||||
func_8029A86C(2);
|
||||
bs_setState(BS_67_WALRUS_IDLE);
|
||||
return;
|
||||
}
|
||||
func_80296608();
|
||||
}
|
||||
|
||||
void bswalrus_sled_drone_init(void){
|
||||
func_802B813C();
|
||||
bsdrone_init();
|
||||
}
|
||||
|
||||
void bswalrus_sled_drone_update(void){
|
||||
bsdrone_update();
|
||||
}
|
||||
|
||||
void bswalrus_sled_drone_end(void){
|
||||
bsdrone_end();
|
||||
func_802B80D0();
|
||||
}
|
||||
103
src/core2/bs/washy.c
Normal file
103
src/core2/bs/washy.c
Normal file
@@ -0,0 +1,103 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D5D0;
|
||||
|
||||
/* .code */
|
||||
void func_802B9980(s32 arg0){
|
||||
AnimCtrl *plyr_anim = _player_getAnimCtrlPtr();
|
||||
|
||||
switch (arg0)
|
||||
{
|
||||
case 1: //L802B99B8
|
||||
func_802BB3DC(0, 30.0f, 0.6f);
|
||||
func_8030E58C(SFX_82_METAL_BREAK, 0.8f);
|
||||
player_setYVelocity(400.0f);
|
||||
break;
|
||||
case 2: //L802B99F4
|
||||
func_802BB3DC(0, 10.0f, 0.6f);
|
||||
player_setYVelocity(300.0f);
|
||||
break;
|
||||
case 3: //L802B9A20
|
||||
func_8029E3C0(0, 0.01f);
|
||||
break;
|
||||
case 4: //L802B9A38
|
||||
FUNC_8030E624(SFX_3EB_UNKNOWN, 0.7f, 25000);
|
||||
func_8029E3C0(0, 0.25f);
|
||||
break;
|
||||
case 5: //L802B9A58
|
||||
func_8030E58C(SFX_D0_GRIMLET_SQUEAK, 0.9f);
|
||||
animctrl_setDuration(plyr_anim, 2.2f);
|
||||
break;
|
||||
case 6: //L802B9A84
|
||||
func_8029E3C0(0, 0.01f);
|
||||
case 0: //L802B9A94
|
||||
break;
|
||||
}
|
||||
D_8037D5D0 = arg0;
|
||||
}
|
||||
|
||||
void func_802B9AAC(void){
|
||||
func_802900FC();
|
||||
}
|
||||
|
||||
void func_802B9ACC(void){
|
||||
func_8028A180(ASSET_281_ANIM_WISHYWASHY_DOOOH, 40.0f);
|
||||
func_8029C7F4(1, 1, 3, 2);
|
||||
func_802900B4();
|
||||
func_802B9980(0);
|
||||
}
|
||||
|
||||
void func_802B9B14(void){
|
||||
s32 next_state = 0;
|
||||
s32 sp18;
|
||||
|
||||
switch(D_8037D5D0){
|
||||
case 0: // L802B9B48
|
||||
if(func_8028B2E8())
|
||||
func_802B9980(1);
|
||||
break;
|
||||
case 1: // L802B9B68
|
||||
if(func_8028B2E8())
|
||||
func_802B9980(2);
|
||||
break;
|
||||
case 2: // L802B9B88
|
||||
if(func_8028B2E8())
|
||||
func_802B9980(3);
|
||||
break;
|
||||
case 3: // L802B9BA8
|
||||
if(func_8029E1A8(0))
|
||||
func_802B9980(4);
|
||||
break;
|
||||
case 4: // L802B9BC8
|
||||
if(func_8029E1A8(0))
|
||||
func_802B9980(5);
|
||||
break;
|
||||
case 5: // L802B9BE8
|
||||
if(baanim_isStopped()){
|
||||
if(func_8028ADF0())
|
||||
next_state = BS_1_IDLE;
|
||||
else
|
||||
func_802B9980(6);
|
||||
}
|
||||
break;
|
||||
case 6: // L802B9C20
|
||||
if(func_8029E1A8(0)){
|
||||
sp18 = func_802F9AA8(SFX_12B_BOILING_AND_BUBBLING);
|
||||
func_802F9DB8(sp18, 1.0f, 1.2f, 0.0f);
|
||||
func_802F9F80(sp18, 0.05f, 0.05 + randf()*0.4, 0.1f);
|
||||
func_802FA060(sp18, 28000, 32000, 0.0f);
|
||||
func_8029E3C0(0, 0.8 + randf()*0.7);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802B9D00(void){
|
||||
if(bs_getInterruptType() == 0xA)
|
||||
func_80296608();
|
||||
}
|
||||
53
src/core2/bsList.c
Normal file
53
src/core2/bsList.c
Normal file
@@ -0,0 +1,53 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
#include "bsint.h"
|
||||
|
||||
|
||||
|
||||
//TODO replace with bsList Count
|
||||
bsState D_8037C700[166];
|
||||
|
||||
/* .code */
|
||||
void bsList_clearAll(void){
|
||||
s32 i = 0;
|
||||
do{
|
||||
bsList_setInitMethod(i, NULL);
|
||||
bsList_setUpdateMethod(i, NULL);
|
||||
bsList_setEndMethod(i, NULL);
|
||||
bsList_setInterruptMethod(i, NULL);
|
||||
i++;
|
||||
}while(i != 0xa6);
|
||||
}
|
||||
|
||||
void bsList_setInitMethod(enum bs_e i, bsStateMethod func){
|
||||
D_8037C700[i].init_func = func;
|
||||
}
|
||||
|
||||
void bsList_setUpdateMethod(s32 i, bsStateMethod func){
|
||||
D_8037C700[i].update_func = func;
|
||||
}
|
||||
|
||||
void bsList_setEndMethod(s32 i, bsStateMethod func){
|
||||
D_8037C700[i].end_func = func;
|
||||
}
|
||||
|
||||
void bsList_setInterruptMethod(s32 i, bsStateMethod func){
|
||||
D_8037C700[i].interrupt_func = func;
|
||||
}
|
||||
|
||||
bsStateMethod bsList_getInitMethod(s32 i){
|
||||
return D_8037C700[i].init_func;
|
||||
}
|
||||
|
||||
bsStateMethod bsList_getUpdateMethod(s32 i){
|
||||
return D_8037C700[i].update_func;
|
||||
}
|
||||
|
||||
bsStateMethod bsList_getEndMethod(s32 i){
|
||||
return D_8037C700[i].end_func;
|
||||
}
|
||||
|
||||
bsStateMethod bsList_getInterruptMethod(s32 i){
|
||||
return D_8037C700[i].interrupt_func;
|
||||
}
|
||||
162
src/core2/ch/badShad.c
Normal file
162
src/core2/ch/badShad.c
Normal file
@@ -0,0 +1,162 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern void func_802C3D3C(void (*)(s32, s32), s32, s32);
|
||||
|
||||
Actor *func_802D6F48(ActorMarker *this, Gfx **gdl, Mtx **mptr, Vtx **arg3);
|
||||
void func_802D6EA0(Actor *this);
|
||||
void func_802D729C(Actor *actor, f32 arg1);
|
||||
|
||||
/* .data */
|
||||
ActorInfo D_80367A50 = {
|
||||
0x9B, 0x108, 0x3BF,
|
||||
0x1, NULL,
|
||||
func_802D6EA0, func_80326224, func_802D6F48,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037DE10[3];
|
||||
f32 D_8037DE20[3];
|
||||
|
||||
/* .code */
|
||||
void func_802D6EA0(Actor *this){
|
||||
s32 iVar1;
|
||||
if(!this->initialized){
|
||||
this->initialized = 1;
|
||||
this->marker->collidable = 0;
|
||||
}
|
||||
if(!this->despawn_flag && this->unk1C_x < (f32)(func_8023DB5C() - 1) ){
|
||||
if(this->unk104){
|
||||
marker_getActor(this->unk104)->unk104 = 0;
|
||||
}
|
||||
marker_despawn(this->marker);
|
||||
}
|
||||
}
|
||||
|
||||
Actor *func_802D6F48(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
f32 sp44[3];
|
||||
f32 sp40;
|
||||
Actor *this = func_80325300(marker, sp44);
|
||||
Actor *other;
|
||||
if(this->despawn_flag)
|
||||
return this;
|
||||
|
||||
if(this->unk104){
|
||||
other = marker_getActor(this->unk104);
|
||||
}
|
||||
|
||||
if(other)
|
||||
func_8033A410(other->alpha_124_19);
|
||||
sp40 = ml_map_f(this->unk28, 0.0f , 800.0f, 0.53f, 0.18f)*this->unk1C[1];
|
||||
set_model_render_mode(2);
|
||||
func_803391A4(gfx, mtx, this->position, sp44, sp40, NULL, func_80330B1C(marker));
|
||||
return this;
|
||||
}
|
||||
|
||||
f32 func_802D7038(Actor *this) {
|
||||
f32 sp34;
|
||||
f32 sp28[3];
|
||||
|
||||
sp34 = 0.0f;
|
||||
if( (this->spawn_position_x == this->position_x)
|
||||
&& (this->spawn_position_z == this->position_z)
|
||||
){
|
||||
D_8037DE10[0] = this->spawn_position[0];
|
||||
D_8037DE10[1] = this->spawn_position[1];
|
||||
D_8037DE10[2] = this->spawn_position[2];
|
||||
} else {
|
||||
this->spawn_position[0] = this->position[0];
|
||||
this->spawn_position[2] = this->position[2];
|
||||
sp28[0] = this->position[0];
|
||||
sp28[1] = this->position[1];
|
||||
sp28[2] = this->position[2];
|
||||
if (func_803209F8(D_8037DE10, D_8037DE20, &sp34, sp28)) {
|
||||
this->spawn_position[1] = D_8037DE10[1];
|
||||
} else {
|
||||
D_8037DE10[0] = sp28[0];
|
||||
D_8037DE10[1] = sp28[1];
|
||||
D_8037DE10[2] = sp28[2];
|
||||
this->spawn_position[1] = sp28[1];
|
||||
}
|
||||
}
|
||||
return sp34;
|
||||
}
|
||||
|
||||
void func_802D7124(Actor *actor, f32 arg1) {
|
||||
f32 sp1C[3];
|
||||
|
||||
func_8024C5CC(&sp1C);
|
||||
if ((actor->position[0] - sp1C[0]) * (actor->position[0] - sp1C[0]) + (actor->position[2] - sp1C[2]) * (actor->position[2] - sp1C[2]) < 12250000.0f) {
|
||||
func_802D729C(actor, arg1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_802D71A0(s32 this, s32 arg1){
|
||||
ActorMarker *marker;
|
||||
f32 sp40;
|
||||
Actor *sp3C;
|
||||
Actor *sp38;
|
||||
s32 sp2C[3];
|
||||
f32 sp28;
|
||||
|
||||
marker = reinterpret_cast(ActorMarker *,this);
|
||||
sp38 = marker_getActor(marker);
|
||||
if(!sp38->despawn_flag){
|
||||
sp40 = reinterpret_cast(f32,arg1);
|
||||
sp38 = marker_getActor(marker);
|
||||
sp28 = func_802D7038(sp38);
|
||||
sp2C[0] = (s32) D_8037DE10[0];
|
||||
sp2C[1] = (s32) D_8037DE10[1];
|
||||
sp2C[2] = (s32) D_8037DE10[2];
|
||||
sp3C = func_803056FC(0x108, sp2C, (s32)sp38->yaw);
|
||||
if(sp3C){
|
||||
marker_getActor(marker)->unk104 = sp3C->marker;
|
||||
sp3C->unk104 = marker;
|
||||
sp3C->unk1C[0] = func_8023DB5C();
|
||||
sp3C->unk1C[1] = sp40;
|
||||
sp3C->unk28 = sp28;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_802D729C(Actor *actor, f32 arg1){
|
||||
Actor *sp1C;
|
||||
if(actor->despawn_flag){
|
||||
if(actor->unk104){
|
||||
sp1C = marker_getActor(actor->unk104);
|
||||
sp1C->unk104 = NULL;
|
||||
marker_getActor(actor->unk104)->despawn_flag = TRUE;
|
||||
}
|
||||
else{
|
||||
}
|
||||
actor->unk104 = NULL;
|
||||
return;
|
||||
}
|
||||
if(!actor->unk104){
|
||||
func_802C3D3C(func_802D71A0, (s32) actor->marker, reinterpret_cast(s32, arg1));
|
||||
return;
|
||||
}
|
||||
|
||||
sp1C = marker_getActor(actor->unk104);
|
||||
if(sp1C->despawn_flag == TRUE)
|
||||
return;
|
||||
|
||||
if(!((func_8023DB5C() ^ actor->marker->actrArrayIdx) & 0x7)){
|
||||
sp1C->unk28 = func_802D7038(actor);
|
||||
sp1C->position_x = D_8037DE10[0];
|
||||
sp1C->position_y = D_8037DE10[1] + 6.0f;
|
||||
sp1C->position_z = D_8037DE10[2];
|
||||
sp1C->yaw = D_8037DE20[1];
|
||||
sp1C->pitch = D_8037DE20[0];
|
||||
sp1C->roll = D_8037DE20[2];
|
||||
}
|
||||
else{
|
||||
sp1C->position_x = actor->position_x;
|
||||
sp1C->position_z = actor->position_z;
|
||||
}
|
||||
sp1C->unk1C[0] = func_8023DB5C();
|
||||
sp1C->unk1C[1] = arg1;
|
||||
}
|
||||
89
src/core2/ch/beehive.c
Normal file
89
src/core2/ch/beehive.c
Normal file
@@ -0,0 +1,89 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void func_802CE8D4(Actor *this);
|
||||
|
||||
/* .data */
|
||||
ActorAnimationInfo D_803672C0[] ={
|
||||
{0x000, 0.0f},
|
||||
{ASSET_165_ANIM_BEEHIVE_IDLE, 0.65f},
|
||||
{ASSET_65_ANIM_BEEHIVE_DIE, 0.5f},
|
||||
{ASSET_65_ANIM_BEEHIVE_DIE, 1000000.0f},
|
||||
};
|
||||
|
||||
ActorInfo D_803672E0 = {0x50, ACTOR_12_BEEHIVE, ASSET_364_MODEL_BEEHIVE,
|
||||
1, &D_803672C0,
|
||||
func_802CE8D4, func_80326224, func_80325888,
|
||||
0, 0x333, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .code */
|
||||
void func_802CE7E0(ActorMarker *marker, s32 arg1){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
FUNC_8030E8B4(SFX_11_WOOD_BREAKING_1, 1.0f, 28000, actor->position, 300, 3000);
|
||||
FUNC_8030E8B4(SFX_D_EGGSHELL_BREAKING, 1.0f, 28000, actor->position, 300, 3000);
|
||||
func_80328A84(actor, 2);
|
||||
actor_playAnimationOnce(actor);
|
||||
marker->collidable = FALSE;
|
||||
actor->unk138_27 = 3;
|
||||
func_802C3F04(func_802C4140, ACTOR_4C_STEAM, reinterpret_cast(s32, actor->position[0]), reinterpret_cast(s32, actor->position[1]), reinterpret_cast(s32, actor->position[2]));
|
||||
func_802C3F04(func_802C4140, ACTOR_4A_WOOD_EXPLOSION, reinterpret_cast(s32, actor->position[0]), reinterpret_cast(s32, actor->position[1]), reinterpret_cast(s32, actor->position[2]));
|
||||
actor->marker->propPtr->unk8_3 = 0;
|
||||
func_803115C4(ASSET_D96_TEXT_BEEHIVE);
|
||||
func_803115C4(ASSET_DA6_TEXT_BEEHIVE_WITH_BEES);
|
||||
}
|
||||
|
||||
void func_802CE8D4(Actor *this){
|
||||
if(!this->unk16C_4){
|
||||
marker_setCollisionScripts(this->marker, NULL, NULL, func_802CE7E0);
|
||||
this->marker->propPtr->unk8_3 = 1;
|
||||
this->unk44_31 = func_8030D90C();
|
||||
this->unk16C_4 = 1;
|
||||
this->unk38_0 = func_803203FC(1)| func_803203FC(0x1F);
|
||||
}//L802CE960
|
||||
if(map_get() == MAP_27_FP_FREEZEEZY_PEAK){
|
||||
if(func_8038BFA0()){
|
||||
this->unk58_0 = 0;
|
||||
return;
|
||||
}
|
||||
this->unk58_0 = 1;
|
||||
}//L802CE9A4
|
||||
switch(this->state)
|
||||
{
|
||||
case 1://L802CE9C4
|
||||
if( !func_8031FF1C(BKPROG_D_BEEHIVE_TEXT)
|
||||
&& func_803296B8(this, 250, 300)
|
||||
){
|
||||
if(func_8028ECAC() == 0 || func_8028ECAC() == BSGROUP_8_TROT){
|
||||
if( player_getTransformation() == TRANSFORM_1_BANJO
|
||||
&& func_80311480(ASSET_D96_TEXT_BEEHIVE, 0, NULL, NULL, NULL, 0)
|
||||
){
|
||||
func_80320004(BKPROG_D_BEEHIVE_TEXT, 1);
|
||||
}
|
||||
}
|
||||
}//L802CEA48
|
||||
if( actor_animationIsAt(this, 0.45f)
|
||||
|| actor_animationIsAt(this, 0.55f)
|
||||
|| actor_animationIsAt(this, 0.6f)
|
||||
){
|
||||
if(!this->unk38_0){
|
||||
func_8030E394(this->unk44_31);
|
||||
sfxsource_setSfxId(this->unk44_31, SFX_67_BEEHIVE_CLONK);
|
||||
sfxsource_setSampleRate(this->unk44_31, 12000);
|
||||
func_8030DBB4(this->unk44_31, (animctrl_getAnimTimer(this->animctrl) + 0.9) - 0.4);
|
||||
func_8030DF68(this->unk44_31, this->position);
|
||||
func_8030DEB4(this->unk44_31, 300.0f, 1500.0f);
|
||||
func_8030DD14(this->unk44_31, 3);
|
||||
func_8030E2C4(this->unk44_31);
|
||||
}
|
||||
}//L802CEB48
|
||||
break;
|
||||
case 2://L802CEB2C
|
||||
if(animctrl_isStopped(this->animctrl)){
|
||||
func_80326310(this);
|
||||
}
|
||||
break;
|
||||
}//L802CEB48
|
||||
}
|
||||
|
||||
386
src/core2/ch/bigbutt.c
Normal file
386
src/core2/ch/bigbutt.c
Normal file
@@ -0,0 +1,386 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
void func_802C6240(Actor *);
|
||||
Actor *func_802C6E84(ActorMarker *, Gfx **, Mtx **, Vtx **);
|
||||
/*.data */
|
||||
ActorAnimationInfo D_80366010[] ={
|
||||
{0x00, 0.0f},
|
||||
{ASSET_33_ANIM_BIGBUTT_EAT, 5.5f},
|
||||
{ASSET_36_ANIM_BIGBUTT_WALK, 0.7f},
|
||||
{ASSET_10_ANIM_BIGBUTT_RUN, 0.8f},
|
||||
{ASSET_21_ANIM_BIGBUTT_SLIDE, 0.9f},
|
||||
{ASSET_32_ANIM_BIGBUTT_ATTACK, 1.1f},
|
||||
{ASSET_35_ANIM_BIGBUTT_ALERT, 0.6f},
|
||||
{ASSET_34_ANIM_BIGBUTT_DIE, 4.0f},
|
||||
{ASSET_36_ANIM_BIGBUTT_WALK, 1.3f},
|
||||
{ASSET_10_ANIM_BIGBUTT_RUN, 0.6f},
|
||||
{ASSET_33_ANIM_BIGBUTT_EAT, 5.5f},
|
||||
{ASSET_36_ANIM_BIGBUTT_WALK, 1.3f},
|
||||
{ASSET_253_ANIM_BIGBUTT_OW, 0.7f},
|
||||
{ASSET_254_ANIM_BIGBUTT_FALL, 1.1f},
|
||||
{ASSET_254_ANIM_BIGBUTT_FALL, 1000000000.0f},
|
||||
{ASSET_255_ANIM_BIGBUTT_GET_UP, 1.0f},
|
||||
};
|
||||
|
||||
|
||||
ActorInfo D_80366090 = {0x3, ACTOR_4_BIGBUTT, ASSET_353_MODEL_BIGBUTT,
|
||||
1, D_80366010,
|
||||
func_802C6240, func_80326224, func_802C6E84,
|
||||
3200, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_803660B4 = {0x9, ACTOR_E_BULL_INTRO, ASSET_354_MODEL_BULL_INTRO,
|
||||
1, D_80366010,
|
||||
func_802C6240, func_80326224, func_802C6E84,
|
||||
3200, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .code */
|
||||
void func_802C5E80(Actor *this){
|
||||
this->unk28 = randf2(3.5f, 4.9f);
|
||||
}
|
||||
|
||||
void func_802C5EB8(Actor *this){
|
||||
if(func_803203FC(0xC1))
|
||||
return;
|
||||
|
||||
if(this->unk38_31){
|
||||
this->unk38_31--;
|
||||
}
|
||||
else{
|
||||
if(func_80329530(this, 1200) && func_803292E0(this)){
|
||||
func_80328A84(this, 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C5F44(Actor *this){
|
||||
if(!func_80329530(this, 1200) || !func_803292E0(this)){
|
||||
func_80328B8C(this, 1, 0.16f, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C5F94(Actor *this){
|
||||
func_80328A84(this, 2);
|
||||
func_802C5E80(this);
|
||||
func_80328CEC(this, (s32)this->yaw_moving, 135, 175);
|
||||
this->unk38_31 = 150;
|
||||
}
|
||||
|
||||
void func_802C5FF8(Actor *this){
|
||||
if( !this->unk138_28
|
||||
&& actor_animationIsAt(this, 0.4f)
|
||||
&& randf() < 0.14
|
||||
&& func_8028EE84() != BSWATERGROUP_2_UNDERWATER
|
||||
){
|
||||
func_8030E878(SFX_2B_BULL_MOO_1, randf2(0.9f, 1.1f), 32000, this->position, 0.0f, 2000.0f);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C60AC(ActorMarker *marker, ActorMarker *other_marker){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
if( actor->state == 4
|
||||
&& 5.0 <= actor->unk28
|
||||
&& func_803294F0(actor, 80, func_80329784(actor))
|
||||
){
|
||||
animctrl_setPlaybackType(actor->animctrl, ANIMCTRL_ONCE);
|
||||
func_80328A84(actor, 5);
|
||||
func_8030E58C(SFX_1E_HITTING_AN_ENEMY_2, 1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C6150(ActorMarker *marker, ActorMarker *other_marker){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
func_80328AC8(actor, 0xC);
|
||||
func_8030E878(SFX_2B_BULL_MOO_1, randf2(1.28f, 1.37f), 32000, actor->position, 0.0f, 2000.0f);
|
||||
}
|
||||
|
||||
void func_802C61C0(ActorMarker *marker, ActorMarker *other_marker){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
if( actor->state != 0xd
|
||||
&& actor->state != 0xe
|
||||
&& actor->state != 0xf
|
||||
){
|
||||
func_80328AC8(actor, 0xd);
|
||||
FUNC_8030E8B4(SFX_143_BULL_DAMAGE, 1.0f, 16000, actor->position, 0, 2000);
|
||||
FUNC_8030E8B4(SFX_143_BULL_DAMAGE, 1.0f, 16000, actor->position, 0, 2000);
|
||||
}
|
||||
}
|
||||
|
||||
//chBigbuttUpdate
|
||||
void func_802C6240(Actor *this){
|
||||
s32 sp2C;
|
||||
u8 tmp_a0;
|
||||
f32 tmp_f0;
|
||||
|
||||
|
||||
if(!this->initialized){
|
||||
this->marker->unk1C = func_802C61C0;
|
||||
this->marker->unkC = func_802C60AC;
|
||||
this->marker->unk10 = func_802C6150;
|
||||
this->unk138_24 = 0;
|
||||
this->unk16C_0 = 1;
|
||||
this->initialized = TRUE;
|
||||
return;
|
||||
}//L802C62BC
|
||||
switch(this->state){
|
||||
case 0x1: //L802C62E4
|
||||
this->unk10_12 = 3;
|
||||
sp2C = func_8032863C(this->animctrl, 0.16f, 0.55f);
|
||||
if(!this->unk138_28){
|
||||
if( actor_animationIsAt(this, 0.157f)
|
||||
|| actor_animationIsAt(this, 0.289f)
|
||||
|| actor_animationIsAt(this, 0.4f)
|
||||
|| actor_animationIsAt(this, 0.536f)
|
||||
){
|
||||
if(func_8028EE84() != BSWATERGROUP_2_UNDERWATER){
|
||||
func_8030E878(SFX_C8_CRUNCH,randf2(0.93f, 1.07f),10000, this->position, 0.0f, 1800.0f);
|
||||
}
|
||||
}
|
||||
}//L802C63C4
|
||||
if(sp2C == 2){
|
||||
func_80328A2C(this, 0.55f, 1, 0.35f);
|
||||
}
|
||||
func_802C5FF8(this);
|
||||
if( func_8032863C(this->animctrl, 0.65f, 0.99f) >= 2
|
||||
&& !func_80328A2C(this, 0.0f, -1, 0.45f)
|
||||
&& func_80328BD4(this, 2, 0.0f, -1, 0.58f)
|
||||
){
|
||||
func_80328CEC(this, (s32)this->yaw, 10, 45);
|
||||
func_802C5E80(this);
|
||||
}//L802C647C
|
||||
func_802C5EB8(this);
|
||||
break;
|
||||
|
||||
case 0x2: //L802C6494
|
||||
func_802C5FF8(this);
|
||||
func_80328FB0(this, 2.0f);
|
||||
if(!func_80329030(this, 0) && func_80329480(this)){
|
||||
func_80328CEC(this, (s32)this->yaw, 90, 150);
|
||||
}//L802C64EC
|
||||
if(!(func_8023DB5C() & 0xf))
|
||||
func_80328CEC(this, (s32)this->yaw_moving, 10, 20);
|
||||
|
||||
if(!(func_8023DB5C() & 0x7))
|
||||
func_80328BD4(this, 1, 0.16f, 1, 0.02f);
|
||||
|
||||
if( !(func_8023DB5C() & 0xf)
|
||||
&& func_80329078(this, (s32)this->yaw_moving, 150)
|
||||
&& func_80328B38(this, 3, 0.13f)
|
||||
){
|
||||
this->unk28 = randf2(7.1f, 8.4f);
|
||||
}
|
||||
func_802C5EB8(this);
|
||||
break;
|
||||
|
||||
case 0x8: //L802C65D0
|
||||
func_802C5F44(this);
|
||||
this->yaw_moving = func_80329784(this);
|
||||
func_80328FB0(this, 4.0f);
|
||||
if(func_80329480(this))
|
||||
func_80328A84(this, 6);
|
||||
break;
|
||||
|
||||
case 0x3: //L802C6620
|
||||
func_80328FB0(this, 3.0f);
|
||||
if(! func_80329030(this, 0) && func_80329480(this)){
|
||||
func_80328CEC(this, (s32)this->yaw, 120, 180);
|
||||
func_80328A84(this, 2);
|
||||
func_802C5E80(this);
|
||||
}
|
||||
if(!(func_8023DB5C() & 0xf) && func_80328B38(this, 2, 0.08f))
|
||||
func_802C5E80(this);
|
||||
func_802C5EB8(this);
|
||||
break;
|
||||
|
||||
case 0x6: //L802C66D0
|
||||
animctrl_setDuration(this->animctrl, D_80366010[6].duration - (3 - this->unk10_12)*0.1085);
|
||||
this->yaw_moving = (f32)func_80329784(this);
|
||||
if(!func_803294B4(this, 0x21)){
|
||||
func_80328A84(this, 8);
|
||||
}
|
||||
func_802C5F44(this);
|
||||
if(actor_animationIsAt(this, 0.35f) && func_8028EE84() != BSWATERGROUP_2_UNDERWATER){
|
||||
func_8030E58C(SFX_3C_BULL_GROWN, randf()/10.0f + 1.0);
|
||||
this->unk10_12--;
|
||||
}
|
||||
if(!func_80329078(this, (s32)this->yaw, 20))
|
||||
func_802C5F94(this);
|
||||
|
||||
if(this->unk10_12 == 0 || (this->unk10_12 < 3 && func_80329530(this, 300))){
|
||||
func_80328A84(this, 9);
|
||||
this->unk28 = 13.0f;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x9: //L802C6878
|
||||
if(actor_animationIsAt(this, 0.35f))
|
||||
func_8030E58C(SFX_2E_BIGBUTT_RUNNING, 1.0f);
|
||||
|
||||
this->unk28 += 0.15;
|
||||
if(30.0f < this->unk28)
|
||||
this->unk28 = 30.0f;
|
||||
|
||||
this->yaw_moving = (f32)func_80329784(this);
|
||||
func_80328FB0(this, 9.0f);
|
||||
if(!func_80329030(this, 0))
|
||||
func_802C5F94(this);
|
||||
|
||||
if(func_80329530(this, 320)){
|
||||
if(func_80329078(this, (s32)this->yaw_moving,200)){
|
||||
animctrl_setPlaybackType(this->animctrl, ANIMCTRL_ONCE);
|
||||
func_80328A84(this, 4);
|
||||
this->unk28 += 5.7;
|
||||
tmp_a0 = this->unk44_31;
|
||||
if(this->unk44_31 == 0){
|
||||
this->unk44_31 = func_8030D90C();
|
||||
tmp_a0 = this->unk44_31;
|
||||
}
|
||||
sfxsource_setSfxId(tmp_a0, SFX_18_BIGBUTT_SLIDE);
|
||||
func_8030DD14(this->unk44_31, 2);
|
||||
func_8030DBB4(this->unk44_31, (randf()*0.1 - 0.05) + 1.0);
|
||||
func_8030E2C4(this->unk44_31);
|
||||
}
|
||||
else{//L802C69FC
|
||||
func_802C5F94(this);
|
||||
}
|
||||
}//L802C6A08
|
||||
break;
|
||||
|
||||
case 0x4: //L802C6A14
|
||||
if(animctrl_getAnimTimer(this->animctrl) < 0.99){
|
||||
this->yaw_moving = (f32)func_80329784(this);
|
||||
func_80328FB0(this, 1.0f);
|
||||
}
|
||||
func_80329030(this, 0);
|
||||
func_8030E2C4(this->unk44_31);
|
||||
if(0.99 <= animctrl_getAnimTimer(this->animctrl)){
|
||||
func_80329878(this, func_80329530(this, 250)? 0.8: 1.2);
|
||||
if(0.0f == this->unk28){
|
||||
animctrl_setPlaybackType(this->animctrl, ANIMCTRL_LOOP);
|
||||
func_80328B8C(this, 1, 0.65f, 1);
|
||||
func_8030DA44(this->unk44_31);
|
||||
this->unk44_31 = 0;
|
||||
func_8030E484(SFX_19_BANJO_LANDING_08);
|
||||
}
|
||||
}//L802C6B1C
|
||||
break;
|
||||
|
||||
case 0x5: //L802C6B28
|
||||
actor_playAnimationOnce(this);
|
||||
tmp_f0 = animctrl_getAnimTimer(this->animctrl);
|
||||
animctrl_setDuration(this->animctrl, D_80366010[5].duration + ((0.65 < tmp_f0)? (tmp_f0 - 0.65)*16.0 : 0.0));
|
||||
if(actor_animationIsAt(this, 0.95f)){
|
||||
actor_loopAnimation(this);
|
||||
func_802C5F94(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0xc: //L802C6BDC
|
||||
actor_playAnimationOnce(this);
|
||||
if(actor_animationIsAt(this, 0.95f)){
|
||||
func_80328B8C(this, 1, 0.65f, 1);
|
||||
actor_loopAnimation(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0xd: //L802C6C28
|
||||
actor_playAnimationOnce(this);
|
||||
if(actor_animationIsAt(this, 0.95f)){
|
||||
func_80328B8C(this, 0xe, 0.99f, 1);
|
||||
this->unk60 = 4.0f;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0xe: //L802C6C7C
|
||||
actor_playAnimationOnce(this);
|
||||
this->unk60 -= time_getDelta();
|
||||
if(this->unk60 <= 0.0f){
|
||||
this->unk166 = 0x63;
|
||||
func_80328AC8(this, 0xF);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 0xf: //L802C6CD4
|
||||
actor_playAnimationOnce(this);
|
||||
if(actor_animationIsAt(this, 0.95f)){
|
||||
func_80328B8C(this, 1, 0.65f, 1);
|
||||
actor_loopAnimation(this);
|
||||
}
|
||||
break;
|
||||
}//L802C6D1C
|
||||
if(this->state == 0xe){
|
||||
if(this->marker->unk14_20 != 0x29e)
|
||||
this->marker->unk14_20 = 0x29e;
|
||||
}else{//L802C6D60
|
||||
if(this->marker->unk14_20 != 3)
|
||||
this->marker->unk14_20 = 3;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C6DA0(s32 arg0, f32 arg1[3], f32 arg2[3]){
|
||||
func_8034A174(func_80329934(), arg0, arg2);
|
||||
arg2[0] = (arg2[0] - arg1[0])*0.2;
|
||||
arg2[1] = (arg2[1] - arg1[1])*0.2;
|
||||
arg2[2] = (arg2[2] - arg1[2])*0.2;
|
||||
|
||||
}
|
||||
|
||||
void func_802C6E3C(s32 arg0, f32 arg1[3]){
|
||||
f32 sp1C[3];
|
||||
func_8034A174(func_80329934(), arg0, sp1C);
|
||||
func_80352CF4(sp1C, arg1, 170.0f, 50.0f);
|
||||
}
|
||||
|
||||
Actor *func_802C6E84(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
Actor *actor; //sp4C
|
||||
f32 sp40[3];
|
||||
|
||||
|
||||
actor = func_80325888(marker, gfx, mtx, vtx);
|
||||
if(marker->unk14_21){
|
||||
f32 sp34[3] = {0.0f, 4.0f, -15.0f};
|
||||
f32 sp28[3];
|
||||
f32 sp1C[3];
|
||||
|
||||
ml_vec3f_yaw_rotate_copy(sp34, sp34, actor->yaw);
|
||||
switch(actor->state){
|
||||
case 6:
|
||||
if(actor_animationIsAt(actor, 0.65f)){
|
||||
func_8034A174(func_80329934(), 9, sp40);
|
||||
func_80352CF4(sp40, sp34, 60.0f, 50.0f);
|
||||
}
|
||||
break;
|
||||
case 4://L802C6F50
|
||||
if((func_8023DB5C() & 1) == 1){
|
||||
if(func_80259808(actor->yaw)){
|
||||
func_802C6E3C(0xb, sp34);
|
||||
func_802C6E3C(0xa, sp34);
|
||||
}
|
||||
else{
|
||||
func_802C6E3C(0x8, sp34);
|
||||
func_802C6E3C(0x9, sp34);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1://L802C6FB4
|
||||
if(actor_animationIsAt(actor, 0.85f)
|
||||
&& (func_8023DB5C()& 0xe) == 8
|
||||
&& randf() < 0.6
|
||||
){
|
||||
func_8034A174(func_80329934(),5, sp40);
|
||||
func_802C6DA0(6, sp40, sp28);
|
||||
func_802C6DA0(7, sp40, sp1C);
|
||||
func_80352CF4(sp40, sp28, 200.0f, 50.0f);
|
||||
func_80352CF4(sp40, sp1C, 200.0f, 50.0f);
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
}//L802C7064
|
||||
return actor;
|
||||
}
|
||||
57
src/core2/ch/clankerwhipcrack.c
Normal file
57
src/core2/ch/clankerwhipcrack.c
Normal file
@@ -0,0 +1,57 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void func_803567EC(Actor *this);
|
||||
|
||||
/* .data */
|
||||
ActorInfo D_80372810 = {
|
||||
0x1A7, ACTOR_28A_CLANKER_WHIPCRACK, ASSET_432_MODEL_CLANKER_WHIPCRACK,
|
||||
0, NULL,
|
||||
func_803567EC, NULL, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .code */
|
||||
void func_80356770(Actor *this, s32 next_state){
|
||||
if(next_state == 1)
|
||||
func_80335924(this->unk148, ASSET_15C_ANIM_CLANKER_WHIPCRACK_IDLE, 0.5f, 1.0f);
|
||||
|
||||
if(next_state == 2)
|
||||
func_80335924(this->unk148, ASSET_15D_ANIM_CLANKER_WHIPCRACK_ATTACK, 0.5f, 1.0f);
|
||||
|
||||
this->state = next_state;
|
||||
}
|
||||
|
||||
void func_803567EC(Actor *this){
|
||||
f32 plyr_pos[3];
|
||||
f32 plyr_dist;
|
||||
f32 sp44;
|
||||
f32 sp40;
|
||||
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = TRUE;
|
||||
this->roll = this->yaw;
|
||||
this->yaw = 0.0f;
|
||||
func_80356770(this, 1);
|
||||
}
|
||||
|
||||
player_getPosition(plyr_pos);
|
||||
plyr_dist = ml_vec3f_distance(plyr_pos, this->position);
|
||||
if(this->state == 1){
|
||||
if(plyr_dist < 700.0f)
|
||||
func_80356770(this, 2);
|
||||
}
|
||||
|
||||
if(this->state == 2){
|
||||
func_8033568C(this->unk148, &sp44, &sp40);
|
||||
if(sp44 < 0.13 && 0.13 <= sp40)
|
||||
func_8030E9C4(SFX_6A_FLAGPOLE_WOBBLE, randf2(0.9f, 1.0f), 14000, this->position, 500.0f, 1000.0f);
|
||||
|
||||
if(sp44 < 0.8 && 0.8 <= sp40)
|
||||
func_8030E9C4(SFX_2_CLAW_SWIPE, randf2(0.9f, 1.1f), randi2(10000, 14000), this->position, 500.0f, 1000.0f);
|
||||
|
||||
if(800.0f < plyr_dist)
|
||||
func_80356770(this, 1);
|
||||
}//L803569D4
|
||||
}
|
||||
91
src/core2/ch/climbBase.c
Normal file
91
src/core2/ch/climbBase.c
Normal file
@@ -0,0 +1,91 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
void func_802D77D4(Actor *this);
|
||||
extern void func_8028F738(f32[3], f32[3], f32, u32);
|
||||
extern f32 func_80258640(f32[3], f32[3]);
|
||||
|
||||
typedef struct {
|
||||
f32 unk0[3];
|
||||
s16 unkC;
|
||||
}ActorLocal_climbBase;
|
||||
|
||||
/* .data */
|
||||
extern ActorInfo D_80367B20 = {
|
||||
0x35, 0x26, 0x0,
|
||||
0x1, NULL,
|
||||
func_802D77D4, func_80326224, func_80325340,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
extern f32 D_8037DE30[3];
|
||||
extern u8 D_8037DE3C;
|
||||
|
||||
/* .code */
|
||||
s32 func_802D76E0(Actor *this, f32 *arg1) {
|
||||
ActorLocal_climbBase *local;
|
||||
f32 sp40[3];
|
||||
f32 sp34[3];
|
||||
f32 sp30;
|
||||
s32 temp_v0;
|
||||
s32 sp28;
|
||||
|
||||
local = (ActorLocal_climbBase *)&this->local;
|
||||
sp28 = func_8030526C(sp40, 0x27, this->position);
|
||||
temp_v0 = func_8030526C(sp34, 0x28, this->position);
|
||||
if (!sp28 && !temp_v0) {
|
||||
return FALSE;
|
||||
}
|
||||
if (sp28 && temp_v0) {
|
||||
sp30 = func_80258640(this->position, sp40);
|
||||
if (func_80258640(this->position, sp34) < sp30) {
|
||||
sp28 = 0;
|
||||
}
|
||||
}
|
||||
if (sp28) {
|
||||
ml_vec3f_copy(arg1, sp40);
|
||||
local->unkC = 1;
|
||||
} else {
|
||||
ml_vec3f_copy(arg1, sp34);
|
||||
local->unkC = 2;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void func_802D77D4(Actor *this) {
|
||||
f32 sp4C[3];
|
||||
f32 sp40[3];
|
||||
f32 sp3C;
|
||||
f32 sp30[3];
|
||||
ActorLocal_climbBase *local;
|
||||
|
||||
|
||||
local = (ActorLocal_climbBase *)&this->local;
|
||||
switch (this->state) { /* irregular */
|
||||
case 1:
|
||||
func_802D76E0(this, sp30);
|
||||
ml_vec3f_copy(local->unk0, sp30);
|
||||
func_80328A84(this, 2);
|
||||
return;
|
||||
|
||||
case 2:
|
||||
sp3C = (f32)(this->unkF4_8 + 0x19);
|
||||
player_getPosition(sp40);
|
||||
ml_vec3f_diff_copy(sp4C, this->position, sp40);
|
||||
if (((sp4C[0] * sp4C[0]) + (sp4C[2] * sp4C[2])) < (sp3C * sp3C)) {
|
||||
if ((this->position[1] < sp40[1]) && (sp40[1] <= local->unk0[1])) {
|
||||
if (func_803203FC(2) == 0) {
|
||||
func_8028F738(this->position, local->unk0, (f32)this->unkF4_8, local->unkC);
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802D7930(void){
|
||||
player_getPosition(D_8037DE30);
|
||||
D_8037DE3C = TRUE;
|
||||
}
|
||||
227
src/core2/ch/clucker.c
Normal file
227
src/core2/ch/clucker.c
Normal file
@@ -0,0 +1,227 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern void func_8033A45C(s32, s32);
|
||||
|
||||
typedef struct{
|
||||
u8 unk0;
|
||||
// u8 pad1[3];
|
||||
f32 unk4;
|
||||
} ActorLocal_Clucker;
|
||||
|
||||
Actor *func_803575B8(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
||||
void func_8035765C(Actor *this);
|
||||
|
||||
/* .data */
|
||||
extern ActorInfo D_80372870 = {
|
||||
0x1B2, ACTOR_29F_CLUCKER, ASSET_482_MODEL_CLUCKER,
|
||||
0, NULL,
|
||||
func_8035765C, NULL, func_803575B8,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .code */
|
||||
void func_80357150(Actor *this){
|
||||
f32 sp34[3];
|
||||
f32 sp28[3];
|
||||
f32 sp1C[3];
|
||||
|
||||
sp1C[0] = 50.0f;
|
||||
sp1C[1] = 200.0f;
|
||||
sp1C[2] = 300.0f;
|
||||
ml_vec3f_yaw_rotate_copy(sp1C, sp1C, this->yaw);
|
||||
|
||||
sp34[0] = sp1C[0] + this->position_x;
|
||||
sp34[1] = sp1C[1] + this->position_y;
|
||||
sp34[2] = sp1C[2] + this->position_z;
|
||||
ml_vec3f_yaw_rotate_copy(sp1C, sp1C, 10.0f);
|
||||
|
||||
sp34[0] += 3.0f*sp1C[0];
|
||||
sp34[1] += 3.0f*sp1C[1];
|
||||
sp34[2] += 3.0f*sp1C[2];
|
||||
|
||||
sp28[0] = -50.0f;
|
||||
sp28[1] = this->yaw + 20.0f;
|
||||
sp28[2] = 0.0f;
|
||||
func_802BAE6C(sp34, sp28);
|
||||
}
|
||||
|
||||
void func_80357264(Actor *this, s32 next_state){
|
||||
ActorLocal_Clucker *local = (ActorLocal_Clucker *)&this->local;
|
||||
f32 sp38;
|
||||
s32 pad34;
|
||||
|
||||
this->marker->unk14_20 = 0x1d0;
|
||||
actor_collisionOff(this);
|
||||
if(next_state == 1 || next_state == 2){
|
||||
func_80335924(this->unk148, ASSET_184_ANIM_CLUCKER_ATTACK_SHORT, 0.0f, 2.5f);
|
||||
func_80335A74(this->unk148, 0.99f);
|
||||
func_80335A8C(this->unk148, 4);
|
||||
if(this->state == 4){
|
||||
if(local->unk0 == 2){
|
||||
local->unk4 = randf2(0.5f, 0.75f);
|
||||
}
|
||||
else{//L8035732C
|
||||
local->unk4 = randf2(0.25f, 0.35f);
|
||||
}//L8035734C
|
||||
}
|
||||
else{//L80357358
|
||||
local->unk4 = 0.0f;
|
||||
}
|
||||
}//L80357368
|
||||
|
||||
if(this->state == 1 && next_state == 2)
|
||||
local->unk0 = -1;
|
||||
|
||||
if(next_state == 3)
|
||||
local->unk4 = 0.2f;
|
||||
|
||||
if(next_state == 4){
|
||||
this->marker->unk14_20 = 0x1b2;
|
||||
actor_collisionOn(this);
|
||||
local->unk0 = (local->unk0 + 1) % 3;
|
||||
if(local->unk0 < 2)
|
||||
func_80335924(this->unk148, ASSET_184_ANIM_CLUCKER_ATTACK_SHORT, 0.0f, randf2( 0.6f, 1.0f));
|
||||
else
|
||||
func_80335924(this->unk148, ASSET_185_ANIM_CLUCKER_ATTACK_LONG, 0.0f, randf2( 2.3f, 2.7f));
|
||||
func_80335A8C(this->unk148, 2);
|
||||
func_8030E6A4(SFX_4A_CLUCKER_AHH, randf2(0.85f, 0.95f), 32000);
|
||||
}
|
||||
|
||||
if(next_state == 5){
|
||||
if(!levelSpecificFlags_get(0x14)
|
||||
&& !( func_80326D68(this->position, 0x318, -1, &sp38) && ( sp38 < 250.0f))
|
||||
){
|
||||
levelSpecificFlags_set(0x14, TRUE);
|
||||
func_80324E38(0.0f, 3);
|
||||
func_80357150(this);
|
||||
func_80324E88(2.0f);
|
||||
func_80324E38(2.0f, 0);
|
||||
}//L80357518
|
||||
func_8030E6D4(SFX_1E_HITTING_AN_ENEMY_2);
|
||||
func_80335924(this->unk148, ASSET_186_ANIM_CLUCKER_DIE, 0.05f, 2.0f);
|
||||
}//L80357540
|
||||
|
||||
this->state = next_state;
|
||||
}
|
||||
|
||||
void func_80357564(ActorMarker *this_marker, ActorMarker *other_marker){
|
||||
func_8030E6D4(SFX_1E_HITTING_AN_ENEMY_2);
|
||||
}
|
||||
|
||||
void func_8035758C(ActorMarker *this_marker, ActorMarker *other_marker){
|
||||
Actor *this = marker_getActor(this_marker);
|
||||
func_80357264(this, 5);
|
||||
}
|
||||
|
||||
Actor *func_803575B8(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
Actor *this = marker_getActor(marker);
|
||||
|
||||
func_8033A45C(3, (this->state == 5)? 1 : 0);
|
||||
func_8033A45C(4, (this->state == 0 || this->state == 1 || this->state == 6)? 0 : 1);
|
||||
return func_80325888(marker, gfx, mtx, vtx);
|
||||
}
|
||||
|
||||
void func_8035765C(Actor *this){
|
||||
f32 sp5C[3];
|
||||
f32 sp58;
|
||||
ActorLocal_Clucker *local = (ActorLocal_Clucker *)&this->local;
|
||||
f32 sp50;
|
||||
f32 sp4C;
|
||||
f32 sp48;
|
||||
f32 sp44;
|
||||
f32 sp40;
|
||||
|
||||
sp50 = time_getDelta();
|
||||
if( !this->unk16C_4){
|
||||
this->unk16C_4 = TRUE;
|
||||
this->unk16C_0 = TRUE;
|
||||
if(this->state != 6){
|
||||
marker_setCollisionScripts(this->marker, NULL, func_80357564, func_8035758C);
|
||||
local->unk0 = 0xff;
|
||||
func_80357264(this, 1);
|
||||
}
|
||||
else{//L803576E0
|
||||
func_80357264(this, 6);
|
||||
}
|
||||
}//L803576EC
|
||||
|
||||
player_getPosition(sp5C);
|
||||
sp58 = ml_vec3f_distance(this->position, sp5C);
|
||||
if(this->state == 1){
|
||||
if(sp58 < this->scale*800.0f){
|
||||
func_80357264(this, 2);
|
||||
}
|
||||
}//L80357758
|
||||
|
||||
if(this->state == 2){
|
||||
if(0.0f < local->unk4){
|
||||
local->unk4 -= sp50;
|
||||
}
|
||||
else if(sp58 < this->scale*600.0f){
|
||||
func_80357264(this, 3);
|
||||
}
|
||||
else if(this->scale*1000.0f < sp58){//L803577DC
|
||||
func_80357264(this, 1);
|
||||
}
|
||||
}//L80357808
|
||||
|
||||
if(this->state == 3){
|
||||
if(func_8025773C(&local->unk4, sp50)){
|
||||
func_80357264(this, 4);
|
||||
}
|
||||
}
|
||||
|
||||
if(this->state == 4){
|
||||
func_8033568C(this->unk148, &sp4C, &sp48);
|
||||
if(func_8033567C(this->unk148) == 0x185){
|
||||
if(sp4C < 0.58 && 0.58 <= sp48){
|
||||
this->marker->unk14_20 = 0x1d0;
|
||||
}
|
||||
if(sp4C < 0.05 && 0.05 <= sp48){
|
||||
FUNC_8030E624(SFX_2_CLAW_SWIPE, 0.9f, 32000);
|
||||
}
|
||||
if( (sp4C < 0.11 && 0.11 <= sp48)
|
||||
|| (sp4C < 0.32 && 0.32 <= sp48)
|
||||
|| (sp4C < 0.53 && 0.53 <= sp48)
|
||||
){
|
||||
func_8030E6A4(SFX_80_YUMYUM_CLACK, randf2(0.75f, 0.95f), 32700);
|
||||
}
|
||||
if(sp4C < 0.9 && 0.9 <= sp48){
|
||||
func_8030E6D4(SFX_2_CLAW_SWIPE);
|
||||
}
|
||||
}
|
||||
else{//L803579F0
|
||||
if(sp4C < 0.63 && 0.63 <= sp48){
|
||||
this->marker->unk14_20 = 0x1d0;
|
||||
}
|
||||
if(sp4C < 0.1 && 0.1 <= sp48){
|
||||
FUNC_8030E624(SFX_2_CLAW_SWIPE, 0.9f, 32000);
|
||||
}
|
||||
if(sp4C < 0.5 && 0.5 <= sp48){
|
||||
func_8030E6A4(SFX_80_YUMYUM_CLACK, randf2(0.75f, 0.95f), 32700);
|
||||
}
|
||||
if(sp4C < 0.9 && 0.9 <= sp48){
|
||||
func_8030E6D4(SFX_2_CLAW_SWIPE);
|
||||
}
|
||||
}//L80357B30
|
||||
if(func_80335794(this->unk148) > 0){
|
||||
func_80357264(this, 2);
|
||||
}
|
||||
}//L80357B48
|
||||
|
||||
if(this->state == 5){
|
||||
func_8033568C(this->unk148, &sp44, &sp40);
|
||||
if(sp44 < 0.1 && 0.1 <= sp40){
|
||||
func_8030E6A4(SFX_68_CLUCKER_AAEEGHH, randf2(1.0f, 1.1f), 32000);
|
||||
}
|
||||
|
||||
if(sp44 < 0.7 && 0.7 <= sp40){
|
||||
func_8030E6D4(SFX_61_CARTOONY_FALL);
|
||||
}
|
||||
if(func_80335794(this->unk148) > 0){
|
||||
func_80357264(this, 6);
|
||||
}
|
||||
}
|
||||
}
|
||||
101
src/core2/ch/code_468E0.c
Normal file
101
src/core2/ch/code_468E0.c
Normal file
@@ -0,0 +1,101 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
void func_802CD898(Actor *);
|
||||
void func_802CD8C0(Actor *);
|
||||
void func_802CDAC4(Actor *);
|
||||
void func_802CDB18(Actor *);
|
||||
|
||||
/* .data */
|
||||
ActorInfo D_80367160 = {0x12, 0x66, 0, 0, NULL,
|
||||
func_802CD898, func_802CD8C0, func_80325340,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_80367184 = {0x12, 0x6C, 0, 0, NULL,
|
||||
func_802CD898, func_802CDB18, func_80325340,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .code */
|
||||
void func_802CD870(Actor *this){
|
||||
*(s32 *)this->unkBC = TRUE;
|
||||
func_8028F918(2);
|
||||
}
|
||||
|
||||
void func_802CD898(Actor *this){
|
||||
marker_despawn(this->marker);
|
||||
func_802BBC58(2);
|
||||
}
|
||||
|
||||
void func_802CD8C0(Actor *this){
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = 1;
|
||||
this->marker->unk2C_1 = 1;
|
||||
this->marker->collidable = 0;
|
||||
*(s32*)this->unkBC = 0; //TODO Make struct
|
||||
if(func_803203FC(1) || func_803203FC(0x1F)){
|
||||
marker_despawn(this->marker);
|
||||
return;
|
||||
}
|
||||
if(this->unkF4_8 != 0x32 && func_8028E4A4() != this->unkF4_8){
|
||||
marker_despawn(this->marker);
|
||||
return;
|
||||
}
|
||||
if(map_get() == MAP_26_MMM_NAPPERS_ROOM){
|
||||
if(func_8031FF1C(BKPROG_1D_MMM_DINNING_ROOM_CUTSCENE)){
|
||||
marker_despawn(this->marker);
|
||||
return;
|
||||
}
|
||||
else{
|
||||
func_802CD870(this);
|
||||
func_80320004(BKPROG_1D_MMM_DINNING_ROOM_CUTSCENE, TRUE);
|
||||
}
|
||||
}
|
||||
//L802CD9C4
|
||||
if(map_get() == MAP_8E_GL_FURNACE_FUN){
|
||||
if(func_8031FF1C(BKPROG_F4_ENTER_FF_CUTSCENE)){
|
||||
marker_despawn(this->marker);
|
||||
return;
|
||||
}
|
||||
else{
|
||||
func_802CD870(this);
|
||||
}
|
||||
}
|
||||
}//L802CDA00
|
||||
|
||||
if(func_80343D50(this, func_80343654(this) + 1, 20, 20)){
|
||||
func_802CDAC4(this);
|
||||
if(1.0 == this->unk48){
|
||||
this->marker->unk2C_2 = 0;
|
||||
if(*(s32*)this->unkBC)
|
||||
func_8028F918(0);
|
||||
if(map_get() == MAP_8E_GL_FURNACE_FUN){
|
||||
mapSpecificFlags_set(4, TRUE);
|
||||
}
|
||||
else{
|
||||
func_802BBC58(2);
|
||||
func_802BD0D8(0xf);
|
||||
}
|
||||
marker_despawn(this->marker);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_802CDAC4(Actor *this){
|
||||
f32 sp1C[3];
|
||||
|
||||
func_802BBC58(1);
|
||||
func_8024CD88(this->position);
|
||||
sp1C[0] = this->pitch;
|
||||
sp1C[1] = this->yaw;
|
||||
sp1C[2] = 0.0f;
|
||||
func_8024CE18(sp1C);
|
||||
}
|
||||
|
||||
void func_802CDB18(Actor *this){
|
||||
func_8028FBD4(0);
|
||||
func_802CD8C0(this);
|
||||
}
|
||||
324
src/core2/ch/code_5AB30.c
Normal file
324
src/core2/ch/code_5AB30.c
Normal file
@@ -0,0 +1,324 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern int func_802592C4(f32[3], f32[3], f32);
|
||||
extern void func_802EFA20(ParticleEmitter *, f32, f32);
|
||||
extern void func_80328B8C(Actor *, s32, f32, s32);
|
||||
extern void func_80328FB0(Actor *, f32);
|
||||
extern void func_803300C0(ActorMarker *, void *);
|
||||
|
||||
|
||||
typedef struct {
|
||||
ActorMarker *unk0;
|
||||
f32 unk4;
|
||||
u8 pad8[0x1];
|
||||
u8 unk9;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
} ActorLocal_chSirSlush;
|
||||
|
||||
Actor *func_802E1AC0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx); //chSirSlush_draw
|
||||
void func_802E20E8(Actor *this); //chSirSlush_update
|
||||
|
||||
/* .data */
|
||||
ActorAnimationInfo D_80368650[] = {
|
||||
{0, 0.0f},
|
||||
{ASSET_108_ANIM_SIR_SLUSH_IDLE, 0.8f},
|
||||
{ASSET_109_ANIM_SIR_SLUSH_ATTACK, 4.0f},
|
||||
{ASSET_220_ANIM_SIR_SLUSH_DIE, 1.6f}
|
||||
};
|
||||
|
||||
ActorInfo D_80368670 = {
|
||||
0xB1, ACTOR_124_SIR_SLUSH, ASSET_377_MODEL_SIR_SLUSH,
|
||||
1, D_80368650,
|
||||
func_802E20E8, func_80326224, func_802E1AC0,
|
||||
0, 0x199, 0.0f, 0
|
||||
};
|
||||
|
||||
struct31s D_80368694 = {
|
||||
{0.4f, 1.55f},
|
||||
{0.0f, 0.0f},
|
||||
{0.0f, 0.01f},
|
||||
{4.0f, 4.0f},
|
||||
0.0f, 0.3f
|
||||
};
|
||||
|
||||
struct43s D_803686BC = {
|
||||
{{-250.0f, 600.0f, -250.0f}, {350.0f, 960.0f, 350.0f}},
|
||||
{{0.0f, -1200.0f, 0.0f}, {0.0f, -1200.0f, 0.0f}},
|
||||
{{-80.0f, 0.0f, -80.0f}, {80.0f, 200.0f, 80.0f}}
|
||||
};
|
||||
|
||||
f32 D_80368704[3] = {350.0f, 600.0f, 65.0f};
|
||||
|
||||
/* .code */
|
||||
Actor *func_802E1AC0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
Actor *actor;
|
||||
ActorLocal_chSirSlush *local;
|
||||
|
||||
actor = marker_getActor(marker);
|
||||
local = (ActorLocal_chSirSlush *)&actor->local;
|
||||
func_8033A45C(1, local->unk9);
|
||||
func_8033A45C(2, local->unkA);
|
||||
func_80325888(marker, gfx, mtx, vtx);
|
||||
}
|
||||
|
||||
void func_802E1B24(ActorMarker *marker){
|
||||
Actor *actor;
|
||||
Actor *other;
|
||||
f32 sp1C[3];
|
||||
ActorMarker *m = *(ActorMarker **)▮
|
||||
|
||||
actor = marker_getActor(m);
|
||||
other = spawn_child_actor(ACTOR_125_SNOWBALL, &actor);
|
||||
if(m->unk14_21){
|
||||
func_8034A174(m->unk44, 5, sp1C);
|
||||
}
|
||||
else{
|
||||
sp1C[0] = actor->position[0];
|
||||
sp1C[1] = actor->position[1];
|
||||
sp1C[2] = actor->position[2];
|
||||
sp1C[1] += 150.0f;
|
||||
}
|
||||
other->position[0] = sp1C[0];
|
||||
other->position[1] = sp1C[1];
|
||||
other->position[2] = sp1C[2];
|
||||
}
|
||||
|
||||
void func_802E1BD0(ActorMarker *marker){
|
||||
Actor *actor;
|
||||
Actor *other;
|
||||
f32 sp2C[3];
|
||||
s32 sp28;
|
||||
ActorMarker *m = *(ActorMarker **)▮
|
||||
|
||||
actor = marker_getActor(m);
|
||||
other = spawn_child_actor(ACTOR_126_SIR_SLUSH_HAT, &actor);
|
||||
|
||||
func_8034A174(m->unk44, 6, sp2C);
|
||||
|
||||
other->position[0] = sp2C[0];
|
||||
other->position[1] = sp2C[1];
|
||||
other->position[2] = sp2C[2];
|
||||
|
||||
|
||||
other->yaw = actor->yaw + 180.0f;
|
||||
other->velocity[0] = other->velocity[1] = other->velocity[2] = 0.0f;
|
||||
|
||||
other->velocity[0] = 34.0f;
|
||||
|
||||
sp28 = (func_8023DB5C() & 1)? 0x3C : 0x78;
|
||||
ml_vec3f_yaw_rotate_copy(other->velocity, other->velocity, other->yaw - sp28);
|
||||
other->velocity[1] = 30.0f;
|
||||
}
|
||||
|
||||
void func_802E1CB8(f32 position[3], s32 count){
|
||||
ParticleEmitter *particleSpawner = partEmitList_pushNew(count);
|
||||
|
||||
particleEmitter_setModel(particleSpawner, ASSET_378_MODEL_SNOWBALL);
|
||||
particleEmitter_setPosition(particleSpawner, position);
|
||||
particleEmitter_setPositionVelocityAndAccelerationRanges(particleSpawner, &D_803686BC);
|
||||
func_802EFE24(particleSpawner, -600.0f, -600.0f, -600.0f, 600.0f, 600.0f, 600.0f);
|
||||
func_802EF9F8(particleSpawner, 0.01f);
|
||||
func_802EFA18(particleSpawner, 3);
|
||||
func_802EFA20(particleSpawner, 1.0f, 1.3f);
|
||||
func_802EF9EC(particleSpawner, 0x2f, 16000);
|
||||
func_802EFB98(particleSpawner, &D_80368694);
|
||||
particleEmitter_emitN(particleSpawner, count);
|
||||
}
|
||||
|
||||
void func_802E1DA0(Actor *this){
|
||||
ActorLocal_chSirSlush *local = (ActorLocal_chSirSlush *) &this->local;
|
||||
func_80328B8C(this, 1, 0.01f, 1);
|
||||
actor_loopAnimation(this);
|
||||
local->unk4 = 0.4f;
|
||||
}
|
||||
|
||||
void func_802E1DE8(Actor *this){
|
||||
func_80328B8C(this, 3, 0.01f, 1);
|
||||
actor_playAnimationOnce(this);
|
||||
}
|
||||
|
||||
void func_802E1E20(Actor *this, f32 arg1){
|
||||
this->yaw_moving = func_80329784(this);
|
||||
func_80328FB0(this, 6.0f);
|
||||
}
|
||||
|
||||
int func_802E1E5C(Actor *this, s32 arg1){
|
||||
f32 f0;
|
||||
f0 = this->yaw - this->yaw_moving;
|
||||
if((f0 < arg1) && (-arg1 < f0)){
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int func_802E1EB4(Actor *this, s32 arg1, s32 arg2){
|
||||
f32 sp1C[3];
|
||||
if(this->unkF4_8 == 0x33){
|
||||
player_getPosition(sp1C);
|
||||
if( (this->position[1] + 500.0f < sp1C[1]) || (sp1C[1] < this->position[1] - 500.0f))
|
||||
return 0;
|
||||
}//L802E1F28
|
||||
if(func_80329530(this, arg2) && !func_80329530(this, arg1)){
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int func_802E1F70(ActorMarker *marker, s32 arg1){
|
||||
if(marker->unk40_31 == 0xB){
|
||||
marker->unk14_20 = 0x287;
|
||||
}
|
||||
else{
|
||||
marker->unk14_20 = 0xB1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void func_802E1FD0(ActorMarker *marker, ActorMarker *other_marker){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
FUNC_8030E8B4(SFX_15_METALLIC_HIT_2, 1.0f, 30000, actor->position, 1500, 4500);
|
||||
FUNC_8030E8B4(SFX_3EA_UNKNOWN, 1.0f, 30000, actor->position, 1500, 4500);
|
||||
FUNC_8030E8B4(SFX_2F_ORANGE_SPLAT, 1.0f, 30000, actor->position, 1500, 4500);
|
||||
|
||||
func_802C3C88((GenMethod_1)func_802E1BD0, (s32)actor->marker);
|
||||
if(map_get() == MAP_27_FP_FREEZEEZY_PEAK)
|
||||
func_8038A978();
|
||||
func_802E1CB8(actor->position, 0xC);
|
||||
marker_despawn(actor->marker);
|
||||
}
|
||||
|
||||
int func_802E208C(void){
|
||||
f32 sp1C[3];
|
||||
if(map_get() == MAP_46_CCW_WINTER){
|
||||
player_getPosition(sp1C);
|
||||
if(func_802592C4(sp1C, D_80368704, 900.0f))
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//chSirSlush_update
|
||||
void func_802E20E8(Actor *this){
|
||||
ActorLocal_chSirSlush *local = (ActorLocal_chSirSlush *) &this->local;
|
||||
f32 sp38;
|
||||
|
||||
|
||||
sp38 = time_getDelta();
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = TRUE;
|
||||
this->marker->propPtr->unk8_3 = 0;
|
||||
actor_collisionOn(this);
|
||||
marker_setCollisionScripts(this->marker, NULL, NULL, func_802E1FD0);
|
||||
func_803300C0(this->marker, func_802E1F70);
|
||||
local->unk9 = 0;
|
||||
local->unkA = 1;
|
||||
local->unkB = 0;
|
||||
local->unk4 = 0.0f;
|
||||
animctrl_setTransitionDuration(this->animctrl, 0.8f);
|
||||
animctrl_setAnimTimer(this->animctrl, randf());
|
||||
func_8032BC18(this);
|
||||
if(map_get() == MAP_27_FP_FREEZEEZY_PEAK){
|
||||
local->unk0 = func_80326EEC(0x336)->marker;
|
||||
func_8038A990();
|
||||
}
|
||||
}//L802E21D8
|
||||
if(map_get() == MAP_27_FP_FREEZEEZY_PEAK){
|
||||
if(func_8038BFA0() || func_8038DD14()){
|
||||
actor_collisionOff(this);
|
||||
this->unk58_0 = 0;
|
||||
return;
|
||||
}
|
||||
else{//L802E2224
|
||||
actor_collisionOn(this);
|
||||
this->unk58_0 = 1;
|
||||
|
||||
}
|
||||
}//L802E223C
|
||||
if(!actor_playerIsWithinDist(this, 4000))
|
||||
return;
|
||||
|
||||
if(!local->unkB && this->marker->unk14_21){
|
||||
local->unkB = 1;
|
||||
}//L802E2280
|
||||
switch(this->state){
|
||||
case 1://L802E22B0
|
||||
local->unk9 = FALSE;
|
||||
local->unkA = 1;
|
||||
func_802E1E20(this, 6.0f);
|
||||
if(!func_80329530(this, 0xC4E)){
|
||||
func_802E1DE8(this);
|
||||
}
|
||||
else if(
|
||||
map_get() != MAP_27_FP_FREEZEEZY_PEAK
|
||||
|| func_8038DD34(local->unk0) == 0
|
||||
|| func_8031FF1C(0x13)
|
||||
){//L802E2318
|
||||
if(0.0 < local->unk4){
|
||||
if( (func_8023DB5C() & 1)
|
||||
|| func_8028ECAC() == BSGROUP_A_FLYING
|
||||
){//L802E236C
|
||||
local->unk4 -= sp38;
|
||||
}
|
||||
}
|
||||
else{//L802E2380
|
||||
if( func_802E1EB4(this, 0x1f4, 0xabe)
|
||||
&& func_802E1E5C(this, 3)
|
||||
&& func_8028EE84() != BSWATERGROUP_2_UNDERWATER
|
||||
&& !func_802E208C()
|
||||
){
|
||||
func_80328B8C(this, 2, 0.01f, 1);
|
||||
actor_playAnimationOnce(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2://L802E23E8
|
||||
if(!func_80329530(this, 0xC4E)){
|
||||
func_802E1DE8(this);
|
||||
}//L802E240C
|
||||
else if(
|
||||
0.98 < animctrl_getAnimTimer(this->animctrl)
|
||||
|| !func_802E1EB4(this, 0x1f4, 0xabe)
|
||||
|| func_8028EE84() == BSWATERGROUP_2_UNDERWATER
|
||||
|| func_802E208C()
|
||||
){
|
||||
func_802E1DA0(this);
|
||||
}
|
||||
else{
|
||||
if(animctrl_getAnimTimer(this->animctrl) < 0.45){
|
||||
func_802E1E20(this, 6.0f);
|
||||
}
|
||||
if( actor_animationIsAt(this, 0.19f)
|
||||
|| actor_animationIsAt(this, 0.28f)
|
||||
|| actor_animationIsAt(this, 0.37f)
|
||||
){
|
||||
FUNC_8030E8B4(SFX_A7_WOODEN_SWOSH, 1.3f, 18000, this->position, 800, 3050);
|
||||
}//L802E24FC
|
||||
if(actor_animationIsAt(this, 0.15f)){
|
||||
func_8030E878(SFX_3F5_UNKNOWN, randf2(1.35f, 1.5f),32000, this->position, 800.0f, 3050.0f);
|
||||
}//L802E2558
|
||||
|
||||
if(actor_animationIsAt(this, 0.45f)){
|
||||
local->unk9 = TRUE;
|
||||
}
|
||||
else if(
|
||||
actor_animationIsAt(this, 0.58f)
|
||||
&& local->unkB
|
||||
){
|
||||
func_8030E878(SFX_8F_SNOWBALL_FLYING, randf2(0.95f, 1.05f), 30000, this->position, 800.0f, 3050.0f);
|
||||
func_802C3C88((GenMethod_1)func_802E1B24, (s32)this->marker);
|
||||
local->unk9 = FALSE;
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
case 3://L802E2604
|
||||
if(func_80329530(this, 0xC4E)){
|
||||
func_802E1DA0(this);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
156
src/core2/ch/code_CFA60.c
Normal file
156
src/core2/ch/code_CFA60.c
Normal file
@@ -0,0 +1,156 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* public */
|
||||
Actor *func_80356C50(ActorMarker *, Gfx **, Mtx **, Vtx **);
|
||||
void func_80356CCC(Actor *);
|
||||
|
||||
typedef struct{
|
||||
f32 unk0;
|
||||
}ActorLocal_Core2_CFA60;
|
||||
|
||||
/* .data */
|
||||
ActorInfo D_80372840 = {
|
||||
0x29, ACTOR_1CC_GRILL_CHOMPA, ASSET_430_MODEL_GRILL_CHOMPA,
|
||||
0, NULL,
|
||||
func_80356CCC, NULL, func_80356C50,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .code */
|
||||
void func_803569F0(Actor *this, s32 next_state){
|
||||
ActorLocal_Core2_CFA60 *local = (ActorLocal_Core2_CFA60 *)&this->local;
|
||||
|
||||
this->marker->unk14_20 = 0x1cf;
|
||||
actor_collisionOff(this);
|
||||
if(next_state == 1 || next_state == 2){
|
||||
func_80335924(this->unk148, ASSET_15A_ANIM_GRILL_CHOMPA_ATTACK, 0, 2.5f);
|
||||
func_80335A74(this->unk148, 0.99f);
|
||||
func_80335A8C(this->unk148, 4);
|
||||
if(this->state == 4){
|
||||
local->unk0 = randf2(0.5f, 1.0f);
|
||||
}
|
||||
else{//L80356AA4
|
||||
local->unk0 = 0.0f;
|
||||
}
|
||||
}////L80356AB8
|
||||
if(this->state == 1 && next_state == 2){
|
||||
func_8030E760(0x3EF, 0.9f, 32700);
|
||||
}
|
||||
if(next_state == 3){
|
||||
local->unk0 = 0.2f;
|
||||
}
|
||||
if(next_state == 4){
|
||||
this->marker->unk14_20 = 0x29;
|
||||
actor_collisionOn(this);
|
||||
func_80335924(this->unk148, ASSET_15A_ANIM_GRILL_CHOMPA_ATTACK, 0, randf2(2.3f, 2.7f));
|
||||
func_80335A8C(this->unk148, 2);
|
||||
func_8030E760(0x3ef, 1.1f, 25000);
|
||||
func_8030E760(0x3ef, 1.1f, 25000);
|
||||
}//L80356B90
|
||||
if(next_state == 5){
|
||||
func_8030E760(SFX_1E_HITTING_AN_ENEMY_2, 1.0f, 32000);
|
||||
func_80335924(this->unk148, ASSET_15B_ANIM_GRILL_CHOMPA_DIE, 0.05f, 2.0f);
|
||||
func_80335A8C(this->unk148, 2);
|
||||
}
|
||||
this->state = next_state;
|
||||
}
|
||||
|
||||
|
||||
void func_80356BF4(ActorMarker *marker, ActorMarker *other_marker){
|
||||
func_8030E760(SFX_1E_HITTING_AN_ENEMY_2, 1.0f, 32000);
|
||||
}
|
||||
|
||||
void func_80356C24(ActorMarker *marker, ActorMarker *other_marker){
|
||||
func_803569F0(marker_getActor(marker), 5);
|
||||
}
|
||||
|
||||
Actor *func_80356C50(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
if(actor->state == 0){
|
||||
return actor;
|
||||
}
|
||||
else{
|
||||
func_8033A45C(3, (actor->state == 1 || actor->state == 6)? 0:1);
|
||||
return func_80325888(marker, gfx, mtx, vtx);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void func_80356CCC(Actor *this){
|
||||
f32 sp5C[3];
|
||||
f32 sp58;
|
||||
ActorLocal_Core2_CFA60 *local = (ActorLocal_Core2_CFA60 *)&this->local;
|
||||
f32 sp50;
|
||||
f32 sp4C;
|
||||
f32 sp48;
|
||||
f32 sp44;
|
||||
f32 sp40;
|
||||
|
||||
sp50 = time_getDelta();
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = 1;
|
||||
this->unk16C_0 = 1;
|
||||
marker_setCollisionScripts(this->marker, NULL, func_80356BF4, func_80356C24);
|
||||
func_803569F0(this, (this->state < 5)? 1 : 6);
|
||||
}//L80356D48
|
||||
player_getPosition(sp5C);
|
||||
sp58 = ml_vec3f_distance(this->position, sp5C);
|
||||
if( this->state == 1){
|
||||
if( sp58 < this->scale*400.0f
|
||||
&& (map_get() != MAP_3C_RBB_KITCHEN || this->position_z < sp5C[2])
|
||||
){
|
||||
func_803569F0(this, 2);
|
||||
}
|
||||
}//L80356DCC
|
||||
if(this->state == 2){
|
||||
if(0.0f < local->unk0){
|
||||
local->unk0 -= sp50;
|
||||
}
|
||||
else if(sp58 < this->scale*300.0f){
|
||||
func_803569F0(this, 3);
|
||||
}
|
||||
else if(this->scale*500.0f < sp58){
|
||||
func_803569F0(this, 1);
|
||||
}
|
||||
}//L80356E88
|
||||
if(this->state == 3){
|
||||
if(func_8025773C(&this->local, sp50)){
|
||||
func_803569F0(this, 4);
|
||||
}
|
||||
}//L80356EAC
|
||||
if(this->state == 4){
|
||||
func_8033568C(this->unk148, &sp4C, &sp48);
|
||||
if(sp4C < 0.59 && 0.59 <= sp48){
|
||||
this->marker->unk14_20 = 0x1cf;
|
||||
}
|
||||
if(sp4C < 0.5 && 0.5 <= sp48){
|
||||
func_8030E760(SFX_2_CLAW_SWIPE, 0.9f, 32000);
|
||||
}
|
||||
if( (sp4C < 0.11 && 0.11 <= sp48)
|
||||
|| (sp4C < 0.32 && 0.32 <= sp48)
|
||||
|| (sp4C < 0.53 && 0.53 <= sp48)
|
||||
){
|
||||
func_8030E760(SFX_6D_CROC_BITE, randf2(0.95f, 1.05f), 32000);
|
||||
}//L80357028
|
||||
if(sp4C < 0.9 && 0.9 <= sp48){
|
||||
func_8030E760(SFX_2_CLAW_SWIPE, 1.0f, 32000);
|
||||
}
|
||||
if(func_80335794(this->unk148) > 0){
|
||||
func_803569F0(this, 2);
|
||||
}
|
||||
}//L80357078
|
||||
if(this->state == 5){
|
||||
func_8033568C(this->unk148, &sp44, &sp40);
|
||||
if(sp44 < 0.1 && 0.1 <= sp40){
|
||||
func_8030E760(SFX_D7_GRABBA_DEATH, 1.0f, 32000);
|
||||
}
|
||||
if(sp44 < 0.7 && 0.7 <= sp40){
|
||||
func_8030E760(SFX_A_BANJO_LANDING_05, 0.8f, 32000);
|
||||
}
|
||||
if(func_80335794(this->unk148) > 0){
|
||||
func_803569F0(this, 6);
|
||||
}
|
||||
}//L8035713C
|
||||
}
|
||||
89
src/core2/ch/drips.c
Normal file
89
src/core2/ch/drips.c
Normal file
@@ -0,0 +1,89 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
#define _HorzDist3v(v1, v2) ((v1[0]-v2[0])*(v1[0]-v2[0]) + (v1[2]-v2[2])*(v1[2]-v2[2]))
|
||||
extern int func_8024549C(f32[3], f32);
|
||||
|
||||
typedef struct{
|
||||
f32 unk0;
|
||||
f32 unk4;
|
||||
f32 unk8;
|
||||
f32 unkC;
|
||||
}struct_core2_D2AB0;
|
||||
|
||||
void chdrips_update(Actor *this);
|
||||
|
||||
/* .data */
|
||||
ActorInfo gChDripsInfo = {
|
||||
0x246, ACTOR_354_DRIPS, 0,
|
||||
0, NULL,
|
||||
chdrips_update, func_80326224, func_80325340,
|
||||
5000, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
s32 D_80372AE4[3] = {0xff, 0xff, 0xfe};
|
||||
|
||||
struct_core2_D2AB0 D_80372AF0 = {0.0f, 0.0f, 1.0f, 1.4f};
|
||||
|
||||
struct43s D_80372B00 = {
|
||||
{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}},
|
||||
{{0.0f, -650.0f, 0.0f}, {0.0f, -650.0f, 0.0f}},
|
||||
{{-400.0f, 0.0f, -400.0f}, {400.0f, 0.0f, 400.0f}}
|
||||
};
|
||||
|
||||
|
||||
/* .code */
|
||||
void func_80359A40(f32 position[3], struct_core2_D2AB0 *arg1, s32 cnt){
|
||||
ParticleEmitter *pCtrl = partEmitList_pushNew(cnt);
|
||||
particleEmitter_setSprite(pCtrl, ASSET_70C_SPRITE_RIPPLE);
|
||||
func_802EFA70(pCtrl, 1);
|
||||
func_802EFFA8(pCtrl, D_80372AE4);
|
||||
particleEmitter_setPosition(pCtrl, position);
|
||||
func_802EFB70(pCtrl, 0.1f, 0.1f);
|
||||
func_802EFB84(pCtrl, 1.0f, 1.4f);
|
||||
particleEmitter_setSpawnIntervalRange(pCtrl, arg1->unk0, arg1->unk4);
|
||||
func_802EFEC0(pCtrl, arg1->unk8, arg1->unkC);
|
||||
func_802EFA5C(pCtrl, 0.0f, 0.5f);
|
||||
particleEmitter_emitN(pCtrl, cnt);
|
||||
}
|
||||
|
||||
void __chdrips_particleCallback(struct31s *pCtrl, f32 position[3]){
|
||||
if(func_8024549C(position, 4.0f)){
|
||||
position[1] += 2.0f;
|
||||
func_80359A40(position, &D_80372AF0, 1);
|
||||
func_8030E878(SFX_413_UNKNOWN, randf2(1.0f, 1.4f), 20000, position, 0.0f, 3500.0f);
|
||||
}
|
||||
}
|
||||
|
||||
int __chdrips_playerWithinDist(Actor *this, s32 arg1){
|
||||
f32 sp1C[3];
|
||||
|
||||
player_getPosition(sp1C);
|
||||
if(_HorzDist3v(this->position, sp1C) < arg1*arg1)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void chdrips_update(Actor *this){
|
||||
ParticleEmitter *pCtrl;
|
||||
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = TRUE;
|
||||
actor_collisionOff(this);
|
||||
this->unk60 = this->yaw/360.0;
|
||||
}
|
||||
if(__chdrips_playerWithinDist(this, 5000) && randf() < this->unk60){
|
||||
pCtrl = partEmitList_pushNew(1);
|
||||
particleEmitter_setModel(pCtrl, ASSET_8A0_SPRITE_WATER_DROP);
|
||||
particleEmitter_setPosition(pCtrl, this->position);
|
||||
particleEmitter_setPositionVelocityAndAccelerationRanges(pCtrl, &D_80372B00);
|
||||
func_802EFA18(pCtrl, 1);
|
||||
particleEmitter_setParticleCallback(pCtrl, __chdrips_particleCallback);
|
||||
particleEmitter_setSpawnIntervalRange(pCtrl, 0.0f, 0.01f);
|
||||
func_802EFEC0(pCtrl, 7.0f, 7.0f);
|
||||
func_802EFB70(pCtrl, 0.1f, 0.1f);
|
||||
func_802EFB84(pCtrl, 0.1f, 0.1f);
|
||||
particleEmitter_emitN(pCtrl, 1);
|
||||
}
|
||||
}
|
||||
91
src/core2/ch/firefx.c
Normal file
91
src/core2/ch/firefx.c
Normal file
@@ -0,0 +1,91 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern int func_8024DB50(f32 arg0[3], f32 arg1);
|
||||
|
||||
void chfirefx_update(Actor *this);
|
||||
|
||||
/* .data */
|
||||
ActorInfo gChFireFxInfo = {
|
||||
0x256, ACTOR_383_FIRE_FX, ASSET_526_SPRITE_FIRE,
|
||||
0, NULL,
|
||||
chfirefx_update, func_80326224, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* code */
|
||||
void __chfirefx_spawnSmoke(f32 position[3], f32 scale){
|
||||
ParticleEmitter *pCtrl;
|
||||
|
||||
pCtrl = partEmitList_pushNew(1);
|
||||
particleEmitter_setSprite(pCtrl, ASSET_70D_SPRITE_SMOKE_1);
|
||||
particleEmitter_setStartingFrameRange(pCtrl, 1, 6);
|
||||
func_802EF9E4(pCtrl, 0x23);
|
||||
particleEmitter_setPosition(pCtrl, position);
|
||||
particleEmitter_setParticleSpawnPositionRange(pCtrl, 0.0f, 110.0f*scale, 0.0f, 0.0f, 110.0f*scale, 0.0f);
|
||||
particleEmitter_setParticleVelocityRange(pCtrl, 0.0f, 40.0f*scale, 0.0f, 0.0f, 90.0f*scale, 0.0f);
|
||||
func_802EFB70(pCtrl, 2.6*scale, 3.2*scale);
|
||||
func_802EFB84(pCtrl, 5.0*scale, 6.0*scale);
|
||||
particleEmitter_setSpawnIntervalRange(pCtrl, 0.0f, 0.01f);
|
||||
func_802EFEC0(pCtrl, 4.0f, 7.0f);
|
||||
func_802EFA5C(pCtrl, 0.3f, 0.7f);
|
||||
func_802EFA70(pCtrl, 4);
|
||||
particleEmitter_emitN(pCtrl, 1);
|
||||
}
|
||||
|
||||
void __chfirefx_spawnSpark(f32 position[3], f32 scale){
|
||||
ParticleEmitter *pCtrl;
|
||||
|
||||
pCtrl = partEmitList_pushNew(1);
|
||||
particleEmitter_setSprite(pCtrl, ASSET_713_SPRITE_SPARKLE_YELLOW);
|
||||
particleEmitter_setStartingFrameRange(pCtrl, 1, 6);
|
||||
particleEmitter_setPosition(pCtrl, position);
|
||||
particleEmitter_setParticleSpawnPositionRange(pCtrl, 0.0f, 20.0f*scale, 0.0f, 0.0f, 20.0f*scale, 0.0f);
|
||||
particleEmitter_setParticleVelocityRange(pCtrl, -30.0f*scale, 120.0f*scale, -30.0f*scale, 60.0f*scale, 360.0f*scale, 60.0f*scale);
|
||||
particleEmitter_setParticleAccelerationRange(pCtrl, 0.0f, -50.0f, 0.0f, 0.0f, -90.0f, 0.0f);
|
||||
func_802EFB70(pCtrl, 0.1*scale, 0.2*scale);
|
||||
func_802EFB84(pCtrl, 0.2*scale, 0.4*scale);
|
||||
particleEmitter_setSpawnIntervalRange(pCtrl, 0.0f, 0.01f);
|
||||
func_802EFEC0(pCtrl, 0.9f, 1.3f);
|
||||
func_802EFA5C(pCtrl, 0.3f, 0.7f);
|
||||
func_802EFA70(pCtrl, 4);
|
||||
particleEmitter_emitN(pCtrl, 1);
|
||||
}
|
||||
|
||||
void __chfirefx_hiss(ActorMarker *marker,ActorMarker *other_marker){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
FUNC_8030E8B4(SFX_96_HOTSAND_EEL_HISS, 1.0f, 32000, actor->position, 1000, 2000);
|
||||
}
|
||||
|
||||
void chfirefx_update(Actor *this){
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = TRUE;
|
||||
this->marker->propPtr->unk8_3 = FALSE;
|
||||
actor_collisionOn(this);
|
||||
marker_setCollisionScripts(this->marker, __chfirefx_hiss, NULL, NULL);
|
||||
this->unk38_31 = (0.0f != this->yaw) ? 1 : 0;
|
||||
if(this->unkF4_8 != 0x32){
|
||||
this->unk1C[0] = 1.0f;
|
||||
this->unk44_31 = func_8030ED2C(SFX_128_FIRE_CRACKING, 2);
|
||||
func_8030DBB4(this->unk44_31, 1.1f);
|
||||
}
|
||||
else{
|
||||
this->unk1C[0] = 0.0f;
|
||||
}
|
||||
}//L80359934
|
||||
if(actor_playerIsWithinDist(this, 2000)){
|
||||
if( func_8024DB50(this->position, 50.0f) && this->unk38_31 ){
|
||||
if(!(func_8023DB5C() & 3) && randf() < 0.1){
|
||||
__chfirefx_spawnSmoke(this->position, this->scale);
|
||||
} //L803599AC
|
||||
if(!(func_8023DB5C() & 3) && randf() < 0.3){
|
||||
__chfirefx_spawnSpark(this->position, this->scale);
|
||||
}
|
||||
}//L803599F4
|
||||
if(0.0f != this->unk1C[0]){
|
||||
func_8030DB04(this->unk44_31, 7000, this->position, 300.0f, 800.0f);
|
||||
func_8030E2C4(this->unk44_31);
|
||||
}
|
||||
}//L80359A2C
|
||||
}
|
||||
332
src/core2/ch/flotsam.c
Normal file
332
src/core2/ch/flotsam.c
Normal file
@@ -0,0 +1,332 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_80309724(f32[3]);
|
||||
|
||||
typedef struct {
|
||||
f32 unk0;
|
||||
f32 unk4;
|
||||
ParticleEmitter *pCtrl_8;
|
||||
u8 unkC;
|
||||
u8 unkD;
|
||||
//u8 padE[2];
|
||||
f32 unk10[3];
|
||||
f32 unk1C[3];
|
||||
f32 unk28[3];
|
||||
f32 unk34[3];
|
||||
}ActorLocal_Core2_D50F0;
|
||||
|
||||
|
||||
void func_8035C8F4(Actor *this);
|
||||
Actor* func_8035C71C(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
||||
|
||||
/* .data */
|
||||
ActorInfo D_80372C80 = {
|
||||
0xC9, 0x13B, 0x401,
|
||||
0, NULL,
|
||||
func_8035C8F4, NULL, func_8035C71C,
|
||||
0, 0, 1.0f, 0
|
||||
};
|
||||
|
||||
struct31s D_80372CA4 = {
|
||||
{1.0f, 1.2f},
|
||||
{1.6f, 2.0f},
|
||||
{0.05f, 0.05f},
|
||||
{0.3f, 0.5f},
|
||||
0.1f, 0.5f
|
||||
};
|
||||
|
||||
struct43s D_80372CCC = {
|
||||
{{-5.0f, 10.0f, -5.0f}, {5.0f, 50.0f, 5.0f}},
|
||||
{{0.0f, 200.0f, 0.0f}, {0.0f, 1000.0f, 0.0f}},
|
||||
{{-20.0f, -20.0f, -20.0f}, {20.0f, 20.0f, 20.0f}}
|
||||
};
|
||||
|
||||
/* .code */
|
||||
void func_8035C080(Actor *this, s32 next_state){
|
||||
f32 i;
|
||||
ActorLocal_Core2_D50F0 *local = (ActorLocal_Core2_D50F0 *)&this->local; //sp60
|
||||
f32 sp64[3];
|
||||
f32 sp60;
|
||||
f32 sp54[3];
|
||||
f32 sp48[3];
|
||||
f32 sp3C[3];
|
||||
s32 sp38;
|
||||
|
||||
local->unk0 = 0.0f;
|
||||
local->unkD = next_state;
|
||||
|
||||
if(next_state == 1){
|
||||
func_80335924(this->unk148, 0, 0.0f, 0.0f);
|
||||
this->yaw = local->unk34[0];
|
||||
}
|
||||
if( next_state == 3
|
||||
|| next_state == 4
|
||||
|| next_state == 7
|
||||
|| next_state == 6
|
||||
){
|
||||
func_80335924(this->unk148, ASSET_132_ANIM_FLOTSAM_MOVE, 0.1f, 0.7f);
|
||||
local->unk10[0] = this->position_x;
|
||||
local->unk10[1] = this->position_y;
|
||||
local->unk10[2] = this->position_z;
|
||||
actor_collisionOn(this);
|
||||
if(next_state == 3){
|
||||
player_getPosition(sp54);
|
||||
}
|
||||
else if(next_state == 4){//L8035C15C
|
||||
sp54[0] = local->unk28[0];\
|
||||
sp54[1] = local->unk28[1];\
|
||||
sp54[2] = local->unk28[2];
|
||||
}
|
||||
else if(next_state == 6){//L8035C180
|
||||
func_8030E6D4(SFX_1D_HITTING_AN_ENEMY_1);
|
||||
actor_collisionOff(this);
|
||||
player_getPosition(sp48);
|
||||
sp3C[0] = this->position_x - sp48[0];
|
||||
sp3C[1] = this->position_y - sp48[1];\
|
||||
sp3C[2] = this->position_z - sp48[2];\
|
||||
sp3C[1] = 0.0f;
|
||||
ml_vec3f_set_length(sp3C, 150.0f);
|
||||
sp54[0] = sp3C[0] + this->position_x;\
|
||||
sp54[1] = sp3C[1] + this->position_y;\
|
||||
sp54[2] = sp3C[2] + this->position_z;
|
||||
sp54[1] = local->unk4;
|
||||
}
|
||||
else{//L8035C228
|
||||
sp54[0] = this->position_x;\
|
||||
sp54[1] = this->position_y;\
|
||||
sp54[2] = this->position_z;
|
||||
} //L8035C240
|
||||
sp64[0] = sp54[0] - this->position_x;\
|
||||
sp64[1] = sp54[1] - this->position_y;\
|
||||
sp64[2] = sp54[2] - this->position_z;
|
||||
sp64[1] = 0.0f;
|
||||
sp60 = gu_sqrtf(sp64[0]*sp64[0] + sp64[1]*sp64[1] + sp64[2]*sp64[2]);
|
||||
|
||||
if(next_state == 4 && sp60 <= 250.0f){
|
||||
local->unk1C[0] = sp54[0];\
|
||||
local->unk1C[1] = sp54[1];\
|
||||
local->unk1C[2] = sp54[2];
|
||||
next_state = 5;
|
||||
}
|
||||
else{//L8035C2DC
|
||||
if(this->state == 2){
|
||||
if(300.0f < sp60){
|
||||
ml_vec3f_set_length(sp64, 300.0f);
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(150.0f < sp60){
|
||||
ml_vec3f_set_length(sp64, 150.0f);
|
||||
}
|
||||
}////L8035C344
|
||||
for(i = 1; 0.025 < i; i -= 0.05){//L8035C378
|
||||
local->unk1C[0] = sp64[0] *i + this->position_x;
|
||||
local->unk1C[1] = local->unk4;
|
||||
local->unk1C[2] = sp64[2] *i + this->position_z;
|
||||
if(func_80329210(this, local->unk1C)){
|
||||
next_state = 5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}//L8035C3F8
|
||||
|
||||
if(next_state == 5){
|
||||
func_8030E878(0x3f2, randf2(1, 1.2f), 0x7530, this->position, 100.0f, 10000.0f);
|
||||
local->unk34[1] = this->yaw;
|
||||
if(sp60 <= 250.0f){
|
||||
local->unk34[2] = local->unk34[0];
|
||||
}
|
||||
else if(local->unk34[0] < local->unk34[1]){//L8035C47C
|
||||
local->unk34[2] = local->unk34[0] - 20.0f;
|
||||
}
|
||||
else{//L8035C4B0
|
||||
local->unk34[2] = local->unk34[0] + 20.0f;
|
||||
}
|
||||
}
|
||||
else if(next_state == 3){//L8035C4C0
|
||||
if(ml_vec3f_distance(local->unk28, this->position) < 10.0f){
|
||||
func_8035C080(this, 1);
|
||||
return;
|
||||
}
|
||||
else{
|
||||
func_8035C080(this, 4);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if(next_state == 4){//L8035C514
|
||||
local->unk1C[0] = sp54[0];
|
||||
local->unk1C[1] = sp54[1];
|
||||
local->unk1C[2] = sp54[2];
|
||||
next_state = 5;
|
||||
}
|
||||
else if(next_state == 7){//L8035C540
|
||||
func_8035C080(this, 4);
|
||||
return;
|
||||
}
|
||||
}//L8035C560
|
||||
|
||||
if(next_state == 8){
|
||||
actor_collisionOff(this);
|
||||
FUNC_8030E624(SFX_1D_HITTING_AN_ENEMY_1, 1.0f, 25000);
|
||||
timed_playSfx(0.2f, SFX_103_FLOTSAM_DEATH, 1.0f, 32000);
|
||||
sp38 = func_802F9AA8(SFX_104_PROPELLER_NOISE);
|
||||
func_802F9DB8(sp38, 1.0f, 1.3f, 0.05f);
|
||||
func_802F9EC4(sp38, this->position, 0x5dc, 0x9c4);
|
||||
func_802F9F80(sp38, 0.0f, 2.0f, 2.0f);
|
||||
func_802FA060(sp38, 0x6590, 0x6d60, 500.0f);
|
||||
func_80335924(this->unk148, ASSET_189_ANIM_FLOTSAM_DIE, 0.1f, 4.0f);
|
||||
func_80335A8C(this->unk148, 2);
|
||||
local->pCtrl_8 = particleEmitter_new(20);
|
||||
particleEmitter_setSprite(local->pCtrl_8, ASSET_70E_SPRITE_SMOKE_2);
|
||||
particleEmitter_setStartingFrameRange(local->pCtrl_8, 0, 7);
|
||||
particleEmitter_setPosition(local->pCtrl_8, this->position);
|
||||
particleEmitter_setPositionVelocityAndAccelerationRanges(local->pCtrl_8, &D_80372CCC);
|
||||
func_802EFB98(local->pCtrl_8, &D_80372CA4);
|
||||
particleEmitter_setSpawnInterval(local->pCtrl_8, 4);
|
||||
}//L8035C698
|
||||
|
||||
this->state = next_state;
|
||||
|
||||
}
|
||||
|
||||
void func_8035C6C4(ActorMarker *this_marker, ActorMarker *other_marker){
|
||||
Actor *this = marker_getActor(this_marker);
|
||||
func_8035C080(this, 6);
|
||||
}
|
||||
|
||||
void func_8035C6F0(ActorMarker *this_marker, ActorMarker *other_marker){
|
||||
Actor *this = marker_getActor(this_marker);
|
||||
func_8035C080(this, 8);
|
||||
}
|
||||
|
||||
Actor* func_8035C71C(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
Actor *this = marker_getActor(marker); //sp64
|
||||
ActorLocal_Core2_D50F0 *local = (ActorLocal_Core2_D50F0 *)&this->local; //sp60
|
||||
s32 sp5C;
|
||||
s32 pad58;
|
||||
f32 sp4C[3];
|
||||
f32 sp40[3];
|
||||
f32 sp34[3];
|
||||
f32 sp28[3];
|
||||
|
||||
if(this->state == 0) return this;
|
||||
|
||||
if(this->state == 8){
|
||||
sp5C = func_803356A0(this->unk148);
|
||||
if(sp5C){
|
||||
sp40[0] = 0.0f;
|
||||
sp40[1] = 0.0f;
|
||||
sp40[2] = local->unk0 * -2200.0f;
|
||||
func_80345C78(sp4C, sp40);
|
||||
func_8033A8F0(sp5C, 3, sp4C);
|
||||
sp34[0] = 1.0 - local->unk0*0.5;
|
||||
sp34[1] = 1.0 - local->unk0*0.5;
|
||||
sp34[2] = 1.0 - local->unk0*0.5;
|
||||
func_8033A928(sp5C, 3, sp34);
|
||||
}
|
||||
}
|
||||
|
||||
if(local->pCtrl_8){
|
||||
func_8033A450(func_80329934());
|
||||
}
|
||||
|
||||
func_80325888(marker, gfx, mtx, vtx);
|
||||
|
||||
if(local->pCtrl_8 && this->marker->unk14_21){
|
||||
func_8034A174(func_80329934(), 5, sp28);
|
||||
particleEmitter_setPosition(local->pCtrl_8, sp28);
|
||||
func_802EF3A8(local->pCtrl_8, gfx, mtx, vtx);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
void func_8035C8C8(Actor *this){
|
||||
ActorLocal_Core2_D50F0 *local = (ActorLocal_Core2_D50F0 *)&this->local;
|
||||
|
||||
if(local->pCtrl_8)
|
||||
func_802EF684(local->pCtrl_8);
|
||||
}
|
||||
|
||||
void func_8035C8F4(Actor *this){
|
||||
f32 plyr_pos[3];
|
||||
f32 sp40[3];
|
||||
f32 sp3C;
|
||||
ActorLocal_Core2_D50F0 *local = (ActorLocal_Core2_D50F0 *)&this->local;
|
||||
f32 sp34;
|
||||
|
||||
sp34 = time_getDelta();
|
||||
if(this->state == 0){
|
||||
this->marker->unk14_21 = FALSE;
|
||||
this->marker->unk30 = func_8035C8C8;
|
||||
marker_setCollisionScripts(this->marker, func_8035C6C4, func_8035C6C4, func_8035C6F0);
|
||||
local->unk4 = func_80309724(this->position);
|
||||
local->pCtrl_8 = NULL;
|
||||
local->unk34[0] = this->yaw;
|
||||
local->unk34[2] = local->unk34[1] = local->unk34[0];
|
||||
local->unk28[0] = this->position_x;
|
||||
local->unk28[1] = this->position_y;
|
||||
local->unk28[2] = this->position_z;
|
||||
func_8035C080(this, 1);
|
||||
}//L8035C9AC
|
||||
|
||||
player_getPosition(plyr_pos);
|
||||
sp40[0] = plyr_pos[0] - this->position_x;
|
||||
sp40[1] = plyr_pos[1] - this->position_y;
|
||||
sp40[2] = plyr_pos[2] - this->position_z;
|
||||
sp3C = gu_sqrtf(sp40[0]*sp40[0] + sp40[1]*sp40[1] + sp40[2]*sp40[2]);
|
||||
if(local->pCtrl_8){
|
||||
particleEmitter_update(local->pCtrl_8);
|
||||
}
|
||||
|
||||
if(this->state == 1){
|
||||
if( sp3C < 800.0f
|
||||
&& func_80329210(this, plyr_pos)
|
||||
&& plyr_pos[1] < this->position_y + 100.0f
|
||||
){
|
||||
func_8035C080(this, 3);
|
||||
}
|
||||
}//L8035CA80
|
||||
|
||||
if(this->state == 5){
|
||||
local->unk0 += 1.9047619047619049*sp34;
|
||||
if(1.0f <= local->unk0)
|
||||
local->unk0 = 1.0f;
|
||||
func_80255FE4(this->position, local->unk10, local->unk1C, local->unk0);
|
||||
this->position_y += 100.0f*sinf(local->unk0*3.141592654);
|
||||
this->yaw = local->unk0*(local->unk34[2] - local->unk34[1]) + local->unk34[1];
|
||||
if(func_80335794(this->unk148) > 0){
|
||||
if(ml_vec3f_distance(this->position, local->unk28) < 10.0f){
|
||||
func_8035C080(this, 1);
|
||||
}
|
||||
else if(local->unkC > 0){//L8035CB8C
|
||||
local->unkC--;
|
||||
if(local->unkC > 0){
|
||||
func_8035C080(this, 7);
|
||||
}
|
||||
else{
|
||||
func_8035C080(this, 2);
|
||||
}
|
||||
}
|
||||
else{
|
||||
func_8035C080(this, 2);
|
||||
}
|
||||
}
|
||||
}//L8035CBD4
|
||||
|
||||
if(this->state == 2){
|
||||
if(sp3C < 800.0f){
|
||||
func_8035C080(this, 3);
|
||||
}
|
||||
else{
|
||||
func_8035C080(this, 4);
|
||||
}
|
||||
}//L8035CC38
|
||||
|
||||
if(this->state == 8){
|
||||
local->unk0 += 0.25*sp34;
|
||||
if(func_80335794(this->unk148) > 0)
|
||||
marker_despawn(this->marker);
|
||||
}
|
||||
}
|
||||
606
src/core2/ch/gameSelect.c
Normal file
606
src/core2/ch/gameSelect.c
Normal file
@@ -0,0 +1,606 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
#ifndef ABS
|
||||
#define ABS(d) ((d) >= 0) ? (d) : -(d)
|
||||
#endif
|
||||
|
||||
void func_8031FBF8(void);
|
||||
void func_8031FBA0(void);
|
||||
void func_803184C8(gczoombox_t *, f32, s32, s32, f32, s32, s32);
|
||||
|
||||
Actor *func_802C4360(ActorMarker *, Gfx **, Mtx **, Vtx **);
|
||||
Actor *func_802C4464(ActorMarker *, Gfx **, Mtx **, Vtx **);
|
||||
void func_802C4C14(Actor *this);
|
||||
void func_802C5740(Actor *this);
|
||||
|
||||
extern void func_802C71F0(Actor *);
|
||||
extern void func_802C74F4(Actor *, s32, f32 );
|
||||
extern void func_8031FB14(s32, s32);
|
||||
extern void func_8031F678(s32, s32);
|
||||
extern void func_80335110(s32);
|
||||
|
||||
extern void func_8024E60C(s32, f32*);
|
||||
extern void func_8024E71C(s32, f32*);
|
||||
|
||||
|
||||
/* .data */
|
||||
f32 D_80365DD0[3][3] = {
|
||||
{-320.0f, 340.0f, 350.0f},
|
||||
{110.0f, 340.0f, 110.0f},
|
||||
{-413.333313f, 353.333313f, -234.305511f}
|
||||
};
|
||||
u8 *D_80365DF4 = "USE THE CONTROL STICK TO SELECT A GAME.";
|
||||
u8 *D_80365DF8 = "PRESS A TO PLAY THE GAME OR Z TO ERASE IT!";
|
||||
u8 *D_80365DFC = "ARE YOU SURE? PRESS A TO CONFIRM, OR B TO CANCEL";
|
||||
s32 D_80365E00 = -1;
|
||||
f32 D_80365E04[3][3] = {
|
||||
{-435.0f, 278.0f, -159.0f},
|
||||
{ 444.635437f, 216.0f, -356.591675f},
|
||||
{ 55.0f, 191.822906f, -905.96875f}
|
||||
};
|
||||
|
||||
ActorAnimationInfo D_80365E28[] = {
|
||||
{0x000, 0.0f},
|
||||
{0x24D, 9e+09f},
|
||||
{0x24D, 2.0f},
|
||||
{0x24E, 1.0f},
|
||||
{0x24F, 0.6f},
|
||||
{0x24D, 2.0f}
|
||||
};
|
||||
ActorInfo D_80365E58 = { 0xE4, 0x195, 0x532, 0x1, D_80365E28, func_802C5740, func_80326224, func_802C4464, 0, 0, 0.0f, 0};
|
||||
|
||||
ActorAnimationInfo D_80365E7C[] = {
|
||||
{0x000, 0.0f},
|
||||
{0x250, 9e+09f},
|
||||
{0x250, 4.5f},
|
||||
{0x251, 1.0f},
|
||||
{0x252, 0.67f},
|
||||
{0x250, 4.5f},
|
||||
};
|
||||
ActorInfo D_80365EAC = { 0xE5, 0x196, 0x532, 0x1, D_80365E7C, func_802C4C14, func_80326224, func_802C4360, 0, 0, 0.0f, 0};
|
||||
|
||||
ActorAnimationInfo D_80365ED0[] = {
|
||||
{0x000, 0.0f},
|
||||
{0x24A, 9e+09f},
|
||||
{0x24A, 1.0f},
|
||||
{0x24B, 1.0f},
|
||||
{0x24C, 1.0f},
|
||||
{0x24A, 1.0f}
|
||||
};
|
||||
ActorInfo D_80365F00 = { 0xE6, 0x197, 0x532, 0x1, D_80365ED0, func_802C4C14, func_80326224, func_802C4360, 0, 0, 0.0f, 0};
|
||||
|
||||
|
||||
/* .bss */
|
||||
// Remove this when this memory region is properly symbolized
|
||||
u8 unk_8037DCB0[0x8037DCE0 - 0x8037DCB0];
|
||||
|
||||
extern u8 D_8037DCCE[0x12];
|
||||
|
||||
struct {
|
||||
u8 *unk0;
|
||||
u8 *unk4;
|
||||
} D_8037DCE0;
|
||||
s32 D_8037DCE8;
|
||||
s32 D_8037DCEC;
|
||||
gczoombox_t *D_8037DCF0;
|
||||
gczoombox_t *D_8037DCF4;
|
||||
f32 D_8037DCF8[2][3];
|
||||
f32 D_8037DD10[2][3];
|
||||
void *D_8037DD28;
|
||||
s32 D_8037DD2C;
|
||||
f32 D_8037DD30;
|
||||
f32 D_8037DD34;
|
||||
|
||||
|
||||
|
||||
/* .code */
|
||||
Actor *func_802C4360(ActorMarker *marker, Gfx **arg1, Mtx **arg2, Vtx **arg3){
|
||||
s32 sp1C = marker->unk14_20 - 0xe4;
|
||||
func_8033A45C(3, sp1C);
|
||||
func_8033A45C(1, 1);
|
||||
func_8033A45C(4, 1);
|
||||
func_8033A45C(9, 1);
|
||||
func_8033A45C(5, 0);
|
||||
func_8033A45C(8, 0);
|
||||
func_8033A45C(6, 0);
|
||||
func_8033A45C(7, 0);
|
||||
func_8033A45C(0xC, 1);
|
||||
func_8033A45C(0xF, 1);
|
||||
if(sp1C == D_80365E00){
|
||||
func_8033A388(0xFF, 0xFF, 0xFF, 0xFF);
|
||||
}
|
||||
else{
|
||||
func_8033A388(0x64, 0x64, 0x64, 0xFF);
|
||||
}
|
||||
return func_80325888(marker, arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
Actor *func_802C4464(ActorMarker *marker, Gfx **arg1, Mtx **arg2, Vtx **arg3){
|
||||
Actor *ret_val = func_802C4360(marker, arg1, arg2, arg3);
|
||||
if(D_8037DCF4)
|
||||
gczoombox_draw(D_8037DCF4, arg1, arg2, arg3);
|
||||
if(D_8037DCF0)
|
||||
gczoombox_draw(D_8037DCF0, arg1, arg2, arg3);
|
||||
return ret_val;
|
||||
|
||||
}
|
||||
|
||||
void func_802C44D0(s32 arg0, s32 arg1){
|
||||
if(arg1 == 3)
|
||||
D_8037DD2C = 0;
|
||||
}
|
||||
|
||||
void *func_802C44EC(f32 arg0[3], f32 arg1[3], f32 arg2) {
|
||||
f32 phi_f12;
|
||||
f32 sp40[3];
|
||||
s32 i;
|
||||
static bool D_8037DD38;
|
||||
static f32 D_8037DD3C;
|
||||
static f32 D_8037DD40;
|
||||
|
||||
arg2 = (arg2 > 0.75) ? 0.75 : arg2;
|
||||
sp40[0] = arg1[0] - arg0[0];
|
||||
sp40[1] = arg1[1] - arg0[1];
|
||||
sp40[2] = arg1[2] - arg0[2];
|
||||
D_8037DD38 = D_8037DD38^1;
|
||||
phi_f12 = gu_sqrtf(sp40[0]*sp40[0] + sp40[1]*sp40[1] + sp40[2]*sp40[2]);
|
||||
if (phi_f12 < 10.0f) {
|
||||
phi_f12 = 500.0f;
|
||||
}
|
||||
D_8037DD3C = 1.0 + (9.0f / gu_sqrtf(phi_f12));
|
||||
D_8037DD40 = sinf(D_8037DD3C*1.5707963267948966);
|
||||
for(i = 0; i < 3; i++){
|
||||
D_8037DD10[D_8037DD38][i] = arg0[i] + ((arg1[i] - arg0[i])*sinf((((arg2 / 0.75) * 3.1415926535897931) / 2) * D_8037DD3C)) / D_8037DD40;
|
||||
D_8037DCF8[D_8037DD38][i] += (D_8037DD10[D_8037DD38][i] - D_8037DCF8[D_8037DD38][i]) / 5.0;
|
||||
|
||||
}
|
||||
return &D_8037DCF8[D_8037DD38];
|
||||
}
|
||||
|
||||
void func_802C4768(s32 gamenum){
|
||||
u8 * sp20[2];
|
||||
static u8 D_8037DD48[0x20];
|
||||
static u8 D_8037DD68[0x20];
|
||||
|
||||
func_8031FBF8();
|
||||
D_80365E00 = gamenum;
|
||||
func_8031FBA0();
|
||||
if(func_8033D1BC(gamenum)){
|
||||
func_8033D13C(gamenum);
|
||||
D_8037DCCE[gamenum] = (func_8034717C(6)) ? 1 : 0;
|
||||
|
||||
strcpy(D_8037DD48, "");
|
||||
strcat(D_8037DD48, "GAME ");
|
||||
switch(gamenum){
|
||||
case 0: //L802C4820
|
||||
strIToA(D_8037DD48, 1);
|
||||
break;
|
||||
case 1: //L802C4838
|
||||
strIToA(D_8037DD48, 3);
|
||||
break;
|
||||
case 2: //L802C484C
|
||||
strIToA(D_8037DD48, 2);
|
||||
break;
|
||||
}//L802C4858
|
||||
strcat(D_8037DD48, ": TIME ");
|
||||
strcat(D_8037DD48, func_80311C64(func_803470A0()));
|
||||
strcat(D_8037DD48, ",");
|
||||
strcat(D_8037DD48, "");
|
||||
|
||||
strcpy(D_8037DD68, "");
|
||||
strIToA(D_8037DD68, jiggyscore_total());
|
||||
strcat(D_8037DD68, " JIGSAW");
|
||||
if(jiggyscore_total() != 1){
|
||||
strcat(D_8037DD68, "S");
|
||||
}
|
||||
strcat(D_8037DD68, ", ");
|
||||
strIToA(D_8037DD68, notescore_getTotal());
|
||||
strcat(D_8037DD68, " NOTE");
|
||||
if(notescore_getTotal() != 1){
|
||||
strcat(D_8037DD68, "S");
|
||||
}
|
||||
strcat(D_8037DD68, ".");
|
||||
strcat(D_8037DD68, "");
|
||||
}//L802C49AC
|
||||
else{
|
||||
D_8037DCCE[gamenum] = 0;
|
||||
strcpy(D_8037DD48, "");
|
||||
strcat(D_8037DD48, "GAME ");
|
||||
switch (gamenum){
|
||||
case 0:
|
||||
strIToA(D_8037DD48, 1);
|
||||
break;
|
||||
case 1:
|
||||
strIToA(D_8037DD48, 3);
|
||||
break;
|
||||
case 2:
|
||||
strIToA(D_8037DD48, 2);
|
||||
break;
|
||||
}//L802C4A40
|
||||
strcat(D_8037DD48, ": EMPTY");
|
||||
strcpy(D_8037DD68, "");
|
||||
}//L802C4A68
|
||||
sp20[0] = D_8037DD48;\
|
||||
sp20[1] = D_8037DD68;
|
||||
func_8031877C(D_8037DCF4);
|
||||
func_80318284(D_8037DCF4, 2, sp20);
|
||||
gczoombox_maximize(D_8037DCF4);
|
||||
gczoombox_resolve_minimize(D_8037DCF4);
|
||||
}
|
||||
|
||||
void func_802C4AC8(s32 arg0){
|
||||
func_8033D0FC(arg0);
|
||||
func_802C4768(arg0);
|
||||
}
|
||||
|
||||
void func_802C4AF0(Actor * this){
|
||||
int i;
|
||||
|
||||
if(D_8037DCF0){
|
||||
gczoombox_free(D_8037DCF0);
|
||||
D_8037DCF0 = NULL;
|
||||
}
|
||||
|
||||
if(D_8037DCF4){
|
||||
gczoombox_free(D_8037DCF4);
|
||||
D_8037DCF4 = NULL;
|
||||
}
|
||||
|
||||
for(i = 0; i < 3; i++){
|
||||
func_8033CFD4(i);
|
||||
}
|
||||
|
||||
if(D_8037DD28){
|
||||
func_802F9D38(D_8037DD28);
|
||||
D_8037DD28 = NULL;
|
||||
}
|
||||
|
||||
comusic_8025AB44(COMUSIC_73_GAMEBOY, 0, 4000);
|
||||
func_8025AABC(COMUSIC_73_GAMEBOY);
|
||||
func_8025AB00();
|
||||
}
|
||||
|
||||
void func_802C4BB4(ActorMarker *marker){
|
||||
Actor *this;
|
||||
s32 sp20;
|
||||
Actor *other;
|
||||
f32 sp18;
|
||||
sp20 = marker->unk14_20 - 0xe4;
|
||||
this = marker_getActor(marker);
|
||||
sp18 = this->scale;
|
||||
other = func_8032813C(sp20 + 0x198, this->position, (s32)this->yaw);
|
||||
other->scale = sp18;
|
||||
}
|
||||
|
||||
void func_802C4C14(Actor *this){
|
||||
int sp84;
|
||||
int sp80;
|
||||
s32 sp74[3];
|
||||
s32 *tmp_a2; //pad70
|
||||
s32 pad_6C;
|
||||
s32 pad_68;
|
||||
s32 sp5C[3];
|
||||
s32 pad_58;
|
||||
f32 sp54;
|
||||
f32 sp50;
|
||||
int i; //sp4C
|
||||
s32 sp48;
|
||||
f32 sp44;
|
||||
s32 tmp_a2_2;
|
||||
f32 sp34[3];
|
||||
|
||||
sp84 = this->marker->unk14_20 - 0xe4;
|
||||
sp80 = (sp84 == D_80365E00);
|
||||
sp50 = time_getDelta();
|
||||
if(!D_8037DCF4)
|
||||
return;
|
||||
|
||||
if(!this->initialized){
|
||||
func_802C3C88(func_802C4BB4, this->marker);
|
||||
func_802C7318(this);
|
||||
this->unk130 = func_802C71F0;
|
||||
if(sp84 == 0){
|
||||
func_802C75A0(this, 1);
|
||||
func_802C74F4(this, 0, 1.0f);
|
||||
func_802C74F4(this, 1, 1.0f);
|
||||
}//L802C4CD8
|
||||
this->initialized = TRUE;
|
||||
}//L802C4CE4
|
||||
func_802C7478(this);
|
||||
if(!sp80){
|
||||
if(this->state != 1){
|
||||
func_80328A84(this, 1);
|
||||
}
|
||||
}
|
||||
else{//L802C4D24
|
||||
func_8024E60C(0, sp74);
|
||||
func_8024E55C(0, sp5C);
|
||||
func_8024E71C(0, &sp54);
|
||||
switch(this->state){
|
||||
case 2:
|
||||
case 5:
|
||||
switch(sp84){
|
||||
case 0://L802C4D8C
|
||||
if(actor_animationIsAt(this, 0.1f))
|
||||
func_8030E510(SFX_5D_BANJO_RAAOWW, 8000);
|
||||
|
||||
if(actor_animationIsAt(this, 0.7f))
|
||||
func_8030E510(SFX_5E_BANJO_PHEWWW, 8000);
|
||||
break;
|
||||
case 1://L802C4DD0
|
||||
if(randf() < 0.1){
|
||||
// if(randf() < D_80376118){
|
||||
func_8030E6A4(MIN(2.0f, randf() *3.0f) + 311.0f, 1.0f, 12000);
|
||||
}
|
||||
break;
|
||||
case 2://L802C4E74
|
||||
if(randf() < 0.03){
|
||||
func_8030E6A4(0x3ed, randf()*0.3 + 0.7, 15000);
|
||||
}
|
||||
break;
|
||||
}//L802C4ED4
|
||||
break;
|
||||
}//L802C4ED4
|
||||
if(!func_8038AAB0()){
|
||||
switch(this->state){
|
||||
case 1://L802C4F10
|
||||
if(sp84 == 1){
|
||||
func_8030E510(SFX_136_GAMEBOY_STARTUP, 15000);
|
||||
timedFunc_set_3(0.25f, comusic_8025AB44, COMUSIC_73_GAMEBOY, -1, 2000);
|
||||
func_8025A58C(0, 2000);
|
||||
}
|
||||
else{
|
||||
comusic_8025AB44(COMUSIC_73_GAMEBOY, 0, 4000);
|
||||
func_8025A58C(-1, 2000);
|
||||
}
|
||||
|
||||
if(sp84 == 2){
|
||||
D_8037DD28 = func_802F9AA8(SFX_12B_BOILING_AND_BUBBLING);
|
||||
func_802F9F80(D_8037DD28, 0.5f, 9000000000.0f, 0.5f);
|
||||
func_802F9DB8(D_8037DD28, 0.9f, 0.9f, 0.0f);
|
||||
func_802FA060(D_8037DD28, 15000, 15000, 0.0f);
|
||||
}
|
||||
else{
|
||||
if(D_8037DD28){
|
||||
func_802F9D38(D_8037DD28);
|
||||
D_8037DD28 = NULL;
|
||||
}
|
||||
}
|
||||
func_802C4768(sp84);
|
||||
func_80328A84(this, 2);
|
||||
break;
|
||||
case 5://L802C5040
|
||||
if(D_8037DD2C == 0 &&
|
||||
(sp5C[0] == 1 || sp5C[1] == 1)
|
||||
){
|
||||
if(sp5C[0] == 1){
|
||||
func_802C4AC8(sp84);
|
||||
func_8025A6EC(COMUSIC_2B_DING_B, 22000);
|
||||
}
|
||||
func_80328A84(this, 2);
|
||||
func_8031877C(D_8037DCF0);
|
||||
func_80318284(D_8037DCF0, 2, &D_8037DCE0);
|
||||
D_8037DD34 = 0.0f;
|
||||
}
|
||||
break;
|
||||
case 3://L802C50C8
|
||||
case 4://L802C50C8
|
||||
if(animctrl_isStopped(this->animctrl)){
|
||||
func_802DEB80();
|
||||
if(!func_8033D1BC(sp84)){
|
||||
timedFunc_set_3(0.0f, func_802E4078, MAP_85_CS_SPIRAL_MOUNTAIN_3, 0, 1);
|
||||
}
|
||||
else{//L802C511C
|
||||
sp44 = 0.0f;
|
||||
if(this->state == 4 && (sp84 == 0 || sp84 == 1))
|
||||
sp44 = 0.25f;
|
||||
if(func_802DA498() && func_8031FF1C(BKPROG_BD_ENTER_LAIR_CUTSCENE)){
|
||||
timedFunc_set_2(sp44, func_8031FB14, 0, 0);
|
||||
}
|
||||
else{//L802C5188
|
||||
timedFunc_set_2(sp44, func_8031F678, 0, 0);
|
||||
}//L802C51A0
|
||||
timedFunc_set_1(sp44, func_80335110, 1);
|
||||
}//L802C51B8
|
||||
this->state = 6;
|
||||
}
|
||||
break;
|
||||
case 2://L802C51CC
|
||||
if(sp74[0] == 1){
|
||||
if(func_8033D1BC(sp84)){
|
||||
func_8031877C(D_8037DCF0);
|
||||
func_803183A4(D_8037DCF0, (&D_80365DFC)[func_8031B5B0()]);
|
||||
D_8037DD2C = 1;
|
||||
func_80328A84(this, 5);
|
||||
}
|
||||
else{//L802C5240
|
||||
func_8025A6EC(COMUSIC_2C_BUZZER, 22000);
|
||||
}
|
||||
}
|
||||
else if(sp5C[0] == 1){//L802C5250
|
||||
if(func_8033D1BC(sp84)){
|
||||
if(randf() < 0.1){
|
||||
switch(sp84){
|
||||
case 0://L802C52B8
|
||||
func_8030E510(SFX_31_BANJO_OHHWAAOOO, 28000);
|
||||
func_8030E540(SFX_135_CARTOONY_SPRING);
|
||||
timedFunc_set_2(0.4f, func_8030E510, SFX_13A_GLASS_BREAKING_7, 0x7fff);
|
||||
timedFunc_set_2(0.9f, func_8030E510, SFX_150_PORCELAIN_CRASH, 0x7fff);
|
||||
timedFunc_set_2(1.0f, func_8030E510, SFX_151_CAT_MEOW, 0x7fff);
|
||||
break;
|
||||
case 1://L802C5320
|
||||
timedFunc_set_2(0.4f, func_8030E510, SFX_31_BANJO_OHHWAAOOO, 28000);
|
||||
timedFunc_set_2(0.2f, func_8030E510, SFX_E_SHOCKSPRING_BOING, 28000);
|
||||
func_8030E540(SFX_2D_KABOING);
|
||||
break;
|
||||
case 2://L802C5364
|
||||
timedFunc_set_2(0.15f, func_8030E510, SFX_32_BANJO_EGHEE, 28000);
|
||||
func_8030E510(SFX_3F6_UNKNOWN, 28000);
|
||||
func_8030E540(SFX_8F_SNOWBALL_FLYING);
|
||||
break;
|
||||
}//L802C5394
|
||||
func_80328A84(this, 4);
|
||||
levelSpecificFlags_set(sp84 + 0x35, 1);
|
||||
}
|
||||
else{//L802C53B4
|
||||
func_8030E484(SFX_3EA_UNKNOWN);
|
||||
func_80328A84(this, 3);
|
||||
}
|
||||
}else{//L802C53D0
|
||||
func_8030E510(SFX_4F_BANJO_WAHOO, 28000);
|
||||
func_80328A84(this, 3);
|
||||
}//L802C53E8
|
||||
if(sp84 == 0)
|
||||
func_802C75A0(this, 2);
|
||||
|
||||
if(sp84 == 1)
|
||||
comusic_8025AB44(COMUSIC_73_GAMEBOY, 0, 4000);
|
||||
|
||||
func_8025A58C(0, 0x1f4);
|
||||
actor_playAnimationOnce(this);
|
||||
}
|
||||
else{//L802C5434
|
||||
if((0.7 < ((0.0f <= sp54) ? sp54 : -sp54)) && D_8037DCEC == 0
|
||||
){
|
||||
tmp_a2_2 = D_80365E00;
|
||||
if(sp54 < 0.0f){
|
||||
D_8037DCEC = 1;
|
||||
switch(D_80365E00){
|
||||
case 0:
|
||||
D_8037DCEC = 0;
|
||||
break;
|
||||
case 1:
|
||||
D_80365E00 = 2;
|
||||
break;
|
||||
case 2:
|
||||
D_80365E00 = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else{//L802C54D4
|
||||
D_8037DCEC = 1;
|
||||
switch(D_80365E00){
|
||||
case 0:
|
||||
D_80365E00 = 2;
|
||||
break;
|
||||
case 1:
|
||||
D_8037DCEC = 0;
|
||||
break;
|
||||
case 2:
|
||||
D_80365E00 = 1;
|
||||
break;
|
||||
}
|
||||
}//L802C550C
|
||||
if(D_8037DCEC){
|
||||
D_8037DCE8 = tmp_a2_2;
|
||||
D_8037DD30 = 0.0f;
|
||||
}
|
||||
}else{//L802C5530
|
||||
if(((0.0f <= sp54) ? sp54 : -sp54) < 0.3){
|
||||
D_8037DCEC = 0;
|
||||
}
|
||||
}
|
||||
}//L802C556C
|
||||
if(D_8037DD2C == 0){
|
||||
D_8037DD34 += sp50;
|
||||
if(20.0 < D_8037DD34){
|
||||
func_8031877C(D_8037DCF0);
|
||||
func_80318284(D_8037DCF0, 2, &D_8037DCE0);
|
||||
D_8037DD34 = 0.0f;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 6://L802C55E8
|
||||
break;
|
||||
}
|
||||
}//L802C55E8
|
||||
D_8037DD30 += sp50;
|
||||
sp48 = func_803097A0();
|
||||
if(this->marker->unk14_21){
|
||||
for(i = 0; i < 3; i++){
|
||||
func_8034A174(sp48, i+5, sp34);
|
||||
ml_vec3f_copy(D_80365DD0[i], sp34);
|
||||
}
|
||||
}
|
||||
func_802BAEB4(
|
||||
func_802C44EC(D_80365DD0[D_8037DCE8], D_80365DD0[D_80365E00], D_8037DD30),
|
||||
func_802C44EC(D_80365E04[D_8037DCE8], D_80365E04[D_80365E00], D_8037DD30)
|
||||
);
|
||||
if(this->marker->unk14_21)
|
||||
osViBlack(0);
|
||||
}//L802C5734
|
||||
}
|
||||
|
||||
void func_802C5740(Actor * this){
|
||||
int i = func_8031B5B0();
|
||||
D_8037DCE0.unk0 = (&D_80365DF4)[i];
|
||||
D_8037DCE0.unk4 = (&D_80365DF8)[i];
|
||||
|
||||
if(!this->initialized){
|
||||
func_8033CE40();
|
||||
if(D_8037DCF4 == NULL){
|
||||
D_8037DCF4 = gczoombox_new(0xA0, 0xc, 2, 0, NULL);
|
||||
gczoombox_open(D_8037DCF4);
|
||||
func_803184C8(D_8037DCF4, 30.0f, 5, 2, 0.4f, 0, 0);
|
||||
}//L802C57FC
|
||||
|
||||
if(D_8037DCF0 == NULL){
|
||||
D_8037DCF0 = gczoombox_new(0xA, 0xd, 2, 1, func_802C44D0);
|
||||
func_80318284(D_8037DCF0, 2, &D_8037DCE0);
|
||||
gczoombox_open(D_8037DCF0);
|
||||
gczoombox_maximize(D_8037DCF0);
|
||||
}//L802C5860
|
||||
|
||||
func_803300D8(this->marker, func_802C4AF0);
|
||||
D_8037DCEC = 0;
|
||||
func_8031FBF8();
|
||||
func_8031FBA0();
|
||||
D_8037DCE8 = 0;
|
||||
D_80365E00 = 0;
|
||||
D_8037DCF8[1][0] = D_80365DD0[0][0];
|
||||
D_8037DCF8[1][1] = D_80365DD0[0][1];
|
||||
D_8037DCF8[1][2] = D_80365DD0[0][2];
|
||||
|
||||
D_8037DCF8[0][0] = D_80365E04[0][0];
|
||||
D_8037DCF8[0][1] = D_80365E04[0][1];
|
||||
D_8037DCF8[0][2] = D_80365E04[0][2];
|
||||
D_8037DD30 = 0.75f;
|
||||
D_8037DD34 = func_8038AAB0(&D_80365E04[0], &D_8037DCE8) ? 20.0 : 0.0;
|
||||
actor_collisionOff(this);
|
||||
func_8025A6EC(COMUSIC_73_GAMEBOY, 0);
|
||||
}//L802C5940
|
||||
if(!func_8038AAB0()){
|
||||
if(D_8037DCF4)
|
||||
func_80316EF4(D_8037DCF4);
|
||||
if(D_8037DCF0)
|
||||
func_80316EF4(D_8037DCF0);
|
||||
}
|
||||
func_802C4C14(this);
|
||||
}
|
||||
|
||||
void func_802C5994(void){
|
||||
s32 sp1C = level_get();
|
||||
s32 t6 = map_get() == MAP_83_CS_GAME_OVER_MACHINE_ROOM;
|
||||
s32 a1 = (0 < sp1C && sp1C < 0xd);
|
||||
if( a1 || t6)
|
||||
{
|
||||
if(D_80365E00 != -1 && !func_802E4A08() && map_get() != MAP_91_FILE_SELECT){
|
||||
func_8033D17C(D_80365E00);
|
||||
func_8033CFD4(D_80365E00);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s32 func_802C5A30(void){
|
||||
return D_80365E00;
|
||||
}
|
||||
|
||||
void func_802C5A3C(s32 arg0){
|
||||
D_80365E00 = arg0;
|
||||
}
|
||||
|
||||
void func_802C5A48(void){
|
||||
D_80365E00 = -1;
|
||||
}
|
||||
367
src/core2/ch/ghost.c
Normal file
367
src/core2/ch/ghost.c
Normal file
@@ -0,0 +1,367 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
typedef struct {
|
||||
f32 unk0;
|
||||
f32 unk4;
|
||||
} ActorLocal_Core2_D4050;
|
||||
|
||||
void func_8035B900(Actor *this);
|
||||
void func_8035BD48(Actor *this);
|
||||
|
||||
/* .data */
|
||||
ActorAnimationInfo D_80372BE0[] ={
|
||||
{0x00, 0.0f},
|
||||
{ASSET_9E_ANIM_TEEHEE_IDLE, 2.0f},
|
||||
{ASSET_9F_ANIM_TEEHEE_ALERTED, 1.5f},
|
||||
{ASSET_AC_ANIM_TEEHEE_CHASE, 1.0f},
|
||||
{ASSET_9E_ANIM_TEEHEE_IDLE, 2.0f},
|
||||
{ASSET_9E_ANIM_TEEHEE_IDLE, 2.0f},
|
||||
{ASSET_2AB_ANIM_TEEHEE_DIE, 1.0f}
|
||||
};
|
||||
|
||||
ActorInfo D_80372C18 = { //TEEHEE
|
||||
0x99, ACTOR_CA_TEEHEE, ASSET_3CB_MODEL_TEEHEE,
|
||||
0x1, D_80372BE0,
|
||||
func_8035B900, func_80326224, func_80325888,
|
||||
6500, 0, 0.9f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_80372C3C = { //PURPLE_TEEHEE (inside tumblar)
|
||||
0x296, ACTOR_3C1_PURPLE_TEEHEE, ASSET_564_MODEL_PURPLE_TEEHEE,
|
||||
0x1, D_80372BE0,
|
||||
func_8035B900, func_8035BD48, func_80325888,
|
||||
6500, 0, 0.9f, 0
|
||||
};
|
||||
|
||||
s32 D_80372C60[3] = {0x46, 0xFE, 0x46};
|
||||
|
||||
s32 D_80372C6C[3] = {0xFE, 0x46, 0xFE};
|
||||
|
||||
/* .code */
|
||||
void func_8035AFE0(f32 scale, f32 pos[3], s32 cnt, enum asset_e sprite_id, s32 arg4[3]){
|
||||
ParticleEmitter *pCtrl = partEmitList_pushNew(cnt);
|
||||
|
||||
particleEmitter_setSprite(pCtrl, sprite_id);
|
||||
func_802EFFA8(pCtrl, arg4);
|
||||
particleEmitter_setPosition(pCtrl, pos);
|
||||
particleEmitter_setParticleSpawnPositionRange(pCtrl,
|
||||
-100.0f*scale, 20.0f*scale, -100.0f*scale,
|
||||
100.0f*scale, 200.0f*scale, 100.0f*scale
|
||||
);
|
||||
particleEmitter_setParticleAccelerationRange(pCtrl,
|
||||
0.0f, -10.0f*scale, 0.0f,
|
||||
0.0f, -10.0f*scale, 0.0f
|
||||
);
|
||||
particleEmitter_setParticleVelocityRange(pCtrl,
|
||||
-100.0f*scale, -20.0f*scale, -100.0f*scale,
|
||||
100.0f*scale, 100.0f*scale, 100.0f*scale
|
||||
);
|
||||
func_802EFB70(pCtrl, scale*0.4, scale*0.6);
|
||||
func_802EFB84(pCtrl, scale*1.0, scale*1.4);
|
||||
particleEmitter_setSpawnIntervalRange(pCtrl, 0.0f, 0.01f);
|
||||
func_802EFEC0(pCtrl, 1.0f, 1.4f);
|
||||
func_802EFA5C(pCtrl, 0.0f, 0.01f);
|
||||
func_802EFA70(pCtrl, 0x10);
|
||||
particleEmitter_emitN(pCtrl, cnt);
|
||||
}
|
||||
|
||||
void func_8035B1CC(ActorMarker *this_marker, ActorMarker *other_marker){
|
||||
Actor *this = marker_getActor(this_marker);
|
||||
f32 sp30;
|
||||
|
||||
sp30 = this->scale;
|
||||
func_8030E878(SFX_121_AWAWAU, 1.3f, 32000, this->position, this->scale*400.0f, this->scale*1800.0f);
|
||||
func_8030E878(SFX_30_MAGIC_POOF, 1.0f, 32000, this->position, this->scale*400.0f, this->scale*1800.0f);
|
||||
func_80328B8C(this, 6, 0.01f, 1);
|
||||
actor_playAnimationOnce(this);
|
||||
actor_collisionOff(this);
|
||||
func_80326310(this);
|
||||
func_8035AFE0(sp30, this->position, 8, ASSET_700_SPRITE_DUST, D_80372C60);
|
||||
}
|
||||
|
||||
void func_8035B2C4(ActorMarker *this_marker, ActorMarker *other_marker){
|
||||
Actor *this = marker_getActor(this_marker);
|
||||
f32 sp30 = this->scale;
|
||||
func_8030E878(SFX_121_AWAWAU, 1.3f, 32000, this->position, this->scale*400.0f, this->scale*1800.0f);
|
||||
func_8030E878(SFX_30_MAGIC_POOF, 1.0f, 32000, this->position, this->scale*400.0f, this->scale*1800.0f);
|
||||
func_80328B8C(this, 6, 0.01f, 1);
|
||||
actor_playAnimationOnce(this);
|
||||
actor_collisionOff(this);
|
||||
func_8035AFE0(sp30, this->position, 8, ASSET_700_SPRITE_DUST, D_80372C6C);
|
||||
}
|
||||
|
||||
void func_8035B3B4(ActorMarker *this_marker, ActorMarker *other_marker){
|
||||
Actor *this = marker_getActor(this_marker);
|
||||
this->unk60 = 1.0f;
|
||||
}
|
||||
|
||||
int func_8035B3E4(Actor *this){
|
||||
if(func_80329530(this, (s32)(this->scale*600.0f)) && func_803292E0(this))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int func_8035B444(Actor *this, f32 arg1){
|
||||
int out;
|
||||
func_80328FB0(this, arg1);
|
||||
|
||||
if(!func_80329054(this, 2) && func_80329480(this))
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void func_8035B49C(Actor *this){
|
||||
f32 tmp_f2;
|
||||
if(this->velocity_x < this->unk1C_x){
|
||||
this->velocity_x = (f64)this->velocity_x + this->scale;
|
||||
}
|
||||
else if(this->unk1C_x < this->velocity_x){
|
||||
this->velocity_x = (f64)this->velocity_x - this->scale;
|
||||
}
|
||||
this->velocity_z += (this->velocity_y += (0.0f <= this->velocity_z)? -(0.1*this->scale) : 0.1*this->scale);
|
||||
this->position_y = this->velocity_z + this->velocity_x;
|
||||
}
|
||||
|
||||
void func_8035B56C(Actor *this){
|
||||
f32 sp2C;
|
||||
f32 plyr_pos[3];
|
||||
|
||||
sp2C = 2*(f64)this->scale;
|
||||
player_getPosition(plyr_pos);
|
||||
|
||||
if(this->position_y < plyr_pos[1]){
|
||||
if(this->position_y + sp2C < plyr_pos[1]){
|
||||
this->position_y = this->position_y + sp2C;
|
||||
this->velocity_x += sp2C;
|
||||
}
|
||||
else{
|
||||
this->velocity_x += plyr_pos[1] - this->position_y;
|
||||
this->position_y = plyr_pos[1];
|
||||
}
|
||||
}
|
||||
else if(plyr_pos[1] < this->position_y){
|
||||
if(plyr_pos[1] < this->position_y - sp2C){
|
||||
this->position_y = this->position_y - sp2C;
|
||||
this->velocity_x -= sp2C;
|
||||
}
|
||||
else{
|
||||
this->velocity_x -= (this->position_y - plyr_pos[1]);
|
||||
this->position_y = plyr_pos[1];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void func_8035B674(Actor *this){
|
||||
ActorLocal_Core2_D4050 *local = (ActorLocal_Core2_D4050 *)&this->local;
|
||||
|
||||
func_80328B8C(this, 1, 0.01f, 1);
|
||||
actor_loopAnimation(this);
|
||||
local->unk0 = randf2(1.0f, 4.5f);
|
||||
|
||||
}
|
||||
|
||||
void func_8035B6CC(Actor *this){
|
||||
func_80328B8C(this, 2, 0.01f, 1);
|
||||
actor_playAnimationOnce(this);
|
||||
this->unk28 = 1.0f;
|
||||
func_8030E878(0x3F4, randf2(1.0f, 1.2f), 32000, this->position, this->scale*400.0f, this->scale*1800.0f);
|
||||
}
|
||||
|
||||
void func_8035B75C(Actor *this){
|
||||
func_80328B8C(this, 3, 0.01f, 1);
|
||||
actor_loopAnimation(this);
|
||||
this->unk28 = func_803203FC(0xC1) ? 0.0 : 12.0;
|
||||
func_8030E878(0x3F4, randf2(1.0f, 1.2f), 32000, this->position, this->scale*400.0f, this->scale*1800.0f);
|
||||
}
|
||||
|
||||
void func_8035B824(Actor *this){
|
||||
ActorLocal_Core2_D4050 *local = (ActorLocal_Core2_D4050 *)&this->local;
|
||||
|
||||
func_80328B8C(this, 4, 0.01f, 1);
|
||||
actor_loopAnimation(this);
|
||||
func_80328CEC(this, (s32)this->yaw_moving, 0xA, 0x1E);
|
||||
this->unk28 = 4.0f;
|
||||
local->unk4 = randf2(2.0f, 4.5f);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void func_8035B8A8(Actor *this){
|
||||
func_80328B8C(this, 5, 0.01f, 1);
|
||||
actor_loopAnimation(this);
|
||||
func_80328CEC(this, (s32)this->yaw_moving, 0xE1, 0x87);
|
||||
}
|
||||
|
||||
void func_8035B900(Actor *this){
|
||||
ActorLocal_Core2_D4050 *local = (ActorLocal_Core2_D4050 *)&this->local;
|
||||
s32 sp30 = func_8023DB5C();
|
||||
f32 sp2C = time_getDelta();
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = TRUE;
|
||||
marker_setCollisionScripts(this->marker, NULL, func_8035B3B4, func_8035B1CC);
|
||||
this->marker->propPtr->unk8_3 = FALSE;
|
||||
actor_collisionOn(this);
|
||||
this->velocity_z = 0.0f;
|
||||
this->unk60 = 0.0f;
|
||||
this->unk1C[0] = this->position_y + this->scale*100.0f;
|
||||
this->velocity_y = this->scale*2.0;
|
||||
this->velocity_x = this->unk1C[0];
|
||||
local->unk0 = randf2(1.0f, 4.5f);
|
||||
animctrl_setTransitionDuration(this->animctrl, 0.8f);
|
||||
}//L8035B9D4
|
||||
|
||||
if(0.0 < this->unk60 - sp2C){
|
||||
this->unk60 -= sp2C;
|
||||
}
|
||||
else{//L8035BA08
|
||||
switch(this->state){
|
||||
case 1: //L8035BA30
|
||||
func_8035B49C(this);
|
||||
if(func_8035B3E4(this)){
|
||||
func_8035B6CC(this);
|
||||
}
|
||||
else if(0.0 < local->unk0 - sp2C){
|
||||
local->unk0 = local->unk0 - sp2C;
|
||||
}
|
||||
else{
|
||||
func_8035B824(this);
|
||||
}
|
||||
break;
|
||||
case 2: //L8035BA98
|
||||
this->yaw_moving = func_80329784(this);
|
||||
func_8035B444(this, 4.0f);
|
||||
if(actor_animationIsAt(this, 0.99f)){
|
||||
func_8035B75C(this);
|
||||
}
|
||||
break;
|
||||
case 3: //L8035BAE0
|
||||
func_8035B56C(this);
|
||||
if((sp30 & 0x3F) == 7 && randf() < 0.7){
|
||||
func_8030E878(0x3F4, randf2(1.0f, 1.2f), 32000, this->position, this->scale*400.0f, this->scale*1800.0f);
|
||||
}//L8035BB6C
|
||||
this->yaw_moving = func_80329784(this);
|
||||
if(!func_8035B3E4(this) || !func_8035B444(this, 5.0f)){
|
||||
func_8035B674(this);
|
||||
}
|
||||
break;
|
||||
case 4: //L8035BBB0
|
||||
func_8035B49C(this);
|
||||
if(!func_8035B444(this, 2.0f)){
|
||||
func_8035B8A8(this);
|
||||
}
|
||||
else if(local->unk4 - sp2C <= 0.0){
|
||||
func_8035B674(this);
|
||||
}
|
||||
else{
|
||||
local->unk4 = local->unk4 - sp2C;
|
||||
}
|
||||
break;
|
||||
case 5: //L8035BC1C
|
||||
func_8035B49C(this);
|
||||
func_80328FB0(this, 3.0f);
|
||||
if(func_80329480(this)){
|
||||
func_8035B674(this);
|
||||
}
|
||||
break;
|
||||
case 6: //L8035BC48
|
||||
break;
|
||||
}
|
||||
}//L8035BC48
|
||||
}
|
||||
|
||||
int func_8035BC5C(Actor *this, s32 target, s32 delta){
|
||||
s32 done = FALSE;
|
||||
s32 alpha;
|
||||
if(delta < 0){
|
||||
if((s32)(this->alpha_124_19 + delta) < target){
|
||||
this->alpha_124_19 = target;
|
||||
done = TRUE;
|
||||
}
|
||||
|
||||
}
|
||||
else{//L8035BCB8
|
||||
if(target < this->alpha_124_19 + delta){
|
||||
this->alpha_124_19 = target;
|
||||
done = TRUE;
|
||||
}
|
||||
}
|
||||
if(!done){
|
||||
this->alpha_124_19 += delta;
|
||||
}
|
||||
alpha = this->alpha_124_19;
|
||||
actor_setOpacity(this, alpha);
|
||||
return done;
|
||||
}
|
||||
|
||||
void func_8035BD48(Actor *this){
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = TRUE;
|
||||
this->marker->propPtr->unk8_3 = FALSE;
|
||||
actor_collisionOn(this);
|
||||
marker_setCollisionScripts(this->marker, NULL, func_8035B3B4, func_8035B2C4);
|
||||
mapSpecificFlags_set(3, FALSE);
|
||||
mapSpecificFlags_set(4, FALSE);
|
||||
if(map_get() == MAP_24_MMM_TUMBLARS_SHED){
|
||||
if( jiggyscore_isSpawned(JIGGY_62_MMM_TUMBLAR)
|
||||
|| jiggyscore_isCollected(JIGGY_62_MMM_TUMBLAR)
|
||||
){
|
||||
marker_despawn(this->marker);
|
||||
}
|
||||
else{//L8035BE04
|
||||
func_80328B8C(this, 1, 0.01f, 1);
|
||||
actor_setOpacity(this, 0);
|
||||
}
|
||||
}
|
||||
else{//L8035BE2C
|
||||
func_80328B8C(this, 3, 0.01f, 1);
|
||||
actor_setOpacity(this, 0xff);
|
||||
}
|
||||
}//L8035BE50
|
||||
|
||||
switch(this->state){
|
||||
case 1: //L8035BE78
|
||||
actor_collisionOff(this);
|
||||
if(mapSpecificFlags_getClear(4)){
|
||||
marker_despawn(this->marker);
|
||||
}
|
||||
else if(mapSpecificFlags_getClear(3)){
|
||||
func_80328B8C(this, 3, 0.01f, 1);
|
||||
}
|
||||
break;
|
||||
case 3: //L8035BECC
|
||||
this->unk58_0 = TRUE;
|
||||
actor_collisionOn(this);
|
||||
if(mapSpecificFlags_getClear(4)){
|
||||
this->unk38_0 = TRUE;
|
||||
func_8035B2C4(this->marker, NULL);
|
||||
}
|
||||
else{//L8035BF14
|
||||
if(this->alpha_124_19 == 0xFF || func_8035BC5C(this, 0xff, 0xA)){
|
||||
func_80343DEC(this);
|
||||
}
|
||||
|
||||
if((func_8023DB5C() &0x3F) == 7 && randf() < 0.7){
|
||||
func_8030E878(0x3f4, randf2(1.0f, 1.2f), 32000, this->position, this->scale*400.0f, this->scale*1800.0f);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 6: //L8035BFD4
|
||||
if(func_8035BC5C(this, 0, -7)){
|
||||
this->unk58_0 = FALSE;
|
||||
this->unk48 = 0.0f;
|
||||
func_80343DEC(this);
|
||||
if(this->unk38_0){
|
||||
marker_despawn(this->marker);
|
||||
}
|
||||
else{
|
||||
func_80328B8C(this, 1, 0.01f, 1);
|
||||
timedFunc_set_2(randf2(5.0f, 10.0f), mapSpecificFlags_set, 3, TRUE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}//L8035C06C
|
||||
}
|
||||
93
src/core2/ch/gloop.c
Normal file
93
src/core2/ch/gloop.c
Normal file
@@ -0,0 +1,93 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
Actor *chgloop_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
||||
void chgloop_update(Actor *this);
|
||||
|
||||
/* .data */
|
||||
ActorAnimationInfo chgloop_animations[] ={
|
||||
{0x00, 0.0f},
|
||||
{ASSET_CA_ANIM_GLOOP_SWIMMING, 2.0f},
|
||||
{ASSET_CA_ANIM_GLOOP_SWIMMING, 1.0f},
|
||||
{ASSET_CA_ANIM_GLOOP_SWIMMING, 0.4f},
|
||||
{ASSET_CB_ANIM_GLOOP_BLOWING_BUBBLE, 1.5f},
|
||||
{ASSET_CA_ANIM_GLOOP_SWIMMING, 2.0f},
|
||||
{ASSET_CA_ANIM_GLOOP_SWIMMING, 2.0f}
|
||||
};
|
||||
|
||||
ActorInfo chGloop = {
|
||||
MARKER_6A_GLOOP, ACTOR_E6_GLOOP, ASSET_372_MODEL_GLOOP,
|
||||
0x2, chgloop_animations,
|
||||
chgloop_update, chgloop_update, chgloop_draw,
|
||||
1900, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .code */
|
||||
Actor *chgloop_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
Actor *this = func_80325888(marker, gfx, mtx, vtx);
|
||||
if(!marker->unk14_21)
|
||||
return this;
|
||||
|
||||
func_8034A174(func_80329934(), 5, this->unk1C);
|
||||
return this;
|
||||
}
|
||||
|
||||
void chgloop_spawnBubble(s32 arg0, s32 arg1, s32 arg2, s32 arg3){
|
||||
f32 sp1C[3];
|
||||
sp1C[0] = reinterpret_cast(f32, arg0);
|
||||
sp1C[1] = reinterpret_cast(f32, arg1);
|
||||
sp1C[2] = reinterpret_cast(f32, arg2);
|
||||
func_8032813C(ACTOR_E7_GLOOP_BUBBLE, sp1C, (s32)reinterpret_cast(f32, arg3));
|
||||
}
|
||||
|
||||
void chgloop_update(Actor *this){
|
||||
f32 sp34[3];
|
||||
|
||||
if(!this->initialized){
|
||||
actor_collisionOff(this);
|
||||
this->initialized = TRUE;
|
||||
this->marker->propPtr->unk8_3 = TRUE;
|
||||
}
|
||||
|
||||
func_80326224(this);
|
||||
|
||||
switch(this->state){
|
||||
case 2://L802D14DC
|
||||
actor_loopAnimation(this);
|
||||
if(this->unk54 != 0.0f)
|
||||
func_80328A84(this, 4);
|
||||
|
||||
if( !mapSpecificFlags_get(2)
|
||||
&& func_80329530(this, 350)
|
||||
&& func_80311480(ASSET_D34_TEXT_GLOOP_MEET, 0, NULL, NULL, NULL, NULL)
|
||||
){
|
||||
mapSpecificFlags_set(2, TRUE);
|
||||
}
|
||||
break;
|
||||
|
||||
case 4://L802D1558
|
||||
actor_playAnimationOnce(this);
|
||||
if(this->unk54 == 0.0f)
|
||||
func_80328A84(this, 2);
|
||||
|
||||
if(actor_animationIsAt(this, 0.6f)){
|
||||
if(this->marker->unk14_21){
|
||||
sp34[0] = this->unk1C[0];
|
||||
sp34[1] = this->unk1C[1];
|
||||
sp34[2] = this->unk1C[2];
|
||||
}
|
||||
else{
|
||||
sp34[0] = this->position[0];
|
||||
sp34[1] = this->position[1];
|
||||
sp34[2] = this->position[2];
|
||||
}
|
||||
if(func_80329530(this, 1900)){
|
||||
func_802C3F04(chgloop_spawnBubble, reinterpret_cast(s32, sp34[0]), reinterpret_cast(s32, sp34[1]), reinterpret_cast(s32, sp34[2]), reinterpret_cast(s32, this->yaw));
|
||||
}
|
||||
|
||||
func_8030E9C4(SFX_3ED, randf()/2 + 0.6, 32000, this->position, 100.0f, 3000.0f);
|
||||
}
|
||||
break;
|
||||
}//L802D1670
|
||||
}
|
||||
376
src/core2/ch/icecube.c
Normal file
376
src/core2/ch/icecube.c
Normal file
@@ -0,0 +1,376 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
#define _HorzDist3v(v1, v2) ((v1[0]-v2[0])*(v1[0]-v2[0]) + (v1[2]-v2[2])*(v1[2]-v2[2]))
|
||||
extern void func_802D729C(Actor *, f32);
|
||||
extern f32 func_80257204(f32, f32, f32, f32);
|
||||
|
||||
void chicecube_update(Actor *this);
|
||||
Actor *chicecube_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
||||
|
||||
/* .data */
|
||||
ActorAnimationInfo D_80372B50[] = {
|
||||
{0x000, 0.0f},
|
||||
{ASSET_233_ANIM_ICECUBE, 999999.0f},
|
||||
{ASSET_233_ANIM_ICECUBE, 1.2f},
|
||||
{ASSET_233_ANIM_ICECUBE, 999999.0f},
|
||||
{ASSET_233_ANIM_ICECUBE, 999999.0f},
|
||||
{ASSET_233_ANIM_ICECUBE, 1.2f}
|
||||
};
|
||||
|
||||
ActorInfo D_80372B80 = {
|
||||
0x250, 0x37D, ASSET_504_MODEL_ICECUBE,
|
||||
1, D_80372B50,
|
||||
chicecube_update, func_80326224, chicecube_draw,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
ActorInfo D_80372BA4 = {
|
||||
0x25F, 0x3A0, ASSET_504_MODEL_ICECUBE,
|
||||
1, D_80372B50,
|
||||
chicecube_update, func_80326224, chicecube_draw,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
s32 D_80372BC8[3] = {220, 220, 230};
|
||||
s32 D_80372BD4[3] = {200, 200, 255};
|
||||
|
||||
/*.code */
|
||||
Actor *chicecube_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
func_8033A45C(3, actor->unk38_31);
|
||||
actor = func_80325888(marker, gfx, mtx, vtx);
|
||||
return actor;
|
||||
}
|
||||
|
||||
int func_80359DF4(Actor *this, s32 arg1){
|
||||
if(func_80329530(this, arg1) && func_803292E0(this))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int func_80359E38(Actor *this, s32 arg1, s32 arg2){
|
||||
int sp1C = 0;
|
||||
if(arg1 < this->alpha_124_19 + arg2){
|
||||
this->alpha_124_19 = arg1;
|
||||
sp1C = 1;
|
||||
}
|
||||
else{
|
||||
this->alpha_124_19 += arg2;
|
||||
}
|
||||
actor_setOpacity(this, this->alpha_124_19);
|
||||
return sp1C;
|
||||
}
|
||||
|
||||
int func_80359EBC(Actor *this, s32 arg1, s32 arg2){
|
||||
int sp1C = 0;
|
||||
if((this->alpha_124_19 - arg2) < arg1){
|
||||
this->alpha_124_19 = arg1;
|
||||
sp1C = 1;
|
||||
}
|
||||
else{
|
||||
this->alpha_124_19 -= arg2;
|
||||
}
|
||||
actor_setOpacity(this, this->alpha_124_19);
|
||||
return sp1C;
|
||||
}
|
||||
|
||||
int func_80359F40(Actor *this, f32 arg1[3]){
|
||||
f32 sp24;
|
||||
f32 sp20;
|
||||
|
||||
sp24 = func_80257204(this->position[0], this->position[2], arg1[0], arg1[2]);
|
||||
if((func_8023DB5C() & 0xF) == 4){
|
||||
this->velocity[2] = (f32)randi2(-45, 45);
|
||||
}
|
||||
sp20 = this->yaw;
|
||||
sp24 += this->velocity[2];
|
||||
this->yaw = sp24;
|
||||
if(func_80329030(this, 0)){
|
||||
this->yaw = sp20;
|
||||
return 1;
|
||||
}
|
||||
else{
|
||||
this->yaw = sp20;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int func_80359FEC(f32 arg0[3], f32 arg1[3], s32 arg2){
|
||||
if(_HorzDist3v(arg0, arg1) < arg2*arg2)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void func_8035A04C(f32 position[3], s32 cnt, enum asset_e model_id, f32 scale){
|
||||
ParticleEmitter *pCtrl = partEmitList_pushNew(cnt);
|
||||
|
||||
particleEmitter_setModel(pCtrl, model_id);
|
||||
particleEmitter_setPosition(pCtrl, position);
|
||||
particleEmitter_setParticleSpawnPositionRange(pCtrl, -100.0f*scale, 0.0f, -100.0f*scale, 100.0f*scale, 200.0f*scale, 100.0f*scale);
|
||||
particleEmitter_setParticleAccelerationRange(pCtrl, 0.0f, -1000.0f, 0.0f, 0.0f, -1000.0f, 0.0f);
|
||||
particleEmitter_setParticleVelocityRange(pCtrl, -400.0f*scale, 450.0f*scale, -400.0f*scale, 400.0f*scale, 600.0f*scale, 400.0f*scale);
|
||||
func_802EFE24(pCtrl, 100.0f*scale, 100.0f*scale, 100.0f*scale, 250.0f*scale, 250.0f*scale, 250.0f*scale);
|
||||
func_802EFB70(pCtrl, scale*0.2, scale*0.4);
|
||||
particleEmitter_setSpawnIntervalRange(pCtrl, 0.0f, 0.02f);
|
||||
func_802EFEC0(pCtrl, 2.2f, 2.2f);
|
||||
func_802EFA5C(pCtrl, 0.0f, 0.3f);
|
||||
particleEmitter_emitN(pCtrl, cnt);
|
||||
}
|
||||
|
||||
void func_8035A228(f32 position[3], s32 cnt, enum asset_e sprite_id, f32 scale){
|
||||
ParticleEmitter *pCtrl = partEmitList_pushNew(cnt);
|
||||
|
||||
func_802EFFA8(pCtrl, D_80372BC8);
|
||||
particleEmitter_setSprite(pCtrl, sprite_id);
|
||||
particleEmitter_setPosition(pCtrl, position);
|
||||
particleEmitter_setParticleSpawnPositionRange(pCtrl, -50.0f*scale, 0.0f, -50.0f*scale, 50.0f*scale, 200.0f*scale, 50.0f*scale);
|
||||
particleEmitter_setParticleAccelerationRange(pCtrl, 0.0f, -10.0f, 0.0f, 0.0f, -10.0f, 0.0f);
|
||||
particleEmitter_setParticleVelocityRange(pCtrl, -280.0f*scale, 0.0f, -280.0f*scale, 280.0f*scale, 280.0f*scale, 280.0f*scale);
|
||||
func_802EFB70(pCtrl, scale*0.6, scale*0.8);
|
||||
func_802EFB84(pCtrl, scale*1.0, scale*1.4);
|
||||
particleEmitter_setSpawnIntervalRange(pCtrl, 0.0f, 0.01f);
|
||||
func_802EFEC0(pCtrl, 1.2f, 1.8f);
|
||||
func_802EFA5C(pCtrl, 0.0f, 0.01f);
|
||||
particleEmitter_emitN(pCtrl, cnt);
|
||||
}
|
||||
|
||||
void func_8035A3F8(f32 position[3], s32 cnt, enum asset_e sprite_id, f32 scale){
|
||||
ParticleEmitter *pCtrl = partEmitList_pushNew(cnt);
|
||||
|
||||
func_802EFFA8(pCtrl, D_80372BD4);
|
||||
particleEmitter_setSprite(pCtrl, sprite_id);
|
||||
particleEmitter_setPosition(pCtrl, position);
|
||||
particleEmitter_setParticleAccelerationRange(pCtrl, 0.0f, -10.0f, 0.0f, 0.0f, -10.0f, 0.0f);
|
||||
particleEmitter_setParticleVelocityRange(pCtrl, -60.0f*scale, 0.0f, -60.0f*scale, 60.0f*scale, 60.0f*scale, 60.0f*scale);
|
||||
func_802EFB70(pCtrl, scale*0.4, scale*0.6);
|
||||
func_802EFB84(pCtrl, scale*0.8, scale*1.2);
|
||||
particleEmitter_setSpawnIntervalRange(pCtrl, 0.0f, 0.01f);
|
||||
func_802EFEC0(pCtrl, 0.5f, 0.7f);
|
||||
func_802EFA5C(pCtrl, 0.0f, 0.3f);
|
||||
func_802EFA70(pCtrl, 4);
|
||||
particleEmitter_emitN(pCtrl, cnt);
|
||||
}
|
||||
|
||||
void func_8035A594(f32 position[3], f32 arg1, f32 arg2){
|
||||
int i;
|
||||
int v0;
|
||||
for(i = 60; i != 380; i+=160){
|
||||
v0 = i;
|
||||
if(i > 360)
|
||||
v0 = i - 360;
|
||||
|
||||
if(v0 < arg1 && arg2 < v0){
|
||||
func_8030E878(SFX_28_RUSTLING_NOISE, randf2(1.6f, 1.7f), 17000, position, 500.0f, 1000.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_8035A694(Actor *this){
|
||||
f32 sp3C;
|
||||
f32 sp38;
|
||||
s32 tmp_v0;
|
||||
f32 sp28[3];
|
||||
|
||||
sp3C = this->yaw;
|
||||
sp38 = this->unk28*1.5 + 1.0;
|
||||
tmp_v0 = func_8023DB5C();
|
||||
this->yaw += sp38;
|
||||
if(360.0f < this->yaw)
|
||||
this->yaw -= 360.0f;
|
||||
if(this->marker->unk14_21 && !(tmp_v0 & 1)){
|
||||
func_8034A174(this->marker->unk44, 5, sp28);
|
||||
func_8035A3F8(sp28, 1, ASSET_70D_SPRITE_SMOKE_1, this->scale);
|
||||
}
|
||||
func_8035A594(this->position, this->yaw, sp3C);
|
||||
|
||||
}
|
||||
|
||||
void __chicecube_spawnHalfCubes(ActorMarker *marker){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
Actor *other;
|
||||
f32 sp54[3];
|
||||
int i;
|
||||
f32 pad[1];
|
||||
|
||||
sp54[0] = actor->position[0];
|
||||
sp54[1] = actor->position[1];
|
||||
sp54[2] = actor->position[2];
|
||||
sp54[1] += 100.0f;
|
||||
for(i = 0; i < 2; i++){//L8035A7FC
|
||||
func_802C8F70((i & 1)? actor->yaw : actor->yaw + 180.0f);
|
||||
other = func_802C937C(0x21, sp54);
|
||||
other->unkF4_8 = 1; //don't spawn more
|
||||
other->scale = randf2(0.5f, 0.6f)*actor->scale;
|
||||
actor->yaw = randi2(0, 359);
|
||||
}
|
||||
if(marker);
|
||||
}
|
||||
|
||||
//__chicecube_ow
|
||||
void __chicecube_ow(ActorMarker *marker, ActorMarker *other_marker){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
FUNC_8030E8B4(SFX_1D_HITTING_AN_ENEMY_1, 0.9f, 22000, actor->position, 1500, 3000);
|
||||
actor->velocity[1] = 0.8f;
|
||||
actor->unk28 = 0.0f;
|
||||
}
|
||||
|
||||
//__chicecube_die
|
||||
void __chicecube_die(ActorMarker *marker, ActorMarker *other_marker){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
FUNC_8030E8B4(SFX_B6_GLASS_BREAKING_1, 1.0f, 32000, actor->position, 1500, 4500);
|
||||
actor->velocity[1] = 0.0f;
|
||||
func_8035A04C(actor->position, 12, ASSET_505_MODEL_ICECUBE_CHUNK, actor->scale);
|
||||
func_8035A228(actor->position, 6, ASSET_700_SPRITE_DUST, actor->scale);
|
||||
if(actor->unkF4_8 != 1){
|
||||
func_802C3C88(__chicecube_spawnHalfCubes, actor->marker);
|
||||
}
|
||||
marker_despawn(actor->marker);
|
||||
}
|
||||
|
||||
void func_8035A998(Actor *this){
|
||||
func_80328B8C(this, 1, 0.0001f, 1);
|
||||
actor_playAnimationOnce(this);
|
||||
this->unk38_31 = 0;
|
||||
}
|
||||
|
||||
void func_8035A9E0(Actor *this){
|
||||
func_80328B8C(this, 3, animctrl_getAnimTimer(this->animctrl), 1);
|
||||
actor_loopAnimation(this);
|
||||
this->unk38_31 = 1;
|
||||
this->unk28 = 0.0f;
|
||||
}
|
||||
|
||||
void func_8035AA40(Actor *this){
|
||||
func_80328B8C(this, 5, 0.9999f, 0);
|
||||
actor_playAnimationOnce(this);
|
||||
this->unk38_31 = 1;
|
||||
}
|
||||
|
||||
void chicecube_update(Actor *this){
|
||||
f32 sp3C = time_getDelta();
|
||||
f32 sp30[3];
|
||||
|
||||
if(map_get() == MAP_27_FP_FREEZEEZY_PEAK){
|
||||
if(func_8038BFA0()){
|
||||
actor_collisionOff(this);
|
||||
this->unk58_0 = FALSE;
|
||||
return;
|
||||
}
|
||||
actor_collisionOn(this);
|
||||
this->unk58_0 = TRUE;
|
||||
}//L8035AAF4
|
||||
|
||||
if(!actor_playerIsWithinDist(this, 3000))
|
||||
return;
|
||||
|
||||
func_802D729C(this, 3.4 * this->scale);
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = TRUE;
|
||||
marker_setCollisionScripts(this->marker, __chicecube_ow, NULL, __chicecube_die);
|
||||
this->marker->propPtr->unk8_3 = FALSE;
|
||||
actor_collisionOff(this);
|
||||
this->alpha_124_19 = 0x50;
|
||||
actor_setOpacity(this, this->alpha_124_19);
|
||||
this->unk38_31 = 0;
|
||||
this->unk60 = 1.0f;
|
||||
}//L8035ABC0
|
||||
if(this->unk60 <= 0.0){
|
||||
if(-99999.0 != this->unk60){
|
||||
this->unk60 = -99999.0f;
|
||||
actor_collisionOn(this);
|
||||
this->unk1C[0] =this->position[0];
|
||||
this->unk1C[1] =this->position[1];
|
||||
this->unk1C[2] =this->position[2];
|
||||
this->velocity[0] = this->yaw;
|
||||
}
|
||||
}
|
||||
else{//L8035AC3C
|
||||
this->unk60 -= sp3C;
|
||||
}
|
||||
|
||||
if(0.0 >= this->velocity[1]){
|
||||
this->velocity[1] = 0.0f;
|
||||
}
|
||||
else{
|
||||
this->velocity[1] -= sp3C;
|
||||
return;
|
||||
}
|
||||
switch(this->state){
|
||||
case 1: // L8035AC9C
|
||||
animctrl_setAnimTimer(this->animctrl, 0.0f);
|
||||
if( func_80359DF4(this, 900)
|
||||
|| (this->unkF4_8 == 2 && func_803203FC(0xC1))
|
||||
){
|
||||
func_80328B8C(this, 2, 0.0001f, 1);
|
||||
actor_playAnimationOnce(this);
|
||||
this->unk38_31 = 0x1;
|
||||
}
|
||||
break;
|
||||
case 2: // L8035AD10
|
||||
if(actor_animationIsAt(this, 0.1f)){
|
||||
FUNC_8030E8B4(SFX_112_TINKER_ATTENTION, 1.3f, 23000, this->position, 1500, 4500);
|
||||
}
|
||||
if( func_80359E38(this, 0xff, 0xa)
|
||||
&& 0.98 < animctrl_getAnimTimer(this->animctrl)
|
||||
){
|
||||
func_8035A9E0(this);
|
||||
}
|
||||
break;
|
||||
case 3: // L8035AD88
|
||||
animctrl_setAnimTimer(this->animctrl, 0.999f);
|
||||
if(this->unk28 + 0.28 < 18.0){
|
||||
this->unk28 = this->unk28 + 0.28;
|
||||
}
|
||||
else{
|
||||
this->unk28 = 18.0f;
|
||||
}
|
||||
func_8035A694(this);
|
||||
if(!func_80359DF4(this, 1300)){
|
||||
func_80328B8C(this, 4, animctrl_getAnimTimer(this->animctrl), 1);
|
||||
actor_loopAnimation(this);
|
||||
this->unk38_31 = 1;
|
||||
}
|
||||
else{
|
||||
player_getPosition(sp30);
|
||||
if(!func_80359F40(this, sp30)){
|
||||
func_8035A998(this);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4: // L8035AE64
|
||||
animctrl_setAnimTimer(this->animctrl, 0.999f);
|
||||
if(this->unk28 - 0.28 > 8.0)
|
||||
this->unk28 = this->unk28 - 0.28;
|
||||
else
|
||||
this->unk28 = 8.0f;
|
||||
func_8035A694(this);
|
||||
if(func_80359DF4(this, 900)){
|
||||
func_8035A9E0(this);
|
||||
}
|
||||
else if(func_80359FEC(this->position, this->unk1C, 0x14)){//L8035AEEC
|
||||
if(func_803294F0(this, 0xa, (s32)this->velocity[0])){
|
||||
func_8035AA40(this);
|
||||
}
|
||||
}
|
||||
else{//L8035AF38
|
||||
if(!func_80359F40(this, this->unk1C)){
|
||||
func_8035AA40(this);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5: // L8035AF58
|
||||
if(actor_animationIsAt(this, 0.25f)){
|
||||
FUNC_8030E8B4(SFX_112_TINKER_ATTENTION, 1.3f, 23000, this->position, 1500, 4500);
|
||||
}
|
||||
if( animctrl_getAnimTimer(this->animctrl) < 0.1
|
||||
&& func_80359EBC(this, 0x50, 0xA)
|
||||
){
|
||||
func_8035A998(this);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
212
src/core2/ch/jiggy.c
Normal file
212
src/core2/ch/jiggy.c
Normal file
@@ -0,0 +1,212 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern void func_802BE720(void);
|
||||
extern f32 func_8033A244(f32);
|
||||
extern void func_8033A280(f32);
|
||||
|
||||
extern u8 D_80329904[];
|
||||
|
||||
typedef struct chjiggy_s{
|
||||
u32 unk0;
|
||||
u32 index;
|
||||
} ActorLocal_Jiggy;
|
||||
|
||||
Actor *func_802C41D8(f32, f32, f32);
|
||||
void func_802C7AF8(u32 x, u32 y, u32 z, u32 arg3);
|
||||
Actor *func_802C7D0C(ActorMarker *this, Gfx **gdl, Mtx **mptr, Vtx **arg3);
|
||||
void func_802C7D98(Actor * arg0);
|
||||
void func_802C7DC0(Actor *this);
|
||||
int func_802C8088(Actor *this);
|
||||
|
||||
|
||||
|
||||
/* .data */
|
||||
ActorAnimationInfo D_80366290[] = {
|
||||
{0, 0.0f},
|
||||
{0, 0.0f},
|
||||
{0, 0.0f}
|
||||
};
|
||||
|
||||
ActorInfo D_803662A8 = {
|
||||
0x52, ACTOR_46_JIGGY, ASSET_35F_MODEL_JIGGY,
|
||||
1, D_80366290,
|
||||
func_802C7DC0, func_802C7D98, func_802C7D0C,
|
||||
0, 0, 0.9f, 0
|
||||
};
|
||||
|
||||
/* .code */
|
||||
enum jiggy_e func_802C7A30(Actor *this){
|
||||
s32 id;
|
||||
s32 sp18[3];
|
||||
|
||||
id = map_get();
|
||||
|
||||
sp18[0] = (s32)this->position[0];
|
||||
sp18[1] = (s32)this->position[1];
|
||||
sp18[2] = (s32)this->position[2];
|
||||
id = func_80307164(sp18);
|
||||
if( id < 0){
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
return func_80306DBC(id) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C7AB0(ActorMarker * arg0, u32 arg1){
|
||||
func_8030E6D4(SFX_30_MAGIC_POOF);
|
||||
func_8025A6EC(COMUSIC_3C_MINIGAME_LOSS, 0x7FF8);
|
||||
mapSpecificFlags_set(arg1, 1);
|
||||
marker_despawn(arg0);
|
||||
}
|
||||
|
||||
void func_802C7AF8(u32 x, u32 y, u32 z, u32 arg3){
|
||||
func_802C3F04((GenMethod_4)func_802C41D8, ACTOR_4C_STEAM, x, y, z);
|
||||
func_802C3F04((GenMethod_4)func_802C41D8, ACTOR_14F_DESTROYED_JIGGY, x, y, z);
|
||||
mapSpecificFlags_set(arg3, 1);
|
||||
}
|
||||
|
||||
void func_802C7B6C(u32 arg0){
|
||||
mapSpecificFlags_set(arg0, 0);
|
||||
}
|
||||
|
||||
void func_802C7B8C(Actor *this, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6){
|
||||
if( !mapSpecificFlags_get(arg1)
|
||||
&& mapSpecificFlags_get(arg2)
|
||||
&& item_getCount(ITEM_0_HOURGLASS_TIMER) == 0
|
||||
){
|
||||
func_8028FCC8(1);
|
||||
actor_collisionOff(this);
|
||||
func_802BAFE4(arg3);
|
||||
func_80356520(arg6);
|
||||
timedFunc_set_4(0.6f, (TFQM4)func_802C7AF8, (s32)this->position[0], (s32)this->position[1], (s32)this->position[2], arg4);
|
||||
timedFunc_set_2(0.6f, (TFQM2)func_802C7AB0, (s32)this->marker, arg5);
|
||||
timedFunc_set_0(1.0f, (TFQM0)func_802BE720);
|
||||
timedFunc_set_1(3.9f, (TFQM1)func_802C7B6C, arg4);
|
||||
mapSpecificFlags_set(arg1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
//chjiggy_updateRotate
|
||||
void func_802C7CA4(Actor *this){
|
||||
f32 delta = time_getDelta();
|
||||
this->yaw += delta * 230.0f;
|
||||
if(360.0f <= this->yaw){
|
||||
this->yaw -= 360.0f;
|
||||
}
|
||||
this->yaw_moving = this->yaw;
|
||||
}
|
||||
|
||||
//chjiggy_draw
|
||||
Actor *func_802C7D0C(ActorMarker *this, Gfx **gdl, Mtx **mptr, Vtx **arg3){
|
||||
Actor * thisActor = marker_getActor(this);
|
||||
ActorLocal_Jiggy *local = (ActorLocal_Jiggy *)&thisActor->local;
|
||||
u32 jiggyId;
|
||||
|
||||
if(!local->unk0){
|
||||
jiggyId = func_802C8088(thisActor);
|
||||
if((jiggyId == JIGGY_1C_CC_RINGS) || (jiggyId == JIGGY_1D_CC_SLOW_SAWBLADES)){
|
||||
func_8033A280(10.0f);
|
||||
func_8033A244(30000.0f);
|
||||
}
|
||||
thisActor = func_80325888(this, gdl, mptr, arg3);
|
||||
}
|
||||
return thisActor;
|
||||
}
|
||||
|
||||
void func_802C7D98(Actor * arg0){
|
||||
func_80343DEC(arg0);
|
||||
func_802C7CA4(arg0);
|
||||
}
|
||||
|
||||
//chjiggy_update
|
||||
void func_802C7DC0(Actor *this){
|
||||
ActorLocal_Jiggy *local = (ActorLocal_Jiggy *)&this->local;
|
||||
int i;
|
||||
|
||||
if(this->marker->unk14_21){
|
||||
for(i = 0; i < 4; i++){
|
||||
if(randf() < 0.015){
|
||||
func_8033E73C(this->marker, i + 5, &D_80329904);
|
||||
func_8033E3F0(8, 1);
|
||||
}
|
||||
}
|
||||
}//L802C7E44
|
||||
switch(this->state){
|
||||
case 1: //L802C7E68
|
||||
local->unk0 = 0;
|
||||
if(local->index == 0)
|
||||
local->index = func_802C7A30(this);
|
||||
|
||||
if(jiggyscore_isCollected(local->index)){
|
||||
marker_despawn(this->marker);
|
||||
}
|
||||
else{
|
||||
func_80328A84(this, 2);
|
||||
switch(func_802C8088(this)){
|
||||
case JIGGY_17_CC_CLANKER_RAISED: //L802C7EF8
|
||||
case JIGGY_49_CCW_EYRIE:// L802C7EF8
|
||||
this->marker->unk40_21 = 1;
|
||||
break;
|
||||
case JIGGY_36_LAIR_TTC_WITCH_SWITCH:// L802C7F0C
|
||||
this->unk44_14 = func_80341F2C(0x20A);
|
||||
this->unk48 = 0.0f;
|
||||
this->unk4C = 300.0f;
|
||||
this->marker->unk2C_2 = 1;
|
||||
this->unk54 = 0.0f;
|
||||
func_80343DEC(this);
|
||||
func_802C7CA4(this);
|
||||
break;
|
||||
case JIGGY_3E_GV_GRABBA:// L802C7F6C
|
||||
case JIGGY_4D_CCW_FLOWER:// L802C7F6C
|
||||
this->unk124_6 = 0;
|
||||
break;
|
||||
case JIGGY_41_GV_MAZE:// L802C7F7C
|
||||
this->marker->unk14_10 = 0x1E;
|
||||
break;
|
||||
case JIGGY_13_TTC_LOCKUP: //L802C7F94
|
||||
this->marker->unk14_10 = 0x28;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2: //L802C7FAC
|
||||
func_802C7CA4(this);
|
||||
switch(func_802C8088(this)){
|
||||
case JIGGY_20_BGS_ELEVATED_WALKWAY: //L802C7FE8
|
||||
func_802C7B8C(this, 4, 3, 0xD, 5, 2, 0xae);
|
||||
break;
|
||||
case JIGGY_25_BGS_MAZE://L802C8018
|
||||
func_802C7B8C(this, 0xd, 0xc, 0x1e, 9, 0xb, 0xaf);
|
||||
break;
|
||||
case JIGGY_2F_FP_XMAS_TREE://L802C8048
|
||||
if(levelSpecificFlags_get(0x29))
|
||||
actor_collisionOn(this);
|
||||
else
|
||||
actor_collisionOff(this);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}//L802C8074
|
||||
}
|
||||
|
||||
//chjiggy_getId
|
||||
int func_802C8088(Actor *this){
|
||||
ActorLocal_Jiggy *local = (ActorLocal_Jiggy *)&this->local;
|
||||
return local->index;
|
||||
}
|
||||
|
||||
|
||||
void func_802C8090(Actor * this){
|
||||
ActorLocal_Jiggy *local = (ActorLocal_Jiggy *)&this->local;
|
||||
local->unk0 = 1;
|
||||
actor_collisionOff(this);
|
||||
}
|
||||
|
||||
//chjiggy_setId
|
||||
void func_802C80B4(Actor *this, u32 id){
|
||||
ActorLocal_Jiggy *local = (ActorLocal_Jiggy *)&this->local;
|
||||
local->index = id;
|
||||
}
|
||||
106
src/core2/ch/jigsawdance.c
Normal file
106
src/core2/ch/jigsawdance.c
Normal file
@@ -0,0 +1,106 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_8028EBA4();
|
||||
|
||||
Actor *func_802C80C0(ActorMarker *this, Gfx **gdl, Mtx **mptr, Vtx **arg3);
|
||||
void func_802C811C(Actor * this);
|
||||
|
||||
/* .data */
|
||||
ActorAnimationInfo D_803662D0[] = {
|
||||
{0x00, 0.0f},
|
||||
{0x00, 2.0f},
|
||||
{0x76, 1.5f},
|
||||
{0x76, 1.5f},
|
||||
{0x30, 5.0f},
|
||||
{0x00, 2.0f}
|
||||
};
|
||||
|
||||
ActorInfo D_80366300 = {0x68, 0x5A, 0x35E,
|
||||
1, D_803662D0,
|
||||
func_802C811C, func_80326224, func_802C80C0,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
|
||||
/* .code */
|
||||
Actor *func_802C80C0(ActorMarker *this, Gfx **gdl, Mtx **mptr, Vtx **arg3){
|
||||
Actor *thisActor = marker_getActor(this);
|
||||
|
||||
if(!thisActor->initialized){
|
||||
thisActor->initialized = 1;
|
||||
return thisActor;
|
||||
}
|
||||
else{
|
||||
return func_80325888(this, gdl, mptr, arg3);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C811C(Actor * this){
|
||||
ActorAnimCtrl *plyrMvmt;
|
||||
|
||||
this->marker->collidable = 0;
|
||||
switch(this->state){
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
player_getPosition(this->position);
|
||||
this->yaw = func_8028EBA4();
|
||||
plyrMvmt = player_getAnimCtrlPtr();
|
||||
animctrl_setSmoothTransition(this->animctrl, 0);
|
||||
animctrl_setIndex(this->animctrl, animctrl_getIndex(plyrMvmt));
|
||||
func_8028774C(this->animctrl,animctrl_getAnimTimer(plyrMvmt));
|
||||
animctrl_setDuration(this->animctrl, 1000.0f);
|
||||
func_802875AC(this->animctrl, "chjigsawdance.c", 0x59);
|
||||
break;
|
||||
case 3:
|
||||
plyrMvmt = player_getAnimCtrlPtr();
|
||||
animctrl_setSmoothTransition(this->animctrl, 0);
|
||||
func_8028774C(this->animctrl,animctrl_getAnimTimer(plyrMvmt));
|
||||
animctrl_setDuration(this->animctrl, 1000.0f);
|
||||
func_802875AC(this->animctrl, "chjigsawdance.c", 0x62);
|
||||
break;
|
||||
case 4:
|
||||
player_getPosition(this->position);
|
||||
this->yaw = func_8028EBA4();
|
||||
plyrMvmt = player_getAnimCtrlPtr();
|
||||
animctrl_setSmoothTransition(this->animctrl, 0);
|
||||
func_8028774C(this->animctrl,animctrl_getAnimTimer(plyrMvmt));
|
||||
animctrl_setDuration(this->animctrl, 1000.0f);
|
||||
func_802875AC(this->animctrl, "chjigsawdance.c", 0x6e);
|
||||
break;
|
||||
case 5:
|
||||
this->marker->propPtr->unk8_4 = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C82C0(Actor * this, u32 arg1){
|
||||
switch(arg1){
|
||||
case 3:
|
||||
if(this->state == 1){
|
||||
func_80328A84(this, 2);
|
||||
animctrl_setPlaybackType(this->animctrl, ANIMCTRL_ONCE);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
func_80328A84(this, 3);
|
||||
break;
|
||||
case 1:
|
||||
func_80328A84(this, 4);
|
||||
break;
|
||||
case 4:
|
||||
player_getPosition(this->position);
|
||||
this->yaw = func_8028EBA4();
|
||||
animctrl_setSmoothTransition(this->animctrl, 0);
|
||||
func_8028774C(this->animctrl, animctrl_getAnimTimer(player_getAnimCtrlPtr()));
|
||||
animctrl_setDuration(this->animctrl, 1000.0f);
|
||||
func_802875AC(this->animctrl, "chjigsawdance.c", 0x97);
|
||||
break;
|
||||
case 5:
|
||||
func_80328A84(this, 5);
|
||||
this->marker->propPtr->unk8_4 = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
321
src/core2/ch/jinjo.c
Normal file
321
src/core2/ch/jinjo.c
Normal file
@@ -0,0 +1,321 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern void func_80328B8C(Actor *, s32, f32 , s32);
|
||||
extern f32 func_80309B24(f32*);
|
||||
extern void func_80329904(ActorMarker*, s32, f32*);
|
||||
extern void func_80326310(Actor *);
|
||||
extern void func_8032BB88(Actor *, s32, s32);
|
||||
|
||||
void func_802CDD78(Actor *this);
|
||||
|
||||
/* .data */
|
||||
extern ActorAnimationInfo D_803671B0[];
|
||||
extern ActorInfo D_80367200 = { 0x5A, 0x60, 0x3C0, 0x1, D_803671B0, func_802CDD78, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_80367224 = { 0x5B, 0x62, 0x3C2, 0x1, D_803671B0, func_802CDD78, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_80367248 = { 0x5E, 0x5E, 0x3BB, 0x1, D_803671B0, func_802CDD78, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_8036726C = { 0x5D, 0x61, 0x3C1, 0x1, D_803671B0, func_802CDD78, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
extern ActorInfo D_80367290 = { 0x5C, 0x5F, 0x3BC, 0x1, D_803671B0, func_802CDD78, func_80326224, func_80325888, 0, 0, 0.0f, 0};
|
||||
|
||||
/*.rodata */
|
||||
//jumptable D_80376560
|
||||
extern f64 D_80376578; //45.0
|
||||
extern f64 D_80376580; //182.04444
|
||||
extern f64 D_803765A8; //0.015
|
||||
extern f64 D_803765B0; //0.8
|
||||
extern f64 D_803765B8; //0.3
|
||||
extern f64 D_803765C0; //0.2
|
||||
extern f64 D_803765C8; //0.9
|
||||
//0.1
|
||||
//.rodata end 803765d0
|
||||
|
||||
s32 func_802CDB50(s32 arg0){
|
||||
switch(arg0){
|
||||
case 0x5A:
|
||||
return 0xD98;
|
||||
case 0x5B:
|
||||
return 0xD99;
|
||||
case 0x5C:
|
||||
return 0xD9b;
|
||||
case 0x5d:
|
||||
return 0xD9a;
|
||||
case 0x5e:
|
||||
return 0xD97;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void func_802CDBA8(ActorMarker *this, s32 arg1){
|
||||
Actor *actorPtr = marker_getActor(this);
|
||||
ActorLocal_Jinjo *localPtr = &actorPtr->jinjo;
|
||||
|
||||
if(actorPtr->state < 5){
|
||||
if(!func_8031FF1C(BKPROG_E_JINJO_TEXT)){
|
||||
func_80311480(func_802CDB50(actorPtr->marker->unk14_20), 4, 0, 0, 0, 0);
|
||||
func_80320004(BKPROG_E_JINJO_TEXT, 1);
|
||||
}
|
||||
func_80328B8C(actorPtr, 6, 0.0f , -1);
|
||||
if(func_803463D4(ITEM_12_JINJOS, 1 << (this->unk14_20 + 6) ) == 0x1f)
|
||||
localPtr->unk4 = 1;
|
||||
actor_loopAnimation(actorPtr);
|
||||
this->collidable = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802CDC9C(Actor *this, s16 arg1){
|
||||
f32 tmpf;
|
||||
|
||||
tmpf = this->yaw;
|
||||
tmpf -= time_getDelta()*arg1/45.0;
|
||||
|
||||
if(tmpf >= 360.0f)
|
||||
tmpf -= 360.0f;
|
||||
else if (tmpf < 0.0f)
|
||||
tmpf += 360.0f;
|
||||
|
||||
this->yaw = tmpf;
|
||||
}
|
||||
|
||||
|
||||
void func_802CDD3C(Actor * this){
|
||||
ActorLocal_Jinjo *localPtr = &this->jinjo;
|
||||
if(localPtr->unkC != 0){
|
||||
func_802F9D38(localPtr->unkC);
|
||||
localPtr->unkC = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void func_802CDD78(Actor * this){
|
||||
f32 sp7C[3];
|
||||
f32 sp70[3];
|
||||
f32 sp6C;
|
||||
f32 sp68; //unused??
|
||||
s16 sp66;
|
||||
s16 sp64;
|
||||
s32 sp60;
|
||||
// f32 sp5C;
|
||||
ActorLocal_Jinjo *local; //= &this->jinjo; //sp34
|
||||
f32 sp58 = time_getDelta();
|
||||
int sp50;
|
||||
//f32 sp4C; //unused
|
||||
f32 sp40[3];
|
||||
//s32 sp3C;
|
||||
//s32 sp38;
|
||||
f32 *sp30;
|
||||
f32 tmp_f0;
|
||||
s32 i;
|
||||
|
||||
local = &this->jinjo;
|
||||
if(!this->initialized){
|
||||
this->initialized = 1;
|
||||
local->unk0 = 1;
|
||||
local->unk4 = 0;
|
||||
local->unk8 = (this->position_y < func_80309B24(this->position));
|
||||
this->marker->unkC = func_802CDBA8;
|
||||
func_803300D8(this->marker, func_802CDD3C);
|
||||
if(func_803203FC(0xc1)){
|
||||
marker_despawn(this->marker);
|
||||
}
|
||||
}//L802CDE24
|
||||
sp30 = this->position;
|
||||
func_8028E964(sp7C);
|
||||
func_80257F18(sp30, sp7C, &sp6C);
|
||||
sp64 = (this->yaw * 182.04444);
|
||||
sp66 = sp64 - (s32)(sp6C*182.04444);
|
||||
sp60 = func_8028AED4(sp30, 55.0f);
|
||||
|
||||
switch(this->state){
|
||||
case 1:
|
||||
if(randf() < 0.015){
|
||||
if(sp60){
|
||||
func_80328B8C(this, 3, 0.0f, -1);
|
||||
}else{
|
||||
func_80328B8C(this, 2, 0.0f, -1);
|
||||
}
|
||||
actor_playAnimationOnce(this);
|
||||
}//L802CDF24
|
||||
break;
|
||||
|
||||
case 2: /* 46FA0 802CDF30 3C053F7D */
|
||||
case 3:
|
||||
if(actor_animationIsAt(this, 0.99f)){
|
||||
func_80328B8C(this, 1, 0.0f, -1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 4: /* 46FD8 802CDF68 3C053F7D */
|
||||
if(actor_animationIsAt(this, 0.99f)){
|
||||
func_80328B8C(this, 1, 0.0f, -1);
|
||||
}else{//L802CDF9C
|
||||
tmp_f0 = this->yaw;
|
||||
if(sp66 >= 0){
|
||||
tmp_f0 -= 80.0f * sp58;
|
||||
}
|
||||
else{//L802CDFBC
|
||||
tmp_f0 += 80.0f * sp58;
|
||||
}//L802CDFD0
|
||||
if(tmp_f0 >= 360.0f)
|
||||
tmp_f0 -= 360.0f;
|
||||
else if(tmp_f0 < 0.0f)
|
||||
tmp_f0 += 360.0f;
|
||||
|
||||
this->yaw = tmp_f0;
|
||||
}//L802CE018
|
||||
break;
|
||||
case 6:/* 47094 802CE024 02002025 */
|
||||
func_802CDC9C(this, sp66);
|
||||
if(actor_animationIsAt(this, 0.0f) && --(local->unk0) == 0){
|
||||
func_80328B8C(this, 7, 0.0f, -1);
|
||||
actor_playAnimationOnce(this);
|
||||
if(local->unk4){
|
||||
sp40[0] = this->position_x;
|
||||
sp40[1] = this->position_y;
|
||||
sp40[2] = this->position_z;
|
||||
sp40[1] += 50.0f;
|
||||
jiggySpawn(10*level_get()-9, sp40);
|
||||
}//L802CE0CC
|
||||
func_8024BD08(0);
|
||||
func_8032BB88(this, 0, 4000);
|
||||
if(local->unk4){
|
||||
func_8025A6EC(COMUSIC_30_5TH_JINJO_COLLECTED, 28000);
|
||||
}else{
|
||||
func_8025A6EC(COMUSIC_A_JINJO_COLLECTED, 28000);
|
||||
}
|
||||
}//L802CE114
|
||||
break;
|
||||
|
||||
case 7:
|
||||
case 8:
|
||||
sp50 = this->state == 7;
|
||||
if(!sp50 || 0.8 < animctrl_getAnimTimer(this->animctrl)){//L802CE158
|
||||
player_getVelocity(sp70);
|
||||
sp70[0] *= sp58*6.0f;
|
||||
sp70[1] *= sp58*6.0f;
|
||||
sp70[2] *= sp58*6.0f;
|
||||
sp70[0] += sp7C[0];
|
||||
sp70[1] += sp7C[1];
|
||||
sp70[2] += sp7C[2];
|
||||
sp70[0] -= this->position_x;
|
||||
sp70[1] -= this->position_y;
|
||||
sp70[2] -= this->position_z;
|
||||
sp70[0] *= sp58*3.0f;
|
||||
sp70[1] *= sp58*3.0f;
|
||||
sp70[2] *= sp58*3.0f;
|
||||
this->position_x += sp70[0];
|
||||
this->position_y += sp70[1];
|
||||
this->position_z += sp70[2];
|
||||
if(sp50 || animctrl_getAnimTimer(this->animctrl) < 0.3){
|
||||
for(i = 0; i < 4; i++){
|
||||
if(randf() < 0.2){
|
||||
func_8033E73C(this->marker, i + 5, func_80329904);
|
||||
func_8033E3F0(8, this->marker->unk14_21);
|
||||
} //L802CE2C4
|
||||
}
|
||||
}//L802CE2D0
|
||||
}
|
||||
|
||||
if(sp50){
|
||||
if(animctrl_getAnimTimer(this->animctrl) < 0.9)
|
||||
func_802CDC9C(this, sp66);
|
||||
|
||||
if(actor_animationIsAt(this, 0.1f)){
|
||||
local->unkC = func_802F9AA8(SFX_18_BIGBUTT_SLIDE);
|
||||
func_802F9EC4(local->unkC, sp30, 500, 2000);
|
||||
func_802F9F80(local->unkC, 0.0f, 0x50061c46, 0.0f);
|
||||
func_802FA0B0(local->unkC, 0);
|
||||
func_8025A6EC(COMUSIC_43_ENTER_LEVEL_GLITTER, 0x7FFF);
|
||||
func_8025AABC(COMUSIC_43_ENTER_LEVEL_GLITTER);
|
||||
func_8030E9C4(SFX_C7_SHWOOP, 0.8f, 0x7FFF, sp30, 300.0f, 2000.0f);
|
||||
}//L802CE3C4
|
||||
|
||||
if(actor_animationIsAt(this, 0.434f)){
|
||||
func_8030E9C4(SFX_C7_SHWOOP, 0.9f, 0x7fff, sp30, 300.0f, 2000.0f);
|
||||
}//L802CE408
|
||||
|
||||
if(actor_animationIsAt(this, 0.811f)){
|
||||
func_8030E9C4(SFX_C7_SHWOOP, 1.0f, 0x7fff, sp30, 300.0f, 2000.0f);
|
||||
}
|
||||
|
||||
}else{//L802CE450
|
||||
if(actor_animationIsAt(this,0.214f)){
|
||||
func_8030E9C4(SFX_C7_SHWOOP, 1.1f, 0x7fff, sp30, 300.0f, 2000.0f);
|
||||
}//L802CE490
|
||||
|
||||
if(actor_animationIsAt(this,0.55f)){
|
||||
func_8030E9C4(SFX_53_BANJO_HUIII, 1.5f, 0x7fff, sp30, 300.0f, 2000.0f);
|
||||
}//L802CE4D0
|
||||
|
||||
if(actor_animationIsAt(this,0.75f)){
|
||||
func_80326310(this);
|
||||
if(local->unk4 == 0){
|
||||
func_8032BB88(this, -1, 4000);
|
||||
func_8024BD08(1);
|
||||
}
|
||||
}//L802CE518
|
||||
|
||||
if(actor_animationIsAt(this,0.85f)){
|
||||
if(local->unk4){
|
||||
func_802F9D38();
|
||||
local->unk4 = 0;
|
||||
}
|
||||
func_8030E4E4(SFX_19_BANJO_LANDING_08);
|
||||
func_8025A7DC(COMUSIC_43_ENTER_LEVEL_GLITTER);
|
||||
}//L802CE558
|
||||
|
||||
if(local->unk4 && actor_animationIsAt(this,0.95f)){
|
||||
func_8032BB88(this, -1, 4000);
|
||||
func_8024BD08(1);
|
||||
}
|
||||
}//L802CE598
|
||||
|
||||
if(sp50){
|
||||
if(actor_animationIsAt(this, 0.96f) || actor_animationIsAt(this, 0.99f)){
|
||||
func_80328B8C(this, 8, 0.0f, -1);
|
||||
actor_playAnimationOnce(this);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}//L802CE5F0
|
||||
if(this->state < 4 && !(((sp66 >= 0)? sp66: -sp66) <= 0x100)){
|
||||
func_80328B8C(this, 4, 0.0f, -1);
|
||||
actor_playAnimationOnce(this);
|
||||
}//L802CE630
|
||||
if(!func_803114B0()){
|
||||
switch(D_803671B0[this->state].index){
|
||||
case 0x31:
|
||||
if(actor_animationIsAt(this, 0.6f)){
|
||||
if(local->unk8){
|
||||
func_8030E988(SFX_8_BANJO_LANDING_04, 1.8f, 18000, sp30, 120.0f, 1200.0f);
|
||||
}else{
|
||||
FUNC_8030E8B4(SFX_8_BANJO_LANDING_04, 1.8f, 18000, sp30, 120, 1200);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x2D: //L802CE6F4
|
||||
if(actor_animationIsAt(this, 0.2f)){
|
||||
if(local->unk8){
|
||||
func_8030E988(SFX_17_JINJO_WHISTLE, 1.0f, 22000, sp30, 120.0f, 1200.0f);
|
||||
}else{
|
||||
FUNC_8030E8B4(SFX_27_JINJO_HI, 1.0f, 22000, sp30, 120, 1200);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x2F: //L802CE760
|
||||
if(actor_animationIsAt(this, 0.2f)){
|
||||
if(local->unk8){
|
||||
func_8030E988(SFX_27_JINJO_HI, 1.0f, 22000, sp30, 120.0f, 1200.0f);
|
||||
}else{
|
||||
FUNC_8030E8B4(SFX_17_JINJO_WHISTLE, 1.0f, 22000, sp30, 120, 1200);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default: //L802CE7C8
|
||||
break;
|
||||
}
|
||||
}//L802CE7CC
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/ch/jinjo/func_802CDD78.s")
|
||||
#endif
|
||||
453
src/core2/ch/mole.c
Normal file
453
src/core2/ch/mole.c
Normal file
@@ -0,0 +1,453 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void func_802D9D60(Actor *this);
|
||||
Actor *func_802D94B4(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
||||
void func_802D9830(ActorMarker *marker, enum asset_e arg1, s32 arg2);
|
||||
|
||||
typedef struct{
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s8 unk4;
|
||||
s8 unk5;
|
||||
} struct_core2_52290;
|
||||
|
||||
/* .data */
|
||||
ActorAnimationInfo D_80367D70[]= {
|
||||
{0, 0.0f},
|
||||
{ASSET_13A_ANIM_BOTTLES_ENTER, 2000000000.0f},
|
||||
{ASSET_13A_ANIM_BOTTLES_ENTER, 4.5f},
|
||||
{ASSET_13B_ANIM_BOTTLES_IDLE, 7.0f},
|
||||
{ASSET_139_ANIM_BOTTLES_EXIT, 1.7f},
|
||||
{ASSET_13A_ANIM_BOTTLES_ENTER, 2000000000.0f},
|
||||
};
|
||||
|
||||
ActorInfo D_80367DA0= {
|
||||
0x1DF, ACTOR_37A_BOTTLES, ASSET_387_MODEL_BOTTLES,
|
||||
1, D_80367D70,
|
||||
func_802D9D60, func_80326224, func_802D94B4,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
struct_core2_52290 D_80367DC4[] = {
|
||||
{0x0C23, 0x0C24, 0x0F, ABILITY_1_BEAK_BOMB},
|
||||
{0x0B47, 0x0B4B, 0x16, ABILITY_6_EGGS},
|
||||
{0x0B48, 0x0B4C, 0x17, ABILITY_2_BEAK_BUSTER},
|
||||
{0x0B49, 0x0B4A, 0x18, ABILITY_10_TALON_TROT},
|
||||
{0x0A1F, 0x0A23, 0x0C, ABILITY_D_SHOCK_JUMP},
|
||||
{0x0A20, 0x0A22, 0x0D, ABILITY_9_FLY},
|
||||
{0x0D35, 0x0D36, 0x01, ABILITY_12_WONDERWING},
|
||||
{0x0C88, 0x0C89, 0x10, ABILITY_E_WADING_BOOTS},
|
||||
{0x0A84, 0x0A85, 0x19, ABILITY_11_TURBO_TALON},
|
||||
{0x0F64, 0x0F65, 0x0E, ABILITY_13_1ST_NOTEDOOR}
|
||||
};
|
||||
|
||||
/* .code */
|
||||
int func_802D9220(enum level_e level){
|
||||
switch (level){
|
||||
case LEVEL_1_MUMBOS_MOUNTAIN:
|
||||
return ability_isUnlocked(ABILITY_6_EGGS)
|
||||
&& ability_isUnlocked(ABILITY_2_BEAK_BUSTER)
|
||||
&& ability_isUnlocked(ABILITY_10_TALON_TROT);
|
||||
case LEVEL_2_TREASURE_TROVE_COVE:
|
||||
return ability_isUnlocked(ABILITY_D_SHOCK_JUMP)
|
||||
&& ability_isUnlocked(ABILITY_9_FLY);
|
||||
case LEVEL_3_CLANKERS_CAVERN:
|
||||
return ability_isUnlocked(ABILITY_12_WONDERWING);
|
||||
case LEVEL_4_BUBBLEGLOOP_SWAMP:
|
||||
return ability_isUnlocked(ABILITY_E_WADING_BOOTS);
|
||||
case LEVEL_5_FREEZEEZY_PEAK:
|
||||
return ability_isUnlocked(ABILITY_1_BEAK_BOMB);
|
||||
case LEVEL_7_GOBIS_VALLEY:
|
||||
return ability_isUnlocked(ABILITY_11_TURBO_TALON);
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
enum asset_e func_802D9304(void){
|
||||
s32 level_id = level_get();
|
||||
int learned_all_moves = func_802D9220(level_id);
|
||||
switch(level_id){
|
||||
case LEVEL_1_MUMBOS_MOUNTAIN:
|
||||
return learned_all_moves ? 0xb4e : 0xd38;
|
||||
case LEVEL_2_TREASURE_TROVE_COVE:
|
||||
return learned_all_moves ? 0xa27 : 0xd38;
|
||||
case LEVEL_3_CLANKERS_CAVERN:
|
||||
return learned_all_moves ? 0xd37 : 0xd38;
|
||||
case LEVEL_4_BUBBLEGLOOP_SWAMP:
|
||||
return learned_all_moves ? 0xc8a : 0xd38;
|
||||
case LEVEL_5_FREEZEEZY_PEAK:
|
||||
return learned_all_moves ? 0xc2a : 0xd38;
|
||||
case LEVEL_7_GOBIS_VALLEY:
|
||||
return learned_all_moves ? 0xc2a : 0xd38;
|
||||
default:
|
||||
return 0xd38;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int func_802D93EC(void){
|
||||
return ability_isUnlocked(ABILITY_6_EGGS)
|
||||
&& ability_isUnlocked(ABILITY_2_BEAK_BUSTER)
|
||||
&& ability_isUnlocked(ABILITY_10_TALON_TROT)
|
||||
&& ability_isUnlocked(ABILITY_D_SHOCK_JUMP)
|
||||
&& ability_isUnlocked(ABILITY_9_FLY)
|
||||
&& ability_isUnlocked(ABILITY_12_WONDERWING)
|
||||
&& ability_isUnlocked(ABILITY_E_WADING_BOOTS)
|
||||
&& ability_isUnlocked(ABILITY_1_BEAK_BOMB)
|
||||
&& ability_isUnlocked(ABILITY_11_TURBO_TALON);
|
||||
}
|
||||
|
||||
Actor *func_802D94B4(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
|
||||
if(actor->state != 1 && actor->state != 5){
|
||||
func_8033A45C(3, 0);
|
||||
func_8033A45C(4, 0);
|
||||
actor = func_80325888(marker, gfx, mtx, vtx);
|
||||
}
|
||||
|
||||
return actor;
|
||||
}
|
||||
|
||||
void func_802D9530(Actor *this){
|
||||
Actor *other = func_80329980(this);
|
||||
if(this->unk100 && other){
|
||||
if(this->unk100->unk14_20 == 0xB8)
|
||||
func_80328B8C(other, 3, 0.0001f, 1);
|
||||
}
|
||||
func_80328B8C(this, 4, 0.0001f, 1);
|
||||
actor_playAnimationOnce(this);
|
||||
this->unk44_31 = func_8030D90C();
|
||||
sfxsource_setSfxId(this->unk44_31, SFX_3F9_UNKNOWN);
|
||||
func_8030DD14(this->unk44_31, 2);
|
||||
func_8030DBB4(this->unk44_31, 1.4f);
|
||||
sfxsource_setSampleRate(this->unk44_31, 26000);
|
||||
func_8028F918(0);
|
||||
}
|
||||
|
||||
void func_802D9600(Actor * this){
|
||||
animctrl_setSmoothTransition(this->animctrl, 0);
|
||||
func_80328B8C(this, 1, 0.0001f, 1);
|
||||
this->marker->propPtr->unk8_3 = 0;
|
||||
}
|
||||
|
||||
void func_802D9658(Actor *this){
|
||||
timed_setCameraToNode(0.0f, D_80367DC4[this->unkF4_8-9].unk4);
|
||||
}
|
||||
|
||||
void func_802D9698(ActorMarker *marker, enum asset_e arg1, s32 arg2){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
|
||||
if( arg1 == D_80367DC4[actor->unkF4_8-9].unk0
|
||||
&& item_getCount(ITEM_14_HEALTH) < item_getCount(ITEM_15_HEALTH_TOTAL)
|
||||
){
|
||||
func_80311480(ASSET_D39_TEXT_BOTTLES_REFILL_HEALTH, 7, 0, actor->marker, func_802D9698, func_802D9830);
|
||||
}//L802D9738
|
||||
else if(arg1 == D_80367DC4[actor->unkF4_8-9].unk0 || arg1 == ASSET_D39_TEXT_BOTTLES_REFILL_HEALTH){
|
||||
func_80311480(func_802D93EC()? 0xa87 : func_802D9304(), 7, 0, actor->marker, func_802D9698, NULL);
|
||||
}
|
||||
else{//L802D97BC
|
||||
if(actor->unk138_24){
|
||||
func_80347A14(1);
|
||||
actor->unk138_24 = FALSE;
|
||||
}
|
||||
func_80324E88(0.0f);
|
||||
if(actor->state == 5){
|
||||
func_8028F918(0);
|
||||
func_802D9600(actor);
|
||||
}//L802D9814
|
||||
else{
|
||||
func_802D9530(actor);
|
||||
}
|
||||
}//L802D9820
|
||||
}
|
||||
|
||||
void func_802D9830(ActorMarker *marker, enum asset_e arg1, s32 arg2){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
switch(arg2){
|
||||
case 1:
|
||||
timed_setCameraToNode(0.0f, 0x11);
|
||||
levelSpecificFlags_set(0x1A, 1);
|
||||
break;
|
||||
case 2:
|
||||
levelSpecificFlags_set(0x1A, 0);
|
||||
func_802D9658(actor);
|
||||
break;
|
||||
case 3:
|
||||
timed_setCameraToNode(0.0f, 0x29);
|
||||
levelSpecificFlags_set(0x1A, 1);
|
||||
break;
|
||||
case 4:
|
||||
levelSpecificFlags_set(0x1A, 0);
|
||||
func_802D9658(actor);
|
||||
break;
|
||||
case 5:
|
||||
func_803463D4(ITEM_D_EGGS, 50);
|
||||
break;
|
||||
case 6:
|
||||
func_803463D4(ITEM_F_RED_FEATHER, 25);
|
||||
break;
|
||||
case 7:
|
||||
func_803463D4(ITEM_10_GOLD_FEATHER, 5);
|
||||
break;
|
||||
case 8:
|
||||
item_set(ITEM_14_HEALTH, item_getCount(ITEM_15_HEALTH_TOTAL));
|
||||
break;
|
||||
case 0xff:
|
||||
func_802D9658(actor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int func_802D997C(Actor *this){
|
||||
s32 sp2C;
|
||||
s32 sp28 = 0xe;
|
||||
if(ability_isUnlocked(D_80367DC4[this->unkF4_8-9].unk5)){
|
||||
sp28 = 0xf;
|
||||
sp2C = D_80367DC4[this->unkF4_8-9].unk2;
|
||||
}//L802D99EC
|
||||
else{
|
||||
func_80347A14(0);
|
||||
this->unk138_24 = 1;
|
||||
sp2C = D_80367DC4[this->unkF4_8-9].unk0;
|
||||
ability_unlock(D_80367DC4[this->unkF4_8-9].unk5);
|
||||
switch(D_80367DC4[this->unkF4_8-9].unk5){
|
||||
case ABILITY_9_FLY:
|
||||
case ABILITY_D_SHOCK_JUMP:
|
||||
func_8030E6A4(SFX_113_PAD_APPEARS, 0.9f, 32000);
|
||||
break;
|
||||
case ABILITY_13_1ST_NOTEDOOR:
|
||||
func_802FAD64(ITEM_C_NOTE);
|
||||
break;
|
||||
}
|
||||
}//L802D9A9C
|
||||
func_80311480(sp2C, sp28, this->position, this->marker, func_802D9698, func_802D9830);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void func_802D9ADC(Actor *this){
|
||||
Actor *other = func_80329980(this);
|
||||
if(this->unk100 && other && this->unk100->unk14_20 == 0xB8){
|
||||
func_80328B8C(other, 2, 0.0001f, 1);
|
||||
}
|
||||
this->marker->propPtr->unk8_3 = 1;
|
||||
animctrl_setSmoothTransition(this->animctrl, TRUE);
|
||||
func_80328B8C(this, 2, 0.0001f, 1);
|
||||
actor_playAnimationOnce(this);
|
||||
this->unk44_31 = func_8030D90C();
|
||||
sfxsource_setSfxId(this->unk44_31, SFX_3F9_UNKNOWN);
|
||||
func_8030DD14(this->unk44_31, 2);
|
||||
func_8030DBB4(this->unk44_31, 1.4f);
|
||||
sfxsource_setSampleRate(this->unk44_31, 26000);
|
||||
func_802D9658(this);
|
||||
func_8028F94C(2, this->position);
|
||||
}
|
||||
|
||||
void func_802D9BD8(Actor *this){
|
||||
func_80328A84(this, 5);
|
||||
func_802D9658(this);
|
||||
func_8028F94C(2, this->position);
|
||||
func_802D997C(this);
|
||||
}
|
||||
|
||||
void func_802D9C1C(Actor *this){
|
||||
func_80328B8C(this, 3, 0.0001f, 1);
|
||||
actor_loopAnimation(this);
|
||||
}
|
||||
|
||||
void func_802D9C54(ActorMarker *marker){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
Actor *other = spawn_child_actor(ACTOR_12C_MOLEHILL, &actor);
|
||||
f32 pad[1];
|
||||
|
||||
actor->unk100 = other->marker;
|
||||
if(marker);
|
||||
}
|
||||
|
||||
void func_802D9C90(Actor *this){
|
||||
u8 tmp_a1 = this->unk44_31;
|
||||
if(tmp_a1){
|
||||
func_8030DA44(tmp_a1);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802D9CBC(Actor *this){
|
||||
if(ability_isUnlocked(D_80367DC4[this->unkF4_8 - 9].unk5)){
|
||||
func_802D9BD8(this);
|
||||
}
|
||||
else{
|
||||
if(func_80329530(this, 150)){
|
||||
if(this->unk38_0 == 0)
|
||||
func_8028F45C(9, this->position);
|
||||
else
|
||||
func_8028F490(this->unk1C);
|
||||
}//L802D9D44
|
||||
func_802D9ADC(this);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802D9D60(Actor *this){
|
||||
s32 sp50[6];
|
||||
f32 sp4C;
|
||||
f32 pad44[2];
|
||||
Actor *other;
|
||||
f32 sp34[3];
|
||||
|
||||
if(this->unkF4_8 < 8 || this->unkF4_8 >= 0x13)
|
||||
return;
|
||||
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = 1;
|
||||
func_803300D8(this->marker, func_802D9C90);
|
||||
if(this->initialized){
|
||||
other = func_80326D68(this->position, ACTOR_12C_MOLEHILL, -1, &sp4C);
|
||||
this->unk100 = (other) ? other->marker : NULL;
|
||||
if(this->unk100){
|
||||
other = func_80329980(this);
|
||||
if(other && this->unk100->unk14_20 == 0xB8){
|
||||
func_80328A84(other, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}//L802D9E34
|
||||
|
||||
if(!this->initialized){
|
||||
other = func_80304C38(0x372, this);
|
||||
if(other == NULL){
|
||||
this->unk38_0 = FALSE;
|
||||
}
|
||||
else{
|
||||
this->unk38_0 = TRUE;
|
||||
nodeprop_getPosition(other, this->unk1C);
|
||||
}
|
||||
func_802C3C88(func_802D9C54, this->marker);
|
||||
this->marker->propPtr->unk8_3 = FALSE;
|
||||
this->marker->collidable = FALSE;
|
||||
this->initialized = TRUE;
|
||||
if(this->unkF4_8 == 0x12){
|
||||
other = func_80304C38(0x349, this);
|
||||
if(other == NULL){
|
||||
this->velocity[0] = this->position[0];
|
||||
this->velocity[1] = this->position[1];
|
||||
this->velocity[2] = this->position[2];
|
||||
this->unk28 = 500.0f;
|
||||
}
|
||||
else{ //L802D9F08
|
||||
nodeprop_getPosition(other, this->velocity);
|
||||
this->unk28 = 2*nodeprop_getRadius(other);
|
||||
}
|
||||
}
|
||||
}//L802D9F34
|
||||
func_8024E55C(0, sp50);//get face buttons press counters
|
||||
switch(this->state){
|
||||
case 1://L802D9F70
|
||||
this->yaw_moving = func_80329784(this);
|
||||
func_80328FB0(this, 4.0f);
|
||||
if(func_8028F20C() && func_8028F0D4() && !func_8028EC04()){
|
||||
if( this->unkF4_8 == 0x12
|
||||
&& !ability_isUnlocked(D_80367DC4[this->unkF4_8-9].unk5)
|
||||
&& (func_8028ECAC() == 0 || func_8028ECAC() == BSGROUP_8_TROT)
|
||||
){
|
||||
player_getPosition(sp34);
|
||||
if(ml_vec3f_distance(sp34, this->velocity) < this->unk28){
|
||||
func_802D9CBC(this);
|
||||
}
|
||||
}
|
||||
else{//L802DA054
|
||||
if( !func_8028ECAC()
|
||||
&& func_80329530(this, 0xFA)
|
||||
&& func_8028EFC8()
|
||||
&& sp50[BUTTON_Z] == 1
|
||||
){
|
||||
func_802D9CBC(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2://L802DA0A0
|
||||
this->marker->propPtr->unk8_3 = TRUE;
|
||||
this->yaw_moving = func_80329784(this);
|
||||
func_80328FB0(this, 4.0f);
|
||||
if( 0.0 < animctrl_getAnimTimer(this->animctrl)
|
||||
&& animctrl_getAnimTimer(this->animctrl) < 0.16
|
||||
){
|
||||
func_8030E2C4(this->unk44_31);
|
||||
}//L802DA128
|
||||
if(actor_animationIsAt(this, 0.9999f)){
|
||||
func_802D9C1C(this);
|
||||
func_8030DA44(this->unk44_31);
|
||||
this->unk44_31 = 0;
|
||||
}
|
||||
else if(actor_animationIsAt(this, 0.14f)){//L802DA154
|
||||
FUNC_8030E8B4(SFX_C6_SHAKING_MOUTH, 1.2f, 24000, this->position, 1250, 2500);
|
||||
}
|
||||
else if(actor_animationIsAt(this, 0.4f)){//L802DA188
|
||||
FUNC_8030E8B4(SFX_2C_PULLING_NOISE, 1.2f, 24000, this->position, 1250, 2500);
|
||||
}
|
||||
else if(actor_animationIsAt(this, 0.75f)){//L802DA1BC
|
||||
FUNC_8030E8B4(SFX_C5_TWINKLY_POP, 1.0f, 32000, this->position, 1250, 2500);
|
||||
}
|
||||
else if(actor_animationIsAt(this, 0.35f)){//L802DA1EC
|
||||
func_802D997C(this);
|
||||
}
|
||||
break;
|
||||
case 3://L802DA210
|
||||
this->yaw_moving = func_80329784(this);
|
||||
func_80328FB0(this, 4.0f);
|
||||
if( ( actor_animationIsAt(this, 0.37f)
|
||||
|| actor_animationIsAt(this, 0.66f)
|
||||
|| actor_animationIsAt(this, 0.85f)
|
||||
)
|
||||
&& randf() < 0.2
|
||||
){
|
||||
animctrl_setDirection(this->animctrl, 1 ^ animctrl_isPlayedForwards(this->animctrl));
|
||||
}
|
||||
else if(
|
||||
actor_animationIsAt(this, 0.25f)
|
||||
|| actor_animationIsAt(this, 0.28f)
|
||||
|| actor_animationIsAt(this, 0.31f)
|
||||
){//L802DA2B4
|
||||
func_8030E878(SFX_6F_BANJO_HEADSCRATCH, randf2(1.4f, 1.55f), 16000, this->position, 1250.0f, 2500.0f);
|
||||
}
|
||||
else if(
|
||||
actor_animationIsAt(this, 0.45f)
|
||||
|| actor_animationIsAt(this, 0.48f)
|
||||
|| actor_animationIsAt(this, 0.51f)
|
||||
|| actor_animationIsAt(this, 0.7f)
|
||||
|| actor_animationIsAt(this, 0.73f)
|
||||
|| actor_animationIsAt(this, 0.76f)
|
||||
){//L802DA33C
|
||||
func_8030E878(SFX_6F_BANJO_HEADSCRATCH, randf2(1.35f, 1.5f), 6000, this->position, 1250.0f, 2500.0f);
|
||||
}
|
||||
break;
|
||||
case 4://L802DA400
|
||||
if( 0.35 < animctrl_getAnimTimer(this->animctrl)
|
||||
&& animctrl_getAnimTimer(this->animctrl) < 0.9
|
||||
){
|
||||
func_8030E2C4(this->unk44_31);
|
||||
}
|
||||
else if(actor_animationIsAt(this, 0.9999f)){//L802DA45C
|
||||
func_802D9600(this);
|
||||
func_8030DA44(this->unk44_31);
|
||||
this->unk44_31 = 0;
|
||||
}
|
||||
break;
|
||||
}//L802DA488
|
||||
}
|
||||
|
||||
int func_802DA498(void){
|
||||
return ability_isUnlocked(ABILITY_F_DIVE)
|
||||
&& ability_isUnlocked(ABILITY_4_BEAR_PUNCH)
|
||||
&& ability_isUnlocked(ABILITY_C_ROLL)
|
||||
&& ability_isUnlocked(ABILITY_B_RATATAT_RAP)
|
||||
&& ability_isUnlocked(ABILITY_0_BARGE)
|
||||
&& ability_isUnlocked(ABILITY_A_HOLD_A_JUMP_HIGHER)
|
||||
&& ability_isUnlocked(ABILITY_7_FLAP)
|
||||
&& ability_isUnlocked(ABILITY_8_FLIP)
|
||||
&& ability_isUnlocked(ABILITY_5_CLIMB)
|
||||
;
|
||||
}
|
||||
113
src/core2/ch/molehill.c
Normal file
113
src/core2/ch/molehill.c
Normal file
@@ -0,0 +1,113 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
typedef struct{
|
||||
u8 unk0;
|
||||
u8 pad1[3];
|
||||
f32 unk4[3];
|
||||
f32 unk10[3];
|
||||
f32 unk1C[3];
|
||||
}ActorLocal_MoleHill;
|
||||
|
||||
Actor *func_802DA560(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
||||
void func_802DA740(Actor *this);
|
||||
|
||||
/*.data */
|
||||
ActorAnimationInfo D_80367E00[] = {
|
||||
{0x000, 0.0f},
|
||||
{0x13D, 2000000000.0f},
|
||||
{0x13D, 4.5f},
|
||||
{0x13C, 1.7f}
|
||||
};
|
||||
|
||||
ActorInfo D_80367E20= {
|
||||
0xB8, ACTOR_12C_MOLEHILL, ASSET_388_MODEL_MOLEHILL,
|
||||
0, D_80367E00,
|
||||
func_802DA740, func_80326224, func_802DA560,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
struct31s D_80367E44 = {
|
||||
{0.05f, 0.1f},
|
||||
{0.0f, 0.0f},
|
||||
{0.0f, 0.01f},
|
||||
{4.0f, 4.0f},
|
||||
0.0f,
|
||||
0.3f
|
||||
};
|
||||
|
||||
/* .code */
|
||||
Actor *func_802DA560(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
Actor *actor = marker_getActor(marker);
|
||||
ActorLocal_MoleHill * local = (ActorLocal_MoleHill *) &actor->local;
|
||||
if(actor->unk16C_4){
|
||||
actor = func_80325888(marker, gfx, mtx, vtx);
|
||||
func_8034A174(actor->marker->unk44, 5, actor->velocity);
|
||||
func_8034A174(actor->marker->unk44, 6, actor->unk1C);
|
||||
func_8034A174(actor->marker->unk44, 7, local->unk4);
|
||||
func_8034A174(actor->marker->unk44, 8, local->unk10);
|
||||
func_8034A174(actor->marker->unk44, 9, local->unk1C);
|
||||
local->unk0 = 1;
|
||||
}
|
||||
return actor;
|
||||
}
|
||||
|
||||
void func_802DA634(ParticleEmitter *pCtrl, f32 arg1[3], s32 cnt){
|
||||
particleEmitter_setParticleAccelerationRange(pCtrl, 0.0f, -600.0f, 0.0f, 0.0f, -600.0f, 0.0f);
|
||||
particleEmitter_setModel(pCtrl, 0x344);
|
||||
particleEmitter_setPosition(pCtrl, arg1);
|
||||
func_802EFE24(pCtrl, -600.0f, -600.0f, -600.0f, 600.0f, 600.0f, 600.0f);
|
||||
particleEmitter_setParticleVelocityRange(pCtrl, -150.0f, 150.0f, -150.0f, 150.0f, 360.0f, 150.0f);
|
||||
func_802EFB98(pCtrl, &D_80367E44);
|
||||
func_802EF9F8(pCtrl, 0.01f);
|
||||
func_802EFA18(pCtrl, 3);
|
||||
particleEmitter_emitN(pCtrl, cnt);
|
||||
}
|
||||
|
||||
void func_802DA740(Actor *this){
|
||||
ActorLocal_MoleHill * local = (ActorLocal_MoleHill *) &this->local;
|
||||
|
||||
this->marker->propPtr->unk8_3 = TRUE;
|
||||
this->marker->collidable = FALSE;
|
||||
if(!this->unk16C_4){
|
||||
local->unk0 = 0;
|
||||
this->unk16C_4 = 1;
|
||||
}
|
||||
switch(this->state){
|
||||
case 1:
|
||||
break;
|
||||
case 2: //L802DA7C4
|
||||
if(actor_animationIsAt(this, 0.9999f)){
|
||||
func_80328B8C(this, 1, 0.0001f, 1);
|
||||
}
|
||||
else{
|
||||
if(local->unk0 && actor_animationIsAt(this, 0.05f)){
|
||||
func_802DA634(partEmitList_pushNew(6), this->velocity, 6);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3: //L802DA838
|
||||
if(actor_animationIsAt(this, 0.9999f)){
|
||||
func_80328B8C(this, 1, 0.0001f, 1);
|
||||
}
|
||||
else if(local->unk0){
|
||||
if(actor_animationIsAt(this, 0.3f)){
|
||||
func_802DA634(partEmitList_pushNew(6), this->velocity, 6);
|
||||
}
|
||||
else if(actor_animationIsAt(this, 0.4f)){
|
||||
func_802DA634(partEmitList_pushNew(4), this->unk1C, 4);
|
||||
}
|
||||
else if(actor_animationIsAt(this, 0.45f)){
|
||||
func_802DA634(partEmitList_pushNew(4), local->unk4, 4);
|
||||
}
|
||||
else if(actor_animationIsAt(this, 0.5f)){
|
||||
func_802DA634(partEmitList_pushNew(4), local->unk10, 4);
|
||||
}
|
||||
else if(actor_animationIsAt(this, 0.55f)){
|
||||
func_802DA634(partEmitList_pushNew(4), local->unk1C, 4);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}//L802DA984
|
||||
}
|
||||
17
src/core2/ch/musicnote.c
Normal file
17
src/core2/ch/musicnote.c
Normal file
@@ -0,0 +1,17 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void func_802C9C30(Actor* this);
|
||||
|
||||
/* .data */
|
||||
ActorInfo D_80366C50 = {
|
||||
MARKER_5F_MUSIC_NOTE, ACTOR_51_MUSIC_NOTE, ASSET_6D6_MODEL_MUSIC_NOTE, 0, NULL,
|
||||
func_802C9C30, func_80326224, func_80325934,
|
||||
0, 0, 0.6f, 0
|
||||
};
|
||||
|
||||
/* .code */
|
||||
void func_802C9C30(Actor* this){
|
||||
this->scale = 0.42857143f;
|
||||
}
|
||||
124
src/core2/ch/soundsource.c
Normal file
124
src/core2/ch/soundsource.c
Normal file
@@ -0,0 +1,124 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void func_802D07C8(Actor *this);
|
||||
|
||||
typedef struct{
|
||||
s32 unk0; //enum sfx_e
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
s32 unk8;
|
||||
f32 unkC;
|
||||
f32 unk10;
|
||||
}struct49570s;
|
||||
|
||||
typedef struct{
|
||||
u8 unk0;
|
||||
}ActorLocal_Core2_49570;
|
||||
|
||||
/* .data */
|
||||
struct49570s D_80367340[] = {
|
||||
{0x03EC, 400, 3200, -1, -1.0f, -1.0f},
|
||||
{SFX_128_FIRE_CRACKING, 400, 2600, -1, -1.0f, -1.0f},
|
||||
{SFX_12B_BOILING_AND_BUBBLING, 100, 1200, 14000, -1.0f, 2.5f},
|
||||
{-1, 0, 0, 0, 0.0f, 0.0f},
|
||||
};
|
||||
|
||||
ActorInfo D_80367390 = {0x1A8, ACTOR_28B_SOUND_SOURCE, 0,
|
||||
0, NULL,
|
||||
func_802D07C8, NULL, func_80325340,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .code */
|
||||
void func_802D0500(Actor *this){
|
||||
ActorLocal_Core2_49570 *local = (ActorLocal_Core2_49570 *)this->local;
|
||||
if(D_80367340[(s32)this->yaw].unk8 != -1){
|
||||
if(this->unk1C[0] == this->unk1C[1])
|
||||
sfxsource_setSampleRate(local->unk0, D_80367340[(s32)this->yaw].unk8);
|
||||
else{
|
||||
sfxsource_setSampleRate(local->unk0, (s32)((D_80367340[(s32)this->yaw].unk8/this->unk1C[1])*this->unk1C[0]));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_802D05A0(Actor *this, s32 next_state){
|
||||
ActorLocal_Core2_49570 *local = (ActorLocal_Core2_49570 *)this->local;
|
||||
if(this->state == 2 && local->unk0){
|
||||
func_8030DA44(local->unk0);
|
||||
local->unk0 = 0;
|
||||
}
|
||||
if(next_state == 2){
|
||||
this->unk1C[0] = 0.0f;
|
||||
this->unk1C[1] = 0.0f;
|
||||
if(-1.0f != D_80367340[(s32)this->yaw].unk10){
|
||||
this->unk1C[1] = D_80367340[(s32)this->yaw].unk10;
|
||||
}
|
||||
local->unk0 = func_8030D90C();
|
||||
sfxsource_setSfxId(local->unk0, D_80367340[(s32)this->yaw].unk0);
|
||||
func_8030DD14(local->unk0, 3);
|
||||
func_8030DFF0(local->unk0, 1);
|
||||
func_8030DF68(local->unk0, this->position);
|
||||
func_8030DEB4(local->unk0, D_80367340[(s32)this->yaw].unk4*this->scale, D_80367340[(s32)this->yaw].unk6*this->scale);
|
||||
func_8030DFB4(local->unk0, 1);
|
||||
func_802D0500(this);
|
||||
if(-1.0f != D_80367340[(s32)this->yaw].unkC)
|
||||
func_8030DBB4(local->unk0, D_80367340[(s32)this->yaw].unkC);
|
||||
func_8030E2C4(local->unk0);
|
||||
}//L802D0780
|
||||
this->state = next_state;
|
||||
}
|
||||
|
||||
void func_802D07A8(Actor *this){
|
||||
func_802D05A0(this, 0);
|
||||
}
|
||||
|
||||
void func_802D07C8(Actor *this){
|
||||
f32 sp2C[3];
|
||||
f32 sp28;
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = 1;
|
||||
this->marker->unk30 = func_802D07A8;
|
||||
func_802D05A0(this, 1);
|
||||
}
|
||||
player_getPosition(sp2C);
|
||||
sp28 = ml_vec3f_distance(sp2C, this->position);
|
||||
if( this->state == 1){
|
||||
if(sp28 < D_80367340[(s32)this->yaw].unk6*this->scale){
|
||||
func_802D05A0(this, 2);
|
||||
}
|
||||
}//L802D08A0
|
||||
if(this->state == 2){
|
||||
if((D_80367340[(s32)this->yaw].unk6 + 100)*this->scale < sp28){
|
||||
func_802D05A0(this, 1);
|
||||
}
|
||||
if(this->unk1C[0] != this->unk1C[1]){
|
||||
this->unk1C[0] += time_getDelta();
|
||||
if(this->unk1C[1] < this->unk1C[0]){
|
||||
this->unk1C[0] = this->unk1C[1];
|
||||
}
|
||||
func_802D0500(this);
|
||||
}
|
||||
}//L802D095C
|
||||
}
|
||||
|
||||
void func_802D096C(s32 arg0, s32 arg1, s32 arg2, s32 arg3){
|
||||
f32 sp1C[3];
|
||||
|
||||
sp1C[0] = reinterpret_cast(f32, arg0);
|
||||
sp1C[1] = reinterpret_cast(f32, arg1);
|
||||
sp1C[2] = reinterpret_cast(f32, arg2);
|
||||
func_8032813C(0x28B, sp1C, arg3);
|
||||
|
||||
}
|
||||
|
||||
void func_802D09B8(Actor *this, s32 arg1){
|
||||
func_802C3F04(func_802D096C,
|
||||
reinterpret_cast(s32, this->position[0]),
|
||||
reinterpret_cast(s32, this->position[1]),
|
||||
reinterpret_cast(s32, this->position[2]),
|
||||
arg1
|
||||
);
|
||||
}
|
||||
123
src/core2/ch/trainers.c
Normal file
123
src/core2/ch/trainers.c
Normal file
@@ -0,0 +1,123 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
Actor *chtrainers_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
||||
void chtrainers_update(Actor *this);
|
||||
|
||||
/* .data */
|
||||
extern ActorAnimationInfo D_80366EA0[];
|
||||
extern ActorInfo D_80366EC0 = {
|
||||
MARKER_38_TURBO_TALON_TRAINERS, ACTOR_2C_TURBO_TALON_TRAINERS, ASSET_367_MODEL_TURBO_TALON_TRAINERS,
|
||||
0x0, D_80366EA0,
|
||||
chtrainers_update, func_80326224, chtrainers_draw,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .rodata */
|
||||
extern f64 D_80376470;
|
||||
extern f64 D_80376478;
|
||||
|
||||
/* .code */
|
||||
Actor *chtrainers_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
Actor *this = marker_getActor(marker);
|
||||
if( !this->unk10_12 )
|
||||
return this;
|
||||
return func_80325888(marker, gfx, mtx, vtx);
|
||||
}
|
||||
|
||||
|
||||
void _chtrainers_802CA378(Actor *this, bool arg1){
|
||||
f32 sp24[3];
|
||||
if(ability_isUnlocked(ABILITY_11_TURBO_TALON))
|
||||
actor_setOpacity(this, 0xff);
|
||||
else
|
||||
actor_setOpacity(this, 0x87);
|
||||
|
||||
if( actor_animationIsAt(this, 0.38f)
|
||||
|| actor_animationIsAt(this, 0.88f)
|
||||
){
|
||||
if(arg1)
|
||||
FUNC_8030E624(SFX_8_BANJO_LANDING_04, 1.6f, 7000);
|
||||
else
|
||||
FUNC_8030E8B4(SFX_8_BANJO_LANDING_04, 1.6f, 7000, this->position, 600, 1500);
|
||||
}
|
||||
|
||||
func_802589E4(sp24, this->velocity[1], 40.0f);
|
||||
sp24[1] = 0.0f;
|
||||
ml_vec3f_add(this->position, this->unk1C, sp24);
|
||||
this->velocity[1] += D_80376470;
|
||||
this->yaw = mlNormalizeAngle(this->velocity[1] + D_80376478);
|
||||
}
|
||||
|
||||
void chtrainers_update(Actor *this){
|
||||
s32 sp2C = levelSpecificFlags_get(0x1a);
|
||||
if(sp2C && this->unkF4_8 != 1){
|
||||
return;
|
||||
}
|
||||
|
||||
if(!this->initialized){
|
||||
this->initialized = TRUE;
|
||||
ml_vec3f_copy(this->unk1C, this->position);
|
||||
this->velocity[0] = this->yaw;
|
||||
this->velocity[1] = 0.0f;
|
||||
this->unk10_12 = !func_803203FC(0x1f) && !func_803203FC(0x1);
|
||||
func_80328A84(this, 0);
|
||||
}
|
||||
|
||||
if(!func_803203FC(0xF) && ability_isUnlocked(ABILITY_11_TURBO_TALON)){
|
||||
func_803204E4(0xF, TRUE);
|
||||
}
|
||||
|
||||
switch(this->state){
|
||||
case 0://L802CA5A8
|
||||
if(func_803296D8(this, 2000) || sp2C){
|
||||
if( func_80329530(this, 0xfa)
|
||||
&& !func_803203FC(0xf)
|
||||
&& player_getTransformation() == TRANSFORM_1_BANJO
|
||||
){
|
||||
if(func_80311480(0xda4, 0, NULL, NULL, NULL, NULL)){
|
||||
func_803204E4(0xf, TRUE);
|
||||
}
|
||||
}//L802CA620
|
||||
_chtrainers_802CA378(this, sp2C);
|
||||
}
|
||||
break;
|
||||
|
||||
case 1://L802CA630
|
||||
this->velocity[2] -= time_getDelta();
|
||||
if(this->velocity[2] <= 0.0f){
|
||||
func_80328A84(this, 2);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2://L802CA670
|
||||
if(func_8028E80C(3) == 0.0f){
|
||||
this->velocity[2] = 1.0f;
|
||||
func_80328A84(this, 3);
|
||||
}
|
||||
break;
|
||||
|
||||
case 3://L802CA6AC
|
||||
this->velocity[2] -= time_getDelta();
|
||||
if(this->velocity[2] <= 0.0f){
|
||||
this->unk10_12 = 1;
|
||||
func_80328A84(this, 0);
|
||||
}
|
||||
break;
|
||||
}//L802CA6F8
|
||||
}
|
||||
|
||||
bool chtrainers_802CA708(Actor *this){
|
||||
return this->unk10_12 && ability_isUnlocked(ABILITY_11_TURBO_TALON);
|
||||
}
|
||||
|
||||
f32 chtrainers_802CA748(Actor *this){
|
||||
return this->velocity[0];
|
||||
}
|
||||
|
||||
void chtrainers_802CA750(Actor *this){
|
||||
func_80328A84(this, 1);
|
||||
this->velocity[2] = 1.0f;
|
||||
this->unk10_12 = 0;
|
||||
}
|
||||
105
src/core2/ch/wadingboots.c
Normal file
105
src/core2/ch/wadingboots.c
Normal file
@@ -0,0 +1,105 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
Actor *chwadingboots_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
||||
void chwadingboots_update(Actor *this);
|
||||
|
||||
/* .data */
|
||||
extern ActorAnimationInfo D_80367A00[];
|
||||
extern ActorInfo D_80367A20 = {
|
||||
MARKER_11_WADING_BOOTS, ACTOR_65_WADING_BOOTS, ASSET_366_MODEL_WADING_BOOTS,
|
||||
0x0, D_80367A00,
|
||||
chwadingboots_update, func_80326224, chwadingboots_draw,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .code */
|
||||
Actor *chwadingboots_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
Actor *this = marker_getActor(marker);
|
||||
|
||||
if(!this->unk10_12) return this;
|
||||
|
||||
return func_80325888(marker, gfx, mtx, vtx);
|
||||
}
|
||||
|
||||
void chwadingboots_update(Actor *this){
|
||||
s32 sp2C = levelSpecificFlags_get(0x1a);
|
||||
if(sp2C && this->unkF4_8 != 1){
|
||||
return;
|
||||
}
|
||||
|
||||
if(!this->initialized){
|
||||
this->initialized = TRUE;
|
||||
this->velocity[0] = this->yaw;
|
||||
this->unk10_12 = !func_803203FC(0x1f) && !func_803203FC(0x1);
|
||||
func_80328A84(this, 0);
|
||||
}
|
||||
|
||||
if(!func_803203FC(0x10) && ability_isUnlocked(ABILITY_E_WADING_BOOTS)){
|
||||
func_803204E4(0x10, TRUE);
|
||||
}
|
||||
|
||||
switch(this->state){
|
||||
case 0://L802D6C60
|
||||
if(ability_isUnlocked(ABILITY_E_WADING_BOOTS))
|
||||
actor_setOpacity(this, 0xff);
|
||||
else
|
||||
actor_setOpacity(this, 0x87);
|
||||
|
||||
if(actor_animationIsAt(this, 0.25f)){
|
||||
if(sp2C){
|
||||
FUNC_8030E624(SFX_3F2_UNKNOWN, 1.4f, 23000);
|
||||
}
|
||||
else{
|
||||
FUNC_8030E8B4(SFX_3F2_UNKNOWN, 1.4f, 23000, this->position, 600, 1500);
|
||||
}
|
||||
}
|
||||
|
||||
if(func_803203FC(0x10)) break;
|
||||
if(!func_80329530(this, 0xfa)) break;
|
||||
if(player_getTransformation() != TRANSFORM_1_BANJO) break;
|
||||
|
||||
if(func_80311480(0xda5, 0, NULL, NULL, NULL, NULL)){
|
||||
func_803204E4(0x10, TRUE);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 1://L802D6D34
|
||||
this->velocity[1] -= time_getDelta();
|
||||
if(this->velocity[1] <= 0.0f){
|
||||
func_80328A84(this, 2);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2://L802D6D74
|
||||
if(func_8028E80C(2) == 0.0f){
|
||||
this->velocity[1] = 1.5f;
|
||||
func_80328A84(this, 3);
|
||||
}
|
||||
break;
|
||||
|
||||
case 3://L802D6DB0
|
||||
this->velocity[1] -= time_getDelta();
|
||||
if(this->velocity[1] <= 0.0f){
|
||||
this->unk10_12 = 1;
|
||||
func_80328A84(this, 0);
|
||||
}
|
||||
break;
|
||||
}//L802D6DFC
|
||||
}
|
||||
|
||||
bool chwadingboots_802D6E0C(Actor *this){
|
||||
return this->unk10_12 && ability_isUnlocked(ABILITY_E_WADING_BOOTS);
|
||||
}
|
||||
|
||||
f32 chwadingboots_802D6E4C(Actor *this){
|
||||
return this->velocity[0];
|
||||
}
|
||||
|
||||
void chwadingboots_802D6E54(Actor *this){
|
||||
func_80328A84(this, 1);
|
||||
this->velocity[1] = 1.5f;
|
||||
this->unk10_12 = 0;
|
||||
}
|
||||
129
src/core2/ch/whipcrack.c
Normal file
129
src/core2/ch/whipcrack.c
Normal file
@@ -0,0 +1,129 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void chwhipcrack_update(Actor *this);
|
||||
|
||||
/* .data */
|
||||
ActorInfo D_80373100 = {
|
||||
0x1c5, ACTOR_30F_WHIPCRACK, ASSET_4FD_MODEL_WHIPCRACK,
|
||||
0, NULL,
|
||||
chwhipcrack_update, NULL, func_80325888,
|
||||
0, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
s32 D_80373124[3] = {0xA0, 0x6B, 0x23};
|
||||
|
||||
/* .code */
|
||||
void __chwhipcrack_spawnPieces(Actor *this, enum asset_e model_id, s32 cnt){
|
||||
ParticleEmitter *pCtrl = partEmitList_pushNew(cnt);
|
||||
|
||||
particleEmitter_setParticleAccelerationRange(pCtrl,
|
||||
0.0f, -1000.0f, 0.0f,
|
||||
0.0f, -1000.0f, 0.0f
|
||||
);
|
||||
func_802EF9F8(pCtrl, 0.7f);
|
||||
func_802EFA18(pCtrl, 3);
|
||||
func_802EFA20(pCtrl, 0.5f, 1.0f);
|
||||
func_802EF9EC(pCtrl, 0x1f, 10000);
|
||||
particleEmitter_setModel(pCtrl, model_id);
|
||||
particleEmitter_setParticleSpawnPositionRange(pCtrl,
|
||||
-120.0f, 50.0f, -120.0f,
|
||||
120.0f, 300.0f, 120.0f
|
||||
);
|
||||
particleEmitter_setPosition(pCtrl, this->position);
|
||||
func_802EFB70(pCtrl, 0.5f, 1.0f);
|
||||
func_802EFE24(pCtrl,
|
||||
-500.0f, -500.0f, -500.0f,
|
||||
500.0f, 500.0f, 500.0f
|
||||
);
|
||||
particleEmitter_setSpawnIntervalRange(pCtrl, 0.0f, 0.01f);
|
||||
func_802EFEC0(pCtrl, 4.0f, 4.0f);
|
||||
particleEmitter_setParticleVelocityRange(pCtrl,
|
||||
-300.0f, 250.0f, -300.0f,
|
||||
300.0f, 400.0f, 300.0f
|
||||
);
|
||||
particleEmitter_emitN(pCtrl, cnt);
|
||||
}
|
||||
|
||||
void __chwhipcrack_spawnSmoke(Actor *this, s32 cnt){
|
||||
ParticleEmitter *pCtrl = partEmitList_pushNew(cnt);
|
||||
particleEmitter_setSprite(pCtrl, ASSET_70E_SPRITE_SMOKE_2);
|
||||
func_802EFA5C(pCtrl, 0.05f, 0.1f);
|
||||
particleEmitter_setStartingFrameRange(pCtrl, 0, 7);
|
||||
particleEmitter_setPosition(pCtrl, this->position);
|
||||
func_802EFB70(pCtrl, 3.0f, 3.5f);
|
||||
func_802EFB84(pCtrl, 4.5f, 5.5f);
|
||||
particleEmitter_setParticleSpawnPositionRange(pCtrl,
|
||||
-50.0f, 50.0f, -50.0f,
|
||||
50.0f, 200.0f, 50.0f
|
||||
);
|
||||
particleEmitter_setParticleVelocityRange(pCtrl,
|
||||
-30.0f, 150.0f, -30.0f,
|
||||
30.0f, 300.0f, 30.0f
|
||||
);
|
||||
func_802EFFA8(pCtrl, D_80373124);
|
||||
func_802EFEC0(pCtrl, 3.0f, 4.0f);
|
||||
particleEmitter_emitN(pCtrl, cnt);
|
||||
}
|
||||
|
||||
void __chwhipcrack_setState(Actor *this, s32 next_state){
|
||||
if(next_state == 1)
|
||||
func_80335924(this->unk148, ASSET_22A_ANIM_WHIPCRACK_IDLE, 0.5f, 1.0f);
|
||||
|
||||
if(next_state == 2)
|
||||
func_80335924(this->unk148, ASSET_229_ANIM_WHIPCRACK_ATTACK, 0.5f, 1.0f);
|
||||
|
||||
if(next_state == 3){
|
||||
__chwhipcrack_spawnPieces(this, ASSET_4FE_MODEL_WHIPCRACK_PART_1, 4);
|
||||
__chwhipcrack_spawnPieces(this, ASSET_4FF_MODEL_WHIPCRACK_PART_2, 4);
|
||||
__chwhipcrack_spawnPieces(this, ASSET_500_MODEL_WHIPCRACK_PART_3, 4);
|
||||
__chwhipcrack_spawnSmoke(this, 6);
|
||||
FUNC_8030E8B4(SFX_2F_ORANGE_SPLAT, 0.8f, 32200, this->position, 500, 2500);
|
||||
marker_despawn(this->marker);
|
||||
}
|
||||
|
||||
this->state = next_state;
|
||||
}
|
||||
|
||||
void __chwhipcrack_die(ActorMarker *this_marker, ActorMarker *other_marker){
|
||||
Actor *this = marker_getActor(this_marker);
|
||||
__chwhipcrack_setState(this, 3);
|
||||
}
|
||||
|
||||
void chwhipcrack_update(Actor *this){
|
||||
f32 plyr_pos[3];
|
||||
f32 plyr_dist;
|
||||
f32 sp44;
|
||||
f32 sp40;
|
||||
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = TRUE;
|
||||
this->roll = this->yaw;
|
||||
this->yaw = 0.0f;
|
||||
marker_setCollisionScripts(this->marker, NULL, NULL, __chwhipcrack_die);
|
||||
__chwhipcrack_setState(this, 1);
|
||||
}
|
||||
player_getPosition(plyr_pos);
|
||||
plyr_dist = ml_vec3f_distance(plyr_pos, this->position);
|
||||
if(this->state == 1){
|
||||
if(plyr_dist < 700.0f){
|
||||
__chwhipcrack_setState(this, 2);
|
||||
}
|
||||
}
|
||||
|
||||
if(this->state == 2){
|
||||
func_8033568C(this->unk148, &sp44, &sp40);
|
||||
if((sp44 < 0.13) && (0.13 <= sp40)){
|
||||
func_8030E878(SFX_69_WHIPCRACK_CREAKING, randf2(1.05f, 1.1f), 15000, this->position, 500.0f, 1000.0f);
|
||||
}
|
||||
|
||||
if((sp44 < 0.8) && (0.8 <= sp40)){
|
||||
func_8030E878(SFX_2_CLAW_SWIPE, randf2(0.9f, 1.1f), randi2(28000, 32000), this->position, 500.0f, 1000.0f);
|
||||
}
|
||||
|
||||
if(800.0f < plyr_dist){
|
||||
__chwhipcrack_setState(this, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
36
src/core2/code_10CD0.c
Normal file
36
src/core2/code_10CD0.c
Normal file
@@ -0,0 +1,36 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037C530;
|
||||
|
||||
/* .code */
|
||||
void func_80297C60(s32 arg0){
|
||||
D_8037C530 = arg0;
|
||||
}
|
||||
|
||||
s32 func_80297C6C(void){
|
||||
return D_8037C530;
|
||||
}
|
||||
|
||||
void func_80297C78(void){
|
||||
D_8037C530 = 0;
|
||||
func_80297C60(1);
|
||||
func_802917C4(4);
|
||||
}
|
||||
|
||||
void func_80297CA8(void){
|
||||
func_80297CCC(0.6f);
|
||||
}
|
||||
|
||||
void func_80297CCC(f32 arg0){
|
||||
func_802917E4(4, arg0);
|
||||
func_80297C60(3);
|
||||
}
|
||||
|
||||
void func_80297CF8(void){
|
||||
if(func_802916CC(4)){
|
||||
func_80297C60(1);
|
||||
}
|
||||
}
|
||||
132
src/core2/code_10E0.c
Normal file
132
src/core2/code_10E0.c
Normal file
@@ -0,0 +1,132 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
typedef struct {
|
||||
s32 unk0;
|
||||
s16 unk4;
|
||||
u8 unk6;
|
||||
u8 pad7[1];
|
||||
}struct10E0s;
|
||||
|
||||
/* .bss */
|
||||
struct10E0s D_80379E20[340];
|
||||
|
||||
/* .code */
|
||||
void func_80288070(void){
|
||||
int i;
|
||||
|
||||
for(i = 0; i<340; i++){
|
||||
D_80379E20[i].unk6 = 0;
|
||||
D_80379E20[i].unk0 = 0;
|
||||
D_80379E20[i].unk4 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802880C0(void){
|
||||
int i;
|
||||
|
||||
for(i = 0; i<340; i++){
|
||||
if(D_80379E20[i].unk6){
|
||||
if(D_80379E20[i].unk0){
|
||||
func_8033A6F0(D_80379E20[i].unk0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_80288120(void){
|
||||
int i;
|
||||
|
||||
for(i = 0; i<340; i++){
|
||||
if(D_80379E20[i].unk6 == 1 && D_80379E20[i].unk0){
|
||||
if(D_80379E20[i].unk4 < 0x3b){
|
||||
func_8033A6F0(D_80379E20[i].unk0);
|
||||
D_80379E20[i].unk0 = 0;
|
||||
if(func_80254BC4(1)){
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_802881AC(void){
|
||||
int i;
|
||||
|
||||
for(i = 0; i<340; i++){
|
||||
if(D_80379E20[i].unk6){
|
||||
func_803203FC(0);
|
||||
D_80379E20[i].unk4 = 0;
|
||||
func_8033A6F0(D_80379E20[i].unk0);
|
||||
D_80379E20[i].unk0 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_80288210(void){
|
||||
int i;
|
||||
|
||||
for(i = 0; i<340; i++){
|
||||
if(D_80379E20[i].unk6 == 1 && D_80379E20[i].unk0){
|
||||
if(--D_80379E20[i].unk4 <= 0){
|
||||
func_8033A6F0(D_80379E20[i].unk0);
|
||||
D_80379E20[i].unk0 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s16 func_80288298(void){
|
||||
int i;
|
||||
|
||||
for(i = 0; i<340; i++){
|
||||
if(!D_80379E20[i].unk6){
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
s16 func_80288330(void){
|
||||
int indx = func_80288298();
|
||||
D_80379E20[indx].unk6 = 1;
|
||||
D_80379E20[indx].unk4 = 0;
|
||||
D_80379E20[indx].unk0 = 0;
|
||||
return indx;
|
||||
}
|
||||
|
||||
int func_80288374(s16 arg0){
|
||||
return (D_80379E20[arg0].unk0) ? 1 : 0;
|
||||
}
|
||||
|
||||
void func_802883AC(s16 arg0){
|
||||
if(D_80379E20[arg0].unk0){
|
||||
func_8033A6F0(D_80379E20[arg0].unk0);
|
||||
}
|
||||
D_80379E20[arg0].unk6 = 0;
|
||||
D_80379E20[arg0].unk0 = 0;
|
||||
D_80379E20[arg0].unk4 = 0;
|
||||
|
||||
}
|
||||
|
||||
int func_80288400(s16 arg0, s32 *arg1){
|
||||
D_80379E20[arg0].unk4 = 0x3C;
|
||||
if(D_80379E20[arg0].unk0){
|
||||
*arg1 = D_80379E20[arg0].unk0;
|
||||
return FALSE;
|
||||
}else{
|
||||
D_80379E20[arg0].unk0 = func_8033A710();
|
||||
*arg1 = D_80379E20[arg0].unk0;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80288470(void){
|
||||
int i;
|
||||
for(i = 0; i < 340; i++){
|
||||
if(D_80379E20[i].unk6 == 1 && D_80379E20[i].unk0){
|
||||
D_80379E20[i].unk0 = func_8033A9E4(D_80379E20[i].unk0);
|
||||
}
|
||||
}
|
||||
}
|
||||
58
src/core2/code_11040.c
Normal file
58
src/core2/code_11040.c
Normal file
@@ -0,0 +1,58 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037C550;
|
||||
f32 D_8037C554;
|
||||
u8 D_8037C558;
|
||||
|
||||
/* .code */
|
||||
void func_80297FD0(s32 arg0){
|
||||
D_8037C558 = arg0;
|
||||
}
|
||||
|
||||
void func_80297FDC(void){
|
||||
f32 diff = D_8037C554 - D_8037C550;
|
||||
if(mlAbsF(diff) < 0.001){
|
||||
D_8037C550 = D_8037C554;
|
||||
}
|
||||
else{
|
||||
D_8037C550 += mlClamp_f(diff, -0.12f, 0.12f);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80298068(void){
|
||||
f32 f2 = yaw_getIdeal() - yaw_get();
|
||||
if(180.0f < f2){
|
||||
f2 -= 360.0f;
|
||||
}
|
||||
else if(f2 < -180.0f){
|
||||
f2 += 360.0f;
|
||||
}
|
||||
D_8037C554 = ml_map_f(f2, -40.0f, 40.0f, 1.0f, -1.0f);
|
||||
func_80297FDC();
|
||||
}
|
||||
|
||||
void func_80298114(void){}
|
||||
|
||||
void func_8029811C(void){
|
||||
D_8037C554 = D_8037C550 = 0.0f;
|
||||
D_8037C558 = 0;
|
||||
func_80297FD0(1);
|
||||
func_80297FD0(2);
|
||||
}
|
||||
|
||||
void func_80298168(void){
|
||||
if(D_8037C558 != 1 && D_8037C558 == 2){
|
||||
func_80298068();
|
||||
}
|
||||
}
|
||||
|
||||
void func_802981A4(void){
|
||||
if(D_8037C558 != 1 && D_8037C558 == 2){
|
||||
func_80298114();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
65
src/core2/code_11460.c
Normal file
65
src/core2/code_11460.c
Normal file
@@ -0,0 +1,65 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
f32 player_position[3];
|
||||
f32 D_8037C5B0[3];
|
||||
f32 D_8037C5C0[3];
|
||||
|
||||
/* .code */
|
||||
void func_802983F0(void){
|
||||
ml_vec3f_clear(D_8037C5C0);
|
||||
ml_vec3f_clear(player_position);
|
||||
ml_vec3f_clear(D_8037C5B0);
|
||||
}
|
||||
|
||||
void func_8029842C(void){
|
||||
ml_vec3f_copy(D_8037C5B0, player_position);
|
||||
ml_vec3f_clear(D_8037C5C0);
|
||||
}
|
||||
|
||||
void func_80298464(f32 arg0[3]){
|
||||
ml_vec3f_copy(player_position, arg0);
|
||||
ml_vec3f_copy(D_8037C5B0, arg0);
|
||||
}
|
||||
|
||||
void player_setPosition(f32 arg0[3]){
|
||||
ml_vec3f_copy(player_position, arg0);
|
||||
}
|
||||
|
||||
void player_setYPosition(f32 arg0){
|
||||
player_position[1] = arg0;
|
||||
}
|
||||
|
||||
void _player_getPosition(f32 arg0[3]){
|
||||
ml_vec3f_copy(arg0, player_position);
|
||||
}
|
||||
|
||||
f32 player_getYPosition(void){
|
||||
return player_position[1];
|
||||
}
|
||||
|
||||
void func_80298504(f32 arg0[3]){
|
||||
ml_vec3f_copy(arg0, D_8037C5B0);
|
||||
}
|
||||
|
||||
void func_80298528(f32 arg0){
|
||||
player_position[1] += arg0;
|
||||
}
|
||||
|
||||
void func_80298540(f32 arg0[3]){
|
||||
ml_vec3f_copy(arg0, D_8037C5C0);
|
||||
}
|
||||
|
||||
void func_80298564(f32 arg0[3]){
|
||||
ml_vec3f_copy(D_8037C5C0, arg0);
|
||||
}
|
||||
|
||||
void func_8029858C(void){
|
||||
player_position[0] += D_8037C5C0[0];
|
||||
player_position[1] += D_8037C5C0[1];
|
||||
player_position[2] += D_8037C5C0[2];
|
||||
ml_vec3f_clear(D_8037C5C0);
|
||||
|
||||
}
|
||||
87
src/core2/code_11660.c
Normal file
87
src/core2/code_11660.c
Normal file
@@ -0,0 +1,87 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
void *D_8037C5D0;
|
||||
|
||||
/* .code */
|
||||
s32 func_802985F0(void){
|
||||
switch(_player_getTransformation())
|
||||
{
|
||||
case TRANSFORM_2_TERMITE: //80298624
|
||||
return ASSET_34F_MODEL_BANJO_TERMITE;
|
||||
case TRANSFORM_3_PUMPKIN: //8029862C
|
||||
return ASSET_36F_MODEL_BANJO_PUMPKIN;
|
||||
case TRANSFORM_5_CROC: //80298634
|
||||
return ASSET_374_MODEL_BANJO_CROC;
|
||||
case TRANSFORM_4_WALRUS: //8029863C
|
||||
return ASSET_359_MODEL_BANJO_WALRUS;
|
||||
case TRANSFORM_6_BEE: //80298644
|
||||
return ASSET_362_MODEL_BANJO_BEE;
|
||||
case TRANSFORM_7_WISHWASHY: //8029864C
|
||||
return ASSET_356_MODEL_BANJO_WISHYWASHY;
|
||||
case TRANSFORM_1_BANJO: //80298654
|
||||
default:
|
||||
{
|
||||
switch (map_get())
|
||||
{
|
||||
case MAP_20_CS_END_NOT_100:
|
||||
case MAP_7B_CS_INTRO_GL_DINGPOT_1:
|
||||
case MAP_7C_CS_INTRO_BANJOS_HOUSE_1:
|
||||
case MAP_7D_CS_SPIRAL_MOUNTAIN_1:
|
||||
case MAP_7E_CS_SPIRAL_MOUNTAIN_2:
|
||||
case MAP_81_CS_INTRO_GL_DINGPOT_2:
|
||||
case MAP_82_CS_ENTERING_GL_MACHINE_ROOM:
|
||||
case MAP_83_CS_GAME_OVER_MACHINE_ROOM:
|
||||
case MAP_84_CS_UNUSED_MACHINE_ROOM:
|
||||
case MAP_85_CS_SPIRAL_MOUNTAIN_3:
|
||||
case MAP_86_CS_SPIRAL_MOUNTAIN_4:
|
||||
case MAP_87_CS_SPIRAL_MOUNTAIN_5:
|
||||
case MAP_88_CS_SPIRAL_MOUNTAIN_6:
|
||||
case MAP_89_CS_INTRO_BANJOS_HOUSE_2:
|
||||
case MAP_8A_CS_INTRO_BANJOS_HOUSE_3:
|
||||
return 0x34d;
|
||||
|
||||
case MAP_1_SM_SPIRAL_MOUNTAIN:
|
||||
case MAP_2_MM_MUMBOS_MOUNTAIN:
|
||||
case MAP_7_TTC_TREASURE_TROVE_COVE:
|
||||
case MAP_B_CC_CLANKERS_CAVERN:
|
||||
case MAP_D_BGS_BUBBLEGLOOP_SWAMP:
|
||||
case MAP_12_GV_GOBIS_VALLEY:
|
||||
case MAP_1B_MMM_MAD_MONSTER_MANSION:
|
||||
case MAP_27_FP_FREEZEEZY_PEAK:
|
||||
case MAP_31_RBB_RUSTY_BUCKET_BAY:
|
||||
case 0x32:
|
||||
case MAP_43_CCW_SPRING:
|
||||
case MAP_44_CCW_SUMMER:
|
||||
case MAP_45_CCW_AUTUMN:
|
||||
case MAP_46_CCW_WINTER:
|
||||
case 0x56:
|
||||
return 0x34d;
|
||||
|
||||
default:
|
||||
return 0x34e;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_802986D0(void){
|
||||
if(D_8037C5D0){
|
||||
assetcache_release(D_8037C5D0);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80298700(void){
|
||||
s32 sp1C = func_802985F0();
|
||||
if(func_8028ADB4()){
|
||||
D_8037C5D0 = 0;
|
||||
}
|
||||
else if(sp1C){
|
||||
D_8037C5D0 = assetcache_get(sp1C);
|
||||
}
|
||||
else{
|
||||
D_8037C5D0 = NULL;
|
||||
}
|
||||
}
|
||||
58
src/core2/code_117D0.c
Normal file
58
src/core2/code_117D0.c
Normal file
@@ -0,0 +1,58 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .data */
|
||||
struct50s D_80364450[] =
|
||||
{
|
||||
{0x01, 0x01, 510.0f, -1200.0f, 200.0f},
|
||||
{0x02, 0x01, 600.0f, -1500.0f, 300.0f},
|
||||
{0x03, 0x01, 510.0f, -1200.0f, 100.0f},
|
||||
{0x04, 0x01, 510.0f, -1200.0f, 200.0f},
|
||||
{0x05, 0x01, 510.0f, -1200.0f, 300.0f},
|
||||
{0x06, 0x01, 510.0f, -1200.0f, 400.0f},
|
||||
{0x07, 0x01, 510.0f, -1200.0f, 500.0f},
|
||||
{0x08, 0x01, 600.0f, -1500.0f, 100.0f},
|
||||
{0x09, 0x01, 600.0f, -1500.0f, 200.0f},
|
||||
{0x0A, 0x01, 600.0f, -1500.0f, 300.0f},
|
||||
{0x0B, 0x01, 600.0f, -1500.0f, 400.0f},
|
||||
{0x0C, 0x01, 600.0f, -1500.0f, 500.0f},
|
||||
{0x0D, 0x02, 300.0f, -1200.0f, 0.0f},
|
||||
{0x0F, 0x01, 300.0f, -1200.0f, 0.0f},
|
||||
{0x0E, 0x03, 300.0f, -1200.0f, 0.0f},
|
||||
{0x10, 0x03, 300.0f, -1200.0f, 0.0f},
|
||||
{00}
|
||||
};
|
||||
|
||||
/*.bss*/
|
||||
struct{
|
||||
struct50s *unk0;
|
||||
f32 unk4[3];
|
||||
}D_8037C5E0;
|
||||
|
||||
/*.code*/
|
||||
int func_80298760(s32 arg0){
|
||||
int i;
|
||||
for(i = 0; D_80364450[i].unk0; i++){
|
||||
if(arg0 == D_80364450[i].unk0){
|
||||
D_8037C5E0.unk0 = D_80364450 + i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s32 func_802987B4(void){
|
||||
return D_8037C5E0.unk0->unk1;
|
||||
}
|
||||
|
||||
f32 func_802987C4(void){
|
||||
return D_8037C5E0.unk0->unk4[0];
|
||||
}
|
||||
|
||||
f32 func_802987D4(void){
|
||||
return D_8037C5E0.unk0->unk4[2];
|
||||
}
|
||||
|
||||
f32 func_802987E4(void){
|
||||
return D_8037C5E0.unk0->unk4[1];
|
||||
}
|
||||
93
src/core2/code_11870.c
Normal file
93
src/core2/code_11870.c
Normal file
@@ -0,0 +1,93 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
struct50s D_8037C5F0[8];
|
||||
u8 D_8037C670;
|
||||
u8 D_8037C671;
|
||||
|
||||
/* .code */
|
||||
int func_80298800(f32 arg0[3]){
|
||||
if(!D_8037C5F0[D_8037C670 - 1].unk1)
|
||||
return 0;
|
||||
|
||||
ml_vec3f_copy(arg0, D_8037C5F0[D_8037C670 - 1].unk4);
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 func_80298850(void){
|
||||
if(!D_8037C670){
|
||||
return 0;
|
||||
}
|
||||
return D_8037C5F0[D_8037C670 - 1].unk0;
|
||||
}
|
||||
|
||||
void func_8029887C(void){
|
||||
D_8037C671 = 0;
|
||||
D_8037C670 = 0;
|
||||
}
|
||||
|
||||
void func_80298890(void){
|
||||
if(D_8037C670){
|
||||
D_8037C670--;
|
||||
if(D_8037C670 == 0){
|
||||
func_80297CCC(1.2f);
|
||||
D_8037C671 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_802988DC(s32 arg0){
|
||||
D_8037C5F0[D_8037C670].unk0 = arg0;
|
||||
D_8037C5F0[D_8037C670].unk1 = 0;
|
||||
ml_vec3f_clear(D_8037C5F0[D_8037C670].unk4);
|
||||
D_8037C670++;
|
||||
}
|
||||
|
||||
void func_8029892C(f32 arg0[3]){
|
||||
D_8037C5F0[D_8037C670-1].unk1 = 1;
|
||||
ml_vec3f_copy(D_8037C5F0[D_8037C670-1].unk4, arg0);
|
||||
}
|
||||
|
||||
void func_80298970(s32 arg0){
|
||||
int val = 0;
|
||||
switch(arg0){
|
||||
case 1:
|
||||
if(bs_checkInterrupt(0x1E) == 2)
|
||||
val = 1;
|
||||
break;
|
||||
case 2:
|
||||
if(bs_checkInterrupt(0x1C) == 2)
|
||||
val = 1;
|
||||
break;
|
||||
case 3:
|
||||
if(bs_checkInterrupt(0x1D) == 2)
|
||||
val = 1;
|
||||
break;
|
||||
case 4:
|
||||
if(bs_checkInterrupt(0x25) == 2)
|
||||
val = 1;
|
||||
break;
|
||||
default:
|
||||
val = 1;
|
||||
break;
|
||||
}
|
||||
if(val)
|
||||
D_8037C671 = arg0;
|
||||
}
|
||||
|
||||
void func_80298A64(void){
|
||||
if(D_8037C670)
|
||||
D_8037C671 = 0;
|
||||
}
|
||||
|
||||
void func_80298A84(void){
|
||||
s32 tmp;
|
||||
if(D_8037C670){
|
||||
tmp = D_8037C5F0[D_8037C670-1].unk0;
|
||||
if(D_8037C671 != tmp){
|
||||
func_80298970(tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
101
src/core2/code_12360.c
Normal file
101
src/core2/code_12360.c
Normal file
@@ -0,0 +1,101 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_80257D30(f32, f32, f32, f32, f32);
|
||||
extern void func_8025901C(f32, f32 *, f32 *, f32);
|
||||
extern f32 func_8029B2D0(void);
|
||||
|
||||
void func_8029957C(s32 arg0);
|
||||
|
||||
/* .bss*/
|
||||
s32 D_8037C6B0;
|
||||
f32 D_8037C6B4;
|
||||
|
||||
/* .code */
|
||||
void func_802992F0(void){
|
||||
func_802990B4();
|
||||
D_8037C6B4 = 0.0f;
|
||||
D_8037C6B0 = 0;
|
||||
func_8029957C(1);
|
||||
}
|
||||
|
||||
void func_8029932C(f32 arg0){
|
||||
D_8037C6B4 = arg0;
|
||||
}
|
||||
|
||||
void func_80299338(void){
|
||||
f32 stickX = func_8029B2D0();
|
||||
f32 sp20;
|
||||
sp20 =(0.03 < (f64)mlAbsF(stickX)) ? func_80257D30(stickX, 0.0f, 1.0f, 1.0f, 6.0f) : 0.0f;
|
||||
yaw_setIdeal(yaw_getIdeal() + sp20);
|
||||
}
|
||||
|
||||
void func_802993C8(void){
|
||||
switch(D_8037C6B0){
|
||||
case 1://802993F8
|
||||
if(func_8029B2E8() != 0.0f){
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
}
|
||||
yaw_update();
|
||||
break;
|
||||
case 5://80299438
|
||||
if(func_8029B2E8() != 0.0f){
|
||||
yaw_setIdeal(func_8029B33C() + 180.0f);
|
||||
}
|
||||
yaw_update();
|
||||
break;
|
||||
case 3://80299480
|
||||
yaw_update();
|
||||
break;
|
||||
case 6://80299490
|
||||
func_80299338();
|
||||
yaw_update();
|
||||
break;
|
||||
case 4://802994A8
|
||||
if(func_8029B2E8() != 0.0f){
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
yaw_set(yaw_getIdeal());
|
||||
}
|
||||
yaw_update();
|
||||
break;
|
||||
case 7://802994F8
|
||||
if(func_8029B2E8() != 0.0f){
|
||||
f32 sp1C = func_8029B33C();
|
||||
f32 diff = mlDiffDegF(yaw_getIdeal(), sp1C);
|
||||
if(D_8037C6B4 <= mlAbsF(diff)){
|
||||
yaw_setIdeal(func_8029B33C());
|
||||
}
|
||||
}
|
||||
yaw_update();
|
||||
break;
|
||||
case 0://8029956C
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029957C(s32 arg0){
|
||||
D_8037C6B0 = arg0;
|
||||
}
|
||||
|
||||
s32 func_80299588(void){
|
||||
return D_8037C6B0;
|
||||
}
|
||||
|
||||
void func_80299594(s32 arg0, f32 arg1){
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
func_80294480(sp2C);
|
||||
if(arg0){
|
||||
func_8025901C(mlNormalizeAngle(yaw_get() + 180.0f), sp2C, sp20, arg1);
|
||||
} else {
|
||||
func_8025901C(yaw_get(), sp2C, sp20, arg1);
|
||||
}
|
||||
pitch_setIdeal(sp20[0]);
|
||||
roll_setIdeal(sp20[2]);
|
||||
}
|
||||
|
||||
void func_80299628(s32 arg0){
|
||||
func_80299594(arg0, 1.0f);
|
||||
}
|
||||
235
src/core2/code_126C0.c
Normal file
235
src/core2/code_126C0.c
Normal file
@@ -0,0 +1,235 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .data */
|
||||
s32 D_80364560 = 0;
|
||||
s16 D_80364564[8] = {
|
||||
SFX_32_BANJO_EGHEE,
|
||||
SFX_34_BANJO_AGHOAA,
|
||||
SFX_35_BANJO_WOAH,
|
||||
SFX_37_BANJO_OHWW,
|
||||
SFX_38_BANJO_AYE_1,
|
||||
SFX_39_BANJO_AYE_2,
|
||||
SFX_3A_BANJO_HOUW,
|
||||
SFX_3B_BANJO_GAAH
|
||||
};
|
||||
|
||||
s16 D_80364574[3] = {
|
||||
SFX_54_BANJO_HOO_1,
|
||||
SFX_55_BANJO_HOO_2,
|
||||
SFX_56_BANJO_HUI,
|
||||
};
|
||||
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037C6C0;
|
||||
u8 D_8037C6C1;
|
||||
u8 D_8037C6C2;
|
||||
u8 D_8037C6C3;
|
||||
u8 D_8037C6C4;
|
||||
u32 D_8037C6C8;
|
||||
f32 D_8037C6CC;
|
||||
struct{
|
||||
u8 unk0;
|
||||
f32 unk4;
|
||||
f32 unk8;
|
||||
f32 unkC;
|
||||
f32 unk10;
|
||||
f32 unk14;
|
||||
f32 unk18;
|
||||
f32 unk1C;
|
||||
} D_8037C6D0;
|
||||
|
||||
/* .code */
|
||||
void func_80299650(f32 arg1, f32 arg2){
|
||||
f32 f20;
|
||||
s32 unks0;
|
||||
if(arg2 == 0.0f){
|
||||
func_8030E394(D_8037C6C4);
|
||||
}
|
||||
else if(arg2 < 1.0) {
|
||||
if(1.0 <= arg1){
|
||||
sfxsource_setSfxId(D_8037C6C4, SFX_1C_ALARMCLOCK);
|
||||
sfxsource_setSampleRate(D_8037C6C4, 0x7fff);
|
||||
func_8030E2C4(D_8037C6C4);
|
||||
}
|
||||
}
|
||||
else{
|
||||
unks0 = 0;
|
||||
f20 = 5.0f;
|
||||
while(f20 > 0.0f){
|
||||
if(f20 <= arg1 && arg2 < f20){
|
||||
sfxsource_setSfxId(D_8037C6C4, (unks0) ? SFX_2A_CLOCK_TIC_1 : SFX_51_CLOCK_TIC_2);
|
||||
sfxsource_setSampleRate(D_8037C6C4, 0x7fff);
|
||||
func_8030E2C4(D_8037C6C4);
|
||||
return;
|
||||
}
|
||||
unks0 ^= 1;
|
||||
f20 -= ml_map_f(f20, 0.0f, 5.0f, 0.1f, 0.25f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_802997E8(void){
|
||||
f32 f12;
|
||||
f32 f2;
|
||||
if(D_8037C6D0.unk0){
|
||||
D_8037C6D0.unk4 += time_getDelta();
|
||||
if(D_8037C6D0.unk8 <= D_8037C6D0.unk4){
|
||||
func_8030DA44(D_8037C6D0.unk0);
|
||||
D_8037C6D0.unk0 = 0;
|
||||
}
|
||||
else{
|
||||
f12 = D_8037C6D0.unk4/D_8037C6D0.unk8;
|
||||
if(f12 < D_8037C6D0.unkC){
|
||||
f2 = ml_map_f(f12, 0.0f, D_8037C6D0.unkC, D_8037C6D0.unk14, D_8037C6D0.unk18);
|
||||
}
|
||||
else if(f12 < D_8037C6D0.unk10){
|
||||
f2 = D_8037C6D0.unk18;
|
||||
}
|
||||
else{
|
||||
f2 = ml_map_f(f12, D_8037C6D0.unk10, 1.0f, D_8037C6D0.unk18, D_8037C6D0.unk1C);
|
||||
}
|
||||
func_8030DBB4(D_8037C6D0.unk0, f2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_802998D0(u8 indx){
|
||||
func_8030E6A4(SFX_19_BANJO_LANDING_08, D_8037C6CC, 22000);
|
||||
}
|
||||
|
||||
void func_80299900(void){
|
||||
D_8037C6C8 = 0;
|
||||
D_8037C6C0 = func_8030D90C();
|
||||
func_8030DD14(D_8037C6C0, 3);
|
||||
func_8030DD90(D_8037C6C0, 0);
|
||||
D_8037C6CC = 1.0f;
|
||||
|
||||
D_8037C6C1 = func_8030D90C();
|
||||
sfxsource_setSfxId(D_8037C6C1, SFX_18_BIGBUTT_SLIDE);
|
||||
func_8030DD54(D_8037C6C1, func_802998D0);
|
||||
sfxsource_setSampleRate(D_8037C6C1, 28000);
|
||||
func_8030DD14(D_8037C6C1, 2);
|
||||
func_8030DD90(D_8037C6C1, 0);
|
||||
|
||||
D_8037C6C2 = func_8030D90C();
|
||||
func_8030DD90(D_8037C6C2, 0);
|
||||
|
||||
D_8037C6C3 = func_8030D90C();
|
||||
func_8030DD90(D_8037C6C3, 0);
|
||||
|
||||
D_8037C6C4 = func_8030D90C();
|
||||
func_8030DD90(D_8037C6C4, 0);
|
||||
func_8030DD14(D_8037C6C4, 3);
|
||||
D_8037C6D0.unk0 = 0;
|
||||
}
|
||||
|
||||
void func_80299A20(void){
|
||||
func_8030DA44(D_8037C6C1);
|
||||
func_8030DA44(D_8037C6C0);
|
||||
func_8030DA44(D_8037C6C3);
|
||||
func_8030DA44(D_8037C6C2);
|
||||
func_8030DA44(D_8037C6C4);
|
||||
if(D_8037C6D0.unk0){
|
||||
func_8030DA44(D_8037C6D0.unk0);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80299A8C(void){
|
||||
func_802997E8();
|
||||
}
|
||||
|
||||
void func_80299AAC(void){
|
||||
D_8037C6CC += randf()*0.1 - 0.05;
|
||||
D_8037C6CC = max_f(D_8037C6CC, 0.9f);
|
||||
D_8037C6CC = min_f(D_8037C6CC, 1.5f);
|
||||
func_8030DBB4(D_8037C6C1, D_8037C6CC);
|
||||
func_8030E2C4(D_8037C6C1);
|
||||
}
|
||||
|
||||
void func_80299B58(f32 arg0, f32 arg1){
|
||||
func_80299CF4(D_80364574[D_80364560], randf2(0.93f, 1.09f), 25000);
|
||||
D_80364560++;
|
||||
if(D_80364560 >= 3)
|
||||
D_80364560 = 0;
|
||||
}
|
||||
|
||||
void func_80299BD4(void){
|
||||
func_8030E5F4(SFX_44_KAZOOIE_AUW, 1.117f);
|
||||
}
|
||||
|
||||
void func_80299BFC(f32 arg0){
|
||||
sfxsource_setSfxId(D_8037C6C0, D_80364564[D_8037C6C8]);
|
||||
func_8030DBB4(D_8037C6C0, arg0);
|
||||
func_8030E2C4(D_8037C6C0);
|
||||
++D_8037C6C8;
|
||||
if(D_8037C6C8 >= 8)
|
||||
D_8037C6C8 = 0;
|
||||
}
|
||||
|
||||
void func_80299C78(u8 indx, enum sfx_e sfx_id, f32 arg2, s32 arg3){
|
||||
sfxsource_setSfxId(indx, sfx_id);
|
||||
func_8030DBB4(indx, arg2);
|
||||
sfxsource_setSampleRate(indx, arg3);
|
||||
func_8030E2C4(indx);
|
||||
}
|
||||
|
||||
u8 func_80299CC4(void){
|
||||
return D_8037C6C2;
|
||||
}
|
||||
|
||||
void func_80299CD0(void){
|
||||
func_8030E3FC(D_8037C6C2);
|
||||
}
|
||||
|
||||
void func_80299CF4(enum sfx_e sfx_id, f32 arg1, s32 arg2){
|
||||
func_80299C78(D_8037C6C2, sfx_id, arg1, arg2);
|
||||
}
|
||||
|
||||
void func_80299D2C(enum sfx_e sfx_id, f32 arg1, s32 arg2){
|
||||
func_80299C78(D_8037C6C3, sfx_id, arg1, arg2);
|
||||
}
|
||||
|
||||
void func_80299D64(void){
|
||||
if(func_8029CEB0() == 4){
|
||||
FUNC_8030E624(SFX_116_DEAF_RUSTLING, 0.7f, 32000);
|
||||
FUNC_8030E624(SFX_116_DEAF_RUSTLING, 0.8f, 32000);
|
||||
}
|
||||
else{
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 32750);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80299DB8(void){
|
||||
if(func_8029CEB0() == 4){
|
||||
FUNC_8030E624(SFX_116_DEAF_RUSTLING, 0.7f, 32000);
|
||||
}
|
||||
else{
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 18000);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80299E00(void){
|
||||
if(func_8029CEB0() == 4){
|
||||
FUNC_8030E624(SFX_116_DEAF_RUSTLING, 0.7f, 27000);
|
||||
}
|
||||
else{
|
||||
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 1.0f, 14000);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80299E48(void){
|
||||
func_8030E394(D_8037C6C0);
|
||||
}
|
||||
|
||||
void func_80299E6C(void){
|
||||
func_8030E394(D_8037C6C2);
|
||||
}
|
||||
|
||||
void func_80299E90(void){
|
||||
func_8030E394(D_8037C6C3);
|
||||
}
|
||||
|
||||
void func_80299EB4(void){}
|
||||
177
src/core2/code_12F30.c
Normal file
177
src/core2/code_12F30.c
Normal file
@@ -0,0 +1,177 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_80294404(void);
|
||||
|
||||
extern s16 D_80364580[];
|
||||
|
||||
extern f32 D_80374CF0;
|
||||
extern f64 D_80374CF8;
|
||||
extern f64 D_80374D00;
|
||||
extern f32 D_80374D08;
|
||||
|
||||
/*.bss*/
|
||||
struct {
|
||||
u8 unk0;
|
||||
f32 unk4[3];
|
||||
}
|
||||
D_8037C6F0;
|
||||
|
||||
/*.code */
|
||||
#ifndef NONMATCHING
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_12F30/func_80299EC0.s")
|
||||
#else
|
||||
void func_80299EC0(f32 arg0[3]) {
|
||||
f32 spEC[3]; //player_pos
|
||||
f32 spE0[3];
|
||||
f32 spD4[3];
|
||||
BKModelBin *spC8;
|
||||
f32 spB8[3];
|
||||
f32 spAC[3];
|
||||
f32 spA0[3];
|
||||
f32 sp7C[3][3]; //tri_vtx_colors
|
||||
s32 sp78;
|
||||
s32 i;
|
||||
f32 sp70;
|
||||
Struct60s *sp6C; //floor_vtx_list
|
||||
f32 sp48[3][3]; //tri_vtx_coord
|
||||
f32 temp_f0_2;
|
||||
f32 temp_f2_2;
|
||||
f32 temp_f2_4;
|
||||
Vtx *vtx_buffer;
|
||||
Vtx *temp_v1;
|
||||
f32 phi_f18;
|
||||
|
||||
|
||||
arg0[0] = 255.0f;\
|
||||
arg0[1] = 255.0f;\
|
||||
arg0[2] = 255.0f;
|
||||
if (D_8037C6F0.unk0 == 1) {
|
||||
sp78 = 50;
|
||||
} else if (func_8028EE84() != BSWATERGROUP_0_NONE) {
|
||||
sp78 = 200;
|
||||
} else {
|
||||
sp78 = 250;
|
||||
}
|
||||
_player_getPosition(spEC);
|
||||
sp6C = func_8029463C();
|
||||
spC8 = func_802946A8();
|
||||
if (spC8 == NULL) {
|
||||
sp6C = NULL;
|
||||
}
|
||||
if ((spEC[1] - func_80294438()) > 100.0f) {
|
||||
sp6C = NULL;
|
||||
}
|
||||
if (sp6C == NULL) return;
|
||||
if (sp6C->unk6 &2) return;
|
||||
|
||||
vtx_buffer = vtxList_getVertices(func_8033A148(spC8));
|
||||
for(i = 0; i<3; i++){
|
||||
temp_v1 = vtx_buffer + sp6C->unk0[i];
|
||||
sp48[i][0] = (f32) temp_v1->v.ob[0];
|
||||
sp48[i][1] = (f32) temp_v1->v.ob[1];
|
||||
sp48[i][1] = 0.0f;
|
||||
sp48[i][2] = (f32) temp_v1->v.ob[2];
|
||||
|
||||
sp7C[i][0] = (f32) temp_v1->v.cn[0];
|
||||
sp7C[i][1] = (f32) temp_v1->v.cn[1];
|
||||
sp7C[i][2] = (f32) temp_v1->v.cn[2];
|
||||
}
|
||||
// spEC[1] = 0.0f;
|
||||
|
||||
spE0[0] = spEC[0] - sp48[0][0];
|
||||
spE0[1] = 0.0f;
|
||||
spE0[2] = spEC[2] - sp48[0][2];
|
||||
|
||||
spAC[0] = sp48[0][0] - sp48[1][0];
|
||||
spAC[1] = 0.0f;
|
||||
spAC[2] = sp48[0][2] - sp48[1][2];
|
||||
|
||||
spB8[0] = -(sp48[2][2] - sp48[1][2]);
|
||||
spB8[1] = 0.0f;
|
||||
spB8[2] = sp48[2][0] - sp48[1][0];
|
||||
|
||||
phi_f18 = (spE0[0] * spB8[0]) + (spE0[1] * spB8[1]) + (spB8[2] * spE0[2]);
|
||||
if(phi_f18 == 0.0f){
|
||||
phi_f18 = D_80374CF0;
|
||||
}
|
||||
|
||||
temp_f0_2 = -((spB8[2] * spAC[2]) + ((spAC[0] * spB8[0]) + 0.0f)) / phi_f18;
|
||||
spA0[0] = (spE0[0] * temp_f0_2) + sp48[0][0];
|
||||
spA0[1] = 0.0f;
|
||||
spA0[2] = (spE0[2] * temp_f0_2) + sp48[0][2];
|
||||
|
||||
spD4[0] = spA0[0] - sp48[1][0];
|
||||
spD4[1] = spA0[1] - sp48[1][1];
|
||||
spD4[2] = spA0[2] - sp48[1][2];
|
||||
|
||||
temp_f2_2 = gu_sqrtf(spD4[0]*spD4[0] + spD4[1]*spD4[1] + spD4[2]*spD4[2]) / (gu_sqrtf(spB8[0] * spB8[0] + spB8[1] * spB8[1] + spB8[2] * spB8[2]) + D_80374CF8);
|
||||
for(i = 0; i < 3; i++){
|
||||
arg0[i] = sp7C[1][i] + (sp7C[2][i] - sp7C[1][i])*temp_f2_2;
|
||||
}
|
||||
|
||||
spD4[0] = spA0[0] - sp48[0][0];
|
||||
spD4[1] = spA0[1] - sp48[0][1];
|
||||
spD4[2] = spA0[2] - sp48[0][2];
|
||||
temp_f2_4 = (1.0 - (gu_sqrtf(spE0[0]*spE0[0] + spE0[1]*spE0[1] + spE0[2]*spE0[2]) / (gu_sqrtf(spD4[0]*spD4[0] + spD4[1]*spD4[1] + spD4[2]*spD4[2]) + D_80374D00)));
|
||||
|
||||
for(i = 0; i < 3; i++){
|
||||
arg0[i] += (sp7C[0][i] - arg0[i])*temp_f2_4;
|
||||
}
|
||||
|
||||
for(i = 0; i < 3; i++){
|
||||
arg0[i] += (255.0f - arg0[i]) * (func_80294404() / 100.0f);
|
||||
}
|
||||
|
||||
for(i = 0; i < 3; i++){
|
||||
if(arg0[i] > 255.0f){ arg0[i] = 255.0f; }
|
||||
if(arg0[i] < 0.0f) { arg0[i] = 0.0f; }
|
||||
}
|
||||
arg0[0] = ((arg0[0] + arg0[1] + arg0[2]) * (f32) (0xFF - sp78)) / D_80374D08 + sp78;
|
||||
arg0[1] = arg0[0];
|
||||
arg0[2] = arg0[0];
|
||||
}
|
||||
#endif
|
||||
|
||||
void func_8029A47C(s32 arg0[3]){
|
||||
arg0[0] = (s32)(D_8037C6F0.unk4[0] + 0.5);
|
||||
arg0[1] = (s32)(D_8037C6F0.unk4[1] + 0.5);
|
||||
arg0[2] = (s32)(D_8037C6F0.unk4[2] + 0.5);
|
||||
}
|
||||
|
||||
void func_8029A4D0(void){
|
||||
int i;
|
||||
s32 map_id = map_get();
|
||||
D_8037C6F0.unk0 = 0;
|
||||
D_8037C6F0.unk4[0] = 255.0f;
|
||||
D_8037C6F0.unk4[1] = 255.0f;
|
||||
D_8037C6F0.unk4[2] = 255.0f;
|
||||
for(i = 0; D_80364580[i]; i++){
|
||||
if(map_id == D_80364580[i]){
|
||||
D_8037C6F0.unk0 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029A54C(void){}
|
||||
|
||||
void func_8029A554(void){
|
||||
int i;
|
||||
f32 sp28[3];
|
||||
func_80299EC0(sp28);
|
||||
for(i = 0; i < 3; i++){
|
||||
if(D_8037C6F0.unk4[i] < sp28[i]){
|
||||
D_8037C6F0.unk4[i] += 40.0f;
|
||||
if(sp28[i] < D_8037C6F0.unk4[i])
|
||||
D_8037C6F0.unk4[i] = sp28[i];
|
||||
|
||||
}
|
||||
else{//L8029A5C0
|
||||
D_8037C6F0.unk4[i] -= 40.0f;
|
||||
if( D_8037C6F0.unk4[i] < sp28[i])
|
||||
D_8037C6F0.unk4[i] = sp28[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
68
src/core2/code_13780.c
Normal file
68
src/core2/code_13780.c
Normal file
@@ -0,0 +1,68 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
#include "bsint.h"
|
||||
|
||||
s32 D_8037D160; //prev_state
|
||||
s32 D_8037D164; //state
|
||||
s32 D_8037D168; //next_state
|
||||
s32 D_8037D16C;
|
||||
s32 D_8037D170;
|
||||
|
||||
void bs_clearState(void){
|
||||
D_8037D160 = 0;
|
||||
D_8037D164 = 0;
|
||||
D_8037D168 = 0;
|
||||
}
|
||||
|
||||
void bs_setState(s32 state_id){
|
||||
|
||||
if(state_id == 0)
|
||||
return;
|
||||
|
||||
D_8037D168 = state_id;
|
||||
if(bsList_getEndMethod(D_8037D164) != NULL)
|
||||
bsList_getEndMethod(D_8037D164)();
|
||||
|
||||
|
||||
D_8037D160 = D_8037D164;
|
||||
D_8037D164 = D_8037D168;
|
||||
D_8037D168 = 0;
|
||||
|
||||
if(bsList_getInitMethod(D_8037D164) != NULL)
|
||||
bsList_getInitMethod(D_8037D164)();
|
||||
}
|
||||
|
||||
s32 bs_getPrevState(void){
|
||||
return D_8037D160;
|
||||
}
|
||||
|
||||
s32 bs_getState(void){
|
||||
return D_8037D164;
|
||||
}
|
||||
|
||||
s32 bs_getNextState(void){
|
||||
return D_8037D168;
|
||||
}
|
||||
|
||||
void bs_updateState(void){
|
||||
if(bsList_getUpdateMethod(D_8037D164) != NULL)
|
||||
bsList_getUpdateMethod(D_8037D164)();
|
||||
}
|
||||
|
||||
s32 bs_checkInterrupt(s32 arg0){
|
||||
D_8037D16C = arg0;
|
||||
D_8037D170 = 0;
|
||||
if(bsList_getInterruptMethod(D_8037D164) != NULL)
|
||||
bsList_getInterruptMethod(D_8037D164)();
|
||||
return D_8037D170;
|
||||
}
|
||||
|
||||
void func_8029A86C(s32 arg0){
|
||||
D_8037D170 = arg0;
|
||||
}
|
||||
|
||||
s32 bs_getInterruptType(void){
|
||||
return D_8037D16C;
|
||||
}
|
||||
61
src/core2/code_13900.c
Normal file
61
src/core2/code_13900.c
Normal file
@@ -0,0 +1,61 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
struct {
|
||||
f32 unk0;
|
||||
f32 unk4;
|
||||
u8 xform_8;
|
||||
} D_8037D180;
|
||||
u8 D_8037D18C;
|
||||
|
||||
/* .code */
|
||||
void func_8029A890(void){
|
||||
func_802957FC();
|
||||
}
|
||||
|
||||
void func_8029A8B0(void){
|
||||
func_80295804();
|
||||
D_8037D180.unk0 = D_8037D180.unk4 = 0.0f;
|
||||
D_8037D180.xform_8 = TRANSFORM_1_BANJO;
|
||||
D_8037D18C = FALSE;
|
||||
}
|
||||
|
||||
enum transformation_e _player_getTransformation(void){
|
||||
return D_8037D180.xform_8;
|
||||
}
|
||||
|
||||
f32 func_8029A900(void){
|
||||
return D_8037D180.unk0;
|
||||
}
|
||||
|
||||
f32 func_8029A90C(void){
|
||||
return D_8037D180.unk4;
|
||||
}
|
||||
|
||||
s32 func_8029A918(void){
|
||||
return D_8037D18C;
|
||||
}
|
||||
|
||||
void func_8029A924(void){}
|
||||
|
||||
void func_8029A92C(void){
|
||||
func_8029A968(0.0f);
|
||||
func_8029A974(0.0f);
|
||||
}
|
||||
|
||||
void func_8029A95C(enum transformation_e xform_id){
|
||||
D_8037D180.xform_8 = xform_id;
|
||||
}
|
||||
|
||||
void func_8029A968(f32 arg0){
|
||||
D_8037D180.unk0 = arg0;
|
||||
}
|
||||
|
||||
void func_8029A974(f32 arg0){
|
||||
D_8037D180.unk4 = arg0;
|
||||
}
|
||||
|
||||
void func_8029A980(s32 arg0){
|
||||
D_8037D18C = arg0;
|
||||
}
|
||||
177
src/core2/code_13A00.c
Normal file
177
src/core2/code_13A00.c
Normal file
@@ -0,0 +1,177 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern void func_802F494C(void *, f32);
|
||||
extern void func_802F4884(void *, s32, f32);
|
||||
extern f32 func_80294500(void);
|
||||
|
||||
|
||||
void func_8029AE74(s32 arg0);
|
||||
void func_8029AEE4(s32 arg0);
|
||||
|
||||
/* .bss */
|
||||
Struct5Ds *D_8037D190;
|
||||
u8 D_8037D194;
|
||||
|
||||
/* .code */
|
||||
void func_8029A990(void){
|
||||
f32 plyr_pos[3];
|
||||
ParticleEmitter *pCtrl;
|
||||
|
||||
if(map_get() == MAP_2C_MMM_BATHROOM)
|
||||
func_8029C304(0);
|
||||
else
|
||||
func_8029C304(1);
|
||||
|
||||
_player_getPosition(plyr_pos);
|
||||
plyr_pos[1] = func_80294500();
|
||||
pCtrl = func_802F4094(plyr_pos, 25.0f);
|
||||
particleEmitter_setParticleVelocityRange(pCtrl,
|
||||
-350.0f, 300.0f, -350.0f,
|
||||
350.0f, 500.0f, 350.0f
|
||||
);
|
||||
particleEmitter_emitN(pCtrl, 10);
|
||||
}
|
||||
|
||||
void func_8029AA3C(void){
|
||||
f32 sp34[3];
|
||||
f32 sp30;
|
||||
ParticleEmitter *pCtrl;
|
||||
if(map_get() == MAP_2C_MMM_BATHROOM)
|
||||
func_8029C304(0);
|
||||
else
|
||||
func_8029C304(2);
|
||||
|
||||
sp30 = ml_map_f(func_80297AB8(), 0.0f, 500.0f, 70.0f, 250.0f);
|
||||
func_8028E9C4(D_8037D194, sp34);
|
||||
sp34[1] = func_80294500();
|
||||
pCtrl = func_802F4094(sp34, 8.0f);
|
||||
particleEmitter_setParticleVelocityRange(pCtrl,
|
||||
-sp30, 300.0f, -sp30,
|
||||
sp30, 350.0f,sp30
|
||||
);
|
||||
particleEmitter_emitN(pCtrl, 5);
|
||||
}
|
||||
|
||||
void func_8029AB14(s32 arg0, s32 arg1){
|
||||
int sp24 = (arg1 == 4) || (arg1 == 0xb);
|
||||
int sp20 = player_inWater();
|
||||
if(sp24){
|
||||
func_8029AA3C();
|
||||
}
|
||||
|
||||
switch(player_getTransformation()){
|
||||
case TRANSFORM_3_PUMPKIN: //L8029AB9C
|
||||
if(arg1 == 7){
|
||||
func_802F4900(arg0, arg1);
|
||||
}
|
||||
if(sp24 || sp20){
|
||||
func_802F4900(arg0, 0xe);
|
||||
}
|
||||
else{
|
||||
func_802F4900(arg0, 0xd);
|
||||
}
|
||||
break;
|
||||
case TRANSFORM_4_WALRUS://L8029ABEC
|
||||
if(sp24){
|
||||
func_802F4900(arg0, 0x4);
|
||||
}
|
||||
else if(sp20){
|
||||
func_802F4900(arg0, 0xf);
|
||||
}
|
||||
else{
|
||||
func_802F4900(arg0, 0xd);
|
||||
}
|
||||
break;
|
||||
default: //L8029AC28
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029AC34(s32 arg0, s32 arg1){
|
||||
int sp1C;
|
||||
sp1C = (arg1 == 4) || (arg1 == 0xb || player_inWater());
|
||||
if(sp1C){
|
||||
func_8029A990();
|
||||
}
|
||||
|
||||
switch(player_getTransformation()){
|
||||
case TRANSFORM_3_PUMPKIN:
|
||||
case TRANSFORM_4_WALRUS:
|
||||
case TRANSFORM_5_CROC:
|
||||
if(sp1C)
|
||||
FUNC_8030E624(SFX_10_BANJO_LANDING_07, 0.9f, 13000);
|
||||
else
|
||||
FUNC_8030E624(SFX_2F_ORANGE_SPLAT, 1.4f, 8000);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029ACD4(void){
|
||||
f32 plyr_pos[3];
|
||||
|
||||
_player_getPosition(plyr_pos);
|
||||
func_802F4894(D_8037D190, plyr_pos);
|
||||
func_802F4884( D_8037D190, func_80294660(), func_80294500());
|
||||
}
|
||||
|
||||
void func_8029AD28(f32 arg0, s32 arg1){
|
||||
AnimCtrl *plyr_animCtrl = _player_getAnimCtrlPtr();
|
||||
if(animctrl_isAt(plyr_animCtrl, arg0)){
|
||||
func_8029AE74(arg1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8029AD68(f32 arg0, s32 arg1){
|
||||
AnimCtrl *plyr_animCtrl = _player_getAnimCtrlPtr();
|
||||
if(animctrl_isAt(plyr_animCtrl, arg0)){
|
||||
func_8029AEE4(arg1);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029ADA8(void){
|
||||
func_802F4798(D_8037D190);
|
||||
}
|
||||
|
||||
void func_8029ADCC(void){
|
||||
D_8037D190 = func_802F47D0();
|
||||
func_802F487C(D_8037D190, func_8029AC34);
|
||||
func_802F48B4(D_8037D190, func_8029AB14);
|
||||
}
|
||||
|
||||
void func_8029AE1C(void){
|
||||
func_8029ACD4();
|
||||
func_802F48BC(D_8037D190);
|
||||
}
|
||||
|
||||
void func_8029AE48(void){
|
||||
func_8029ACD4();
|
||||
func_802F48E0(D_8037D190);
|
||||
}
|
||||
|
||||
void func_8029AE74(s32 arg0){
|
||||
s32 tmp_v0;
|
||||
func_8029ACD4();
|
||||
D_8037D194 = arg0;
|
||||
tmp_v0 = func_8028ECAC();
|
||||
if(tmp_v0 == BSGROUP_6_TURBO_TALON_TRAINERS || tmp_v0 == BSGROUP_8_TROT || tmp_v0 == BSGROUP_9_LONG_LEG){
|
||||
func_802F494C(D_8037D190, 0.2f);
|
||||
}
|
||||
else{
|
||||
func_802F4924(D_8037D190);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029AEE4(s32 arg0){
|
||||
func_8029ACD4();
|
||||
D_8037D194 = arg0;
|
||||
func_802F4978(D_8037D190);
|
||||
}
|
||||
|
||||
void func_8029AF1C(void){
|
||||
D_8037D190 = func_802F499C(D_8037D190);
|
||||
}
|
||||
161
src/core2/code_13FC0.c
Normal file
161
src/core2/code_13FC0.c
Normal file
@@ -0,0 +1,161 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
f32 func_8024DDD8(f32[3], f32);
|
||||
extern void func_8024E71C(s32, f32*);
|
||||
extern f32 ml_acosf(f32);
|
||||
extern f32 func_8028EBA4(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);
|
||||
ParticleEmitter * func_802EDD8C(f32[3], f32, f32);
|
||||
extern void func_80354030(f32[3], f32);
|
||||
extern void func_80356074(f32[3], f32[3], f32, f32);
|
||||
extern void func_80292864(f32, f32);
|
||||
|
||||
/* .bss */
|
||||
struct {
|
||||
f32 unk0;
|
||||
s32 unk4;
|
||||
f32 unk8[5];
|
||||
f32 unk1C[2];
|
||||
f32 unk24;
|
||||
f32 unk28;
|
||||
s32 unk2C;
|
||||
s32 unk30;
|
||||
u8 unk34;
|
||||
} D_8037D1A0;
|
||||
|
||||
/*.code */
|
||||
f32 func_8029AF50(f32 arg0, f32 arg1, f32 arg2){
|
||||
return (arg0 - arg1)/(arg2 - arg1);
|
||||
}
|
||||
|
||||
void func_8029AF68(void) {
|
||||
s32 i;
|
||||
|
||||
if (D_8037D1A0.unk28 <= D_8037D1A0.unk8[0]) {
|
||||
D_8037D1A0.unk4 = 0;
|
||||
D_8037D1A0.unk0 = 0.0f;
|
||||
return;
|
||||
}
|
||||
|
||||
if ((D_8037D1A0.unk8[0] < D_8037D1A0.unk28) && (D_8037D1A0.unk28 <= D_8037D1A0.unk8[1])) {
|
||||
D_8037D1A0.unk4 = 1;
|
||||
D_8037D1A0.unk0 = func_8029AF50(D_8037D1A0.unk28, D_8037D1A0.unk8[0], D_8037D1A0.unk8[1]);
|
||||
return;
|
||||
}
|
||||
if ((D_8037D1A0.unk8[1] < D_8037D1A0.unk28) && (D_8037D1A0.unk28 <= D_8037D1A0.unk8[2])) {
|
||||
D_8037D1A0.unk4 = 2;
|
||||
D_8037D1A0.unk0 = func_8029AF50(D_8037D1A0.unk28, D_8037D1A0.unk8[1], D_8037D1A0.unk8[2]);
|
||||
return;
|
||||
}
|
||||
if ((D_8037D1A0.unk8[2] < D_8037D1A0.unk28) && (D_8037D1A0.unk28 <= D_8037D1A0.unk8[3])) {
|
||||
D_8037D1A0.unk4 = 3;
|
||||
D_8037D1A0.unk0 = func_8029AF50(D_8037D1A0.unk28, D_8037D1A0.unk8[2], D_8037D1A0.unk8[3]);
|
||||
return;
|
||||
}
|
||||
if ((D_8037D1A0.unk8[3] < D_8037D1A0.unk28) && (D_8037D1A0.unk28 <= D_8037D1A0.unk8[4])) {
|
||||
D_8037D1A0.unk4 = 4;
|
||||
D_8037D1A0.unk0 = func_8029AF50(D_8037D1A0.unk28, D_8037D1A0.unk8[3], D_8037D1A0.unk8[4]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029B0C0(void) {
|
||||
func_8029B324(0, 0.12f);
|
||||
func_8029B324(1, 0.2f);
|
||||
func_8029B324(2, 0.5f);
|
||||
func_8029B324(3, 0.75f);
|
||||
func_8029B324(4, 1.0f);
|
||||
}
|
||||
|
||||
void func_8029B11C(void) {
|
||||
D_8037D1A0.unk1C[0] = D_8037D1A0.unk1C[1] = D_8037D1A0.unk28 = D_8037D1A0.unk24 = D_8037D1A0.unk0 = 0.0f;
|
||||
D_8037D1A0.unk34 = 0;
|
||||
D_8037D1A0.unk30 = 0;
|
||||
D_8037D1A0.unk2C = 0;
|
||||
D_8037D1A0.unk4 = 0;
|
||||
func_8029B0C0();
|
||||
}
|
||||
|
||||
void func_8029B174(void) {
|
||||
func_8024E71C(0, &D_8037D1A0.unk1C);
|
||||
if (D_8037D1A0.unk34) {
|
||||
D_8037D1A0.unk1C[0] = D_8037D1A0.unk1C[1] = 0.0f;
|
||||
}
|
||||
D_8037D1A0.unk28 = gu_sqrtf(D_8037D1A0.unk1C[0]*D_8037D1A0.unk1C[0] + D_8037D1A0.unk1C[1]*D_8037D1A0.unk1C[1]);
|
||||
if (D_8037D1A0.unk28 != 0.0f) {
|
||||
D_8037D1A0.unk2C = 0;
|
||||
D_8037D1A0.unk30 = (s32) (D_8037D1A0.unk30 + 1);
|
||||
D_8037D1A0.unk24 = ml_acosf(D_8037D1A0.unk1C[1] / D_8037D1A0.unk28);
|
||||
if (D_8037D1A0.unk1C[0] < 0.0f) {
|
||||
D_8037D1A0.unk24 = (f32) (180.0f - D_8037D1A0.unk24);
|
||||
}
|
||||
if (D_8037D1A0.unk1C[1] < 0.0f) {
|
||||
D_8037D1A0.unk24 = (f32) (360.0f - D_8037D1A0.unk24);
|
||||
}
|
||||
} else {
|
||||
D_8037D1A0.unk30 = 0;
|
||||
D_8037D1A0.unk2C = (s32) (D_8037D1A0.unk2C + 1);
|
||||
}
|
||||
if (D_8037D1A0.unk28 > 1.0) {
|
||||
D_8037D1A0.unk28 = 1.0f;
|
||||
}
|
||||
func_8029AF68();
|
||||
}
|
||||
|
||||
|
||||
f32 func_8029B2D0(void){
|
||||
return D_8037D1A0.unk1C[0];
|
||||
}
|
||||
|
||||
f32 func_8029B2DC(void){
|
||||
return D_8037D1A0.unk1C[1];
|
||||
}
|
||||
|
||||
f32 func_8029B2E8(void){
|
||||
return D_8037D1A0.unk28;
|
||||
}
|
||||
|
||||
f32 func_8029B2F4(void){
|
||||
return D_8037D1A0.unk24;
|
||||
}
|
||||
|
||||
s32 func_8029B300(void){
|
||||
return D_8037D1A0.unk4;
|
||||
}
|
||||
|
||||
f32 func_8029B30C(void){
|
||||
return D_8037D1A0.unk0;
|
||||
}
|
||||
|
||||
void func_8029B318(bool arg0){
|
||||
D_8037D1A0.unk34 = arg0;
|
||||
}
|
||||
|
||||
void func_8029B324(s32 arg0, f32 arg1){
|
||||
D_8037D1A0.unk8[arg0] = arg1;
|
||||
}
|
||||
|
||||
f32 func_8029B33C(void){
|
||||
f32 sp1C[3];
|
||||
|
||||
_player_getPosition(sp1C);
|
||||
return func_8024DDD8(sp1C, func_8029B2F4());
|
||||
}
|
||||
|
||||
s32 func_8029B370(void){
|
||||
return D_8037D1A0.unk30;
|
||||
}
|
||||
|
||||
s32 func_8029B37C(void){
|
||||
return D_8037D1A0.unk2C;
|
||||
}
|
||||
|
||||
bool func_8029B388(void){
|
||||
return D_8037D1A0.unk30 == 1;
|
||||
}
|
||||
|
||||
bool func_8029B39C(void){
|
||||
return D_8037D1A0.unk2C == 1;
|
||||
}
|
||||
817
src/core2/code_14420.c
Normal file
817
src/core2/code_14420.c
Normal file
@@ -0,0 +1,817 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
f32 func_8024DDD8(f32[3], f32);
|
||||
extern void func_8024E71C(s32, f32*);
|
||||
extern f32 ml_acosf(f32);
|
||||
extern f32 func_8028EBA4(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);
|
||||
ParticleEmitter * func_802EDD8C(f32[3], f32, f32);
|
||||
extern void func_80354030(f32[3], f32);
|
||||
extern void func_80354380(f32[3], f32);
|
||||
extern void func_80356074(f32[3], f32[3], f32, f32);
|
||||
extern void func_80292864(f32, f32);
|
||||
|
||||
typedef struct {
|
||||
s16 state_id;
|
||||
s16 anim_id;
|
||||
f32 anim_duration;
|
||||
} Struct_core2_13FC0;
|
||||
|
||||
enum bs_14420_e{
|
||||
BS14420_0_TERMITE,
|
||||
BS14420_1_PUMPKIN,
|
||||
BS14420_2_CROC,
|
||||
BS14420_3_WALRUS,
|
||||
BS14420_4_WATER_SURFACE,
|
||||
BS14420_5_UNDERWATER,
|
||||
|
||||
BS14420_7_FLY = 0x7,
|
||||
BS14420_8_TROT,
|
||||
|
||||
BS14420_A_WALRUS_SLED = 0xA,
|
||||
BS14420_B_BEE,
|
||||
BS14420_C_CLIMB,
|
||||
BS14420_D_WONDERWING,
|
||||
};
|
||||
|
||||
/* .data */
|
||||
s32 D_80364620 = 0;
|
||||
s16 D_80364624[14] = {0};
|
||||
u8 D_80364640[16] = {0};
|
||||
Struct_core2_13FC0 D_80364650[14] = {0};
|
||||
Struct_core2_13FC0 D_803646C0[14] = {0};
|
||||
Struct_core2_13FC0 D_80364730[14] = {0};
|
||||
Struct_core2_13FC0 D_803647A0[14] = {0};
|
||||
Struct_core2_13FC0 D_80364810[14] = {0};
|
||||
Struct_core2_13FC0 D_80364880[14] = {0};
|
||||
Struct_core2_13FC0 D_803648F0[14] = {0};
|
||||
|
||||
/* .bss */
|
||||
// extern struct {
|
||||
// s32 map_id;
|
||||
// s32 exit_id;
|
||||
// }D_8037D1E0;
|
||||
s32 D_8037D1E0[2];
|
||||
extern u8 D_8037D1E8;
|
||||
|
||||
/* .code */
|
||||
f32 func_8029B3B0(f32 arg0) {
|
||||
if (func_8028B128()) {
|
||||
return arg0 * 0.2;
|
||||
}
|
||||
if (func_8028B120()) {
|
||||
return arg0 * 0.2;
|
||||
}
|
||||
return arg0;
|
||||
}
|
||||
|
||||
f32 func_8029B41C(void){
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
f32 sp1C;
|
||||
|
||||
player_getPosition(sp2C);
|
||||
func_8024C5CC(sp20);
|
||||
func_80257F18(sp2C, sp20, &sp1C);
|
||||
return sp1C;
|
||||
}
|
||||
|
||||
enum bs_e func_8029B458(void){
|
||||
enum bs_e sp1C;
|
||||
|
||||
sp1C = bs_getState();
|
||||
switch(_player_getTransformation()){
|
||||
case TRANSFORM_2_TERMITE:
|
||||
return BS_38_ANT_FALL;
|
||||
|
||||
case TRANSFORM_3_PUMPKIN:
|
||||
return BS_4B_PUMPKIN_FALL;
|
||||
|
||||
case TRANSFORM_5_CROC:
|
||||
return BS_61_CROC_FALL;
|
||||
|
||||
case TRANSFORM_4_WALRUS:
|
||||
if(func_802B8190(sp1C))
|
||||
return BS_82_WALRUS_SLED_LOSE_IN_AIR;
|
||||
return BS_6A_WALRUS_FALL;
|
||||
|
||||
case TRANSFORM_6_BEE:
|
||||
return BS_88_BEE_FALL;
|
||||
|
||||
default:
|
||||
if(bsbtrot_inSet(sp1C))
|
||||
return BS_71_BTROT_FALL;
|
||||
return BS_2F_FALL;
|
||||
}
|
||||
}
|
||||
|
||||
enum bs_e func_8029B504(void){
|
||||
enum bs_e sp1C;
|
||||
|
||||
if(miscflag_isTrue(0xF))
|
||||
return 0;
|
||||
|
||||
miscflag_set(0xF);
|
||||
sp1C = func_8029B458();
|
||||
if(bs_getState() != sp1C)
|
||||
return sp1C;
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
s32 func_8029B564(void){
|
||||
return 1;
|
||||
}
|
||||
|
||||
f32 func_8029B56C(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
|
||||
f32 phi_f0;
|
||||
f32 phi_f2;
|
||||
|
||||
phi_f0 = arg2;
|
||||
phi_f2 = 0.0f;
|
||||
while ((phi_f0 > 0.0f) || (arg1 < arg0)) {
|
||||
phi_f2 += 0.0166666675f;
|
||||
arg0 += phi_f0 * 0.0166666675f;
|
||||
phi_f0 += arg3 * 0.0166666675f;
|
||||
}
|
||||
return phi_f2;
|
||||
}
|
||||
|
||||
void func_8029B5EC(void){
|
||||
func_802DC560(0, 0);
|
||||
func_802E412C(1, 0);
|
||||
func_802E4078(MAP_1F_CS_START_RAREWARE, 0, 1);
|
||||
}
|
||||
|
||||
void func_8029B62C(void){
|
||||
if(item_empty(ITEM_16_LIFE)){
|
||||
if(!func_8031FF1C(BKPROG_BD_ENTER_LAIR_CUTSCENE) || func_8031FF1C(BKPROG_A6_FURNACE_FUN_COMPLETE)){
|
||||
func_8025A430(-1, 0x7D0, 3);
|
||||
func_8025A2B0();
|
||||
func_802DC528(0, 0);
|
||||
func_80324C58();
|
||||
timedFunc_set_0(5.0f, func_8029B5EC);
|
||||
}
|
||||
else{
|
||||
func_802E412C(1, 0);
|
||||
func_802E4078(MAP_83_CS_GAME_OVER_MACHINE_ROOM, 0, 1);
|
||||
|
||||
}
|
||||
}
|
||||
else{
|
||||
func_802E4048(D_8037D1E0[0], D_8037D1E0[1], 1);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029B6F0(void){
|
||||
if(item_empty(ITEM_16_LIFE)){
|
||||
func_8029B62C();
|
||||
}
|
||||
else{
|
||||
func_802E4078(D_8037D1E0[0], D_8037D1E0[1], 1);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029B73C(f32 arg0[3], f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
|
||||
f32 sp3C[3];
|
||||
f32 sp30[3];
|
||||
f32 temp_f20;
|
||||
|
||||
func_8028FA74(sp3C);
|
||||
if(sp3C[1] < (arg0[1] + arg2))
|
||||
return;
|
||||
|
||||
if(sp3C[1] > (arg0[1] + arg1))
|
||||
return;
|
||||
|
||||
sp30[0] = sp3C[0] - arg0[0];
|
||||
sp30[1] = 0.0f;
|
||||
sp30[2] = sp3C[2] - arg0[2];
|
||||
temp_f20 = (sp30[0]*sp30[0] + sp30[1]*sp30[1] + sp30[2]*sp30[2]);
|
||||
|
||||
if (!((arg3 * arg3) < temp_f20)) {
|
||||
temp_f20 = gu_sqrtf(temp_f20);
|
||||
ml_vec3f_set_length_copy(sp30, sp30, min_f(time_getDelta() * arg4, arg3 - temp_f20));
|
||||
ml_vec3f_add(sp3C, sp3C, sp30);
|
||||
func_8028FAB0(sp3C);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void func_8029B85C(ActorMarker *caller, enum asset_e text_id, s32 arg2){
|
||||
func_8030E6D4(SFX_EB_GRUNTY_LAUGH_2);
|
||||
func_8029B62C();
|
||||
}
|
||||
|
||||
void func_8029B890(void){
|
||||
if(!func_8031FF1C(BKPROG_A8_HAS_DIED) && !func_803203FC(2)){
|
||||
func_803114D0();
|
||||
if(bs_getState() == 0x54){
|
||||
func_8029B62C();
|
||||
return;
|
||||
}
|
||||
func_80311480(0xf81, 7, NULL, NULL, func_8029B85C, NULL);
|
||||
func_80320004(BKPROG_A8_HAS_DIED, TRUE);
|
||||
}
|
||||
else{
|
||||
func_8029B62C();
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029B930(void){
|
||||
func_803114D0();
|
||||
}
|
||||
|
||||
ParticleEmitter *func_8029B950(f32 pos[3],f32 arg1){
|
||||
return func_802EDD8C(pos, arg1, func_80294500());
|
||||
}
|
||||
|
||||
void func_8029B984(f32 dst[3]){
|
||||
f32 plyr_pos[3];
|
||||
f32 sp18[3];
|
||||
|
||||
_player_getPosition(plyr_pos);
|
||||
func_8024C5CC(sp18);
|
||||
ml_vec3f_diff_copy(dst, sp18, plyr_pos);
|
||||
}
|
||||
|
||||
f32 func_8029B9C0(void){
|
||||
f32 sp1C[3];
|
||||
|
||||
func_8029B984(sp1C);
|
||||
return sp1C[0]*sp1C[0] + sp1C[1]*sp1C[1] + sp1C[2]*sp1C[2];
|
||||
}
|
||||
|
||||
f32 func_8029B9FC(void){
|
||||
f32 sp1C[3];
|
||||
|
||||
func_8029B984(sp1C);
|
||||
return gu_sqrtf(sp1C[0]*sp1C[0] + sp1C[1]*sp1C[1] + sp1C[2]*sp1C[2]);
|
||||
}
|
||||
|
||||
f32 func_8029BA44(void){
|
||||
f32 sp1C[3];
|
||||
|
||||
func_8029B984(sp1C);
|
||||
return gu_sqrtf(sp1C[0]*sp1C[0] + sp1C[2]*sp1C[2]);
|
||||
}
|
||||
|
||||
enum bs_e func_8029BA80(void){
|
||||
switch (_player_getTransformation())
|
||||
{
|
||||
case TRANSFORM_3_PUMPKIN:
|
||||
return BS_4B_PUMPKIN_FALL;
|
||||
|
||||
case TRANSFORM_2_TERMITE:
|
||||
return BS_38_ANT_FALL;
|
||||
|
||||
case TRANSFORM_5_CROC:
|
||||
return BS_61_CROC_FALL;
|
||||
|
||||
case TRANSFORM_4_WALRUS:
|
||||
return BS_6A_WALRUS_FALL;
|
||||
|
||||
case TRANSFORM_6_BEE:
|
||||
return BS_88_BEE_FALL;
|
||||
|
||||
case TRANSFORM_1_BANJO:
|
||||
default:
|
||||
return BS_2F_FALL;
|
||||
}
|
||||
}
|
||||
|
||||
enum bs_14420_e func_8029BAF0(void){
|
||||
enum bs_e state_id = bs_getState();
|
||||
switch (_player_getTransformation())
|
||||
{
|
||||
case TRANSFORM_3_PUMPKIN://L8029BB2C
|
||||
return BS14420_1_PUMPKIN;
|
||||
|
||||
case TRANSFORM_2_TERMITE://L8029BB34
|
||||
return BS14420_0_TERMITE;
|
||||
|
||||
case TRANSFORM_5_CROC://L8029BB3C
|
||||
return BS14420_2_CROC;
|
||||
|
||||
case TRANSFORM_4_WALRUS://L8029BB44
|
||||
if (func_802B8190(state_id)) {
|
||||
return BS14420_A_WALRUS_SLED;
|
||||
}
|
||||
return BS14420_3_WALRUS;
|
||||
|
||||
case TRANSFORM_6_BEE://L8029BB64
|
||||
return BS14420_B_BEE;
|
||||
|
||||
case TRANSFORM_1_BANJO://L8029BB6C
|
||||
default:
|
||||
if (bsclimb_inSet(state_id)) {
|
||||
return BS14420_C_CLIMB;
|
||||
}
|
||||
if (bsbfly_inSet(state_id)) {
|
||||
return BS14420_7_FLY;
|
||||
}
|
||||
if (bsbtrot_inSet(state_id)) {
|
||||
return BS14420_8_TROT;
|
||||
}
|
||||
if (func_80291670(2) != 0.0f) {
|
||||
return 9;
|
||||
}
|
||||
if (miscflag_isTrue(0x18)) {
|
||||
return BS14420_5_UNDERWATER;
|
||||
}
|
||||
if (func_8028ECAC() == BSGROUP_3_WONDERWING) {
|
||||
return BS14420_D_WONDERWING;
|
||||
}
|
||||
if (player_inWater()) {
|
||||
switch(func_8028EE84()){
|
||||
case BSWATERGROUP_2_UNDERWATER:
|
||||
return BS14420_5_UNDERWATER;
|
||||
case BSWATERGROUP_1_SURFACE:
|
||||
default:
|
||||
return BS14420_4_WATER_SURFACE;
|
||||
|
||||
}
|
||||
}
|
||||
return 6;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029BC60(enum asset_e *anim_id, f32 *anim_duration) {
|
||||
s32 indx;
|
||||
|
||||
indx = func_8029BAF0();
|
||||
*anim_id = D_80364650[indx].anim_id;
|
||||
*anim_duration = D_80364650[indx].anim_duration;
|
||||
}
|
||||
|
||||
void func_8029BCAC(enum asset_e *anim_id, f32 *anim_duration) {
|
||||
s32 indx;
|
||||
|
||||
indx = func_8029BAF0();
|
||||
*anim_id = D_803646C0[indx].anim_id;
|
||||
*anim_duration = D_803646C0[indx].anim_duration;
|
||||
}
|
||||
|
||||
void func_8029BCF8(enum asset_e *anim_id, f32 *anim_duration) {
|
||||
s32 indx;
|
||||
|
||||
indx = func_8029BAF0();
|
||||
*anim_id = D_803647A0[indx].anim_id;
|
||||
*anim_duration = D_803647A0[indx].anim_duration;
|
||||
}
|
||||
|
||||
void func_8029BD44(enum asset_e *anim_id, f32 *anim_duration) {
|
||||
s32 indx;
|
||||
|
||||
indx = func_8029BAF0();
|
||||
*anim_id = D_80364730[indx].anim_id;
|
||||
*anim_duration = D_80364730[indx].anim_duration;
|
||||
}
|
||||
|
||||
enum bs_e func_8029BD90(void) {
|
||||
return D_80364650[func_8029BAF0()].state_id;
|
||||
}
|
||||
|
||||
enum bs_e func_8029BDBC(void) {
|
||||
return D_80364624[func_8029BAF0()];
|
||||
}
|
||||
|
||||
enum bs_e func_8029BDE8(void) {
|
||||
return D_80364640[func_8029BAF0()];
|
||||
}
|
||||
|
||||
void func_8029BE10(enum asset_e *anim_id, f32 *anim_duration) {
|
||||
s32 indx;
|
||||
|
||||
indx = func_8029BAF0();
|
||||
*anim_id = D_80364810[indx].anim_id;
|
||||
*anim_duration = D_80364810[indx].anim_duration;
|
||||
}
|
||||
|
||||
enum bs_e func_8029BE5C(void) {
|
||||
return D_80364810[func_8029BAF0()].state_id;
|
||||
}
|
||||
|
||||
void func_8029BE88(enum asset_e *anim_id, f32 *anim_duration) {
|
||||
s32 indx;
|
||||
|
||||
indx = func_8029BAF0();
|
||||
*anim_id = D_80364880[indx].anim_id;
|
||||
*anim_duration = D_80364880[indx].anim_duration;
|
||||
}
|
||||
|
||||
enum bs_e func_8029BED4(void) {
|
||||
return D_80364880[func_8029BAF0()].state_id;
|
||||
}
|
||||
|
||||
void func_8029BF00(enum asset_e *anim_id, f32 *anim_duration) {
|
||||
s32 indx;
|
||||
|
||||
indx = func_8029BAF0();
|
||||
*anim_id = D_803648F0[indx].anim_id;
|
||||
*anim_duration = D_803648F0[indx].anim_duration;
|
||||
}
|
||||
|
||||
enum bs_e func_8029BF4C(void) {
|
||||
return D_803648F0[func_8029BAF0()].state_id;
|
||||
}
|
||||
|
||||
enum bs_e bs_getIdleState(void){
|
||||
switch (_player_getTransformation()) {
|
||||
case TRANSFORM_3_PUMPKIN:
|
||||
return BS_48_PUMPKIN_IDLE;
|
||||
|
||||
case TRANSFORM_2_TERMITE:
|
||||
return BS_35_ANT_IDLE;
|
||||
|
||||
case TRANSFORM_5_CROC:
|
||||
return BS_5E_CROC_IDLE;
|
||||
|
||||
case TRANSFORM_4_WALRUS:
|
||||
return BS_67_WALRUS_IDLE;
|
||||
|
||||
case TRANSFORM_6_BEE:
|
||||
return BS_85_BEE_IDLE;
|
||||
|
||||
case TRANSFORM_1_BANJO:
|
||||
default:
|
||||
if (miscflag_isTrue(0x16)) {
|
||||
return BS_24_FLY;
|
||||
}
|
||||
if (miscflag_isTrue(0x18)) {
|
||||
return BS_2B_DIVE_IDLE;
|
||||
}
|
||||
if (func_80291670(3) != 0.0f) {
|
||||
return BS_15_BTROT_IDLE;
|
||||
}
|
||||
if (func_80291670(2) != 0.0f) {
|
||||
return BS_26_LONGLEG_IDLE;
|
||||
}
|
||||
if (player_inWater()) {
|
||||
if (player_getYPosition() > (func_80294500() - 80.0f)) {
|
||||
return BS_2D_SWIM_IDLE;
|
||||
}
|
||||
return BS_2B_DIVE_IDLE;
|
||||
}
|
||||
if (func_8029A918()) {
|
||||
return BS_15_BTROT_IDLE;
|
||||
}
|
||||
return BS_1_IDLE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029C0D0(void) {
|
||||
f32 sp3C[3];
|
||||
ParticleEmitter *p_ctrl;
|
||||
f32 sp34;
|
||||
|
||||
if (func_80294574()) {
|
||||
_player_getPosition(sp3C);
|
||||
sp3C[1] = sp34 = func_80294500();
|
||||
p_ctrl = func_802F4094(sp3C, 35.0f);
|
||||
func_802F3554(3, sp3C);
|
||||
particleEmitter_setParticleVelocityRange(p_ctrl, -350.0f, 300.0f, -350.0f, 350.0f, 500.0f, 350.0f);
|
||||
particleEmitter_emitN(p_ctrl, 0xA);
|
||||
particleEmitter_setParticleVelocityRange(p_ctrl, -150.0f, 500.0f, -150.0f, 150.0f, 800.0f, 150.0f);
|
||||
particleEmitter_emitN(p_ctrl, 0xA);
|
||||
|
||||
func_802F4200(sp3C);
|
||||
sp3C[1] -= 30.0f;
|
||||
p_ctrl = func_802EDD8C(sp3C, 20.0f, sp34);
|
||||
particleEmitter_setParticleVelocityRange(p_ctrl, -60.0f, -250.0f, -60.0f, 60.0f, -150.0f, 60.0f);
|
||||
particleEmitter_emitN(p_ctrl, 8);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8029C22C(void) {
|
||||
|
||||
if(func_80294574() && func_80294500() > player_getYPosition())
|
||||
return;
|
||||
|
||||
D_80364620 = D_80364620 ? FALSE : TRUE;
|
||||
if (func_80297AB8() > 100.0f) {
|
||||
if (D_80364620) {
|
||||
func_80292864(func_80297A7C() - 20.0f, 20.0f);
|
||||
}
|
||||
else{
|
||||
func_80292864(func_80297A7C() + 20.0f, 20.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029C304(s32 arg0) {
|
||||
f32 sp1C[3];
|
||||
|
||||
_player_getPosition(sp1C);
|
||||
sp1C[1] = func_80294500();
|
||||
func_802F3584(arg0, sp1C, func_802946CC());
|
||||
}
|
||||
|
||||
void func_8029C348(void) {
|
||||
f32 sp1C[3];
|
||||
|
||||
_player_getPosition(sp1C);
|
||||
sp1C[0] += randf2(-30.0f, 30.0f);
|
||||
sp1C[1] += randf2(60.0f, 70.0f);
|
||||
sp1C[2] += randf2(-30.0f, 30.0f);
|
||||
func_803541C0(2);
|
||||
func_803541CC(0x50);
|
||||
func_80354030(sp1C, 0.5);
|
||||
}
|
||||
|
||||
void func_8029C3E8(f32 arg0, f32 arg1) {
|
||||
f32 sp3C[3];
|
||||
f32 sp30[3];
|
||||
f32 sp2C;
|
||||
f32 sp28;
|
||||
|
||||
_player_getPosition(sp30);
|
||||
sp28 = ml_map_f(func_80297AB8(), 0.0f, 1000.0f, arg0, arg1);
|
||||
sp2C = func_8028EBA4();
|
||||
func_802589E4(sp3C, sp2C, sp28);
|
||||
sp3C[1] = 0.0f;
|
||||
sp30[0] += sp3C[0];\
|
||||
sp30[1] += sp3C[1];\
|
||||
sp30[2] += sp3C[2];
|
||||
sp30[0] += randf2(-10.0f, 10.0f);
|
||||
sp30[1] += 4.0f;
|
||||
sp30[2] += randf2(-10.0f, 10.0f);
|
||||
func_80354380(sp30, 0.45f);
|
||||
}
|
||||
|
||||
void func_8029C4E4(bool arg0) {
|
||||
f32 sp3C[3];
|
||||
f32 sp38;
|
||||
ParticleEmitter *sp34;
|
||||
|
||||
if (func_80294574()) {
|
||||
if (arg0) {
|
||||
func_80292260(sp3C);
|
||||
} else {
|
||||
func_8029223C(sp3C);
|
||||
}
|
||||
sp3C[1] = func_80294500();
|
||||
sp38 = yaw_get();
|
||||
sp34 = func_802F4094(sp3C, 8.0f);
|
||||
particleEmitter_setSphericalParticleVelocityRange(sp34, -140.0f, sp38 - 35.0f, 200.0f, -120.0f, sp38 + 35.0f, 250.0f);
|
||||
particleEmitter_emitN(sp34, 3);
|
||||
particleEmitter_setSphericalParticleVelocityRange(sp34, -100.0f, sp38 - 35.0f, 300.0f, -90.0f, sp38 + 35.0f, 400.0f);
|
||||
particleEmitter_emitN(sp34, 2);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029C5E8(void){
|
||||
func_8029AE1C();
|
||||
}
|
||||
|
||||
#ifndef NONMATCHING
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_14420/func_8029C608.s")
|
||||
#else
|
||||
void func_8029C608(void) {
|
||||
enum level_e level_id;
|
||||
enum map_e sp18;
|
||||
s32 phi_v0;
|
||||
|
||||
level_id = level_get();
|
||||
if ((level_id == 0) || (level_id == LEVEL_6_LAIR)) {
|
||||
sp18 = map_get();
|
||||
phi_v0 = func_803348CC();
|
||||
} else {
|
||||
sp18 = func_8030ADD8(level_id);
|
||||
phi_v0 = func_8030AE24(level_id);
|
||||
}
|
||||
D_8037D1E0[1] = phi_v0;
|
||||
D_8037D1E0[0] = sp18;
|
||||
}
|
||||
#endif
|
||||
|
||||
void func_8029C674(void) {
|
||||
f32 sp1C[3];
|
||||
|
||||
D_8037D1E8 = FALSE;
|
||||
if (func_80298850() == 4) {
|
||||
D_8037D1E8 = TRUE;
|
||||
miscflag_set(0x17);
|
||||
func_802BE8D8();
|
||||
func_8028E9C4(5, sp1C);
|
||||
func_802C2A64(sp1C);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029C6D0(void) {
|
||||
f32 sp3C[3];
|
||||
f32 sp30[3];
|
||||
f32 sp24[3];
|
||||
f32 sp18[3];
|
||||
|
||||
if (func_80298850() == 4 && D_8037D1E8) {
|
||||
func_8028E9C4(5, sp18);
|
||||
func_802C2A64(sp18);
|
||||
func_8028E9C4(5, sp30);
|
||||
func_80298800(sp24);
|
||||
func_802BC434(sp3C, sp24, sp30);
|
||||
func_802C2A8C(sp3C);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029C748(void) {
|
||||
if (D_8037D1E8) {
|
||||
miscflag_clear(0x17);
|
||||
func_802BE91C();
|
||||
}
|
||||
}
|
||||
|
||||
enum bs_e func_8029C780(void){
|
||||
if(button_held(BUTTON_Z) && can_flip())
|
||||
return BS_12_BFLIP;
|
||||
|
||||
if(miscflag_isTrue(MISC_FLAG_2_ON_SPRING_PAD))
|
||||
return BS_5_JUMP;
|
||||
|
||||
if(miscflag_isTrue(MISC_FLAG_1_ON_FLIGHT_PAD))
|
||||
return BS_23_FLY_ENTER;
|
||||
|
||||
return BS_5_JUMP;
|
||||
}
|
||||
|
||||
void func_8029C7F4(s32 arg0, s32 arg1, s32 arg2, s32 arg3){
|
||||
func_80289F10(arg0);
|
||||
func_802991A8(arg1);
|
||||
func_8029957C(arg2);
|
||||
func_802978DC(arg3);
|
||||
}
|
||||
|
||||
void func_8029C834(enum map_e map_id, s32 exit_id){
|
||||
D_8037D1E0[0] = map_id;
|
||||
D_8037D1E0[1] = exit_id;
|
||||
}
|
||||
|
||||
void func_8029C848(AnimCtrl *arg0) {
|
||||
switch(_player_getTransformation()) {
|
||||
case TRANSFORM_2_TERMITE: //L8029C880
|
||||
animctrl_setIndex(arg0, ANIM_TERMITE_IDLE);
|
||||
animctrl_setDuration(arg0, 2.0f);
|
||||
break;
|
||||
|
||||
case TRANSFORM_3_PUMPKIN: //L8029C8A0
|
||||
animctrl_setIndex(arg0, 0xA0);
|
||||
animctrl_setDuration(arg0, 0.8f);
|
||||
break;
|
||||
|
||||
case TRANSFORM_5_CROC: //L8029C8C4
|
||||
animctrl_setIndex(arg0, 0xE1);
|
||||
animctrl_setDuration(arg0, 1.0f);
|
||||
break;
|
||||
|
||||
case TRANSFORM_4_WALRUS: //L8029C8E4
|
||||
animctrl_setIndex(arg0, 0x11F);
|
||||
animctrl_setDuration(arg0, 1.0f);
|
||||
break;
|
||||
|
||||
case TRANSFORM_6_BEE: //L8029C904
|
||||
animctrl_setIndex(arg0, ASSET_1DC_ANIM_BEE_FLY);
|
||||
animctrl_setDuration(arg0, 0.38f);
|
||||
break;
|
||||
|
||||
case TRANSFORM_1_BANJO:
|
||||
default:
|
||||
if (player_inWater()) {
|
||||
animctrl_setIndex(arg0, 0x57);
|
||||
animctrl_setDuration(arg0, 1.2f);
|
||||
}
|
||||
else{
|
||||
animctrl_setIndex(arg0, 0x6F);
|
||||
animctrl_setDuration(arg0, 5.5f);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029C984(void){
|
||||
func_8025AB00();
|
||||
func_8025A2FC(0, 4000);
|
||||
func_8025A70C(COMUSIC_1A_DEATH);
|
||||
func_8024BD08(0);
|
||||
}
|
||||
|
||||
s32 func_8029C9C0(s32 arg0){
|
||||
if(miscflag_isTrue(0xF))
|
||||
return arg0;
|
||||
|
||||
if(button_pressed(BUTTON_A))
|
||||
arg0 = func_8029C780();
|
||||
|
||||
if(button_pressed(BUTTON_B) && can_claw())
|
||||
arg0 = BS_CLAW;
|
||||
|
||||
if(button_held(BUTTON_Z) && should_beak_barge())
|
||||
arg0 = BS_BBARGE;
|
||||
|
||||
if(func_80294F78())
|
||||
arg0 = func_802926C0();
|
||||
|
||||
if(player_isSliding())
|
||||
arg0 = BS_SLIDE;
|
||||
|
||||
return arg0;
|
||||
}
|
||||
|
||||
s32 func_8029CA94(s32 arg0){
|
||||
if(miscflag_isTrue(0x19))
|
||||
arg0 = func_80292738();
|
||||
|
||||
if(miscflag_isTrue(0x1A))
|
||||
arg0 = (player_getTransformation() == TRANSFORM_6_BEE) ? 0x46 : BS_34_JIG_NOTEDOOR;
|
||||
|
||||
if(miscflag_isTrue(MISC_FLAG_E_TOUCHING_WADING_BOOTS))
|
||||
arg0 = BS_25_LONGLEG_ENTER;
|
||||
|
||||
if(miscflag_isTrue(MISC_FLAG_10_TOUCHING_TURBO_TRAINERS))
|
||||
arg0 = BS_14_BTROT_ENTER;
|
||||
|
||||
if(miscflag_isTrue(0x6))
|
||||
arg0 = BS_53_TIMEOUT;
|
||||
|
||||
if(miscflag_isTrue(0x7))
|
||||
arg0 = BS_44_JIG_JIGGY;
|
||||
|
||||
if(miscflag_isTrue(0x14))
|
||||
arg0 = (player_getTransformation() == TRANSFORM_4_WALRUS) ? 0x80 : 0x53;
|
||||
|
||||
miscflag_clear(0xF);
|
||||
|
||||
return arg0;
|
||||
}
|
||||
|
||||
void func_8029CB84(void){
|
||||
pitch_setIdeal(0.0f);
|
||||
pitch_applyIdeal();
|
||||
|
||||
roll_setIdeal(0.0f);
|
||||
roll_applyIdeal();
|
||||
}
|
||||
|
||||
void func_8029CBC4(void){
|
||||
func_8025A55C(-1, 4000, 0xc);
|
||||
func_8024BD08(1);
|
||||
}
|
||||
|
||||
void func_8029CBF4(void){
|
||||
if(item_getCount(ITEM_E_JIGGY) == 10){
|
||||
if( jiggyscore_total() == 100 && func_8031FF1C(BKPROG_FC_DEFEAT_GRUNTY)){
|
||||
timedFunc_set_3(4.1f, (TFQM3)func_802E4078, MAP_95_CS_END_ALL_100, 0, 1);
|
||||
}//L8029CC58
|
||||
|
||||
timedFunc_set_0(4.0f, func_8029CBC4);
|
||||
func_8025A6EC(COMUSIC_42_NOTEDOOR_OPENING_FANFARE, -1);
|
||||
}//L8029CC7C
|
||||
else{
|
||||
if( jiggyscore_total() == 100 && func_8031FF1C(BKPROG_FC_DEFEAT_GRUNTY)){
|
||||
func_802E4078(MAP_95_CS_END_ALL_100, 0, 1);
|
||||
}
|
||||
func_8029CBC4();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void func_8029CCC4(void){
|
||||
if(miscflag_isFalse(7)) return;
|
||||
if( miscflag_isTrue(0xF)
|
||||
&& miscflag_isFalse(6)
|
||||
&& miscflag_isFalse(20)
|
||||
){
|
||||
miscflag_clear(0xF);
|
||||
}
|
||||
miscflag_clear(7);
|
||||
func_802B0CD8();
|
||||
item_inc(ITEM_E_JIGGY);
|
||||
if(jiggyscore_total() == 100 && func_8031FF1C(BKPROG_FC_DEFEAT_GRUNTY)){
|
||||
func_8028F918(2);
|
||||
}
|
||||
func_8024BD08(0);
|
||||
func_8025A55C(0, 4000, 0xC);
|
||||
func_8025A6EC(COMUSIC_D_JINGLE_JIGGY_COLLECTED, -1);
|
||||
timedFunc_set_0(4.0f, func_8029CBF4);
|
||||
}
|
||||
|
||||
void func_8029CDA0(void){
|
||||
item_inc(ITEM_E_JIGGY);
|
||||
}
|
||||
|
||||
void func_8029CDC0(void) {
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
|
||||
_player_getPosition(sp20);
|
||||
sp20[0] += (randf() * 90.0f) - 45.0f;
|
||||
sp20[2] += (randf() * 90.0f) - 45.0f;
|
||||
sp2C[0] = (randf() * 20.0f) - 10.0f;
|
||||
sp2C[1] = (randf() * 50.0f) + 120.0f;
|
||||
sp2C[2] = (randf() * 20.0f) - 10.0f;
|
||||
func_80356074(sp20, sp2C, 80.0f, 220.0f);
|
||||
}
|
||||
95
src/core2/code_1550.c
Normal file
95
src/core2/code_1550.c
Normal file
@@ -0,0 +1,95 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
#include "animation.h"
|
||||
|
||||
AnimationFile *animcache_get(enum asset_e assest_id);
|
||||
|
||||
/* .data */
|
||||
s16 D_803635C0[] = {0x1, 0x3, 0x5, 0xC, 0xE, 0x17, 0x18, 0x19, 0x1A, 0x1C, 0x1D, 0};
|
||||
|
||||
/* .bss */
|
||||
AnimationCache D_8037A8C0[0x2CA];
|
||||
|
||||
/* .code */
|
||||
void func_802884E0(void){
|
||||
s16 *phi_v0;
|
||||
|
||||
for( phi_v0 = D_803635C0; *phi_v0 != 0; phi_v0++){
|
||||
D_8037A8C0[*phi_v0].unk4_0 = 1;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void animcache_loadAll(void){
|
||||
s32 i;
|
||||
for(i = 0; i < 0x2CA; i++){
|
||||
if(D_8037A8C0[i].unk4_0){
|
||||
animcache_get(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AnimationFile *animcache_get(enum asset_e asset_id){
|
||||
if(!D_8037A8C0[asset_id].unk0){
|
||||
D_8037A8C0[asset_id].unk0 = (AnimationFile *) assetcache_get(asset_id);
|
||||
}
|
||||
D_8037A8C0[asset_id].unk4_15 = 30;
|
||||
return D_8037A8C0[asset_id].unk0;
|
||||
}
|
||||
|
||||
void animcache_free(void){
|
||||
s32 i;
|
||||
for(i = 0; i < 0x2CA; i++){
|
||||
if(D_8037A8C0[i].unk0){
|
||||
assetcache_release(D_8037A8C0[i].unk0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void animcache_init(void){
|
||||
s32 i = 0;
|
||||
for(i = 0; i < 0x2CA; i++){
|
||||
D_8037A8C0[i].unk0 = NULL;
|
||||
D_8037A8C0[i].unk4_15 = 0;
|
||||
D_8037A8C0[i].unk4_0 = 0;
|
||||
}
|
||||
func_802884E0();
|
||||
animcache_loadAll();
|
||||
}
|
||||
|
||||
void func_8028873C(s32 arg0){
|
||||
s32 i;
|
||||
if(arg0){
|
||||
for(i = 0; i < 0x2CA; i++){
|
||||
if(D_8037A8C0[i].unk0 && D_8037A8C0[i].unk4_0 && (D_8037A8C0[i].unk4_15 < 30)){
|
||||
assetcache_release(D_8037A8C0[i].unk0);
|
||||
D_8037A8C0[i].unk0 = NULL;
|
||||
D_8037A8C0[i].unk4_0 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
for(i = 0; i < 0x2CA; i++){
|
||||
if(D_8037A8C0[i].unk0 && !D_8037A8C0[i].unk4_0 && (D_8037A8C0[i].unk4_15 < 30)){
|
||||
assetcache_release(D_8037A8C0[i].unk0);
|
||||
D_8037A8C0[i].unk0 = NULL;
|
||||
if(func_80254BC4(1))
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_80288834(void){
|
||||
s32 i;
|
||||
for(i = 0; i < 0x2CA; i++){
|
||||
if(D_8037A8C0[i].unk0 && !D_8037A8C0[i].unk4_0){
|
||||
if(--D_8037A8C0[i].unk4_15 == 0){
|
||||
assetcache_release(D_8037A8C0[i].unk0);
|
||||
D_8037A8C0[i].unk0 = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
41
src/core2/code_15F20.c
Normal file
41
src/core2/code_15F20.c
Normal file
@@ -0,0 +1,41 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_8033DE30(s32);
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D1F0[5];
|
||||
f32 D_8037D1F8[5];
|
||||
|
||||
/* .code */
|
||||
s32 func_8029CEB0(void){
|
||||
return func_802944F4();
|
||||
}
|
||||
|
||||
f32 func_8029CED0(void) {
|
||||
s32 temp_v0;
|
||||
|
||||
temp_v0 = func_8029CEB0();
|
||||
if (D_8037D1F0[temp_v0] != 0) {
|
||||
return D_8037D1F8[temp_v0];
|
||||
}
|
||||
return func_8033DE30(temp_v0);
|
||||
}
|
||||
|
||||
bool func_8029CF20(s32 arg0) {
|
||||
return func_802944F4() == arg0;
|
||||
}
|
||||
|
||||
void func_8029CF48(s32 arg0, s32 arg1, f32 arg2) {
|
||||
D_8037D1F0[arg0] = arg1;
|
||||
D_8037D1F8[arg0] = arg2;
|
||||
}
|
||||
|
||||
void func_8029CF6C(void) {
|
||||
s32 i;
|
||||
|
||||
for(i = 0; i < 5; i++){
|
||||
D_8037D1F0[i] = 0;
|
||||
}
|
||||
}
|
||||
322
src/core2/code_16010.c
Normal file
322
src/core2/code_16010.c
Normal file
@@ -0,0 +1,322 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern int func_80258424(f32 vec[3], f32 minX, f32 minY, f32 minZ, f32 maxX, f32 maxY, f32 maxZ);
|
||||
|
||||
/* .bss */
|
||||
u8 D_8037D210;
|
||||
u8 D_8037D211;
|
||||
u8 D_8037D212;
|
||||
f32 D_8037D218[3];
|
||||
f32 D_8037D224;
|
||||
|
||||
/*.code */
|
||||
bool func_8029CFA0(void){
|
||||
return func_80294574() && func_80294500() > player_getYPosition();
|
||||
}
|
||||
|
||||
void func_8029CFF8(void){
|
||||
func_8030DA44(D_8037D210);
|
||||
}
|
||||
|
||||
void func_8029D01C(void){
|
||||
miscflag_clear(0x13);
|
||||
D_8037D210 = func_8030D90C();
|
||||
D_8037D212 = 0;
|
||||
}
|
||||
|
||||
void func_8029D050(void){
|
||||
func_80299E48();
|
||||
func_8030E394(D_8037D210);
|
||||
sfxsource_setSfxId(D_8037D210, SFX_14D_BANJO_FREEZING);
|
||||
sfxsource_setSampleRate(D_8037D210, 30000);
|
||||
func_8030DBB4(D_8037D210, 1.2f);
|
||||
func_8030DD14(D_8037D210, 3);
|
||||
func_8030E2C4(D_8037D210);
|
||||
|
||||
D_8037D211 = 2;
|
||||
D_8037D224 = 1.0f;
|
||||
}
|
||||
|
||||
void func_8029D0D8(void) {
|
||||
func_8030E394(D_8037D210);
|
||||
sfxsource_setSfxId(D_8037D210, SFX_B0_SIZZLING_NOISE);
|
||||
sfxsource_setSampleRate(D_8037D210, 32000);
|
||||
func_8030DBB4(D_8037D210, randf2(0.7f, 0.8f));
|
||||
func_8030DD14(D_8037D210, 3);
|
||||
func_8030E2C4(D_8037D210);
|
||||
}
|
||||
|
||||
void func_8029D154(void){
|
||||
f32 sp1C[3];
|
||||
player_getPosition(sp1C);
|
||||
func_8032813C(0x188, sp1C, (s32)yaw_get());
|
||||
}
|
||||
|
||||
void func_8029D194(void) {
|
||||
func_802C3BF8(&func_8029D154);
|
||||
FUNC_8030E624(SFX_A_BANJO_LANDING_05, 1.0f, 28000);
|
||||
func_8030E394(D_8037D210);
|
||||
sfxsource_setSfxId(D_8037D210, SFX_6D_CROC_BITE);
|
||||
sfxsource_setSampleRate(D_8037D210, 22000);
|
||||
func_8030DD14(D_8037D210, 3);
|
||||
player_getPosition(D_8037D218);
|
||||
D_8037D218[1] = func_80294500();
|
||||
D_8037D212 = 4;
|
||||
D_8037D224 = 0.0f;
|
||||
}
|
||||
|
||||
void func_8029D230(void) {
|
||||
switch (map_get()) {
|
||||
case MAP_12_GV_GOBIS_VALLEY: //L8029D2C0
|
||||
case MAP_31_RBB_RUSTY_BUCKET_BAY: //L8029D2C0
|
||||
case MAP_3C_RBB_KITCHEN: //L8029D2C0
|
||||
case MAP_6E_GL_GV_LOBBY:
|
||||
case MAP_8E_GL_FURNACE_FUN:
|
||||
func_8029D0D8();
|
||||
break;
|
||||
|
||||
case MAP_27_FP_FREEZEEZY_PEAK: //L8029D2D0
|
||||
case MAP_7F_FP_WOZZAS_CAVE:
|
||||
func_8029D050();
|
||||
break;
|
||||
|
||||
case MAP_D_BGS_BUBBLEGLOOP_SWAMP:
|
||||
case MAP_72_GL_BGS_LOBBY:
|
||||
func_8029D194();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029D2F8(void) {
|
||||
u8 temp_v0;
|
||||
|
||||
if (D_8037D211 != 0) {
|
||||
if ((func_8029CFA0() == 0) && (func_8028F2FC() == 0) && (func_8030E3FC(D_8037D210) != 0)) {
|
||||
func_8030E394(D_8037D210);
|
||||
D_8037D211 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
D_8037D224 = max_f(0.0f, D_8037D224 - time_getDelta());
|
||||
if (D_8037D224 == 0.0f) {
|
||||
if (D_8037D211 == 1) {
|
||||
func_8029D050();
|
||||
}
|
||||
else if (D_8037D211 == 2) {
|
||||
func_8030E394(D_8037D210);
|
||||
sfxsource_setSfxId(D_8037D210, SFX_134_FREEZING_SHIVER);
|
||||
sfxsource_setSampleRate(D_8037D210, 20000);
|
||||
func_8030DBB4(D_8037D210, 1.2f);
|
||||
func_8030DD14(D_8037D210, 3);
|
||||
func_8030E2C4(D_8037D210);
|
||||
D_8037D211 = 2;
|
||||
D_8037D224 = 1.5f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_8029D448(void) {
|
||||
f32 sp1C;
|
||||
s32 temp_a1;
|
||||
|
||||
if (func_8030E3FC(D_8037D210) != 0) {
|
||||
sp1C = time_getDelta();
|
||||
temp_a1 = func_8030E1C4(D_8037D210) - (s32) (sp1C * 30000.0);
|
||||
if (temp_a1 <= 0) {
|
||||
func_8030E394(D_8037D210);
|
||||
return;
|
||||
}
|
||||
sfxsource_setSampleRate(D_8037D210, temp_a1);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029D4D8(void) {
|
||||
if (D_8037D212 != 0) {
|
||||
D_8037D224 = max_f(0.0f, D_8037D224 - time_getDelta());
|
||||
if (!(D_8037D224 > 0.0f)) {
|
||||
D_8037D212 += -1;
|
||||
D_8037D224 = randf2(0.12f, 0.22f);
|
||||
func_8030DBB4(D_8037D210, randf2(0.95f, 1.05f));
|
||||
func_8030E2C4(D_8037D210);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029D5A4(void){
|
||||
switch (map_get()) {
|
||||
case MAP_12_GV_GOBIS_VALLEY:
|
||||
case MAP_31_RBB_RUSTY_BUCKET_BAY:
|
||||
case MAP_3C_RBB_KITCHEN:
|
||||
case MAP_6E_GL_GV_LOBBY:
|
||||
case MAP_8E_GL_FURNACE_FUN:
|
||||
func_8029D448();
|
||||
break;
|
||||
|
||||
case MAP_27_FP_FREEZEEZY_PEAK:
|
||||
case MAP_7F_FP_WOZZAS_CAVE:
|
||||
func_8029D2F8();
|
||||
break;
|
||||
|
||||
case MAP_D_BGS_BUBBLEGLOOP_SWAMP:
|
||||
case MAP_72_GL_BGS_LOBBY:
|
||||
func_8029D4D8();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool func_8029D66C(void){
|
||||
f32 sp2C[3];
|
||||
|
||||
switch (map_get()) {
|
||||
case MAP_D_BGS_BUBBLEGLOOP_SWAMP:
|
||||
case MAP_12_GV_GOBIS_VALLEY:
|
||||
case MAP_1B_MMM_MAD_MONSTER_MANSION:
|
||||
case MAP_3C_RBB_KITCHEN:
|
||||
case MAP_43_CCW_SPRING:
|
||||
case MAP_44_CCW_SUMMER:
|
||||
case MAP_45_CCW_AUTUMN:
|
||||
case MAP_46_CCW_WINTER:
|
||||
case MAP_6E_GL_GV_LOBBY:
|
||||
case MAP_72_GL_BGS_LOBBY:
|
||||
case MAP_8E_GL_FURNACE_FUN://L8029D6FC
|
||||
return func_80294610(0xE000) && func_8028B2E8();
|
||||
|
||||
case MAP_31_RBB_RUSTY_BUCKET_BAY:
|
||||
player_getPosition(sp2C);
|
||||
return player_inWater() && func_80258424(sp2C, -9000.0f, -3000.0f, -3850.0f, -6820.0f, -700.0f, -1620.0f);
|
||||
break;
|
||||
|
||||
case MAP_27_FP_FREEZEEZY_PEAK:
|
||||
case MAP_7F_FP_WOZZAS_CAVE://L8029D790
|
||||
return player_inWater();
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//can_take_ground_damage
|
||||
bool func_8029D7B4(void){
|
||||
enum bs_e sp1C;
|
||||
|
||||
sp1C = bs_getState();
|
||||
|
||||
switch (map_get()) {
|
||||
case MAP_D_BGS_BUBBLEGLOOP_SWAMP:
|
||||
case MAP_12_GV_GOBIS_VALLEY:
|
||||
case MAP_1B_MMM_MAD_MONSTER_MANSION:
|
||||
case MAP_27_FP_FREEZEEZY_PEAK:
|
||||
case MAP_31_RBB_RUSTY_BUCKET_BAY:
|
||||
case MAP_3C_RBB_KITCHEN:
|
||||
case MAP_43_CCW_SPRING:
|
||||
case MAP_44_CCW_SUMMER:
|
||||
case MAP_45_CCW_AUTUMN:
|
||||
case MAP_46_CCW_WINTER:
|
||||
case MAP_6E_GL_GV_LOBBY:
|
||||
case MAP_72_GL_BGS_LOBBY:
|
||||
case MAP_7F_FP_WOZZAS_CAVE://L8029D84C
|
||||
case MAP_8E_GL_FURNACE_FUN://L8029D84C
|
||||
return func_8029D66C()
|
||||
&& _player_getTransformation() == TRANSFORM_1_BANJO
|
||||
&& func_802916CC(2)
|
||||
&& func_8028ECAC() != BSGROUP_3_WONDERWING
|
||||
&& func_8028ECAC() != BSGROUP_9_LONG_LEG
|
||||
&& miscflag_isFalse(MISC_FLAG_E_TOUCHING_WADING_BOOTS)
|
||||
&& sp1C != BS_25_LONGLEG_ENTER
|
||||
&& func_8028EE84() != BSWATERGROUP_2_UNDERWATER
|
||||
&& func_8028EC04() < 1U
|
||||
&& func_80297C6C() != 3
|
||||
&& bs_getState() != BS_3D_FALL_TUMBLING
|
||||
&& func_8028F22C() < 1U
|
||||
;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void func_8029D968(void){
|
||||
s32 sp24;
|
||||
Struct60s *temp_v0;
|
||||
s32 sp1C;
|
||||
s32 sp18;
|
||||
|
||||
func_8029D5A4();
|
||||
if(map_get() == MAP_12_GV_GOBIS_VALLEY){
|
||||
sp18 = 0;
|
||||
sp1C = 0;
|
||||
temp_v0 = func_802946F0();
|
||||
if(temp_v0 != NULL){
|
||||
sp1C = temp_v0->unk8 & 0x4000;
|
||||
}
|
||||
temp_v0 = func_8029463C();
|
||||
if(temp_v0 != NULL){
|
||||
sp18 = (temp_v0->unk8 & 0x4000) && func_8028B2E8();
|
||||
}
|
||||
if (sp1C || sp18) {
|
||||
func_80250D94(1.0f, 0.5f, 0.4f);
|
||||
func_8028F504(0xD);
|
||||
}
|
||||
}//L8029DA18
|
||||
|
||||
sp24 = func_8029D7B4();
|
||||
func_8029E1A8(4);
|
||||
if(sp24){
|
||||
if(map_get() == MAP_8E_GL_FURNACE_FUN){
|
||||
if(bs_checkInterrupt(0x13)){
|
||||
func_8029D230();
|
||||
}
|
||||
}
|
||||
else{//L8029DA6C
|
||||
|
||||
if(func_8029E384(4)){
|
||||
func_8029E3C0(4, 4.0f);
|
||||
if(func_8028F504(0xD)){
|
||||
func_8029D230();
|
||||
func_80250D94(1.0f, 0.5f, 0.4f);
|
||||
}
|
||||
if(item_empty(ITEM_14_HEALTH)){
|
||||
bs_checkInterrupt(0x13);
|
||||
}
|
||||
}//L8029DAD0
|
||||
|
||||
switch (map_get()) {
|
||||
case MAP_43_CCW_SPRING://8029DB58
|
||||
case MAP_44_CCW_SUMMER://8029DB58
|
||||
case MAP_45_CCW_AUTUMN://8029DB58
|
||||
case MAP_46_CCW_WINTER://8029DB58
|
||||
func_8035644C(BKPROG_AA_HAS_TOUCHED_CCW_BRAMBLE_FIELD);
|
||||
break;
|
||||
|
||||
case MAP_D_BGS_BUBBLEGLOOP_SWAMP://8029DB68
|
||||
case MAP_72_GL_BGS_LOBBY:
|
||||
func_8035644C(BKPROG_F_HAS_TOUCHED_PIRAHANA_WATER);
|
||||
break;
|
||||
|
||||
case MAP_3C_RBB_KITCHEN://8029DB78
|
||||
func_8035644C(BKPROG_A9_HAS_TOUCHED_RBB_OVEN);
|
||||
break;
|
||||
|
||||
case MAP_12_GV_GOBIS_VALLEY://8029DB88
|
||||
case MAP_6E_GL_GV_LOBBY:
|
||||
case MAP_8E_GL_FURNACE_FUN://8029DB88
|
||||
func_8035644C(BKPROG_10_HAS_TOUCHED_SAND_EEL_SAND);
|
||||
break;
|
||||
|
||||
case MAP_27_FP_FREEZEEZY_PEAK://8029DB98
|
||||
case MAP_7F_FP_WOZZAS_CAVE://8029DB98
|
||||
func_8035644C(BKPROG_14_HAS_TOUCHED_FP_ICY_WATER);
|
||||
break;
|
||||
|
||||
case MAP_1B_MMM_MAD_MONSTER_MANSION://8029DBA8
|
||||
if(!func_8029CFA0())
|
||||
func_8035644C(BKPROG_86_HAS_TOUCHED_MMM_THORN_HEDGE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
miscflag_set(0x13);
|
||||
}
|
||||
else{
|
||||
miscflag_clear(0x13);
|
||||
}
|
||||
}
|
||||
198
src/core2/code_16C60.c
Normal file
198
src/core2/code_16C60.c
Normal file
@@ -0,0 +1,198 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void func_8029E070(bool);
|
||||
void func_8029E064(bool);
|
||||
void func_8029E058(bool);
|
||||
void func_8029E0C4(f32);
|
||||
void func_8029E0D0(f32);
|
||||
void func_8029E0DC(bool);
|
||||
void func_8029E0F4(bool);
|
||||
void func_8029E0E8(bool);
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037D230;
|
||||
u8 D_8037D234;
|
||||
u8 D_8037D235;
|
||||
u8 D_8037D236;
|
||||
u8 D_8037D237;
|
||||
u8 D_8037D238;
|
||||
u8 D_8037D239;
|
||||
u8 D_8037D23A;
|
||||
f32 D_8037D23C;
|
||||
f32 D_8037D240;
|
||||
|
||||
/* .code */
|
||||
void func_8029DBF0(void){
|
||||
s32 temp_s0;
|
||||
switch(func_80291FAC()){
|
||||
case 0x34D: //L8029DC24
|
||||
case 0x34E: //L8029DC24
|
||||
temp_s0 = (s32) func_80257C48(D_8037D23C, 1.0f, 8.0f);
|
||||
func_8033A45C(0x1B, temp_s0);
|
||||
func_8033A45C(0x1D, temp_s0);
|
||||
func_8033A45C(0x1F, temp_s0);
|
||||
func_8033A45C(0x21, temp_s0);
|
||||
temp_s0 = (s32) func_80257C48(D_8037D240, 1.0f, 8.0f);
|
||||
func_8033A45C(0x1A, temp_s0);
|
||||
func_8033A45C(0x1C, temp_s0);
|
||||
func_8033A45C(0x1E, temp_s0);
|
||||
func_8033A45C(0x20, temp_s0);
|
||||
break;
|
||||
|
||||
case ASSET_34F_MODEL_BANJO_TERMITE: //L8029DCCC
|
||||
case ASSET_359_MODEL_BANJO_WALRUS: //L8029DCCC
|
||||
case ASSET_36F_MODEL_BANJO_PUMPKIN: //L8029DCCC
|
||||
case ASSET_374_MODEL_BANJO_CROC: //L8029DCCC
|
||||
func_8033A45C(0x1B, (s32) func_80257C48(D_8037D23C, 1.0f, 6.0f));
|
||||
func_8033A45C(0x1A, (s32) func_80257C48(D_8037D240, 1.0f, 6.0f));
|
||||
break;
|
||||
|
||||
case ASSET_356_MODEL_BANJO_WISHYWASHY: //L8029DD2C
|
||||
func_8033A45C(1, (s32) func_80257C48(D_8037D240, 1.0f, 4.0f));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void func_8029DD6C(void) {
|
||||
bool temp_s0;
|
||||
|
||||
func_8033A1FC();
|
||||
switch (func_80291FAC()) {
|
||||
case 0x34D:
|
||||
case 0x34E:
|
||||
func_8033A45C(1, D_8037D238);
|
||||
func_8033A45C(9, D_8037D238);
|
||||
func_8033A45C(0xC, D_8037D238);
|
||||
func_8033A45C(0xF, D_8037D238);
|
||||
func_8033A45C(2, D_8037D236);
|
||||
func_8033A45C(0xA, D_8037D236);
|
||||
func_8033A45C(0xD, D_8037D236);
|
||||
func_8033A45C(0x10, D_8037D236);
|
||||
func_8033A45C(8, D_8037D235);
|
||||
func_8033A45C(0xB, D_8037D235);
|
||||
func_8033A45C(0xE, D_8037D235);
|
||||
func_8033A45C(0x11, D_8037D235);
|
||||
temp_s0 = D_8037D237 + 1;
|
||||
func_8033A45C(0x12, temp_s0);
|
||||
func_8033A45C(0x14, temp_s0);
|
||||
func_8033A45C(0x16, temp_s0);
|
||||
func_8033A45C(0x18, temp_s0);
|
||||
func_8033A45C(0x13, temp_s0);
|
||||
func_8033A45C(0x15, temp_s0);
|
||||
func_8033A45C(0x17, temp_s0);
|
||||
func_8033A45C(0x19, temp_s0);
|
||||
temp_s0 = D_8037D239 + 1;
|
||||
func_8033A45C(0x22, temp_s0);
|
||||
func_8033A45C(0x24, temp_s0);
|
||||
func_8033A45C(0x26, temp_s0);
|
||||
func_8033A45C(0x28, temp_s0);
|
||||
func_8033A45C(0x23, temp_s0);
|
||||
func_8033A45C(0x25, temp_s0);
|
||||
func_8033A45C(0x27, temp_s0);
|
||||
func_8033A45C(0x29, temp_s0);
|
||||
break;
|
||||
case ASSET_359_MODEL_BANJO_WALRUS:
|
||||
func_8033A45C(3, D_8037D23A);
|
||||
break;
|
||||
case ASSET_374_MODEL_BANJO_CROC:
|
||||
temp_s0 = D_8037D237 + 1;
|
||||
func_8033A45C(4, temp_s0);
|
||||
func_8033A45C(5, temp_s0);
|
||||
func_8033A45C(6, temp_s0);
|
||||
func_8033A45C(7, temp_s0);
|
||||
break;
|
||||
}
|
||||
func_8029DBF0();
|
||||
}
|
||||
|
||||
bool func_8029DFA4(void){
|
||||
return D_8037D235;
|
||||
}
|
||||
|
||||
bool func_8029DFB0(void){
|
||||
return D_8037D236;
|
||||
}
|
||||
|
||||
bool func_8029DFBC(void){
|
||||
return D_8037D238;
|
||||
}
|
||||
|
||||
f32 func_8029DFC8(void){
|
||||
return D_8037D23C;
|
||||
}
|
||||
|
||||
f32 func_8029DFD4(void){
|
||||
return D_8037D240;
|
||||
}
|
||||
|
||||
bool func_8029DFE0(void){
|
||||
return D_8037D237;
|
||||
}
|
||||
|
||||
bool func_8029DFEC(void){
|
||||
return D_8037D239;
|
||||
}
|
||||
|
||||
void func_8029DFF8(void) {
|
||||
func_8029E070(0);
|
||||
func_8029E064(0);
|
||||
func_8029E058(0);
|
||||
func_8029E0C4(0.0f);
|
||||
func_8029E0D0(0.0f);
|
||||
func_8029E0DC(0);
|
||||
func_8029E0F4(0);
|
||||
func_8029E0E8(0);
|
||||
}
|
||||
|
||||
void func_8029E058(bool arg0){
|
||||
D_8037D235 = arg0;
|
||||
}
|
||||
|
||||
void func_8029E064(bool arg0){
|
||||
D_8037D236 = arg0;
|
||||
}
|
||||
|
||||
void func_8029E070(bool arg0) {
|
||||
func_8029E090(arg0, 0.0f);
|
||||
}
|
||||
|
||||
void func_8029E090(bool arg0, f32 arg1) {
|
||||
D_8037D230 = arg1;
|
||||
D_8037D234 = arg0;
|
||||
if (arg1 == 0.0f) {
|
||||
D_8037D238 = arg0;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8029E0C4(f32 arg0){
|
||||
D_8037D23C = arg0;
|
||||
}
|
||||
|
||||
void func_8029E0D0(f32 arg0){
|
||||
D_8037D240 = arg0;
|
||||
}
|
||||
|
||||
void func_8029E0DC(bool arg0){
|
||||
D_8037D237 = arg0;
|
||||
}
|
||||
|
||||
void func_8029E0E8(bool arg0){
|
||||
D_8037D23A = arg0;
|
||||
}
|
||||
|
||||
void func_8029E0F4(bool arg0){
|
||||
D_8037D239 = arg0;
|
||||
}
|
||||
|
||||
void func_8029E100(void) {
|
||||
if (D_8037D230 != 0.0f) {
|
||||
D_8037D230 -= time_getDelta();
|
||||
if (D_8037D230 <= 0.0f) {
|
||||
D_8037D238 = D_8037D234;
|
||||
}
|
||||
}
|
||||
}
|
||||
59
src/core2/code_171F0.c
Normal file
59
src/core2/code_171F0.c
Normal file
@@ -0,0 +1,59 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
struct {
|
||||
f32 unk0[0x8];
|
||||
f32 unk20[0x8];
|
||||
} D_8037D250;
|
||||
|
||||
/* .code*/
|
||||
void func_8029E180(s32 arg0, f32 arg1){
|
||||
D_8037D250.unk20[arg0] = D_8037D250.unk0[arg0];
|
||||
D_8037D250.unk0[arg0] += arg1;
|
||||
}
|
||||
|
||||
int func_8029E1A8(s32 arg0){
|
||||
D_8037D250.unk20[arg0] = D_8037D250.unk0[arg0];
|
||||
if(0.0f == D_8037D250.unk0[arg0]){
|
||||
return 0;
|
||||
}
|
||||
D_8037D250.unk0[arg0] = max_f(0.0f, D_8037D250.unk0[arg0] - time_getDelta());
|
||||
return D_8037D250.unk0[arg0] == 0.0f;
|
||||
}
|
||||
|
||||
void func_8029E22C(s32 arg0){
|
||||
D_8037D250.unk20[arg0] = D_8037D250.unk0[arg0];
|
||||
D_8037D250.unk0[arg0] += time_getDelta();
|
||||
}
|
||||
|
||||
f32 func_8029E270(s32 arg0){
|
||||
return D_8037D250.unk0[arg0];
|
||||
}
|
||||
|
||||
int func_8029E284(s32 arg0, f32 arg1){
|
||||
return D_8037D250.unk20[arg0] <= arg1
|
||||
&& arg1 < D_8037D250.unk0[arg0];
|
||||
}
|
||||
|
||||
int func_8029E2E0(s32 arg0, f32 arg1){
|
||||
return D_8037D250.unk0[arg0] < arg1;
|
||||
}
|
||||
|
||||
int func_8029E314(s32 arg0, f32 arg1){
|
||||
return arg1 < D_8037D250.unk0[arg0];
|
||||
}
|
||||
|
||||
int func_8029E348(s32 arg0){
|
||||
return (0.0 != D_8037D250.unk0[arg0]);
|
||||
}
|
||||
|
||||
int func_8029E384(s32 arg0){
|
||||
return (0.0 == D_8037D250.unk0[arg0]);
|
||||
}
|
||||
|
||||
void func_8029E3C0(s32 arg0, f32 arg1){
|
||||
D_8037D250.unk20[arg0] = arg1;
|
||||
D_8037D250.unk0[arg0] = arg1;
|
||||
}
|
||||
226
src/core2/code_1930.c
Normal file
226
src/core2/code_1930.c
Normal file
@@ -0,0 +1,226 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
|
||||
|
||||
extern void func_80250E6C(f32, f32);
|
||||
extern void func_802BB360(s32, f32);
|
||||
extern void func_802BB378(s32, f32, f32);
|
||||
extern void func_802BB3AC(s32, f32);
|
||||
extern void func_8031B908(u8, u8, u8, f32);
|
||||
|
||||
/* .bss */
|
||||
s32 D_8037BF10;
|
||||
|
||||
/* .code */
|
||||
#ifndef NONMATCHING
|
||||
void func_802888C0(s32 arg0, s32 arg1);
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_1930/func_802888C0.s")
|
||||
#else
|
||||
void func_802888C0(s32 arg0, s32 arg1){
|
||||
u8 sp1C[3];
|
||||
f32 f0;
|
||||
sp1C[0] = arg0 >> 16;\
|
||||
sp1C[1] = arg0 >> 8;\
|
||||
sp1C[2] = arg0 >> 0;\
|
||||
f0 = reinterpret_cast(f32, arg1);\
|
||||
func_8031B908(sp1C[0], sp1C[1], sp1C[2], f0);
|
||||
}
|
||||
#endif
|
||||
|
||||
void func_80288914(s32 arg0, s32 arg1, s32 arg2){
|
||||
f32 f0 = reinterpret_cast(f32, arg1);
|
||||
f32 f2 = reinterpret_cast(f32, arg2);
|
||||
func_802BB378(arg0, f0, f2);
|
||||
}
|
||||
|
||||
void func_8028894C(s32 arg0, s32 arg1, s32 arg2){
|
||||
f32 f0 = reinterpret_cast(f32, arg1);
|
||||
f32 f2 = reinterpret_cast(f32, arg2);
|
||||
func_802BB3DC(arg0, f0, f2);
|
||||
}
|
||||
|
||||
void func_80288984(s32 arg0, s32 arg1){
|
||||
f32 f0 = reinterpret_cast(f32, arg1);
|
||||
func_802BB360(arg0, f0);
|
||||
func_802BB3AC(arg0, 1.0f);
|
||||
func_802BB3C4(arg0);
|
||||
}
|
||||
|
||||
void func_802889C8(s32 arg0, s32 arg1){
|
||||
f32 f0 = reinterpret_cast(f32, arg1);
|
||||
func_802BB3AC(arg0, f0);
|
||||
}
|
||||
|
||||
void func_802889F4(s32 arg0) {
|
||||
s32 sp18;
|
||||
s32 temp_t6;
|
||||
s32 phi_a3;
|
||||
|
||||
phi_a3 = arg0 >> 0x10;
|
||||
if( !(phi_a3 == 0xF2 && map_get() == MAP_91_FILE_SELECT && func_802C5A30() != 0)
|
||||
&& !((phi_a3 == 0x21 || phi_a3 == 0x3ED) && map_get() == MAP_91_FILE_SELECT && (func_802C5A30() == 1))
|
||||
){
|
||||
func_8030E6A4(phi_a3, (f32) ((f64) ((arg0 >> 8) & 0xFF) * 0.0078125), (s32) ((f64) (arg0 & 0xFF) * 128.0));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_80288AE0(s32 arg0){
|
||||
func_8025A6EC((u16) (arg0 >> 16), (u16)arg0 - 1);
|
||||
}
|
||||
|
||||
void func_80288B14(enum sfx_e arg0){
|
||||
func_8025A7DC(arg0);
|
||||
}
|
||||
|
||||
void func_80288B34(s32 arg0, s32 arg1){
|
||||
f32 f12 = reinterpret_cast(f32, arg0);
|
||||
f32 f14 = reinterpret_cast(f32, arg1);
|
||||
func_80250E6C(f12, f14);
|
||||
}
|
||||
|
||||
void func_80288B60(s32 arg0, s32 arg1, s32 arg2){
|
||||
f32 f12 = reinterpret_cast(f32, arg0);
|
||||
f32 f14 = reinterpret_cast(f32, arg1);
|
||||
f32 f0 = reinterpret_cast(f32, arg2);
|
||||
func_80250D94(f12, f14, f0);
|
||||
}
|
||||
|
||||
void func_80288B98(vector(struct2s) **arg0, struct2s *arg1){
|
||||
if(arg1->unk5){
|
||||
if(arg1->unk5 == 0xFF)
|
||||
return;
|
||||
if(--arg1->unk5)
|
||||
return;
|
||||
|
||||
arg1->unk5 = 0xFF;
|
||||
}
|
||||
|
||||
switch(arg1->unk4){
|
||||
case 0:// 80288BF8
|
||||
((void (*)(void)) arg1->unk14)();
|
||||
break;
|
||||
case 1:// 80288C0C
|
||||
((void (*)(s32)) arg1->unk14)(arg1->unk8);
|
||||
break;
|
||||
case 2:// 80288C24
|
||||
((void (*)(s32, s32)) arg1->unk14)(arg1->unk8, arg1->unkC);
|
||||
break;
|
||||
case 3:// 80288C40
|
||||
((void (*)(s32, s32, s32)) arg1->unk14)(arg1->unk8, arg1->unkC, arg1->unk10);
|
||||
break;
|
||||
case 4:// 80288C5C
|
||||
((void (*)(u8*)) arg1->unk14)((u8*)&arg1->unk8);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80288C7C(vector(struct2s) **arg0){
|
||||
vector_clear(*arg0);
|
||||
}
|
||||
|
||||
s32 func_80288C9C( vector(struct2s) **arg0, f32 arg1, s32 arg_cnt, void *funcPtr, s32 arg4, s32 arg5, s32 arg6){
|
||||
struct2s *ptr = (struct2s *) vector_pushBackNew(arg0);
|
||||
ptr->unk0 = arg1;
|
||||
ptr->unk4 = arg_cnt;
|
||||
ptr->unk14 = funcPtr;
|
||||
ptr->unk8 = arg4;
|
||||
ptr->unkC = arg5;
|
||||
ptr->unk10 = arg6;
|
||||
ptr->unk5 = D_8037BF10;
|
||||
D_8037BF10 = 0;
|
||||
|
||||
}
|
||||
|
||||
void func_80288D08(vector(struct2s) **arg0, f32 arg1, void *arg2){
|
||||
func_80288C9C(arg0, arg1, 0, arg2, 0, 0, 0);
|
||||
}
|
||||
|
||||
void func_80288D40(vector(struct2s) **arg0, f32 arg1, void *arg2, s32 arg3){
|
||||
func_80288C9C(arg0, arg1, 1, arg2, arg3, 0, 0);
|
||||
}
|
||||
|
||||
void func_80288D84(vector(struct2s) **arg0, f32 arg1, void *arg2, s32 arg3, s32 arg4){
|
||||
func_80288C9C(arg0, arg1, 2, arg2, arg3, arg4, 0);
|
||||
}
|
||||
|
||||
void func_80288DCC(vector(struct2s) **arg0, f32 arg1, void *arg2, s32 arg3, s32 arg4, s32 arg5){
|
||||
func_80288C9C(arg0, arg1, 3, arg2, arg3, arg4, arg5);
|
||||
}
|
||||
|
||||
void func_80288E18(vector(struct2s) **arg0, f32 arg1, void *func_ptr, void* arg_ptr, s32 arg_size){
|
||||
s32 out = func_80288C9C(arg0, arg1, 4, func_ptr, 0, 0, 0);
|
||||
memcpy(out + 8, arg_ptr, arg_size);
|
||||
}
|
||||
|
||||
void func_80288E68(vector(struct2s) **arg0, f32 arg1, s32 arg2, s32 arg3, s32 arg4){
|
||||
func_80288DCC(arg0, arg1, func_80288914, arg2, arg3, arg4);
|
||||
}
|
||||
|
||||
void func_80288EB0(vector(struct2s) **arg0, f32 arg1, s32 arg2, s32 arg3, s32 arg4){
|
||||
func_80288DCC(arg0, arg1, func_8028894C, arg2, arg3, arg4);
|
||||
}
|
||||
|
||||
void func_80288EF8(vector(struct2s) **arg0, f32 arg1, s32 arg2, s32 arg3){
|
||||
func_80288D84(arg0, arg1, func_80288984, arg2, arg3);
|
||||
}
|
||||
|
||||
void func_80288F38(vector(struct2s) **arg0, f32 arg1, s32 arg2, s32 arg3){
|
||||
func_80288D84(arg0, arg1, func_802889C8, arg2, arg3);
|
||||
}
|
||||
|
||||
void func_80288F78(vector(struct2s) **arg0, f32 arg1, s32 arg2){
|
||||
func_80288D40(arg0, arg1, func_802889F4, arg2);
|
||||
}
|
||||
|
||||
void func_80288FA8(vector(struct2s) **arg0, f32 arg1, enum sfx_e sfx_id){
|
||||
func_80288D40(arg0, arg1, func_80288B14, sfx_id);
|
||||
}
|
||||
|
||||
void func_80288FD8(vector(struct2s) **arg0, f32 arg1, s32 arg2){
|
||||
func_80288D40(arg0, arg1, func_80288AE0, arg2);
|
||||
}
|
||||
|
||||
void func_80289008(vector(struct2s) **arg0, f32 arg1, s32 arg2, s32 arg3){
|
||||
do{
|
||||
func_80288D84(arg0, arg1, func_80288B34, arg2, arg3);
|
||||
}while(0);
|
||||
}
|
||||
|
||||
void func_80289048(vector(struct2s) **arg0, f32 arg1, s32 arg2, s32 arg3, s32 arg4){
|
||||
do{
|
||||
func_80288DCC(arg0, arg1, func_80288B60, arg2, arg3, arg4);
|
||||
}while(0);
|
||||
}
|
||||
|
||||
void func_80289090(vector(struct2s) **arg0, f32 arg1, s32 arg2, s32 arg3){
|
||||
func_80288D84(arg0, arg1, func_802888C0, arg2, arg3);
|
||||
}
|
||||
|
||||
void func_802890D0(VLA** arg0){
|
||||
vector_free(*arg0);
|
||||
free(arg0);
|
||||
}
|
||||
|
||||
vector(struct2s) **func_802890FC(void){
|
||||
vector(struct2s) **ptr = (vector(struct2s) **)malloc(sizeof(vector(struct2s) **));
|
||||
*ptr = vector_new(sizeof(struct2s), 2);
|
||||
func_80288C7C(ptr);
|
||||
return ptr;
|
||||
}
|
||||
|
||||
|
||||
void func_8028913C(vector(struct2s) **arg0, s32 arg1){
|
||||
D_8037BF10 = arg1;
|
||||
}
|
||||
|
||||
void func_8028914C(vector(struct2s) **arg0, AnimCtrl *arg1){
|
||||
struct2s *iPtr;
|
||||
for(iPtr = vector_getBegin(*arg0); iPtr != (struct2s*)vector_getEnd(*arg0); iPtr++){
|
||||
if(animctrl_isAt(arg1, iPtr->unk0))
|
||||
func_80288B98(arg0, iPtr);
|
||||
}
|
||||
}
|
||||
187
src/core2/code_2240.c
Normal file
187
src/core2/code_2240.c
Normal file
@@ -0,0 +1,187 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
#include "animation.h"
|
||||
|
||||
//function declarations
|
||||
void anim_setIndex(Animation *this, enum asset_e arg1);
|
||||
s32 anim_802897A0(Animation *this);
|
||||
s32 func_802892FC(Animation *this);
|
||||
void func_8033AA50(s32, f32, s32);
|
||||
void func_8033A750(s32, s32, s32, f32);
|
||||
|
||||
//function definitions
|
||||
void func_802891D0(Animation *this, s32 arg1){
|
||||
s32 *tmp;
|
||||
if(func_80288400(this->unkA[arg1], &tmp) == 0){
|
||||
func_8033A510(tmp);
|
||||
};
|
||||
}
|
||||
|
||||
void func_8028920C(Animation *this){
|
||||
func_802891D0(this, this->unk8);
|
||||
}
|
||||
|
||||
void func_8028922C(Animation *this){
|
||||
func_802891D0(this, 2);
|
||||
}
|
||||
|
||||
s32 func_8028924C(Animation *this, s32 arg1){
|
||||
return func_80288374(this->unkA[arg1]);
|
||||
}
|
||||
|
||||
s32 func_80289274(Animation *this){
|
||||
return func_8028924C(this, this->unk8);
|
||||
}
|
||||
|
||||
s32 func_80289294(Animation *this){
|
||||
return func_8028924C(this, (this->unk8 != 0)? 0: 1);
|
||||
}
|
||||
|
||||
s32 func_802892CC(Animation *this, s32 arg1){
|
||||
s32 tmp;
|
||||
func_80288400(this->unkA[arg1], &tmp);
|
||||
return tmp;
|
||||
}
|
||||
|
||||
s32 func_802892FC(Animation *this){
|
||||
return func_802892CC(this, this->unk8);
|
||||
}
|
||||
|
||||
s32 func_8028931C(Animation *this){
|
||||
return func_802892CC(this, (this->unk8 != 0)? 0: 1);
|
||||
}
|
||||
|
||||
s32 func_80289354(Animation *this){
|
||||
return func_802892CC(this, 2);
|
||||
}
|
||||
|
||||
void func_80289374(Animation *this){
|
||||
if(this->unk1C == 1 && func_80289274(this)){
|
||||
this->unk8 = (this->unk8)? 0 : 1;
|
||||
}
|
||||
this->unk1C = 0;
|
||||
if( this->duration < 1.0f && func_80289294(this)){
|
||||
func_8033AA50(animcache_get(this->index), this->timer, func_802892FC(this));
|
||||
func_8033A750(func_802892FC(this), func_8028931C(this), func_802892FC(this), this->duration);
|
||||
}
|
||||
else{
|
||||
func_8033AA50(animcache_get(this->index), this->timer, func_802892FC(this));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void func_8028948C(Animation *this){
|
||||
if(this->unk1C == 1 && this->unk1E == 0){
|
||||
if(func_80289274(this)){
|
||||
this->unk8 = (this->unk8)? 0 : 1;
|
||||
func_8028922C(this);
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(this->unk1C == 2)
|
||||
func_8028920C(this);
|
||||
}
|
||||
this->unk1C = 0;
|
||||
if( this->duration < 1.0f && func_80289294(this) && !this->unk1E){
|
||||
func_8033AA50(animcache_get(this->index), this->timer, func_80289354(this));
|
||||
func_8033A750(func_802892FC(this), func_8028931C(this), func_80289354(this), this->duration);
|
||||
}
|
||||
else{
|
||||
func_8033AA50(animcache_get(this->index), this->timer, func_802892FC(this));
|
||||
if(this->unk1E && this->index)
|
||||
this->unk1E = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void func_802895F8(Animation *this){
|
||||
if(this->unk1D == 1){
|
||||
func_8028948C(this);
|
||||
}
|
||||
else{
|
||||
func_80289374(this);
|
||||
}
|
||||
if(this->matrices){
|
||||
(*(this->matrices))(func_802892FC(this), this->unk4);
|
||||
}
|
||||
anim_802897A0(this);
|
||||
}
|
||||
|
||||
|
||||
void func_80289674(Animation *this){
|
||||
this->unk1C = 1;
|
||||
}
|
||||
|
||||
s32 func_80289680(void){
|
||||
return 0x20;
|
||||
}
|
||||
|
||||
enum asset_e anim_getIndex(Animation *this){
|
||||
return this->index;
|
||||
}
|
||||
|
||||
f32 anim_getTimer(Animation *this){
|
||||
return this->timer;
|
||||
}
|
||||
|
||||
f32 anim_getDuration(Animation *this){
|
||||
return this->duration;
|
||||
}
|
||||
|
||||
void func_802896A0(Animation *this){
|
||||
func_802883AC(this->unkA[0]);
|
||||
func_802883AC(this->unkA[1]);
|
||||
if(this->unk1D == 1){
|
||||
func_802883AC(this->unkA[2]);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802896EC(Animation *this, s32 arg1){
|
||||
this->unk1D = arg1;
|
||||
anim_setIndex(this,0);
|
||||
anim_setTimer(this, 0.0f);
|
||||
anim_setDuration(this, 1.0f);
|
||||
anim_80289790(this, NULL);
|
||||
this->unk1C = 0;
|
||||
this->unk1E = 1;
|
||||
this->unk8 = 0;
|
||||
this->unkA[0] = func_80288330();
|
||||
this->unkA[1] = func_80288330();
|
||||
if(this->unk1D == 1){
|
||||
this->unkA[2] = func_80288330();
|
||||
}
|
||||
}
|
||||
|
||||
void anim_setIndex(Animation *this, enum asset_e arg1){
|
||||
this->index = arg1;
|
||||
}
|
||||
|
||||
void anim_setTimer(Animation *this, f32 arg1){
|
||||
this->timer = arg1;
|
||||
}
|
||||
|
||||
void anim_80289790(Animation *this, void (*arg1)(s32, s32)){
|
||||
this->matrices = arg1;
|
||||
}
|
||||
|
||||
void anim_80289798(Animation *this, s32 arg1){
|
||||
this->unk4 = arg1;
|
||||
}
|
||||
|
||||
s32 anim_802897A0(Animation *this){
|
||||
return func_8033A238(func_802892FC(this));
|
||||
}
|
||||
|
||||
void anim_setDuration(Animation *this, f32 arg1){
|
||||
this->duration = arg1;
|
||||
}
|
||||
|
||||
void anim_802897D4(Animation *this, BKAnimationList *arg0, Animation *dst){
|
||||
func_802EA1A8(this, arg0, func_802892FC(dst));
|
||||
}
|
||||
|
||||
void anim_8028980C(Animation *this){
|
||||
this->unk1C = 2;
|
||||
}
|
||||
141
src/core2/code_27550.c
Normal file
141
src/core2/code_27550.c
Normal file
@@ -0,0 +1,141 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
struct {
|
||||
ParticleEmitter *unk0;
|
||||
ParticleEmitter *unk4;
|
||||
f32 unk8;
|
||||
f32 unkC;
|
||||
f32 unk10;
|
||||
}D_8037D420;
|
||||
u8 D_8037D438;
|
||||
|
||||
/* .code */
|
||||
void func_802AE4E0(s32 arg0) {
|
||||
switch (arg0) {
|
||||
case 1:
|
||||
func_8029E3C0(0, 0.2f);
|
||||
break;
|
||||
case 2:
|
||||
func_8025A6CC(COMUSIC_43_ENTER_LEVEL_GLITTER, 32000);
|
||||
func_8025AABC(COMUSIC_43_ENTER_LEVEL_GLITTER);
|
||||
func_8029E3C0(0, 0.4f);
|
||||
func_80291FB8(0);
|
||||
func_80291D04();
|
||||
break;
|
||||
case 3:
|
||||
comusic_8025AB44(COMUSIC_43_ENTER_LEVEL_GLITTER, 0, 2000);
|
||||
func_8029E3C0(0, 0.55f);
|
||||
break;
|
||||
}
|
||||
D_8037D438 = arg0;
|
||||
}
|
||||
|
||||
void func_802AE598(void) {
|
||||
f32 plyr_pos[3];
|
||||
|
||||
player_getPosition(plyr_pos);
|
||||
particleEmitter_setParticleAccelerationRange(D_8037D420.unk4, 0.0f, 700.0f, 0.0f, 0.0f, 1200.0f, 0.0f);
|
||||
particleEmitter_setParticleSpawnPositionRange(D_8037D420.unk4, -45.0f, -5.0f, -45.0f, 45.0f, 10.0f, 45.0f);
|
||||
particleEmitter_setPosition(D_8037D420.unk4, plyr_pos);
|
||||
particleEmitter_emitN(D_8037D420.unk4, 1);
|
||||
particleEmitter_setParticleAccelerationRange(D_8037D420.unk0, 0.0f, 700.0f, 0.0f, 0.0f, 1200.0f, 0.0f);
|
||||
particleEmitter_setParticleSpawnPositionRange(D_8037D420.unk4, -45.0f, -5.0f, -45.0f, 45.0f, 10.0f, 45.0f);
|
||||
particleEmitter_setPosition(D_8037D420.unk0, plyr_pos);
|
||||
particleEmitter_emitN(D_8037D420.unk0, 1);
|
||||
player_getPosition(plyr_pos);
|
||||
plyr_pos[1] += 130.0f;
|
||||
particleEmitter_setParticleAccelerationRange(D_8037D420.unk4, 0.0f, -700.0f, 0.0f, 0.0f, -1200.0f, 0.0f);
|
||||
particleEmitter_setParticleSpawnPositionRange(D_8037D420.unk4, -45.0f, -10.0f, -45.0f, 45.0f, 10.0f, 45.0f);
|
||||
particleEmitter_setPosition(D_8037D420.unk4, plyr_pos);
|
||||
particleEmitter_emitN(D_8037D420.unk4, 1);
|
||||
particleEmitter_setParticleAccelerationRange(D_8037D420.unk0, 0.0f, -700.0f, 0.0f, 0.0f, -1200.0f, 0.0f);
|
||||
particleEmitter_setParticleSpawnPositionRange(D_8037D420.unk4, -45.0f, -10.0f, -45.0f, 45.0f, 10.0f, 45.0f);
|
||||
particleEmitter_setPosition(D_8037D420.unk0, plyr_pos);
|
||||
particleEmitter_emitN(D_8037D420.unk0, 1);
|
||||
}
|
||||
|
||||
void func_802AE7AC(ParticleEmitter *p_ctrl, enum asset_e sprite_id) {
|
||||
func_802F0D54(p_ctrl);
|
||||
particleEmitter_setSprite(p_ctrl, sprite_id);
|
||||
func_802EFA5C(p_ctrl, 0.3f, 0.8f);
|
||||
func_802EFB70(p_ctrl, 0.15f, 0.22f);
|
||||
func_802EFB84(p_ctrl, 0.03f, 0.05f);
|
||||
func_802EFE24(p_ctrl, 0.0f, 0.0f, 300.0f, 0.0f, 0.0f, 300.0f);
|
||||
func_802EFEC0(p_ctrl, 0.55f, 0.55f);
|
||||
}
|
||||
|
||||
void func_802AE874(void) {
|
||||
func_802F0C78(D_8037D420.unk4);
|
||||
func_802F0C78(D_8037D420.unk0);
|
||||
}
|
||||
|
||||
void func_802AE8A4(void) {
|
||||
D_8037D420.unk10 = 0.0f;
|
||||
D_8037D420.unk8 = 0.0f;
|
||||
D_8037D420.unkC = 1.0f;
|
||||
D_8037D420.unk0 = partEmitList_pushNew(60);
|
||||
func_802AE7AC(D_8037D420.unk0, ASSET_716_SPRITE_SPARKLE_WHITE);
|
||||
D_8037D420.unk4 = partEmitList_pushNew(60);
|
||||
func_802AE7AC(D_8037D420.unk4, ASSET_713_SPRITE_SPARKLE_YELLOW);
|
||||
}
|
||||
|
||||
void func_802AE914(void) {
|
||||
D_8037D420.unk10 -= time_getDelta();
|
||||
while ( D_8037D420.unk10 < 0.0f) {
|
||||
func_802AE598();
|
||||
D_8037D420.unk8 += 0.02 * (f64) D_8037D420.unkC;
|
||||
D_8037D420.unk10 += 0.02;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802AE9C8(void) {
|
||||
f32 anim_duration;
|
||||
enum asset_e anim_id;
|
||||
|
||||
func_8029BCF8(&anim_id, &anim_duration);
|
||||
func_8028A010(anim_id, anim_duration);
|
||||
func_8029C7F4(1, 1, 3, 7);
|
||||
func_80294378(6);
|
||||
func_802AE8A4();
|
||||
D_8037D438 = 0;
|
||||
func_802AE4E0(1);
|
||||
}
|
||||
|
||||
void func_802AEA2C(void) {
|
||||
s32 next_state;
|
||||
s32 sp20;
|
||||
u8 temp_v0;
|
||||
|
||||
next_state = 0;
|
||||
switch (D_8037D438) {
|
||||
case 1:
|
||||
func_802AE914();
|
||||
if (func_8029E1A8(0)) {
|
||||
func_802AE4E0(2);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
func_802AE914();
|
||||
sp20 = func_8029E1A8(0);
|
||||
func_80291FB8((s32) ml_map_f(func_8029E270(0), 0.0f, 0.4f, 255.0f, 0.0f));
|
||||
if (sp20) {
|
||||
func_802AE4E0(3);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (func_8029E1A8(0)) {
|
||||
next_state = bs_getIdleState();
|
||||
}
|
||||
break;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802AEB24(void){
|
||||
func_802AE874();
|
||||
func_80294378(1);
|
||||
func_80291D04();
|
||||
}
|
||||
78
src/core2/code_27F40.c
Normal file
78
src/core2/code_27F40.c
Normal file
@@ -0,0 +1,78 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_8029B2D0(void);
|
||||
|
||||
/* .code */
|
||||
void func_802AEED0(f32 arg0[3]) {
|
||||
func_8028E9C4(5, arg0);
|
||||
}
|
||||
|
||||
void func_802AEEF4(void) {
|
||||
f32 anim_duration;
|
||||
f32 sp28[3];
|
||||
f32 sp1C[3];
|
||||
enum asset_e anim_id;
|
||||
|
||||
func_80299D2C(SFX_12D_CAMERA_ZOOM_CLOSEST, 1.2f, 12000);
|
||||
func_8029BCF8(&anim_id, &anim_duration);
|
||||
func_8028A010(anim_id, anim_duration);
|
||||
func_8029C7F4(1, 1, 3, 2);
|
||||
func_80297970(0.0f);
|
||||
func_80297A0C(0);
|
||||
func_802BE8D8();
|
||||
func_802AEED0(sp28);
|
||||
func_802C2A64(sp28);
|
||||
player_getRotation(sp1C);
|
||||
sp1C[0] = 0.0f;
|
||||
sp1C[1] += 180.0f;
|
||||
sp1C[2] = 0.0f;
|
||||
func_802C2A8C(sp1C);
|
||||
miscflag_set(0x17);
|
||||
}
|
||||
|
||||
void func_802AEFB0(void) {
|
||||
s32 next_state;
|
||||
f32 sp30[3];
|
||||
f32 sp24[3];
|
||||
f32 sp20;
|
||||
s32 sp1C;
|
||||
|
||||
next_state = 0;
|
||||
sp20 = time_getDelta();
|
||||
if (func_802C2B00() == 2) {
|
||||
func_802C2ADC(sp30);
|
||||
sp30[0] -= func_8029B2DC() * 90.0f * sp20;
|
||||
sp30[1] -= func_8029B2D0() * 90.0f * sp20;
|
||||
sp30[2] = 0.0f;
|
||||
sp30[0] = (sp30[0] > 180.0f) ? max_f(305.0f, sp30[0]) : min_f(70.0f, sp30[0]);
|
||||
func_802C2A8C(sp30);
|
||||
yaw_setIdeal(sp30[1] + 180.0f);
|
||||
sp1C = 0;
|
||||
if (button_pressed(BUTTON_B) || button_pressed(BUTTON_A) || button_pressed(BUTTON_C_UP)) {
|
||||
sp1C = 1;
|
||||
}
|
||||
if (player_inWater()) {
|
||||
if (player_getTransformation() == TRANSFORM_1_BANJO && func_8028EE84() == BSWATERGROUP_0_NONE) {
|
||||
sp1C += 1;
|
||||
}
|
||||
} else if (func_8028B254(25) == 0) {
|
||||
sp1C += 1;
|
||||
}
|
||||
if (sp1C) {
|
||||
next_state = func_8029BDBC();
|
||||
}
|
||||
}
|
||||
func_802AEED0(sp24);
|
||||
func_802C2A64(sp24);
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802AF164(void) {
|
||||
if (func_80298850() == 0) {
|
||||
func_80299D2C(SFX_12E_CAMERA_ZOOM_MEDIUM, 1.2f, 12000);
|
||||
}
|
||||
func_802BE91C();
|
||||
miscflag_clear(0x17);
|
||||
}
|
||||
136
src/core2/code_28220.c
Normal file
136
src/core2/code_28220.c
Normal file
@@ -0,0 +1,136 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
struct {
|
||||
ParticleEmitter *unk0;
|
||||
ParticleEmitter *unk4;
|
||||
f32 unk8;
|
||||
f32 unkC;
|
||||
f32 unk10;
|
||||
}D_8037D450;
|
||||
u8 D_8037D468;
|
||||
|
||||
/* .code */
|
||||
void func_802AF1B0(s32 arg0) {
|
||||
switch (arg0) {
|
||||
case 1:
|
||||
func_8029E3C0(0, 0.3f);
|
||||
break;
|
||||
case 2:
|
||||
func_8025A6CC(COMUSIC_43_ENTER_LEVEL_GLITTER, 32000);
|
||||
func_8025AABC(COMUSIC_43_ENTER_LEVEL_GLITTER);
|
||||
func_8029E3C0(0, 0.4f);
|
||||
break;
|
||||
case 3:
|
||||
func_80314B30();
|
||||
func_802921C8(0);
|
||||
comusic_8025AB44(COMUSIC_43_ENTER_LEVEL_GLITTER, 0, 2000);
|
||||
func_8029E3C0(0, 2.0f);
|
||||
break;
|
||||
}
|
||||
D_8037D468 = arg0;
|
||||
}
|
||||
|
||||
void func_802AF268(void) {
|
||||
f32 position[3];
|
||||
|
||||
player_getPosition(position);
|
||||
particleEmitter_setParticleAccelerationRange(D_8037D450.unk4, 0.0f, 700.0f, 0.0f, 0.0f, 1200.0f, 0.0f);
|
||||
particleEmitter_setPosition(D_8037D450.unk4, position);
|
||||
particleEmitter_emitN(D_8037D450.unk4, 1);
|
||||
particleEmitter_setParticleAccelerationRange(D_8037D450.unk0, 0.0f, 700.0f, 0.0f, 0.0f, 1200.0f, 0.0f);
|
||||
particleEmitter_setPosition(D_8037D450.unk0, position);
|
||||
particleEmitter_emitN(D_8037D450.unk0, 1);
|
||||
position[1] += 130.0f;
|
||||
particleEmitter_setParticleAccelerationRange(D_8037D450.unk4, 0.0f, -700.0f, 0.0f, 0.0f, -1200.0f, 0.0f);
|
||||
particleEmitter_setPosition(D_8037D450.unk4, position);
|
||||
particleEmitter_emitN(D_8037D450.unk4, 1);
|
||||
particleEmitter_setParticleAccelerationRange(D_8037D450.unk0, 0.0f, -700.0f, 0.0f, 0.0f, -1200.0f, 0.0f);
|
||||
particleEmitter_setPosition(D_8037D450.unk0, position);
|
||||
particleEmitter_emitN(D_8037D450.unk0, 1);
|
||||
}
|
||||
|
||||
void func_802AF3B4(ParticleEmitter *p_ctrl, enum asset_e sprite_id) {
|
||||
func_802F0D54();
|
||||
particleEmitter_setSprite(p_ctrl, sprite_id);
|
||||
func_802EFA5C(p_ctrl, 0.3f, 0.8f);
|
||||
particleEmitter_setParticleSpawnPositionRange(p_ctrl, -45.0f, 0.0f, -45.0f, 45.0f, 0.0f, 45.0f);
|
||||
func_802EFB70(p_ctrl, 0.15f, 0.22f);
|
||||
func_802EFB84(p_ctrl, 0.03f, 0.05f);
|
||||
func_802EFE24(p_ctrl, 0.0f, 0.0f, 300.0f, 0.0f, 0.0f, 300.0f);
|
||||
func_802EFEC0(p_ctrl, 0.55f, 0.55f);
|
||||
}
|
||||
|
||||
void func_802AF4B0(void) {
|
||||
func_802F0C78(D_8037D450.unk4);
|
||||
func_802F0C78(D_8037D450.unk0);
|
||||
}
|
||||
|
||||
void func_802AF4E0(void) {
|
||||
D_8037D450.unk10 = 0.0f;
|
||||
D_8037D450.unk8 = 0.0f;
|
||||
D_8037D450.unkC = 1.0f;
|
||||
D_8037D450.unk0 = partEmitList_pushNew(60);
|
||||
func_802AF3B4(D_8037D450.unk0, ASSET_716_SPRITE_SPARKLE_WHITE);
|
||||
D_8037D450.unk4 = partEmitList_pushNew(60);
|
||||
func_802AF3B4(D_8037D450.unk4, ASSET_713_SPRITE_SPARKLE_YELLOW);
|
||||
}
|
||||
|
||||
void func_802AF550(void) {
|
||||
D_8037D450.unk10 -= time_getDelta();
|
||||
while ( D_8037D450.unk10 < 0.0f) {
|
||||
func_802AF268();
|
||||
D_8037D450.unk8 += 0.02 * (f64) D_8037D450.unkC;
|
||||
D_8037D450.unk10 += 0.02;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802AF604(void){
|
||||
f32 anim_duration;
|
||||
enum asset_e anim_id;
|
||||
|
||||
func_8029BCF8(&anim_id, &anim_duration);
|
||||
func_8028A010(anim_id, anim_duration);
|
||||
func_8029C7F4(1,1,3,7);
|
||||
func_80294378(6);
|
||||
func_802AF4E0();
|
||||
D_8037D468 = 0;
|
||||
func_802AF1B0(1);
|
||||
}
|
||||
|
||||
void func_802AF668(void) {
|
||||
s32 next_state;
|
||||
bool sp20;
|
||||
|
||||
next_state = 0;
|
||||
switch (D_8037D468) {
|
||||
case 1:
|
||||
func_802AF550();
|
||||
if (func_8029E1A8(0)) {
|
||||
func_802AF1B0(2);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
func_802AF550();
|
||||
sp20 = func_8029E1A8(0);
|
||||
func_80291FB8((s32) ml_map_f(func_8029E270(0), 0.0f, 0.4f, 0.0f, 255.0f));
|
||||
if (sp20) {
|
||||
func_802AF1B0(3);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (func_8029E1A8(0)) {
|
||||
next_state = bs_getIdleState();
|
||||
}
|
||||
break;
|
||||
}
|
||||
bs_setState(next_state);
|
||||
}
|
||||
|
||||
void func_802AF768(void){
|
||||
func_802AF4B0();
|
||||
func_80294378(1);
|
||||
func_80291D04();
|
||||
}
|
||||
290
src/core2/code_2890.c
Normal file
290
src/core2/code_2890.c
Normal file
@@ -0,0 +1,290 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_802E4B38(void);
|
||||
extern f32 func_80257BFC(f32, f32, f32, f32, f32);
|
||||
|
||||
void func_80289F30(void);
|
||||
|
||||
/* .data */
|
||||
f32 D_803635E0[3] = {0.0f, 5.0f, 0.0f};
|
||||
s32 D_803635EC[7] = {0x4, 0x3, 0x60, 0x18, 0x1B, 0x67, 0x80};
|
||||
|
||||
/* .bss */
|
||||
AnimCtrl *D_8037BF20;
|
||||
s32 D_8037BF24;
|
||||
f32 D_8037BF28;
|
||||
f32 D_8037BF2C;
|
||||
struct {
|
||||
f32 unk0;
|
||||
f32 unk4;
|
||||
f32 unk8;
|
||||
f32 unkC;
|
||||
f32 unk10;
|
||||
u8 unk14;
|
||||
}D_8037BF30;
|
||||
void (*D_8037BF48)(s32, s32);
|
||||
|
||||
/* .code */
|
||||
void func_80289820(s32 arg0){
|
||||
D_8037BF24 = arg0;
|
||||
}
|
||||
|
||||
void func_8028982C(void) {
|
||||
f32 sp2C[3];
|
||||
f32 temp_f12;
|
||||
f32 sp24;
|
||||
|
||||
sp24 = (D_8037BF30.unk14 != 0) ? D_8037BF30.unk10 : 1.0f;
|
||||
_get_velocity(sp2C);
|
||||
temp_f12 = func_80257BFC(gu_sqrtf(sp2C[0]*sp2C[0] + sp2C[2] * sp2C[2]), D_8037BF30.unk0, D_8037BF30.unk4, D_8037BF30.unk8 * sp24, D_8037BF30.unkC * sp24);
|
||||
animctrl_setDuration(D_8037BF20, mlClamp_f(temp_f12, D_8037BF28, D_8037BF2C));
|
||||
animctrl_update(D_8037BF20);
|
||||
}
|
||||
|
||||
void func_802898F8(void) {
|
||||
animctrl_setDuration(D_8037BF20, mlClamp_f(func_80257BFC(mlAbsF(func_80297AAC()), D_8037BF30.unk0, D_8037BF30.unk4, D_8037BF30.unk8, D_8037BF30.unkC), D_8037BF28, D_8037BF2C));
|
||||
animctrl_update(D_8037BF20);
|
||||
}
|
||||
|
||||
|
||||
void func_80289978(f32 sp2C[3], f32 arg1, f32 arg2, f32 arg3) {
|
||||
s32 phi_s0;
|
||||
|
||||
for(phi_s0 = 0; phi_s0 < 3; phi_s0++){
|
||||
sp2C[phi_s0] = ((((f64) sinf((f32) ((f64) func_80257A44((f32) ( arg1 + (2.0 * ((f64) (f32) phi_s0 / 3.0))), 2.0f) * 6.2831853080000002)) * 0.5) + 0.5) * arg3) + arg2;
|
||||
};
|
||||
}
|
||||
|
||||
void func_80289A78(s32 arg0, s32 arg1) {
|
||||
f32 sp2C[3];
|
||||
f32 sp28;
|
||||
s32 phi_s0;
|
||||
static s32 D_8037BF4C;
|
||||
|
||||
|
||||
sp28 = func_802E4B38();
|
||||
if (func_803203FC(0x78) == 0) {
|
||||
D_8037BF4C = 0;
|
||||
} else {
|
||||
for(phi_s0 = 0; phi_s0 < 7; phi_s0++){
|
||||
if (func_803203FC(phi_s0 + 0x97)) {
|
||||
D_8037BF4C = D_803635EC[phi_s0];
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((D_8037BF4C & 1)) {
|
||||
func_80289978(sp2C, sp28, 2.0f, 1.0f);
|
||||
func_8033A928(arg0, 6, sp2C);
|
||||
func_8033A928(arg0, 0x14, sp2C);
|
||||
}
|
||||
if (D_8037BF4C & 2) {
|
||||
func_80289978(sp2C, sp28, 2.0f, 1.0f);
|
||||
func_8033A928(arg0, 0x10, sp2C);
|
||||
func_8033A928(arg0, 0x1E, sp2C);
|
||||
}
|
||||
if (D_8037BF4C & 4) {
|
||||
func_80289978(sp2C, sp28, 2.0f, 1.0f);
|
||||
func_8033A928(arg0, 0x12, sp2C);
|
||||
}
|
||||
if (D_8037BF4C & 8) {
|
||||
func_80289978(sp2C, sp28, 0.2f, 0.5f);
|
||||
func_8033A928(arg0, 0x12, sp2C);
|
||||
}
|
||||
if (D_8037BF4C & 0x10) {
|
||||
func_8033A968(arg0, 1, &D_803635E0);
|
||||
}
|
||||
if (D_8037BF4C & 0x20) {
|
||||
func_80289978(sp2C, sp28, 2.0f, 1.0f);
|
||||
func_8033A928(arg0, 0x6C, sp2C);
|
||||
}
|
||||
if (D_8037BF4C & 0x40) {
|
||||
func_80289978(sp2C, sp28, 2.0f, 1.0f);
|
||||
func_8033A928(arg0, 0x64, sp2C);
|
||||
func_8033A928(arg0, 0x67, sp2C);
|
||||
}
|
||||
if (map_get() == MAP_A_TTC_SANDCASTLE) {
|
||||
if ((D_8037BF4C & 0x80) && (player_getTransformation() != TRANSFORM_7_WISHWASHY)) {
|
||||
func_8028FB88(7);
|
||||
}
|
||||
if (!(D_8037BF4C & 0x80) && (player_getTransformation() == TRANSFORM_7_WISHWASHY)) {
|
||||
func_8028FB88(1);
|
||||
}
|
||||
}
|
||||
if (D_8037BF48 != NULL) {
|
||||
D_8037BF48(arg0, arg1);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80289D1C(void){
|
||||
D_8037BF20 = animctrl_new(1);
|
||||
func_80287784(D_8037BF20, 0);
|
||||
animctrl_setSmoothTransition(D_8037BF20, FALSE);
|
||||
func_8028746C(D_8037BF20, func_80289A78);
|
||||
D_8037BF48 = NULL;
|
||||
func_80289F30();
|
||||
D_8037BF24 = 0;
|
||||
func_80289820(1);
|
||||
func_80289EA8(0.01f, 100.0f);
|
||||
func_80289EC8(0.0f, 1000.0f, 0.1f, 10.0f);
|
||||
D_8037BF30.unk14 = 0;
|
||||
D_8037BF30.unk10 = 1.0f;
|
||||
}
|
||||
|
||||
void func_80289DDC(void){
|
||||
animctrl_free(D_8037BF20);
|
||||
}
|
||||
|
||||
void func_80289E00(void){
|
||||
switch(D_8037BF24){
|
||||
case 2:
|
||||
func_8028982C();
|
||||
break;
|
||||
|
||||
case 3:
|
||||
func_802898F8();
|
||||
break;
|
||||
|
||||
case 1:
|
||||
animctrl_update(D_8037BF20);
|
||||
break;
|
||||
|
||||
case 0:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80289E74(void){
|
||||
D_8037BF20 = animctrl_defrag(D_8037BF20);
|
||||
}
|
||||
|
||||
s32 func_80289E9C(void){
|
||||
return D_8037BF24;
|
||||
}
|
||||
|
||||
void func_80289EA8(f32 arg0, f32 arg1){
|
||||
D_8037BF28 = arg0;
|
||||
D_8037BF2C = arg1;
|
||||
}
|
||||
|
||||
void func_80289EBC(void (*arg0)(s32, s32)){
|
||||
D_8037BF48 = arg0;
|
||||
}
|
||||
|
||||
void func_80289EC8(f32 arg0, f32 arg1, f32 arg2, f32 arg3){
|
||||
D_8037BF30.unk0 = arg0;
|
||||
D_8037BF30.unk4 = arg1;
|
||||
D_8037BF30.unk8 = arg2;
|
||||
D_8037BF30.unkC = arg3;
|
||||
D_8037BF30.unk14 = 0;
|
||||
}
|
||||
|
||||
void func_80289EF8(f32 arg0){
|
||||
D_8037BF30.unk10 = arg0;
|
||||
D_8037BF30.unk14 = 1;
|
||||
}
|
||||
|
||||
void func_80289F10(s32 arg0){
|
||||
func_80289820(arg0);
|
||||
}
|
||||
|
||||
void func_80289F30(void){
|
||||
f32 sp1C[3];
|
||||
|
||||
_player_getPosition(sp1C);
|
||||
func_8028781C(D_8037BF20, sp1C, 1);
|
||||
}
|
||||
|
||||
AnimCtrl *_player_getAnimCtrlPtr(void){
|
||||
return D_8037BF20;
|
||||
}
|
||||
|
||||
f32 func_80289F70(void){
|
||||
return animctrl_getAnimTimer(D_8037BF20);
|
||||
}
|
||||
|
||||
bool func_80289F94(enum asset_e anim_id){
|
||||
return animctrl_getIndex(D_8037BF20) == anim_id;
|
||||
}
|
||||
|
||||
bool baanim_isStopped(void){
|
||||
return animctrl_isStopped(D_8037BF20);
|
||||
}
|
||||
|
||||
bool baanim_isAt(f32 time){
|
||||
return animctrl_isAt(D_8037BF20, time);
|
||||
}
|
||||
|
||||
void func_8028A010(enum asset_e anim_id, f32 duration){
|
||||
animctrl_reset(D_8037BF20);
|
||||
animctrl_setIndex(D_8037BF20, anim_id);
|
||||
animctrl_setDuration(D_8037BF20, duration);
|
||||
animctrl_setPlaybackType(D_8037BF20, 2);
|
||||
func_802875AC(D_8037BF20, "baanim.c", 0x188);
|
||||
}
|
||||
|
||||
void func_8028A084(enum asset_e anim_id, f32 duration){
|
||||
animctrl_reset(D_8037BF20);
|
||||
animctrl_setSmoothTransition(D_8037BF20, FALSE);
|
||||
animctrl_setIndex(D_8037BF20, anim_id);
|
||||
animctrl_setDuration(D_8037BF20, duration);
|
||||
animctrl_setPlaybackType(D_8037BF20, 2);
|
||||
func_802875AC(D_8037BF20, "baanim.c", 0x193);
|
||||
}
|
||||
|
||||
void func_8028A100(enum asset_e anim_id, f32 duration, f32 arg2){
|
||||
animctrl_reset(D_8037BF20);
|
||||
animctrl_setIndex(D_8037BF20, anim_id);
|
||||
animctrl_setDuration(D_8037BF20, duration);
|
||||
func_8028774C(D_8037BF20, arg2);
|
||||
animctrl_setPlaybackType(D_8037BF20, 2);
|
||||
func_802875AC(D_8037BF20, "baanim.c", 0x19e);
|
||||
}
|
||||
|
||||
void func_8028A180(enum asset_e anim_id, f32 duration){
|
||||
animctrl_reset(D_8037BF20);
|
||||
animctrl_setIndex(D_8037BF20, anim_id);
|
||||
animctrl_setDuration(D_8037BF20, duration);
|
||||
animctrl_setPlaybackType(D_8037BF20, 1);
|
||||
func_802875AC(D_8037BF20, "baanim.c", 0x1a8);
|
||||
}
|
||||
|
||||
void func_8028A1F4(enum asset_e anim_id, f32 duration, f32 arg2){
|
||||
animctrl_reset(D_8037BF20);
|
||||
animctrl_setIndex(D_8037BF20, anim_id);
|
||||
animctrl_setDuration(D_8037BF20, duration);
|
||||
func_8028774C(D_8037BF20, arg2);
|
||||
animctrl_setPlaybackType(D_8037BF20, 1);
|
||||
func_802875AC(D_8037BF20, "baanim.c", 0x1b3);
|
||||
}
|
||||
|
||||
void func_8028A274(enum asset_e anim_id, f32 duration){
|
||||
animctrl_reset(D_8037BF20);
|
||||
animctrl_setSmoothTransition(D_8037BF20, FALSE);
|
||||
animctrl_setIndex(D_8037BF20, anim_id);
|
||||
animctrl_setDuration(D_8037BF20, duration);
|
||||
animctrl_setPlaybackType(D_8037BF20, 1);
|
||||
func_802875AC(D_8037BF20, "baanim.c", 0x1bd);
|
||||
}
|
||||
|
||||
void func_8028A2F0(enum asset_e anim_id, f32 duration, f32 arg2){
|
||||
animctrl_reset(D_8037BF20);
|
||||
animctrl_setSmoothTransition(D_8037BF20, FALSE);
|
||||
animctrl_setIndex(D_8037BF20, anim_id);
|
||||
animctrl_setDuration(D_8037BF20, duration);
|
||||
func_8028774C(D_8037BF20, arg2);
|
||||
animctrl_setPlaybackType(D_8037BF20, 1);
|
||||
func_802875AC(D_8037BF20, "baanim.c", 0x1c9);
|
||||
}
|
||||
|
||||
void func_8028A37C(f32 arg0){
|
||||
animctrl_setSubRange(D_8037BF20, 0.0f, arg0);
|
||||
animctrl_setPlaybackType(D_8037BF20, 1);
|
||||
}
|
||||
|
||||
void func_8028A3B8(f32 arg0, f32 arg1){
|
||||
animctrl_setSubRange(D_8037BF20, 0.0f, arg0);
|
||||
animctrl_setDuration(D_8037BF20, arg1);
|
||||
animctrl_setPlaybackType(D_8037BF20, 1);
|
||||
}
|
||||
171
src/core2/code_32DB0.c
Normal file
171
src/core2/code_32DB0.c
Normal file
@@ -0,0 +1,171 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
typedef struct {
|
||||
s32 unk0:24;
|
||||
s32 unk3:8;
|
||||
s32 unk4;
|
||||
} Struct_Core2_32DB0_0s;
|
||||
|
||||
void func_802B9E00(s32 arg0);
|
||||
s32 func_802B9EA8(s32 arg0);
|
||||
void func_802B9EBC(s32 arg0, s32 arg1);
|
||||
|
||||
/* .bss */
|
||||
Struct_Core2_32DB0_0s D_8037D5E0[0x46];
|
||||
|
||||
/* .code */
|
||||
void func_802B9D40(void){
|
||||
int i;
|
||||
for(i = 0; i< 0x46; i++){
|
||||
D_8037D5E0[i].unk3 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802B9D80(void){
|
||||
int i;
|
||||
|
||||
for(i=0; i< 0x46; i++){
|
||||
if(func_802B9EA8(i))
|
||||
func_802B9E00(i);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802B9DD0(s32 arg0){
|
||||
D_8037D5E0[arg0].unk3 = 1;
|
||||
D_8037D5E0[arg0].unk0 = 0;
|
||||
|
||||
}
|
||||
|
||||
void func_802B9E00(s32 arg0){
|
||||
func_802B9EBC(arg0, 0);
|
||||
D_8037D5E0[arg0].unk3 = 0;
|
||||
}
|
||||
|
||||
s32 func_802B9E34(s32 arg0){
|
||||
return D_8037D5E0[arg0].unk4;
|
||||
}
|
||||
|
||||
s32 func_802B9E48(s32 arg0){
|
||||
return D_8037D5E0[arg0].unk4;
|
||||
}
|
||||
|
||||
s32 func_802B9E5C(s32 arg0){
|
||||
return D_8037D5E0[arg0].unk4;
|
||||
}
|
||||
|
||||
s32 func_802B9E70(s32 arg0){
|
||||
return D_8037D5E0[arg0].unk4;
|
||||
}
|
||||
|
||||
s32 func_802B9E84(void){
|
||||
return 0x46;
|
||||
}
|
||||
|
||||
s32 func_802B9E8C(s32 arg0){
|
||||
return D_8037D5E0[arg0].unk0;
|
||||
}
|
||||
|
||||
s32 func_802B9EA8(s32 arg0){
|
||||
return D_8037D5E0[arg0].unk3;
|
||||
}
|
||||
|
||||
void func_802B9EBC(s32 arg0, s32 arg1){
|
||||
if(arg1 == D_8037D5E0[arg0].unk0)
|
||||
return;
|
||||
switch(D_8037D5E0[arg0].unk0){
|
||||
case 4:// L802B9F08
|
||||
func_802BA214(D_8037D5E0[arg0].unk4);
|
||||
break;
|
||||
case 3:// L802B9F18
|
||||
func_802BA398(D_8037D5E0[arg0].unk4);
|
||||
break;
|
||||
case 1:// L802B9F28
|
||||
func_802BA76C(D_8037D5E0[arg0].unk4);
|
||||
break;
|
||||
case 2:// L802B9F38
|
||||
func_802BAA88(D_8037D5E0[arg0].unk4);
|
||||
break;
|
||||
case 0:// L802B9F40
|
||||
break;
|
||||
}
|
||||
D_8037D5E0[arg0].unk0 = arg1;
|
||||
switch (arg1)
|
||||
{
|
||||
case 4:// L802B9F80
|
||||
D_8037D5E0[arg0].unk4 = func_802BA1E0();
|
||||
break;
|
||||
case 3:// L802B9F90
|
||||
D_8037D5E0[arg0].unk4 = func_802BA2F4();
|
||||
break;
|
||||
case 1:// L802B9FA0
|
||||
D_8037D5E0[arg0].unk4 = func_802BA6D4();
|
||||
break;
|
||||
case 2:// L802B9FB0
|
||||
D_8037D5E0[arg0].unk4 = func_802BAA40();
|
||||
break;
|
||||
case 0:// L802B9FBC
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void func_802B9FD0(Struct61s *file_ptr, s32 arg1){
|
||||
u8 sp27;
|
||||
func_802B9DD0(arg1);
|
||||
func_8034B040(file_ptr, 2, &sp27);
|
||||
func_802B9EBC(arg1, sp27);
|
||||
switch(func_802B9E8C(arg1)){
|
||||
case 4:// L802BA030
|
||||
func_802BA244(file_ptr, func_802B9E34(arg1));
|
||||
break;
|
||||
case 3:// L802BA04C
|
||||
func_802BA550(file_ptr, func_802B9E48(arg1));
|
||||
break;
|
||||
case 1:// L802BA068
|
||||
func_802BA93C(file_ptr, func_802B9E5C(arg1));
|
||||
break;
|
||||
case 2:// L802BA084
|
||||
func_802BAB3C(file_ptr, func_802B9E70(arg1));
|
||||
break;
|
||||
case 0:// L802BA098
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802BA0AC(Struct61s *file_ptr){
|
||||
s16 sp26;
|
||||
func_802B9D80();
|
||||
func_802B9D40();
|
||||
while(!func_8034AF98(file_ptr, 0)){
|
||||
if(func_8034B220(file_ptr, 1, &sp26))
|
||||
func_802B9FD0(file_ptr, sp26);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void func_802BA128(void){
|
||||
int i;
|
||||
for(i = 0; i< 0x46; i++){
|
||||
if(D_8037D5E0[i].unk3){
|
||||
switch(D_8037D5E0[i].unk0){
|
||||
case 4:// L802BA17C
|
||||
D_8037D5E0[i].unk4 = defrag(D_8037D5E0[i].unk4);
|
||||
break;
|
||||
case 3:// L802BA18C
|
||||
D_8037D5E0[i].unk4 = defrag(D_8037D5E0[i].unk4);
|
||||
break;
|
||||
case 1:// L802BA19C
|
||||
D_8037D5E0[i].unk4 = defrag(D_8037D5E0[i].unk4);
|
||||
break;
|
||||
case 2:// L802BA1AC
|
||||
D_8037D5E0[i].unk4 = defrag(D_8037D5E0[i].unk4);
|
||||
break;
|
||||
case 0:// L802BA1B8
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user