The first commit
This commit is contained in:
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();
|
||||
}
|
Reference in New Issue
Block a user